From 174436aec0770ef88b3cf9f7c1a570db0e9a1695 Mon Sep 17 00:00:00 2001 From: songxiaopeng <1393756821@qq.com> Date: Thu, 28 Mar 2024 14:58:55 +0800 Subject: [PATCH] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0=E6=B7=B7=E7=A2=BE?= =?UTF-8?q?=E8=B4=A7=E6=9E=B6->=E6=8B=86=E5=8C=85=E6=9C=BA=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=8B=E5=8F=91=E3=80=81=E5=8E=8B=E6=9C=BA=E4=B8=8A?= =?UTF-8?q?=E6=96=99=E4=BD=8D=E5=BC=BA=E5=88=B6=E5=9B=9E=E8=B4=A7=E6=9E=B6?= =?UTF-8?q?=E3=80=81=E4=BA=BA=E5=B7=A5=E5=88=86=E6=8B=A3=20=E5=87=BA?= =?UTF-8?q?=E7=AA=91=E7=BC=93=E5=AD=98=E8=B4=A7=E6=9E=B6->=E4=BA=BA?= =?UTF-8?q?=E5=B7=A5=E5=88=86=E6=8B=A3=E4=BD=8D=E3=80=81=E4=BA=BA=E5=B7=A5?= =?UTF-8?q?=E5=88=86=E6=8B=A3=E9=80=81=E7=A9=BA=E7=9B=98=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=9B=20fix:=E6=8B=86=E5=8C=85=E6=9C=BA->=E6=B7=B7=E7=A2=BE?= =?UTF-8?q?=E8=B4=A7=E6=9E=B6=E4=BB=BB=E5=8A=A1=E4=B8=8B=E5=8F=91=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9=EF=BC=8C=E4=BF=AE=E6=94=B9=E7=BB=84?= =?UTF-8?q?=E7=9B=98=E7=AE=A1=E7=90=86=E3=80=81=E7=82=B9=E4=BD=8D=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E9=A1=B5=E9=9D=A2=E5=92=8C=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acs/service/impl/AcsToWmsServiceImpl.java | 3 +- .../nl/wms/pda/controller/PdaController.java | 39 ++- .../org/nl/wms/pda/service/PdaService.java | 10 + .../org/nl/wms/pda/service/dao/dto/FjReq.java | 12 + .../service/dao/dto/ForceBackStorageReq.java | 11 + .../pda/service/dao/dto/OrderFinishReq.java | 4 + .../wms/pda/service/impl/PdaServiceImpl.java | 58 ++++- .../ISchBaseVehiclematerialgroupService.java | 4 + .../dao/SchBaseVehiclematerialgroup.java | 2 + .../SchBaseVehiclematerialgroupMapper.xml | 1 + ...chBaseVehiclematerialgroupServiceImpl.java | 17 ++ .../point/service/ISchBasePointService.java | 1 + .../sch/point/service/dao/SchBasePoint.java | 12 + .../dao/mapper/SchBasePointMapper.java | 4 + .../service/dao/mapper/SchBasePointMapper.xml | 21 ++ .../service/impl/SchBasePointServiceImpl.java | 13 + .../task_manage/task/tasks/fj/FJQLTask.java | 8 +- .../task_manage/task/tasks/hn/HNMLTask.java | 6 +- .../task_manage/task/tasks/yz/YZQLTask.java | 10 +- .../task/tasks/yz/YZSLWHKTask.java | 243 ++++++++++++++++++ .../task/tasks/yz/mapper/YZMapper.java | 4 +- .../task/tasks/yz/mapper/YZMapper.xml | 3 +- .../views/wms/pdm/workerorder/mixedOrder.vue | 15 +- .../src/views/wms/sch/group/index.vue | 14 +- .../src/views/wms/sch/point/index.vue | 4 + 25 files changed, 497 insertions(+), 22 deletions(-) create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/FjReq.java create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/ForceBackStorageReq.java create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLWHKTask.java diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 22211f5..c7d837f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -222,7 +222,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if ("YZ".equals(basePoint.getRegion_code())){ List regin = new ArrayList<>(); regin.add("KL"); - List points = yzMapper.findPointByYZQL(regin, workOrder.getMaterial_id()); + MdBaseMaterial material = materialService.getById(workOrder.getMaterial_id()); + List points = yzMapper.findPointByYZQL(regin, material.getMaterial_code()); if (ObjectUtil.isEmpty(points)) { ApplyTaskResponse response = new ApplyTaskResponse(); response.setRequestNo(requestNo); 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 0bf70bb..bdfe178 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 @@ -270,9 +270,44 @@ public class PdaController { } @PostMapping("/hnmlTask") - @Log("工单完成") - @ApiOperation("工单完成") + @Log("拆包机->混碾货架任务下发") + @ApiOperation("拆包机->混碾货架任务下发") public ResponseEntity hnmlTask(@RequestBody OrderFinishReq req) { return new ResponseEntity<>(pdaService.hnmlTask(req), HttpStatus.OK); } + + @PostMapping("/hnqkTask") + @Log("混碾货架->拆包机任务下发") + @ApiOperation("混碾货架->拆包机任务下发") + public ResponseEntity hnqkTask() { + return new ResponseEntity<>(pdaService.hnqkTask(), HttpStatus.OK); + } + + @PostMapping("/qzhhjTask") + @Log("压机上料位强制回货架") + @ApiOperation("压机上料位强制回货架") + public ResponseEntity qzhhjTask(@RequestBody ForceBackStorageReq req) { + return new ResponseEntity<>(pdaService.qzhhjTask(req), HttpStatus.OK); + } + + @PostMapping("/materialScrap") + @Log("物料报废") + @ApiOperation("物料报废") + public ResponseEntity materialScrap(@RequestBody OrderFinishReq req) { + return new ResponseEntity<>(pdaService.materialScrap(req), HttpStatus.OK); + } + + @PostMapping("/rgfjqlTask") + @Log("人工分拣 出窑缓存货架->人工分拣位") + @ApiOperation("人工分拣") + public ResponseEntity rgfjqlTask(@RequestBody FjReq req) { + return new ResponseEntity<>(pdaService.rgfjqlTask(req), HttpStatus.OK); + } + + @PostMapping("/rgfjskTask") + @Log("人工分拣送空盘") + @ApiOperation("人工分拣送空盘") + public ResponseEntity rgfjskTask(@RequestBody FjReq req) { + return new ResponseEntity<>(pdaService.rgfjskTask(req), HttpStatus.OK); + } } 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 393a612..a75fe05 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 @@ -69,4 +69,14 @@ public interface PdaService { PdaResponseVo orderFinish(OrderFinishReq req); PdaResponseVo hnmlTask(OrderFinishReq req); + + PdaResponseVo hnqkTask(); + + PdaResponseVo qzhhjTask(ForceBackStorageReq req); + + PdaResponseVo materialScrap(OrderFinishReq req); + + PdaResponseVo rgfjqlTask(FjReq req); + + PdaResponseVo rgfjskTask(FjReq req); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/FjReq.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/FjReq.java new file mode 100644 index 0000000..c728d33 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/FjReq.java @@ -0,0 +1,12 @@ +package org.nl.wms.pda.service.dao.dto; + +import lombok.Data; + +/** + * @author sxp + */ +@Data +public class FjReq { + private String startPoint; + private String deviceCode; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/ForceBackStorageReq.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/ForceBackStorageReq.java new file mode 100644 index 0000000..19e8661 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/ForceBackStorageReq.java @@ -0,0 +1,11 @@ +package org.nl.wms.pda.service.dao.dto; + +import lombok.Data; + +/** + * @author sxp + */ +@Data +public class ForceBackStorageReq { + private String deviceCode; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/OrderFinishReq.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/OrderFinishReq.java index fd5f601..1de2f8c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/OrderFinishReq.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/OrderFinishReq.java @@ -1,7 +1,10 @@ package org.nl.wms.pda.service.dao.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import java.util.Date; + /** * @author sxp */ @@ -9,4 +12,5 @@ import lombok.Data; public class OrderFinishReq { private String orderCode; private String barCode; + private String createTime; } 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 3e1b753..6395354 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 @@ -5,6 +5,8 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.nl.common.exception.BadRequestException; @@ -39,6 +41,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; @@ -425,8 +428,61 @@ public class PdaServiceImpl implements PdaService { param.put("config_code","HNMLTask"); param.put("vehicle_code", req.getBarCode()); param.put("workorder_code",req.getOrderCode()); + param.put("create_time",req.getCreateTime()); taskService.apply(param); - return PdaResponseVo.pdaResultOk("包装入库请求成功"); + return PdaResponseVo.pdaResultOk("满料入库请求成功"); + } + + @Override + public PdaResponseVo hnqkTask() { + JSONObject param = new JSONObject(); + param.put("device_code", "CBJ01"); + param.put("config_code","HNQKTask"); + taskService.apply(param); + return PdaResponseVo.pdaResultOk("空蛊出库请求成功"); + } + + @Override + public PdaResponseVo qzhhjTask(ForceBackStorageReq req) { + JSONObject param = new JSONObject(); + param.put("device_code", req.getDeviceCode()); + param.put("config_code","YZSLWHKTask"); + taskService.apply(param); + return PdaResponseVo.pdaResultOk("压制上料位强制回库请求成功"); + } + + + @Override + public PdaResponseVo materialScrap(OrderFinishReq req) { + if (StringUtils.isEmpty(req.getBarCode())) { + throw new BadRequestException("条码不能为空"); + } + SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getByVehicleCode(req.getBarCode()); + if (null == groupInfo){ + throw new RuntimeException("未查询到该组盘信息"); + } + vehiclematerialgroupService.removeById(groupInfo.getGroup_id()); + return PdaResponseVo.pdaResultOk("物料作废成功"); + } + + @Override + public PdaResponseVo rgfjqlTask(FjReq req) { + JSONObject param = new JSONObject(); + param.put("task_type","RGFJQL"); + param.put("point_code1", req.getStartPoint()); + param.put("device_code", req.getDeviceCode()); + param.put("config_code","FJQLTask"); + taskService.apply(param); + return PdaResponseVo.pdaResultOk("人工分拣缺料请求成功"); + } + + @Override + public PdaResponseVo rgfjskTask(FjReq req) { + JSONObject param = new JSONObject(); + param.put("device_code", req.getDeviceCode()); + param.put("config_code","FJSKTask"); + taskService.apply(param); + return PdaResponseVo.pdaResultOk("人工分拣送空请求成功"); } /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java index cdc01bf..77e02c1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java @@ -93,4 +93,8 @@ public interface ISchBaseVehiclematerialgroupService extends IService lambda = new QueryWrapper().lambda(); + lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, barCode) + .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status,GroupBindMaterialStatusEnum.BOUND.getValue()) + .eq(SchBaseVehiclematerialgroup::getIs_delete, false); + return vehiclematerialgroupMapper.selectOne(lambda); + } + + @Override + public SchBaseVehiclematerialgroup getByPointCode(String pointCode) { + LambdaQueryWrapper lambda = new QueryWrapper().lambda(); + lambda.eq(SchBaseVehiclematerialgroup::getPoint_code, pointCode) + .eq(SchBaseVehiclematerialgroup::getIs_delete, false); + return vehiclematerialgroupMapper.selectOne(lambda); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java index a7cc0fa..56c6978 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java @@ -56,4 +56,5 @@ public interface ISchBasePointService extends IService { */ List getPointList(SchBasePoint region); + SchBasePoint selectById(String pointCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java index 16356a3..e93decd 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java @@ -147,4 +147,16 @@ public class SchBasePoint implements Serializable { @TableField(exist = false) private String device_code; + @TableField(exist = false) + private String material_code; + + @TableField(exist = false) + private String material_spec; + + @TableField(exist = false) + private String material_model; + + @TableField(exist = false) + private String customer; + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java index 2e0fe47..16d43fb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java @@ -17,4 +17,8 @@ public interface SchBasePointMapper extends BaseMapper { * @param used */ void batchChangeUsed(List pointCodes, Boolean used); + + SchBasePoint selectByCode(String pointCode); + + SchBasePoint selectMaterialInfo(String pointCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml index 66342b0..08d54b6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml @@ -12,4 +12,25 @@ + + 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 08cca70..37ee4de 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 @@ -101,6 +101,14 @@ public class SchBasePointServiceImpl extends ServiceImpl startRegionStr, JSONObject requestParam) { + String taskType = requestParam.getString("task_type"); + if (!StringUtils.isEmpty(taskType) && "RGFJQL".equals(taskType)) { + return pointService.selectById(requestParam.getString("point_code1")); + } // 获取当前工单 String workorderCode = requestParam.getString("workorder_code"); PdmBdWorkorder workOrder = ObjectUtil.isNotEmpty(workorderCode) diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java index 1836fbe..7089142 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java @@ -274,7 +274,7 @@ public class HNMLTask extends AbstractTask { String deviceCode = param.getString("device_code"); BigDecimal weight = param.getBigDecimal("weight"); // 泥料号 - String materialCode = param.getString("material_code"); +// String materialCode = param.getString("material_code"); PdmBdWorkorder productionTask = workorderService.getByCode(param.getString("workorder_code")); // 获取工单 @@ -294,10 +294,10 @@ public class HNMLTask extends AbstractTask { groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); // 要把数据存到组盘表 groupEntity.setMaterial_id(productionTask.getMaterial_id()); - groupEntity.setRedundance_material_code(materialCode); + groupEntity.setRedundance_material_code(productionTask.getRaw_material_code()); groupEntity.setCreate_id(GeneralDefinition.ACS_ID); groupEntity.setCreate_name(GeneralDefinition.ACS_NAME); - groupEntity.setCreate_time(DateUtil.now()); + groupEntity.setCreate_time(param.getString("create_time")); groupEntity.setVehicle_code(vehicleCode); groupEntity.setVehicle_type(vehicleType); groupEntity.setSource_vehicle_code(basePoint.getPoint_code()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java index 1d35226..7ed9894 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; 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.system.service.notice.ISysNoticeService; import org.nl.wms.database.material.service.IMdBaseMaterialService; @@ -167,20 +168,21 @@ public class YZQLTask extends AbstractTask { * 找起点业务:查找困料货架的泥料是和压机工单的泥料相同的位置 * 如果是新料口就选择新料,如果是旧料口就选旧料 * @param startRegionStr : 区域列表 - * @param extGroupData : 外部参数,包含条件所需的信息 + * @param requestParam : 外部参数,包含条件所需的信息 * @return 点位 * @description : JSONObject获取不到就是null */ - private SchBasePoint findStartPoint(List startRegionStr, JSONObject extGroupData) { + private SchBasePoint findStartPoint(List startRegionStr, JSONObject requestParam) { // 获取当前工单 - String workorderCode = extGroupData.getString("workorder_code"); + String workorderCode = requestParam.getString("workorder_code"); PdmBdWorkorder workOrder = ObjectUtil.isNotEmpty(workorderCode) ? workorderService.getOne(new LambdaQueryWrapper() .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) : null; Assert.notNull(workOrder, "工单不能为空!"); + MdBaseMaterial material = materialService.getById(workOrder.getMaterial_id()); // hint: redundance_material_code暂时存在着 - List points = yzMapper.findPointByYZQL(startRegionStr, workOrder.getMaterial_id()); + List points = yzMapper.findPointByYZQL(startRegionStr, material.getMaterial_code()); return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLWHKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLWHKTask.java new file mode 100644 index 0000000..ebe3ea2 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLWHKTask.java @@ -0,0 +1,243 @@ +package org.nl.wms.sch.task_manage.task.tasks.yz; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; +import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; +import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; +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.constant.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.*; +import org.nl.wms.sch.task_manage.task.core.TaskStatus; +import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author: lyd + * @Description: 压制上料位强制回库 + * @Date: 2023/5/25 + */ +@Slf4j +@Component("YZSLWHKTask") +public class YZSLWHKTask extends AbstractTask { + private static final String TASK_CONFIG_CODE = "YZSLWHKTask"; + @Autowired + private ISchBasePointService pointService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISchBaseTaskconfigService taskConfigService; + @Autowired + private ISysNoticeService noticeService; + + @Autowired + private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; + + @Override + @Transactional(rollbackFor = Exception.class) + protected void createCompletion(SchBaseTask task) { + // 配置信息 + SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); + TaskUtils.setUpdateByAcs(task); // 修改修改者 + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) + .collect(Collectors.toList()); + // 找终点 + SchBasePoint point = findNextPoint(nextRegionStr); + if (ObjectUtil.isEmpty(point)) { + // 消息通知 + noticeService.createNotice("强制入库任务未找到空库位!", TASK_CONFIG_CODE + task.getPoint_code1(), + NoticeTypeEnum.WARN.getCode()); + throw new BadRequestException("强制入库任务未找到空库位!"); + } + // 设置终点并修改创建成功状态 + task.setPoint_code2(point.getPoint_code()); + task.setTask_status(TaskStatus.CREATED.getCode()); + if (task.getVehicle_type() == null) { + task.setVehicle_type(GeneralDefinition.MATERIAL_CUP); + } + taskService.save(task); + + point.setIng_task_code(task.getTask_code()); + PointUtils.setUpdateByAcs(point); + pointService.updateById(point); + } + + @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) { + TaskUtils.setUpdateByAcs(task); // 修改修改者 + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) + .collect(Collectors.toList()); + // 找终点 + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + SchBasePoint point = findNextPoint(nextRegionStr); + String vehicleType = jsonObject.getString("vehicle_type"); + if (ObjectUtil.isEmpty(point)) { + task.setRemark("强制入库任务未找到空库位!"); + taskService.updateById(task); + // 消息通知 + noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), + NoticeTypeEnum.WARN.getCode()); + continue; + } + // 设置终点并修改创建成功状态 + task.setPoint_code2(point.getPoint_code()); + task.setTask_status(TaskStatus.CREATED.getCode()); + if (task.getVehicle_type() == null) { + task.setVehicle_type(vehicleType != null ? vehicleType : GeneralDefinition.MATERIAL_CUP); + } + taskService.updateById(task); + + point.setIng_task_code(task.getTask_code()); + PointUtils.setUpdateByAcs(point); + pointService.updateById(point); + } + } + + /** + * 在混料区域找一个空位放着 + * + * @param nextRegionStr + * @return + */ + private SchBasePoint findNextPoint(List nextRegionStr) { + // 载具已经设置可为空,当不需要校验工单时候也不会出现空指针 + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.in(SchBasePoint::getRegion_code, nextRegionStr) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 + .or() + .eq(SchBasePoint::getIng_task_code, "")) + .eq(SchBasePoint::getIs_used, true) + .orderByAsc(SchBasePoint::getIn_order_seq) + .orderByAsc(SchBasePoint::getPoint_code); + List schBasePoints = pointService.list(lam); + return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + protected void updateStatus(String task_code, TaskStatus status) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + } + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + String pointCode1 = taskObj.getPoint_code1(); + SchBasePoint startPoint = pointService.getById(pointCode1); + PointUtils.clearPoint(startPoint); + String endPoint = taskObj.getPoint_code2(); // 获取终点 + SchBasePoint endPointObj = pointService.getById(endPoint); + SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getByPointCode(pointCode1); + if (null == groupInfo) { + throw new BadRequestException("未查询到上料位组盘信息"); + } + // 设置载具类型、点位状态、释放点位 + if (ObjectUtil.isNotEmpty(endPoint)) { +// SimpleDateFormat dateFormat = new SimpleDateFormat("yy-"); +// String format = dateFormat.format(DateUtil.now()); + groupInfo.setInstorage_time(DateUtil.now()); + groupInfo.setPoint_code(endPoint); + groupInfo.setMove_way(groupInfo.getMove_way() + "->" + startPoint.getPoint_code()+"->"+ endPoint); + groupInfo.setPoint_name(endPointObj.getPoint_name()); + groupInfo.setUpdate_time(DateUtil.now()); + vehiclematerialgroupService.updateById(groupInfo); + endPointObj.setIng_task_code(""); + endPointObj.setVehicle_type(groupInfo.getVehicle_type()); + endPointObj.setVehicle_qty(1); + endPointObj.setVehicle_code(groupInfo.getVehicle_code()); + endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); + } + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_FINISH); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); // 区分完成者 + taskService.updateById(taskObj); + } + + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + String endPoint = taskObj.getPoint_code2(); // 获取终点 + SchBasePoint endPointObj = pointService.getById(endPoint); + // 释放点位 + if (ObjectUtil.isNotEmpty(endPoint)) { + endPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); + } + taskObj.setRemark(GeneralDefinition.TASK_CANCEL); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java index ee1561d..1f54b30 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java @@ -21,10 +21,10 @@ public interface YZMapper { /** * 根据泥料id获取 * @param regionCode - * @param materialId + * @param materialCode * @return */ - List findPointByYZQL(List regionCode, String materialId); + List findPointByYZQL(List regionCode, String materialCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml index b35852f..30f4cc7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml @@ -20,7 +20,8 @@ LEFT JOIN sch_base_vehiclematerialgroup vg ON p.vehicle_code = vg.vehicle_code AND p.vehicle_type = vg.vehicle_type AND vg.group_bind_material_status = '2' WHERE (p.ing_task_code = '' OR p.ing_task_code IS NULL) AND p.point_status = '3' - AND vg.group_id IS NOT NULL AND vg.material_id = #{materialId} + AND vg.group_id IS NOT NULL AND vg.redundance_material_code = #{materialCode} + AND TIMESTAMPDIFF(MINUTE, vg.instorage_time, NOW()) >= vg.standing_time AND p.region_code IN #{code} diff --git a/lms/nladmin-ui/src/views/wms/pdm/workerorder/mixedOrder.vue b/lms/nladmin-ui/src/views/wms/pdm/workerorder/mixedOrder.vue index 30601ff..1cb5ed5 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/mixedOrder.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/mixedOrder.vue @@ -108,7 +108,7 @@ + + + +