diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java index a164b5f..4a165f9 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java @@ -10,6 +10,7 @@ import org.nl.wms.ext.service.AcsToWmsService; import org.nl.wms.ext.service.IotToWmsService; import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq; import org.nl.wms.ext.service.dto.to.iot.IotPartsReq; +import org.nl.wms.ext.service.dto.to.iot.SortingReq; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -52,4 +53,11 @@ public class IotToWmsController { return new ResponseEntity<>(iotToWmsService.orders(iotOrdersReq), HttpStatus.OK); } + @PostMapping("/fjMaterialInfo") + @Log("sorting系统查询库存") + @ApiOperation("sorting系统查询库存") + public ResponseEntity fjMaterialInfo(@RequestBody SortingReq sortingReq) { + return new ResponseEntity<>(iotToWmsService.fjMaterialInfo(sortingReq), HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java index 51512af..b711f55 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java @@ -4,6 +4,10 @@ import com.alibaba.fastjson.JSONObject; import org.nl.wms.ext.service.dto.to.BaseResponse; import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq; import org.nl.wms.ext.service.dto.to.iot.IotPartsReq; +import org.nl.wms.ext.service.dto.to.iot.SortingReq; +import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind; + +import java.util.List; /** * @Author: sxp @@ -17,4 +21,5 @@ public interface IotToWmsService { BaseResponse orders(IotOrdersReq iotOrdersReq); + List fjMaterialInfo(SortingReq sortingReq); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/SortingReq.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/SortingReq.java new file mode 100644 index 0000000..777c6e8 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/SortingReq.java @@ -0,0 +1,11 @@ +package org.nl.wms.ext.service.dto.to.iot; + +import lombok.Data; + +/** + * @author Administrator + */ +@Data +public class SortingReq { + private String order; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/SortingStock.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/SortingStock.java new file mode 100644 index 0000000..eef573c --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/SortingStock.java @@ -0,0 +1,14 @@ +package org.nl.wms.ext.service.dto.to.iot; + +import lombok.Data; + +/** + * @author Administrator + */ +@Data +public class SortingStock { + private String vehicleCode; + private String materialCode; + private String materialName; + private String orderCode; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java index c9280c4..8cd9c06 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java @@ -7,10 +7,15 @@ import org.nl.wms.ext.service.IotToWmsService; import org.nl.wms.ext.service.dto.to.BaseResponse; import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq; import org.nl.wms.ext.service.dto.to.iot.IotPartsReq; +import org.nl.wms.ext.service.dto.to.iot.SortingReq; +import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService; +import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.util.List; + /** * @author sxp */ @@ -21,6 +26,9 @@ public class IotToWmsServiceImpl implements IotToWmsService { @Autowired private AcsToWmsService acsToWmsService; + @Autowired + private IMaterialVehicleBindService materialVehicleBindService; + @Override public BaseResponse acsApply(JSONObject param) { return acsToWmsService.acsApply(param); @@ -38,4 +46,10 @@ public class IotToWmsServiceImpl implements IotToWmsService { return null; } + @Override + public List fjMaterialInfo(SortingReq sortingReq) { + String order = sortingReq.getOrder(); + return materialVehicleBindService.selectByOrder(order); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java index 6d3fdb3..731f25d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java @@ -71,6 +71,13 @@ public class PdaController { // return new ResponseEntity<>(pdaService.zpjb(param), HttpStatus.OK); // } + @PostMapping("/cyjk") + @Log("冲压下料位叫空") + @ApiOperation("冲压下料位叫空") + public ResponseEntity cyjk(@RequestBody JSONObject param){ + return new ResponseEntity<>(pdaService.cyjk(param), HttpStatus.OK); + } + @PostMapping("/dzwck") @Log("待折弯件出库") @ApiOperation("待折弯件出库") @@ -119,4 +126,5 @@ public class PdaController { public ResponseEntity getVehicleType(){ return new ResponseEntity<>(pdaService.getVehicleType(), HttpStatus.OK); } + //todo 指令查询 指令取消、指令完成、任务完成、取消、人工组盘、解绑 } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java index ef6166b..c1e11bd 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java @@ -22,6 +22,8 @@ public interface PdaService { PdaResponseVo zpjb(JSONObject param); + PdaResponseVo cyjk(JSONObject param); + PdaResponseVo dzwck(JSONObject param); PdaResponseVo zwjk(JSONObject param); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java index f4269d3..91d9e18 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java @@ -138,6 +138,14 @@ public class PdaServiceImpl implements PdaService { return PdaResponseVo.pdaResultOk("组盘解绑成功"); } + @Override + public PdaResponseVo cyjk(JSONObject param) { + param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr()); + param.put("taskType", "CYJKTask"); + acsToWmsService.acsApply(param); + return PdaResponseVo.pdaResultOk("待折弯件出库成功"); + } + @Override public PdaResponseVo dzwck(JSONObject param) { param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java index c38a54f..b169ddc 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java @@ -143,17 +143,17 @@ public class SchBasePointServiceImpl extends ServiceImpl query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(orderProcessService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增订单工艺信息") + @ApiOperation("新增订单工艺信息") + public ResponseEntity create(@Validated @RequestBody OrderProcess entity){ + orderProcessService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改订单工艺信息") + @ApiOperation("修改订单工艺信息") + public ResponseEntity update(@Validated @RequestBody OrderProcess entity){ + orderProcessService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除订单工艺信息") + @ApiOperation("删除订单工艺信息") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + orderProcessService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/IOrderProcessService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/IOrderProcessService.java new file mode 100644 index 0000000..447654f --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/IOrderProcessService.java @@ -0,0 +1,43 @@ +package org.nl.wms.sch.process.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.sch.process.service.dao.OrderProcess; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务接口 +* @author order_process +* @date 2024-05-09 +**/ +public interface IOrderProcessService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(OrderProcess entity); + + /** + * 编辑 + * @param entity / + */ + void update(OrderProcess entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/OrderProcess.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/OrderProcess.java new file mode 100644 index 0000000..28df643 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/OrderProcess.java @@ -0,0 +1,58 @@ +package org.nl.wms.sch.process.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** +* @description / +* @author order_process +* @date 2024-05-09 +**/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("order_process") +public class OrderProcess implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "order_id", type = IdType.NONE) + @ApiModelProperty(value = "ID") + private String order_id; + + @ApiModelProperty(value = "订单号") + private String order; + + @ApiModelProperty(value = "工序") + private String process; + + @ApiModelProperty(value = "额定最后期限") + private String last_time; + + @ApiModelProperty(value = "创建人标识") + private String create_id; + + @ApiModelProperty(value = "创建人") + private String create_name; + + @ApiModelProperty(value = "创建时间") + private String create_time; + + @ApiModelProperty(value = "修改人标识") + private String update_id; + + @ApiModelProperty(value = "修改人") + private String update_name; + + @ApiModelProperty(value = "修改时间") + private String update_time; + + @ApiModelProperty(value = "是否删除") + private String is_delete; + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/mapper/OrderProcessMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/mapper/OrderProcessMapper.java new file mode 100644 index 0000000..57682e4 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/mapper/OrderProcessMapper.java @@ -0,0 +1,12 @@ +package org.nl.wms.sch.process.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.sch.process.service.dao.OrderProcess; + +/** +* @author order_process +* @date 2024-05-09 +**/ +public interface OrderProcessMapper extends BaseMapper { + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/mapper/OrderProcessMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/mapper/OrderProcessMapper.xml new file mode 100644 index 0000000..8ed0a68 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dao/mapper/OrderProcessMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dto/OrderProcessDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dto/OrderProcessDto.java new file mode 100644 index 0000000..951ffc0 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dto/OrderProcessDto.java @@ -0,0 +1,46 @@ +package org.nl.wms.sch.process.service.dto; + +import lombok.Data; +import java.io.Serializable; + +/** +* @description / +* @author order_process +* @date 2024-05-09 +**/ +@Data +public class OrderProcessDto implements Serializable { + + /** ID */ + private String order_id; + + /** 订单号 */ + private String order; + + /** 工序 */ + private String process; + + /** 额定最后期限 */ + private String last_time; + + /** 创建人标识 */ + private String create_id; + + /** 创建人 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改人标识 */ + private String update_id; + + /** 修改人 */ + private String update_name; + + /** 修改时间 */ + private String update_time; + + /** 是否删除 */ + private String is_delete; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dto/OrderProcessQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dto/OrderProcessQuery.java new file mode 100644 index 0000000..9374b1c --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/dto/OrderProcessQuery.java @@ -0,0 +1,12 @@ +package org.nl.wms.sch.process.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.sch.process.service.dao.OrderProcess; + +/** +* @author order_process +* @date 2024-05-09 +**/ +public class OrderProcessQuery extends BaseQuery { + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/impl/OrderProcessServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/impl/OrderProcessServiceImpl.java new file mode 100644 index 0000000..d75c809 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/process/service/impl/OrderProcessServiceImpl.java @@ -0,0 +1,80 @@ +package org.nl.wms.sch.process.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.sch.process.service.IOrderProcessService; +import org.nl.wms.sch.process.service.dao.mapper.OrderProcessMapper; +import org.nl.wms.sch.process.service.dao.OrderProcess; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务实现 +* @author order_process +* @date 2024-05-09 +**/ +@Slf4j +@Service +public class OrderProcessServiceImpl extends ServiceImpl implements IOrderProcessService { + + @Autowired + private OrderProcessMapper orderProcessMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + orderProcessMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(OrderProcess entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + entity.setOrder_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + orderProcessMapper.insert(entity); + } + + @Override + public void update(OrderProcess entity) { + OrderProcess dto = orderProcessMapper.selectById(entity.getOrder_id()); + if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + + orderProcessMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + orderProcessMapper.deleteBatchIds(ids); + } + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java index 703edb4..1d3e86b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java @@ -257,6 +257,6 @@ public abstract class AbstractTask { this.feedbackTaskState(param, schBaseTask, result); } - protected abstract void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result); + public abstract void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java index fd9911c..b86374c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java @@ -8,6 +8,8 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.util.StringUtil; import org.nl.common.exception.BadRequestException; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; @@ -79,7 +81,7 @@ public class CYJKTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - SchBasePoint point = findStartPoint(taskConfig.getStart_region_str()); + SchBasePoint point = findStartPoint(taskConfig.getStart_region_str(),task.getVehicle_type()); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.update(task); @@ -106,18 +108,37 @@ public class CYJKTask extends AbstractTask { } //查找空托盘 - private SchBasePoint findStartPoint(String startRegionStr) { + private SchBasePoint findStartPoint(String startRegionStr,String vehicleType) { + if (StringUtils.isEmpty(startRegionStr)) { + return null; + } String[] reginList = startRegionStr.split(","); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList)) .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode()) - .eq(SchBasePoint::getPoint_type, "1") + .eq(SchBasePoint::getCan_vehicle_type, vehicleType) .and(la -> la.isNull(SchBasePoint::getIng_task_code) .or() .eq(SchBasePoint::getIng_task_code, "")) .eq(SchBasePoint::getIs_used, true); List schBasePoints = pointService.list(lam); - return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; + if (ObjectUtil.isNotEmpty(schBasePoints)) { + return schBasePoints.get(0); + } + if (VehicleTypeEnum.LK_RO1.getCode().equals(vehicleType) || VehicleTypeEnum.LK_RO2.getCode().equals(vehicleType)) { + //空托盘从空托盘货架位就近获取,补空料笼从货架及料笼暂存区获取 + LambdaQueryWrapper tempAreaLam = new LambdaQueryWrapper<>(); + tempAreaLam.eq(SchBasePoint::getRegion_code, "CDLKZC") + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode()) + .eq(SchBasePoint::getCan_vehicle_type, vehicleType) + .and(la -> la.isNull(SchBasePoint::getIng_task_code) + .or() + .eq(SchBasePoint::getIng_task_code, "")) + .eq(SchBasePoint::getIs_used, true); + List tempAreaList = pointService.list(tempAreaLam); + return ObjectUtil.isNotEmpty(tempAreaList) ? tempAreaList.get(0) : null; + } + return null; } @@ -144,14 +165,15 @@ public class CYJKTask extends AbstractTask { // 终点解锁 endPointObj.setIng_task_code(""); endPointObj.setVehicle_code(taskObj.getVehicle_code()); - endPointObj.setVehicle_code2(taskObj.getVehicle_code2()); +// endPointObj.setVehicle_type(taskObj.getVehicle_type()); endPointObj.setVehicle_qty(1); endPointObj.setUpdate_time(DateUtil.now()); pointService.update(endPointObj); // 起点清空 startPointObj.setVehicle_code(""); - startPointObj.setVehicle_code2(""); - startPointObj.setIng_task_code(""); + startPointObj.setVehicle_type(""); + startPointObj.setVehicle_qty(0); + startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); startPointObj.setUpdate_time(DateUtil.now()); pointService.updateById(startPointObj); // 任务完成 @@ -186,7 +208,7 @@ public class CYJKTask extends AbstractTask { } @Override - protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) { + public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) { // 反馈上位系统 反馈上位系统成功后,返回200给acs AgvStateParam agvStateParam = new AgvStateParam(); agvStateParam.setTask_code(schBaseTask.getTask_code()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java index 2a9dc8b..d651866 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java @@ -19,6 +19,8 @@ import org.nl.wms.pda.service.dao.vo.PdaResponseVo; import org.nl.wms.pdm.service.IPdmBdWorkorderService; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; +import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService; +import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.task.service.ISchBaseTaskService; @@ -29,6 +31,7 @@ import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; import org.nl.wms.sch.task_manage.enums.GroupStatusEnum; import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.VehicleTypeEnum; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.util.PointUtils; @@ -37,6 +40,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; +import javax.transaction.Transactional; import java.util.Arrays; import java.util.List; @@ -58,10 +62,9 @@ public class CYXLTask extends AbstractTask { @Autowired private ISchBaseTaskconfigService taskConfigService; @Autowired - private IPdmBdWorkorderService workorderService; - @Autowired private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - + @Autowired + private IMaterialVehicleBindService materialVehicleBindService; @Autowired private AcsToWmsService acsToWmsService; @@ -71,7 +74,7 @@ public class CYXLTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - SchBasePoint point = findNextPoint(taskConfig.getNext_region_str()); + SchBasePoint point = findNextPoint(taskConfig.getNext_region_str(), task.getVehicle_type()); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.update(task); @@ -94,12 +97,13 @@ public class CYXLTask extends AbstractTask { * * @return */ - private SchBasePoint findNextPoint(String nextReginStr) { - //todo 区域优先级,暂时按照创建任务配置时,区域选择顺序 + private SchBasePoint findNextPoint(String nextReginStr, String vehicleType) { + //todo 需要和外部系统确认载具类型vehicleType参数值,暂时使用PointStatusEnum String[] reginList = nextReginStr.split(","); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList)) .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .eq(SchBasePoint::getCan_vehicle_type, VehicleTypeEnum.GTP.getCode()) .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 .or() .eq(SchBasePoint::getIng_task_code, "")) @@ -122,13 +126,6 @@ public class CYXLTask extends AbstractTask { throw new BadRequestException("该任务已取消!"); } // 获取参数 - JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data()) - ? JSONObject.parseObject(taskObj.getExt_group_data()) - : null; - // 载具编码:没有就创建一个 - String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) - ? taskObj.getVehicle_code() - : IdUtil.getSnowflake(1, 1).nextIdStr(); String startPoint = taskObj.getPoint_code1(); // 获取起点 String endPoint = taskObj.getPoint_code2(); // 获取终点 SchBasePoint startPointObj = pointService.getById(startPoint); @@ -145,41 +142,13 @@ public class CYXLTask extends AbstractTask { } // 终点解锁 endPointObj.setIng_task_code(""); -// endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code : endPointObj.getVehicle_code()); + endPointObj.setVehicle_code(taskObj.getVehicle_code()); endPointObj.setVehicle_qty(1); + endPointObj.setVehicle_type(taskObj.getVehicle_type()); + endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); pointService.update(endPointObj); // 要把数据存到组盘表 -> 改造公共方法,返回id - //todo 涉及一对多、设置物料类型为待分拣冲压件、载具类型 -// SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); -// groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); -// groupEntity.setCreate_id("2"); -// groupEntity.setCreate_name("ACS"); -// groupEntity.setCreate_time(DateUtil.now()); -// groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode) -// ? workorderCode.getMaterial_id() -// : ""); -// groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode) -// ? workorderCode.getStanding_time() -// : 0); -// groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData) -// ? extGroupData.getBigDecimal("material_qty") -// : BigDecimal.valueOf(0)); -// groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode) -// ? workorderCode.getWorkorder_code() -// : ""); -// groupEntity.setVehicle_code(vehicle_code); -// groupEntity.setVehicle_type(taskObj.getVehicle_type()); -// groupEntity.setPoint_code(startPoint); -// groupEntity.setPoint_name(startPointObj.getPoint_name()); -// groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd")); -// groupEntity.setInstorage_time(DateUtil.now()); -// groupEntity.setTask_code(taskObj.getTask_code()); -// groupEntity.setMove_way(startPoint); -// groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 -// groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 -// groupEntity.setIs_delete(false); -// groupEntity.setMove_way(startPoint); -// vehiclematerialgroupService.save(groupEntity); + // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); // taskObj.setGroup_id(groupEntity.getGroup_id()); @@ -187,7 +156,7 @@ public class CYXLTask extends AbstractTask { JSONObject jsonObject = new JSONObject(); jsonObject.put("task_code", IdUtil.getSnowflake(1, 1).nextIdStr()); jsonObject.put("taskType", "CYJKTask"); - jsonObject.put("next_device_code",taskObj.getPoint_code1()); + jsonObject.put("next_device_code", taskObj.getPoint_code1()); acsToWmsService.acsApply(jsonObject); } if (status.equals(TaskStatus.CANCELED)) { // 取消 @@ -215,7 +184,8 @@ public class CYXLTask extends AbstractTask { } @Override - protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) { + @Transactional + public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) { // 反馈上位系统 反馈上位系统成功后,返回200给acs AgvStateParam agvStateParam = new AgvStateParam(); agvStateParam.setTask_code(schBaseTask.getTask_code()); @@ -228,7 +198,37 @@ public class CYXLTask extends AbstractTask { agvStateParam.setStatus("1"); //叉车到位 请求取货 String url = iotUrl + "iot/agvarrive"; - applyIot(url, agvStateParam, result); + JSONObject jsonObject = applyIot(url, agvStateParam, result); + if (jsonObject != null) { + //todo 校验返回的物料信息和订单工艺信息 + SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); + groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + groupEntity.setCreate_id("2"); + groupEntity.setCreate_name("ACS"); + groupEntity.setCreate_time(DateUtil.now()); + groupEntity.setVehicle_code(jsonObject.getString("vehicle_code")); + groupEntity.setVehicle_type(schBaseTask.getVehicle_type()); + groupEntity.setPoint_code(startPoint.getPoint_code()); + groupEntity.setPoint_name(startPoint.getPoint_name()); + groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd")); + groupEntity.setInstorage_time(DateUtil.now()); + groupEntity.setTask_code(schBaseTask.getTask_code()); + groupEntity.setMove_way(startPoint.getPoint_code()); + groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 + groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 + groupEntity.setIs_delete(false); + vehiclematerialgroupService.save(groupEntity); + //todo 多个物料信息绑定 + MaterialVehicleBind materialVehicleBind = new MaterialVehicleBind(); + materialVehicleBind.setId(IdUtil.getSnowflake(1, 1).nextIdStr()); + materialVehicleBind.setCreate_time(DateUtil.now()); + materialVehicleBind.setVehicle_code(jsonObject.getString("vehicle_code")); + materialVehicleBind.setGroup_id(groupEntity.getGroup_id()); + materialVehicleBind.setMaterial_code(jsonObject.getString("material_code")); + materialVehicleBind.setMaterial_name(jsonObject.getString("material_name")); + materialVehicleBind.setOrder_code(jsonObject.getString("order_code")); + materialVehicleBindService.save(materialVehicleBind); + } //锁住起点 startPoint.setIng_task_code(schBaseTask.getTask_code()); pointService.update(startPoint); @@ -244,12 +244,13 @@ public class CYXLTask extends AbstractTask { JSONObject jsonObject = new JSONObject(); jsonObject.put("task_code", IdUtil.getSnowflake(1, 1).nextIdStr()); jsonObject.put("taskType", "CYJKTask"); - jsonObject.put("next_device_code",schBaseTask.getPoint_code1()); + jsonObject.put("vehicleType", schBaseTask.getVehicle_type()); + jsonObject.put("next_device_code", schBaseTask.getPoint_code1()); acsToWmsService.acsApply(jsonObject); } } - private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) { + private JSONObject applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) { String jsonParam = JSON.toJSONString(agvStateParam); log.info("请求iot参数为:{}", jsonParam); try { @@ -261,10 +262,12 @@ public class CYXLTask extends AbstractTask { log.info("请求iot成功,返回结果为:{}", res); result.setCode(HttpStatus.OK.value()); result.setMessage("请求iot成功!"); + return res.getJSONObject("data"); } else { log.error("请求iot失败:{}", res); result.setCode(HttpStatus.BAD_REQUEST.value()); result.setMessage("请求iot失败!"); + return null; } } catch (Exception e) { String msg = e.getMessage(); @@ -272,6 +275,7 @@ public class CYXLTask extends AbstractTask { log.error("请求iot失败:{}", msg); result.setCode(HttpStatus.BAD_REQUEST.value()); result.setMessage("请求iot失败!"); + return null; } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJJKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJJKTask.java new file mode 100644 index 0000000..cd754ac --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJJKTask.java @@ -0,0 +1,263 @@ +package org.nl.wms.sch.task_manage.task.tasks.fj; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.nl.common.exception.BadRequestException; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.wms.ext.service.WmsToAcsService; +import org.nl.wms.ext.service.dto.to.BaseResponse; +import org.nl.wms.ext.service.dto.to.iot.AgvStateParam; +import org.nl.wms.pdm.service.IPdmBdWorkorderService; +import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; +import org.nl.wms.sch.point.service.ISchBasePointService; +import org.nl.wms.sch.point.service.dao.SchBasePoint; +import org.nl.wms.sch.task.service.ISchBaseTaskService; +import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; +import org.nl.wms.sch.task.service.dao.SchBaseTask; +import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.VehicleTypeEnum; +import org.nl.wms.sch.task_manage.task.TaskType; +import org.nl.wms.sch.task_manage.task.core.TaskStatus; +import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.List; + +/** + * @Author: sxp + * @Description: 分拣叫空盘 + */ +@Slf4j +@Component +@TaskType("FJJKTask") +@Lazy +public class FJJKTask extends AbstractTask { + private static String TASK_CONFIG_CODE = "FJJKTask"; + /** + * 入口 + */ + private static String ENTRANCE = "1"; + @Autowired + private ISchBasePointService pointService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISchBaseTaskconfigService taskConfigService; + @Autowired + private IPdmBdWorkorderService workorderService; + @Autowired + private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; + @Autowired + private PointMapper pointMapper; + @Autowired + private WmsToAcsService wmsToAcsService; + + @Override +// @Transactional(rollbackFor = Exception.class) + protected void create() throws BadRequestException { + // 获取任务 + List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); + // 配置信息 + SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); + for (SchBaseTask task : tasks) { + SchBasePoint point = findStartPoint(taskConfig.getStart_region_str(),task.getVehicle_type()); + if (ObjectUtil.isEmpty(point)) { + task.setRemark("未找到所需点位!"); + taskService.update(task); + // 消息通知 + log.info("冲压机叫空盘未找到所需点位!"); + continue; + } + // 设置起点并修改创建成功状态 + task.setPoint_code1(point.getPoint_code()); + task.setTask_status(TaskStatus.CREATED.getCode()); + task.setRemark("创建完成"); + task.setVehicle_code(point.getVehicle_code()); + task.setVehicle_type(point.getVehicle_type()); + taskService.update(task); + //发起任务时先把点位占用,防止发起重复任务 + point.setIng_task_code(task.getTask_code()); + point.setUpdate_id(GeneralDefinition.ACS_ID); + point.setUpdate_name(GeneralDefinition.ACS_NAME); + point.setUpdate_time(DateUtil.now()); + pointService.update(point); + //下发 + this.renotifyAcs(task); + } + } + + //查找空托盘 + private SchBasePoint findStartPoint(String startRegionStr,String vehicleType) { + if (StringUtils.isEmpty(startRegionStr)) { + return null; + } + String[] reginList = startRegionStr.split(","); + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList)) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode()) + .eq(SchBasePoint::getCan_vehicle_type, vehicleType) + .and(la -> la.isNull(SchBasePoint::getIng_task_code) + .or() + .eq(SchBasePoint::getIng_task_code, "")) + .eq(SchBasePoint::getIs_used, true); + List schBasePoints = pointService.list(lam); + if (ObjectUtil.isNotEmpty(schBasePoints)) { + return schBasePoints.get(0); + } + if (VehicleTypeEnum.LK_RO1.getCode().equals(vehicleType) || VehicleTypeEnum.LK_RO2.getCode().equals(vehicleType)) { + //空托盘从空托盘货架位就近获取,补空料笼从货架及料笼暂存区获取 + LambdaQueryWrapper tempAreaLam = new LambdaQueryWrapper<>(); + tempAreaLam.eq(SchBasePoint::getRegion_code, "CDLKZC") + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode()) + .eq(SchBasePoint::getCan_vehicle_type, vehicleType) + .and(la -> la.isNull(SchBasePoint::getIng_task_code) + .or() + .eq(SchBasePoint::getIng_task_code, "")) + .eq(SchBasePoint::getIs_used, true); + List tempAreaList = pointService.list(tempAreaLam); + return ObjectUtil.isNotEmpty(tempAreaList) ? tempAreaList.get(0) : null; + } + return null; + } + + + @Override + protected void updateStatus(String task_code, TaskStatus status) { + // 校验任务 + SchBaseTask taskObj = taskService.getById(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + String startPoint = taskObj.getPoint_code1(); // 获取起点 + String endPoint = taskObj.getPoint_code2(); // 获取终点 + SchBasePoint startPointObj = pointService.getById(startPoint); + SchBasePoint endPointObj = pointService.getById(endPoint); + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { // 执行中 + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + } + if (status.equals(TaskStatus.FINISHED)) { // 完成 + // 终点解锁 + endPointObj.setIng_task_code(""); + endPointObj.setVehicle_code(taskObj.getVehicle_code()); +// endPointObj.setVehicle_type(taskObj.getVehicle_type()); + endPointObj.setVehicle_qty(1); + endPointObj.setUpdate_time(DateUtil.now()); + pointService.update(endPointObj); + // 起点清空 + startPointObj.setVehicle_code(""); + startPointObj.setVehicle_type(""); + startPointObj.setVehicle_qty(0); + startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + startPointObj.setUpdate_time(DateUtil.now()); + pointService.updateById(startPointObj); + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("任务完成"); + } + if (status.equals(TaskStatus.CANCELED)) { // 取消 + // 终点解锁 + if (ObjectUtil.isNotEmpty(endPointObj)) { + endPointObj.setIng_task_code(""); + pointService.update(endPointObj); + } + // 起点解锁 + if (ObjectUtil.isNotEmpty(startPointObj)) { + startPointObj.setIng_task_code(""); + pointService.update(startPointObj); + } + taskObj.setRemark("任务取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + } + taskService.update(taskObj); + } + + @Override + public void forceFinish(String task_code) { + this.updateStatus(task_code, TaskStatus.FINISHED); + } + + @Override + public void cancel(String task_code) { + this.updateStatus(task_code, TaskStatus.CANCELED); + } + + @Override + public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) { + // 反馈上位系统 反馈上位系统成功后,返回200给acs + AgvStateParam agvStateParam = new AgvStateParam(); + agvStateParam.setTask_code(schBaseTask.getTask_code()); + agvStateParam.setDevice_code(schBaseTask.getPoint_code2()); + agvStateParam.setVehicle_code(schBaseTask.getVehicle_code()); + String phase = param.getString("phase"); + String iotUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("iot_url").getValue(); + SchBasePoint endPoint = pointService.getById(schBaseTask.getPoint_code2()); + if ("7".equals(phase)) { + //todo 请求放货状态需要修改 + agvStateParam.setStatus("3"); + //叉车到位 请求放货 + String url = iotUrl + "iot/agvarrive"; + applyIot(url, agvStateParam, result); + //锁住终点 + endPoint.setIng_task_code(schBaseTask.getTask_code()); + pointService.update(endPoint); + } + if ("9".equals(phase)) { + //todo 请求放货状态需要修改 + agvStateParam.setStatus("4"); + //取货完成,请求离开 + String url = iotUrl + "iot/agvfinish"; + applyIot(url, agvStateParam, result); + //终点解锁 设置载具类型和编码 + endPoint.setIng_task_code(""); +// endPoint.setVehicle_code(schBaseTask.getVehicle_code()); +// endPoint.setVehicle_type(schBaseTask.getVehicle_type()); + pointService.update(endPoint); + } + } + private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) { + String jsonParam = JSON.toJSONString(agvStateParam); + log.info("请求iot参数为:{}", jsonParam); + try { + String resultMsg = HttpRequest.post(url) + .body(jsonParam) + .execute().body(); + JSONObject res = JSONObject.parseObject(resultMsg); + if ("200".equals(res.getString("code"))) { + log.info("请求iot成功,返回结果为:{}", res); + result.setCode(HttpStatus.OK.value()); + result.setMessage("请求iot成功!"); + } else { + log.error("请求iot失败:{}", res); + result.setCode(HttpStatus.BAD_REQUEST.value()); + result.setMessage("请求iot失败!"); + } + } catch (Exception e) { + String msg = e.getMessage(); + //请求iot失败 + log.error("请求iot失败:{}", msg); + result.setCode(HttpStatus.BAD_REQUEST.value()); + result.setMessage("请求iot失败!"); + } + + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java index edde3e2..fb1933b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java @@ -88,6 +88,8 @@ public class FJSLTask extends AbstractTask { } // 设置起点并修改创建成功状态 task.setPoint_code1(point.getPoint_code()); + task.setVehicle_code(point.getVehicle_code()); + task.setVehicle_type(point.getVehicle_type()); task.setTask_status(TaskStatus.CREATED.getCode()); task.setRemark(""); taskService.update(task); @@ -146,14 +148,15 @@ public class FJSLTask extends AbstractTask { // 终点解锁 endPointObj.setIng_task_code(""); endPointObj.setVehicle_code(taskObj.getVehicle_code()); - endPointObj.setVehicle_code2(taskObj.getVehicle_code2()); endPointObj.setVehicle_qty(1); endPointObj.setUpdate_time(DateUtil.now()); pointService.update(endPointObj); // 起点清空 startPointObj.setVehicle_code(""); - startPointObj.setVehicle_code2(""); startPointObj.setIng_task_code(""); + startPointObj.setVehicle_type(""); + startPointObj.setVehicle_qty(0); + startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); startPointObj.setUpdate_time(DateUtil.now()); pointService.updateById(startPointObj); //todo 分拣上料完成后 组盘信息解绑 @@ -199,7 +202,7 @@ public class FJSLTask extends AbstractTask { } @Override - protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) { + public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) { // 反馈上位系统 反馈上位系统成功后,返回200给acs AgvStateParam agvStateParam = new AgvStateParam(); agvStateParam.setTask_code(schBaseTask.getTask_code()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java index 504f32a..bda506f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java @@ -94,6 +94,7 @@ public class FJXLTask extends AbstractTask { * @return */ private SchBasePoint findNextPoint(String nextReginStr) { + //todo 添加点位类型为对应载具 String[] reginList = nextReginStr.split(","); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList)) diff --git a/lms/nladmin-ui/src/views/wms/sch/materialBind/index.vue b/lms/nladmin-ui/src/views/wms/sch/materialBind/index.vue new file mode 100644 index 0000000..ec59694 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/sch/materialBind/index.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/lms/nladmin-ui/src/views/wms/sch/materialBind/materialVehicleBind.js b/lms/nladmin-ui/src/views/wms/sch/materialBind/materialVehicleBind.js new file mode 100644 index 0000000..7d2cae7 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/sch/materialBind/materialVehicleBind.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/materialVehicleBind', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/materialVehicleBind/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/materialVehicleBind', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/lms/nladmin-ui/src/views/wms/sch/point/index.vue b/lms/nladmin-ui/src/views/wms/sch/point/index.vue index a0e1a28..e5bb151 100644 --- a/lms/nladmin-ui/src/views/wms/sch/point/index.vue +++ b/lms/nladmin-ui/src/views/wms/sch/point/index.vue @@ -217,7 +217,7 @@ - + diff --git a/lms/nladmin-ui/src/views/wms/sch/process/index.vue b/lms/nladmin-ui/src/views/wms/sch/process/index.vue new file mode 100644 index 0000000..53aef17 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/sch/process/index.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/lms/nladmin-ui/src/views/wms/sch/process/orderProcess.js b/lms/nladmin-ui/src/views/wms/sch/process/orderProcess.js new file mode 100644 index 0000000..2aae7ec --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/sch/process/orderProcess.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/orderProcess', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/orderProcess/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/orderProcess', + method: 'put', + data + }) +} + +export default { add, edit, del }