From 91df60b64746377a52393aecabcb715a03256717 Mon Sep 17 00:00:00 2001 From: baoge <751575283@qq.com> Date: Fri, 2 Feb 2024 16:58:33 +0800 Subject: [PATCH] =?UTF-8?q?opt:=E5=A2=9E=E5=8A=A0=E7=82=B9=E4=BD=8D?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E8=A1=A8=E5=90=AF=E7=94=A8=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../b_lms/sch/tasks/packingArea/ZxqTask.java | 5 +- .../acs/service/impl/AcsToWmsServiceImpl.java | 135 +++++++++--------- .../mes/service/impl/MesToLmsServiceImpl.java | 3 +- 3 files changed, 74 insertions(+), 69 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/packingArea/ZxqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/packingArea/ZxqTask.java index d144ad366..ee6da8392 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/packingArea/ZxqTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/packingArea/ZxqTask.java @@ -102,9 +102,10 @@ public class ZxqTask extends AbstractAcsTask { packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); //更新库存记录 packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); - //todo 3.空木箱出库任务中,回调判断装箱区是否存在木箱号对应的子卷,如果存在,就创建搬运任务 + //todo 3.刘先源的空木箱出库任务完成状态更新时,判断装箱区是否存在木箱号对应的子卷,如果存在,就创建搬运任务 //4.查询子卷对应的包装关系表,判断装箱位的木箱号是否为子卷对应的木箱号,是,创建搬运任务到装箱位,否,什么都不做 - PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService.getOne(new LambdaUpdateWrapper().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false); + PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService + .getOne(new LambdaUpdateWrapper().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false); if (pdmBiSubpackagerelation != null) { //查询目标点位信息 BstIvtPackageinfoivt zxqPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper().eq(BstIvtPackageinfoivt::getPoint_code, schBaseTask.getPoint_code2())); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 8870ddf45..7e4033bf4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -62,7 +62,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; + @Service @RequiredArgsConstructor @@ -98,71 +98,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private MzhcwTask mzhcwTask; - /** - * 成品子卷到达一楼输送线 - */ - @Override - public JSONObject sendProductToFirstFloor(JSONObject whereJson) { - log.info("sendProductToFirstFloor--------------------------:" + whereJson.toString()); - JSONObject result = new JSONObject(); - String task_code1 = whereJson.getString("task_code1"); - SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper().eq(StringUtils.isNotBlank(task_code1), SchBaseTask::getTask_code, task_code1)); - if (schBaseTask == null) { - throw new BadRequestException("接口sendProductToFirstFloor,任务号为空!"); - } - // JSONObject whereJson 应该传子卷信息,子卷等级,载具号,任务号,车间号 - // 先查询满轴缓存位是否有可用库位,有创建搬运任务 - // 任务完成创建空载具补充到输送线桁架任务,子卷搬运至待检区或或管制区agv任务 - // 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发; - // 这个情况是有agv任务在搬去待检区或管制区的路上,还没有更新任务状态;需要查询是否有这种任务,等这个任务更新完后, - // 再补发之前创建的输送线到满轴缓存位任务; - //1.查询满轴缓存位是否有空位 - List bstIvtPackageinfoivtList = packageinfoivtService - .list(new LambdaUpdateWrapper().eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")) - .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空")).orderByAsc(BstIvtPackageinfoivt::getSort_seq)); - JSONObject jo = new JSONObject(); - //todo 添加任务类型 - jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); - //一楼到输送线任务的目标点为当前位置,为起点 - jo.put("point_code1", schBaseTask.getPoint_code2()); - //任意一个满轴缓存位为终点 - jo.put("point_code2", bstIvtPackageinfoivtList.get(0).getPoint_code()); - //获取子卷号 - jo.put("vehicle_code", whereJson.getString("container_name1")); - if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) { - jo.put("isSend", true); - mzhcwTask.createTask(jo); - result.put("status", HttpStatus.OK.value()); - result.put("message", "反馈成功!"); - return result; - } else { - //满轴缓存位点位 - List packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper() - .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))); - //todo 查找正在搬运到待检区的任务,假设只有一个,现场其实有多个车正在搬运过去 - List taskList = taskService.list(new LambdaUpdateWrapper() - //执行中 - .eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()) - .and( - r -> r.in(SchBaseTask::getPoint_code1, packageinfoivtList) - )); - // 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发; - List existTaskList = taskService.list(new LambdaUpdateWrapper() - //是否存在已创建的目标点相同的未下发的任务 - .eq(SchBaseTask::getPoint_code2, taskList.get(0).getPoint_code1()) - .eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode())); - if (CollectionUtils.isEmpty(existTaskList)) { - jo.put("point_code2", taskList.get(0).getPoint_code1()); - jo.put("isSend", false); - mzhcwTask.createTask(jo); - } - result.put("status", HttpStatus.OK.value()); - result.put("message", "反馈成功!"); - return result; - } - } - - /** * task_id:任务标识 * task_code:任务编码 @@ -1753,4 +1688,72 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } } + + /** + * 成品子卷到达一楼输送线 + */ + @Override + public JSONObject sendProductToFirstFloor(JSONObject whereJson) { + log.info("sendProductToFirstFloor--------------------------:" + whereJson.toString()); + JSONObject result = new JSONObject(); + String task_code1 = whereJson.getString("task_code1"); + SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper().eq(StringUtils.isNotBlank(task_code1), SchBaseTask::getTask_code, task_code1)); + if (schBaseTask == null) { + throw new BadRequestException("接口sendProductToFirstFloor,任务号为空!"); + } + // JSONObject whereJson 应该传子卷信息,子卷等级,载具号,任务号,车间号 + // 先查询满轴缓存位是否有可用库位,有创建搬运任务 + // 任务完成创建空载具补充到输送线桁架任务,子卷搬运至待检区或或管制区agv任务 + // 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发; + // 这个情况是有agv任务在搬去待检区或管制区的路上,还没有更新任务状态;需要查询是否有这种任务,等这个任务更新完后, + // 再补发之前创建的输送线到满轴缓存位任务; + //1.查询满轴缓存位是否有空位 + List bstIvtPackageinfoivtList = packageinfoivtService + .list(new LambdaUpdateWrapper() + .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")) + .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空")).orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + JSONObject jo = new JSONObject(); + //todo 添加任务类型 + jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); + //一楼到输送线任务的目标点为当前位置,为起点 + jo.put("point_code1", schBaseTask.getPoint_code2()); + //任意一个满轴缓存位为终点 + jo.put("point_code2", bstIvtPackageinfoivtList.get(0).getPoint_code()); + //获取子卷号 + jo.put("vehicle_code", whereJson.getString("container_name1")); + if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) { + jo.put("isSend", true); + mzhcwTask.createTask(jo); + result.put("status", HttpStatus.OK.value()); + result.put("message", "反馈成功!"); + return result; + } else { + //满轴缓存位点位 + List packageinfoivtList = packageinfoivtService + .list(new LambdaUpdateWrapper() + .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))); + //todo 查找正在搬运到待检区的任务,假设只有一个,现场其实有多个车正在搬运过去 + List taskList = taskService.list(new LambdaUpdateWrapper() + //执行中 + .eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()) + .and( + r -> r.in(SchBaseTask::getPoint_code1, packageinfoivtList) + )); + // 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发; + List existTaskList = taskService.list(new LambdaUpdateWrapper() + //是否存在已创建的目标点相同的未下发的任务 + .eq(SchBaseTask::getPoint_code2, taskList.get(0).getPoint_code1()) + .eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode())); + if (CollectionUtils.isEmpty(existTaskList)) { + jo.put("point_code2", taskList.get(0).getPoint_code1()); + jo.put("isSend", false); + mzhcwTask.createTask(jo); + } + result.put("status", HttpStatus.OK.value()); + result.put("message", "反馈成功!"); + return result; + } + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java index 273fe01c2..338e17b49 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java @@ -1587,7 +1587,8 @@ public class MesToLmsServiceImpl implements MesToLmsService { List bstIvtPackageinfoivtList = packageinfoivtService .list(new LambdaUpdateWrapper() .in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区")) - .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")).orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); //子卷信息 BstIvtPackageinfoivt containerInfo = bstIvtPackageinfoivtList.stream().filter(r -> r.getContainer_name().equals(containerName)).collect(Collectors.toList()).get(0);