From 42315bf97044706859fc8d5bfcbbaefe71f31b1e Mon Sep 17 00:00:00 2001 From: zhengxuming Date: Thu, 7 Aug 2025 20:30:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:MES=E5=8F=AB=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/MesToWmsServiceImpl.java | 16 +++++++ .../sch_manage/service/dao/SchBaseTask.java | 1 + .../service/util/tasks/BackInTask.java | 11 ++--- .../service/util/tasks/VehicleInTask.java | 6 ++- .../util/tasks/zw/DownEmptyUpFullTask.java | 40 ++++++++++++++---- .../util/tasks/zw/SeparateMaterialTask.java | 42 ++++++++++++++++--- .../service/impl/OutBillServiceImpl.java | 12 +++--- 7 files changed, 103 insertions(+), 25 deletions(-) diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/MesToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/MesToWmsServiceImpl.java index 7f60dc2..5194a19 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/MesToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/MesToWmsServiceImpl.java @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.SecurityUtils; @@ -53,6 +54,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; import static org.nl.common.utils.ValidationUtil.assertNotBlankJson; import static org.nl.wms.warehouse_manage.enums.IOSEnum.GROUP_PLATE_STATUS; @@ -121,6 +123,9 @@ public class MesToWmsServiceImpl implements MesToWmsService { @Autowired private ISysDictService dictService; + @Autowired + private ISchBaseTaskService taskService; + /** * 任务工厂服务 */ @@ -148,6 +153,10 @@ public class MesToWmsServiceImpl implements MesToWmsService { throw new BadRequestException("设备【" + pointCode + "】不存在!"); } + if(StringUtils.isBlank(outPoint.getVehicle_code())){ + throw new BadRequestException("设备【" + pointCode + "】不存在料桶,请核对!"); + } + if(!"1".equals(outPoint.getPoint_type())){ throw new BadRequestException("设备【" + dto.getStruct_code() + "】有误,请传入作业区设备!"); } @@ -158,6 +167,13 @@ public class MesToWmsServiceImpl implements MesToWmsService { throw new BadRequestException("仓位【" + dto.getStruct_code() + "】不存在!"); } + List taskList = taskService.list(new QueryWrapper().lambda() + .eq(SchBaseTask::getExt_task_code, dto.getTask_code())); + + if (CollectionUtils.isNotEmpty(taskList)) { + throw new BadRequestException("task_code" + dto.getTask_code() + "已存在,请勿重复提交!"); + } + //1、单独上料,2、下空桶上满料 if("1".equals(dto.getTask_type())){ log.info("单独上料叫料,请求参数:【{}】", JSONObject.toJSONString(dto)); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java index c057a37..6d3b234 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java @@ -27,6 +27,7 @@ public class SchBaseTask implements Serializable { private String task_code; + private String ext_task_code; private String task_status; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java index fe43f85..0ef139c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java @@ -65,10 +65,9 @@ public class BackInTask extends AbstractTask { SchBaseTask task = new SchBaseTask(); task.setTask_id(IdUtil.getStringId()); if(json.containsKey("task_code")){ - task.setTask_code(json.getString("task_code")); - } else { - task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + task.setExt_task_code(json.getString("task_code")); } + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); task.setTask_status(TaskStatus.CREATE.getCode()); task.setConfig_code(json.getString("config_code")); task.setPoint_code1(json.getString("point_code1")); @@ -175,7 +174,8 @@ public class BackInTask extends AbstractTask { JSONObject jsonObject=new JSONObject(); jsonObject.put("status",200); jsonObject.put("message","成功"); - wmsToMesService.uploadMes(jsonObject); + jsonObject.put("task_code",taskObj.getExt_task_code()); + // wmsToMesService.uploadMes(jsonObject); } } @@ -198,7 +198,8 @@ public class BackInTask extends AbstractTask { JSONObject jsonObject=new JSONObject(); jsonObject.put("status",400); jsonObject.put("message","任务被取消"); - wmsToMesService.uploadMes(jsonObject); + jsonObject.put("task_code",taskObj.getExt_task_code()); + // wmsToMesService.uploadMes(jsonObject); } } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleInTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleInTask.java index 7557def..067d369 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleInTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleInTask.java @@ -173,7 +173,8 @@ public class VehicleInTask extends AbstractTask { JSONObject jsonObject=new JSONObject(); jsonObject.put("status",200); jsonObject.put("message","成功"); - wmsToMesService.uploadMes(jsonObject); + jsonObject.put("task_code",taskObj.getExt_task_code()); + // wmsToMesService.uploadMes(jsonObject); } } @@ -196,7 +197,8 @@ public class VehicleInTask extends AbstractTask { JSONObject jsonObject=new JSONObject(); jsonObject.put("status",400); jsonObject.put("message","任务被取消"); - wmsToMesService.uploadMes(jsonObject); + jsonObject.put("task_code",taskObj.getExt_task_code()); + // wmsToMesService.uploadMes(jsonObject); } } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/DownEmptyUpFullTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/DownEmptyUpFullTask.java index 555c90c..69ea411 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/DownEmptyUpFullTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/DownEmptyUpFullTask.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata_manage.enums.BaseDataEnum; @@ -19,6 +20,7 @@ import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.AcsTaskDto; import org.nl.wms.sch_manage.service.util.TaskType; +import org.nl.wms.warehouse_manage.enums.IOSConstant; import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService; import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis; @@ -30,7 +32,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.List; +import java.util.*; ; @@ -79,7 +81,10 @@ public class DownEmptyUpFullTask extends AbstractTask { public String create(JSONObject json) { SchBaseTask task = new SchBaseTask(); task.setTask_id(IdUtil.getStringId()); - task.setTask_code(json.getString("task_code")); + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + if(json.containsKey("task_code")){ + task.setExt_task_code(json.getString("task_code")); + } task.setTask_status(TaskStatus.CREATE.getCode()); task.setConfig_code(json.getString("task_type")); task.setPoint_code1(json.getString("point_code1")); @@ -209,6 +214,8 @@ public class DownEmptyUpFullTask extends AbstractTask { } //如果是序列2 else{ + rawAssistIStorService.taskFinish(taskObj); + //点位2 pointService.update(new LambdaUpdateWrapper() .set(SchBasePoint::getVehicle_code, null) @@ -229,7 +236,7 @@ public class DownEmptyUpFullTask extends AbstractTask { .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())); //点位4 pointService.update(new LambdaUpdateWrapper() - .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code2()) + .set(SchBasePoint::getVehicle_code, null) .set(SchBasePoint::getPoint_status, "1") .set(SchBasePoint::getVehicle_qty, 0) .set(SchBasePoint::getUpdate_id, SecurityUtils.getCurrentUserId()) @@ -246,14 +253,16 @@ public class DownEmptyUpFullTask extends AbstractTask { .set(Structattr::getUpdate_time, DateUtil.now()) .eq(Structattr::getStruct_code, taskObj.getPoint_code4())); - rawAssistIStorService.taskFinish(taskObj); + //删除 + iMdPbGroupplateService.delete(Collections.singleton(taskObj.getGroup_id())); //反馈到MES系统 if("自动".equals(taskObj.getCreate_mode())){ JSONObject jsonObject=new JSONObject(); jsonObject.put("status",200); jsonObject.put("message","成功"); - wmsToMesService.uploadMes(jsonObject); + jsonObject.put("task_code",taskObj.getExt_task_code()); + // wmsToMesService.uploadMes(jsonObject); } } } @@ -273,6 +282,8 @@ public class DownEmptyUpFullTask extends AbstractTask { List ioStorInvDisList = ioStorInvDisMapper.selectList(new LambdaUpdateWrapper<>(IOStorInvDis.class) .eq(IOStorInvDis::getTask_id, taskObj.getTask_id())); + List updateIvtList = new ArrayList<>(); + for(IOStorInvDis ioStorInvDis:ioStorInvDisList){ //库存表解锁 lock_type inv_type inv_id inv_code //解锁库位 @@ -286,11 +297,23 @@ public class DownEmptyUpFullTask extends AbstractTask { iStructattrService.updateStatusByCode("2", finish_map); - //更新组盘表 status 20->10 + //更新组盘表 status 10->20 iMdPbGroupplateService.update(new LambdaUpdateWrapper<>(GroupPlate.class) - .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")) + .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库")) .eq(GroupPlate::getStoragevehicle_code,ioStorInvDis.getStoragevehicle_code())); + + //更新库存 减冻结加可用 + JSONObject jsonIvt = new JSONObject(); + jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE); + jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code()); + jsonIvt.put("material_id", ioStorInvDis.getMaterial_id()); + jsonIvt.put("pcsn", ioStorInvDis.getPcsn()); + jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id()); + jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name()); + jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); + updateIvtList.add(jsonIvt); } + iMdPbGroupplateService.updateIvt(updateIvtList); //分配表清除任务 ioStorInvDisMapper.update(new IOStorInvDis(),new LambdaUpdateWrapper<>(IOStorInvDis.class) @@ -311,7 +334,8 @@ public class DownEmptyUpFullTask extends AbstractTask { JSONObject jsonObject=new JSONObject(); jsonObject.put("status",400); jsonObject.put("message","任务被取消"); - wmsToMesService.uploadMes(jsonObject); + jsonObject.put("task_code",taskObj.getExt_task_code()); + // wmsToMesService.uploadMes(jsonObject); } } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/SeparateMaterialTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/SeparateMaterialTask.java index 175091a..5d30867 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/SeparateMaterialTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/SeparateMaterialTask.java @@ -5,10 +5,12 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata_manage.enums.BaseDataEnum; import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.ext_manage.service.WmsToMesService; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBasePointService; @@ -18,6 +20,7 @@ import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.AcsTaskDto; import org.nl.wms.sch_manage.service.util.TaskType; +import org.nl.wms.warehouse_manage.enums.IOSConstant; import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService; import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis; @@ -28,6 +31,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; ; @@ -76,7 +80,10 @@ public class SeparateMaterialTask extends AbstractTask { public String create(JSONObject json) { SchBaseTask task = new SchBaseTask(); task.setTask_id(IdUtil.getStringId()); - task.setTask_code(json.getString("task_code")); + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + if(json.containsKey("task_code")){ + task.setExt_task_code(json.getString("task_code")); + } task.setTask_status(TaskStatus.CREATE.getCode()); task.setConfig_code(json.getString("task_type")); task.setPoint_code1(json.getString("point_code1")); @@ -166,6 +173,7 @@ public class SeparateMaterialTask extends AbstractTask { taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setRemark("已完成"); taskService.updateById(taskObj); + rawAssistIStorService.taskFinish(taskObj); //更改点位的托盘信息,空托盘的点位 2为空托盘放置点位 pointService.update(new LambdaUpdateWrapper() @@ -177,14 +185,22 @@ public class SeparateMaterialTask extends AbstractTask { .set(SchBasePoint::getUpdate_time, DateUtil.now()) .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())); - rawAssistIStorService.taskFinish(taskObj); + //点位1 + iStructattrService.update(new LambdaUpdateWrapper() + .set(Structattr::getStoragevehicle_code, null) + .set(Structattr::getOccupancy_state, "1") + .set(Structattr::getUpdate_id, SecurityUtils.getCurrentUserId()) + .set(Structattr::getUpdate_name, SecurityUtils.getCurrentNickName()) + .set(Structattr::getUpdate_time, DateUtil.now()) + .eq(Structattr::getStruct_code, taskObj.getPoint_code1())); //反馈到MES系统 if("自动".equals(taskObj.getCreate_mode())){ JSONObject jsonObject=new JSONObject(); jsonObject.put("status",200); jsonObject.put("message","成功"); - wmsToMesService.uploadMes(jsonObject); + jsonObject.put("task_code",taskObj.getExt_task_code()); + // wmsToMesService.uploadMes(jsonObject); } } @@ -203,6 +219,8 @@ public class SeparateMaterialTask extends AbstractTask { List ioStorInvDisList = ioStorInvDisMapper.selectList(new LambdaUpdateWrapper<>(IOStorInvDis.class) .eq(IOStorInvDis::getTask_id, taskObj.getTask_id())); + List updateIvtList = new ArrayList<>(); + for(IOStorInvDis ioStorInvDis:ioStorInvDisList){ //库存表解锁 lock_type inv_type inv_id inv_code //解锁库位 @@ -218,10 +236,23 @@ public class SeparateMaterialTask extends AbstractTask { //更新组盘表 status 20->10 iMdPbGroupplateService.update(new LambdaUpdateWrapper<>(GroupPlate.class) - .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")) + .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库")) .eq(GroupPlate::getStoragevehicle_code,ioStorInvDis.getStoragevehicle_code())); + + //更新库存 减冻结加可用 + JSONObject jsonIvt = new JSONObject(); + jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE); + jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code()); + jsonIvt.put("material_id", ioStorInvDis.getMaterial_id()); + jsonIvt.put("pcsn", ioStorInvDis.getPcsn()); + jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id()); + jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name()); + jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); + updateIvtList.add(jsonIvt); } + iMdPbGroupplateService.updateIvt(updateIvtList); + //分配表清除任务 ioStorInvDisMapper.update(new IOStorInvDis(),new LambdaUpdateWrapper<>(IOStorInvDis.class) .set(IOStorInvDis::getTask_id,null) @@ -241,7 +272,8 @@ public class SeparateMaterialTask extends AbstractTask { JSONObject jsonObject=new JSONObject(); jsonObject.put("status",400); jsonObject.put("message","任务被取消"); - wmsToMesService.uploadMes(jsonObject); + jsonObject.put("task_code",taskObj.getExt_task_code()); + // wmsToMesService.uploadMes(jsonObject); } } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java index 3fc4053..8d45e29 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java @@ -1048,7 +1048,7 @@ public class OutBillServiceImpl extends ServiceImpl i task_form.put("task_group_id", taskGroupId); task_form.put("task_group_seq", "1"); task_form.put("create_mode", whereJson.getString("create_mode")); - task_id = downEmptyUpFullTask.create(task_form); + downEmptyUpFullTask.create(task_form); JSONObject task_form2 = new JSONObject(); task_form2.put("task_type", "DownEmptyUpFullTask"); @@ -1058,13 +1058,15 @@ public class OutBillServiceImpl extends ServiceImpl i task_form2.put("point_code2", whereJson.getString("point_code3")); task_form2.put("point_code3", whereJson.getString("point_code4")); task_form2.put("point_code4", whereJson.getString("point_code")); - task_form.put("vehicle_code", ioStorInvDis.getStoragevehicle_code()); - task_form.put("vehicle_code2",point3.getVehicle_code()); + task_form2.put("vehicle_code", ioStorInvDis.getStoragevehicle_code()); + task_form2.put("vehicle_code2",point3.getVehicle_code()); task_form2.put("group_id", whereJson.getString("group_id")); task_form2.put("task_group_id", taskGroupId); task_form2.put("task_group_seq", "2"); - task_form.put("create_mode", whereJson.getString("create_mode")); - downEmptyUpFullTask.create(task_form2); + task_form2.put("create_mode", whereJson.getString("create_mode")); + + //这个需求特殊,因为会产生2个task,并且第二个task后结束,因此以第二个task_id为准!! + task_id = downEmptyUpFullTask.create(task_form2); point2.setIng_task_code(task_id); point2.setPoint_status("3");