diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/BstIvtPackageinfoivtMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/BstIvtPackageinfoivtMapper.java index 6f43bc389..53e8a191f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/BstIvtPackageinfoivtMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/BstIvtPackageinfoivtMapper.java @@ -7,6 +7,7 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask; import java.util.List; import java.util.Map; +import java.util.Set; /** * {@code @Description:} 装箱区点位库存表(BstIvtPackageinfoivt)数据持久层 @@ -28,4 +29,10 @@ public interface BstIvtPackageinfoivtMapper extends BaseMapper getTaskList(Set point_code1, Set point_code2, Set point_code3, Set point_code4); + + } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/BstIvtPackageinfoivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/BstIvtPackageinfoivtMapper.xml index 17f1ae6c9..0923bcac2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/BstIvtPackageinfoivtMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/BstIvtPackageinfoivtMapper.xml @@ -2,26 +2,84 @@ + + + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java index 9d13409d6..d37128fff 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java @@ -32,12 +32,12 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static java.util.Collections.emptyList; /** @@ -57,6 +57,8 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl pointCodeType1; - SFunction pointCodeType2 = null; - if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"))) { - pointCodeType1 = SchBaseTask::getPoint_code1; - } else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"))) { - pointCodeType1 = SchBaseTask::getPoint_code2; + List taskList; + Set pointSets; + if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务")) || pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"))) { + taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, null, null); } else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货分配"))) { - pointCodeType1 = SchBaseTask::getPoint_code3; + taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, null); } else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"))) { - pointCodeType1 = SchBaseTask::getPoint_code4; - } else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"))) { - pointCodeType1 = SchBaseTask::getPoint_code1; - pointCodeType2 = SchBaseTask::getPoint_code3; + taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, null, pointIds); } else { - pointCodeType1 = SchBaseTask::getPoint_code2; - pointCodeType2 = SchBaseTask::getPoint_code4; + taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, pointIds); } - // 查询未完成任务 - LambdaQueryWrapper taskQueryWrapper = new LambdaQueryWrapper() - .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) - .in(pointCodeType1, pointIds); - if (pointCodeType2 != null) { - taskQueryWrapper = new LambdaQueryWrapper() - .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) - .in(pointCodeType1, pointIds).in(pointCodeType2, pointIds); - } - if (taskType != null && !taskType.isEmpty()) { - taskQueryWrapper.eq(SchBaseTask::getTask_type, taskType); - } - List taskList = taskService.list(taskQueryWrapper); - SFunction finalPointCodeType2 = pointCodeType2; - Set taskPointCodes = taskList.stream() - .flatMap(task -> { - Set pointCodeTypes = new HashSet<>(); - pointCodeTypes.add(pointCodeType1.apply(task)); - if (finalPointCodeType2 != null) { - pointCodeTypes.add(finalPointCodeType2.apply(task)); - } - return pointCodeTypes.stream(); - }) - .collect(Collectors.toSet()); // 过滤未完成任务的任务 + if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务")) || pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"))) { + pointSets = taskList.stream() + // 对每个任务应用映射操作,将point_code字段添加到Stream中 + .flatMap(task -> Stream.of( + task.getPoint_code1(), + task.getPoint_code2() + )) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + } else { + pointSets = taskList.stream() + // 对每个任务应用映射操作,将point_code字段添加到Stream中 + .flatMap(task -> Stream.of( + task.getPoint_code1(), + task.getPoint_code2(), + task.getPoint_code3(), + task.getPoint_code4() + )) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + } return packageinfoivtList.stream() - .filter(packageInfo -> !taskPointCodes.contains(packageInfo.getPoint_code())) + .filter(p -> !pointSets.contains(p.getPoint_code())) .collect(Collectors.toList()); - } private List getBstIvtPackageinfoivts(String ivtType, String ivtStatus, String sortType) { @@ -229,7 +221,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl() .eq(SchBaseTask::getTask_code, taskCode) @@ -254,17 +247,20 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); if (PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货分配").equals(actionType)) { queryWrapper.eq(BstIvtPackageinfoivt::getPoint_code, baseTask.getPoint_code3()); + taskPointType = PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"); } else if (PackageInfoIvtEnum.TASK_ACTION_TYPE.code("放货分配").equals(actionType)) { queryWrapper.eq(BstIvtPackageinfoivt::getPoint_code, baseTask.getPoint_code4()); + taskPointType = PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"); } BstIvtPackageinfoivt bstIvtPackageinfoivt = bstIvtPackageinfoivtMapper.selectOne(queryWrapper); //根据任务类型返回点位分配规则 BstIvtPackageinfoivt ivtInfo = getIvtInfoFromRegion(baseTask.getTask_type(), actionType); - List newPointList = getBstIvtPackageinfoivts(bstIvtPackageinfoivt.getPoint_status(), ivtInfo.getIvt_status(), ivtInfo.getSort_seq().toString()); + List newPointList = packageinfoivtService.checkEndPointTask(bstIvtPackageinfoivt.getPoint_status(), ivtInfo.getIvt_status(), taskPointType, ivtInfo.getSort_seq().toString(), ""); if (CollectionUtils.isEmpty(newPointList)) { throw new BadRequestException("暂无点位资源!"); } @@ -389,7 +385,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl() - .setSql("ivt_status = null, container_name = '0'") + .setSql("ivt_status = '0', container_name = null") .eq("point_code", baseTask.getPoint_code1())); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java index 7f09cb8a3..9f19034cd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java @@ -104,7 +104,7 @@ public class DjqTask extends AbstractAcsTask { //1.更改任务状态为完成 schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); //2.改变起点点位状态,二次分配,取货完成就改起点库存 - 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", null).eq("point_code", schBaseTask.getPoint_code1())); //3更新库存记录 //todo 暂时改为质检合格品 packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendDjqToGzq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendDjqToGzq.java index 00661196f..7cec63f31 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendDjqToGzq.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendDjqToGzq.java @@ -28,10 +28,37 @@ public class AutoSendDjqToGzq { //待检区->管制区agv自动搬运任务 public void run() { - //this.sendDjqToGzq(); + this.sendDjqToGzq(); } + + /** + * 普通任务 + */ void sendDjqToGzq() { + //待检区有管制品且过滤未完成任务 + List djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("管制品"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), ""); + if (CollectionUtils.isEmpty(djqPackageinfoivtList)) { + return; + } + //管制区有空位且过滤未完成任务 + List gzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), ""); + if (CollectionUtils.isEmpty(gzqPackageinfoivtList)) { + return; + } + JSONObject task = new JSONObject(); + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->管制区")); + task.put("vehicle_code", djqPackageinfoivtList.get(0).getContainer_name()); + task.put("point_code1", djqPackageinfoivtList.get(0).getPoint_code()); + task.put("point_code2", gzqPackageinfoivtList.get(0).getPoint_code()); + gzqTask.createTask(task); + } + + + /** + * 二次分配任务 + */ + void sendDjqToGzq1() { JSONObject task = new JSONObject(); String pointCode1; //待检区有管制品且过滤未完成任务 @@ -45,9 +72,9 @@ public class AutoSendDjqToGzq { pointCode1 = notNeedAllocation.get(0).getPoint_code(); task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配")); } else { - pointCode1 = packageinfoivtService.getWaitPoint(djqPackageinfoivtList.get(0).getBlock(), djqPackageinfoivtList.get(0).getWait_point_type()); - task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取放货二次分配")); - task.put("point_code3", djqPackageinfoivtList.get(0).getPoint_code()); + pointCode1 = packageinfoivtService.getWaitPoint(djqPackageinfoivtList.get(0).getBlock(), djqPackageinfoivtList.get(0).getWait_point_type()); + task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取放货二次分配")); + task.put("point_code3", djqPackageinfoivtList.get(0).getPoint_code()); } List gzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"), "", ""); if (pointCode1 != null && CollectionUtils.isNotEmpty(gzqPackageinfoivtList)) { diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendGzqToDjq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendGzqToDjq.java index d2972ee34..c7257f98f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendGzqToDjq.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendGzqToDjq.java @@ -28,10 +28,39 @@ public class AutoSendGzqToDjq { //管制区->待检区agv自动搬运任务 public void run() { - //this.sendGzqToDjq(); + this.sendGzqToDjq(); } + + /** + * 普通任务 + */ + void sendGzqToDjq() { + //管制区有合格品且过滤未完成任务 + List gzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("合格品"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), ""); + if (CollectionUtils.isEmpty(gzqPackageinfoivtList)) { + return; + } + //待检区有空位且过滤未完成任务 + List djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), ""); + if (CollectionUtils.isEmpty(djqPackageinfoivtList)) { + return; + } + JSONObject task = new JSONObject(); + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("管制区->待检区")); + task.put("vehicle_code", gzqPackageinfoivtList.get(0).getContainer_name()); + task.put("point_code1", gzqPackageinfoivtList.get(0).getPoint_code()); + task.put("point_code2", djqPackageinfoivtList.get(0).getPoint_code()); + djqTask.createTask(task); + } + + + /** + * 二次分配逻辑 + */ + + void sendGzqToDjq1() { JSONObject task = new JSONObject(); String pointCode2; //管制区有合格品且过滤未完成任务 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendMzToDjq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendMzToDjq.java index c1a9243d5..13959d2ee 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendMzToDjq.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendMzToDjq.java @@ -28,27 +28,62 @@ public class AutoSendMzToDjq { //满轴->待检区agv自动搬运任务 public void run() { - this.sendMzqToDjq(); + this.sendMzqToDjq2(); } + /** + * 普通任务 + */ void sendMzqToDjq() { - JSONObject toDjqTask = new JSONObject(); //满轴有子卷且没有未完成任务 List bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), "1", "2", ""); if (CollectionUtils.isEmpty(bstIvtPackageinfoivtList)) { return; } List djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), "2", "1", ""); - if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)) { - toDjqTask.put("vehicle_code", bstIvtPackageinfoivtList.get(0).getContainer_name()); - toDjqTask.put("point_code1", bstIvtPackageinfoivtList.get(0).getPoint_code()); - toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区")); - toDjqTask.put("point_code2", djqPackageinfoivtList.get(0).getPoint_code()); - djqTask.createTask(toDjqTask); + if (CollectionUtils.isEmpty(djqPackageinfoivtList)) { + return; } + JSONObject toDjqTask = new JSONObject(); + toDjqTask.put("vehicle_code", bstIvtPackageinfoivtList.get(0).getContainer_name()); + toDjqTask.put("point_code1", bstIvtPackageinfoivtList.get(0).getPoint_code()); + toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区")); + toDjqTask.put("point_code2", djqPackageinfoivtList.get(0).getPoint_code()); + djqTask.createTask(toDjqTask); + + } + void sendMzqToDjq2() { + try { + String pointCode2 = null; + JSONObject task = new JSONObject(); + //满轴有子卷且过滤未完成任务 + List mzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货分配"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), ""); + if (CollectionUtils.isEmpty(mzqPackageinfoivtList)) { + return; + } + //待检区有空位且过滤未完成任务 + List djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), ""); + if (CollectionUtils.isEmpty(djqPackageinfoivtList)) { + return; + } + pointCode2 = djqPackageinfoivtList.get(0).getPoint_code(); + task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取货二次分配")); + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区")); + task.put("vehicle_code", mzqPackageinfoivtList.get(0).getContainer_name()); + task.put("point_code1", packageinfoivtService.getWaitPoint(mzqPackageinfoivtList.get(0).getBlock(), mzqPackageinfoivtList.get(0).getWait_point_type())); + task.put("point_code3", mzqPackageinfoivtList.get(0).getPoint_code()); + task.put("point_code2", pointCode2); + djqTask.createTask(task); + + } catch (Exception ex) { + log.error("sendMzqToDjq1 error:{}", ex.getMessage()); + } + } - + /** + * 二次分配任务 + */ void sendMzqToDjq1() { try { String pointCode2 = null; @@ -73,15 +108,13 @@ public class AutoSendMzToDjq { task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取放货二次分配")); task.put("point_code4", djqPackageinfoivtList.get(0).getPoint_code()); } - if (pointCode2 != null) { - task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区")); - task.put("vehicle_code", mzqPackageinfoivtList.get(0).getContainer_name()); - //需要二次分配,起点分配等待点 - task.put("point_code1", packageinfoivtService.getWaitPoint(mzqPackageinfoivtList.get(0).getBlock(), mzqPackageinfoivtList.get(0).getWait_point_type())); - task.put("point_code3", mzqPackageinfoivtList.get(0).getPoint_code()); - task.put("point_code2", pointCode2); - djqTask.createTask(task); - } + task.put("vehicle_code", mzqPackageinfoivtList.get(0).getContainer_name()); + //需要二次分配,起点分配等待点 + task.put("point_code1", packageinfoivtService.getWaitPoint(mzqPackageinfoivtList.get(0).getBlock(), mzqPackageinfoivtList.get(0).getWait_point_type())); + task.put("point_code3", mzqPackageinfoivtList.get(0).getPoint_code()); + task.put("point_code2", pointCode2); + djqTask.createTask(task); + } catch (Exception ex) { log.error("sendMzqToDjq1 error:{}", ex.getMessage()); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java index b952870d9..ee47d0444 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java @@ -36,6 +36,9 @@ public class AutoSendToZxq { this.sendDjqToZxq(); } + /** + * 普通任务 + */ void sendDjqToZxq() { JSONObject toDjqTask = new JSONObject(); //待检区有子卷且过滤未完成任务 @@ -44,16 +47,21 @@ public class AutoSendToZxq { return; } List zxqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), "", ""); - if (CollectionUtils.isNotEmpty(zxqPackageinfoivtList)) { - toDjqTask.put("vehicle_code", djqPackageinfoivtList.get(0).getContainer_name()); - toDjqTask.put("point_code1", djqPackageinfoivtList.get(0).getPoint_code()); - toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区")); - toDjqTask.put("point_code2", zxqPackageinfoivtList.get(0).getPoint_code()); - zxqTask.createTask(toDjqTask); + if (CollectionUtils.isEmpty(zxqPackageinfoivtList)) { + return; } + toDjqTask.put("vehicle_code", djqPackageinfoivtList.get(0).getContainer_name()); + toDjqTask.put("point_code1", djqPackageinfoivtList.get(0).getPoint_code()); + toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区")); + toDjqTask.put("point_code2", zxqPackageinfoivtList.get(0).getPoint_code()); + zxqTask.createTask(toDjqTask); + } + /** + * 二次分配任务 + */ public void sendDjqToZxq1() { //装箱区有空位,去待检区消费合格品子卷 List bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask( diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java index e0517deff..c9e66425d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java @@ -31,14 +31,51 @@ public class AutoSendVehicleToDjq { @Resource private IbstIvtPackageinfoivtService packageinfoivtService; + //装箱区->待检区或管制区补空载具 public void run() { - //this.sendVehicleToDjqOrGzq(); + this.sendVehicleToDjqOrGzq1(); + } + + + public void sendVehicleToDjqOrGzq1() { + //存在装箱区有空载具的点位 + String pointCode2 = null; + JSONObject task = new JSONObject(); + List zxqIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"), "", ""); + if (CollectionUtils.isEmpty(zxqIvtList)) { + return; + } + //待检区有空位且过滤未完成任务 + List djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务放货分配"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), ""); + if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)) { + pointCode2 = djqPackageinfoivtList.get(0).getPoint_code(); + task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")); + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->待检区)")); + } else { + //管制区有空位 + List gzqList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务放货分配"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), ""); + if (CollectionUtils.isNotEmpty(gzqList)) { + pointCode2 = gzqList.get(0).getPoint_code(); + task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")); + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->管制区)")); + } + } + //去装箱区搬运空载具 + if (pointCode2 != null) { + task.put("point_code2", pointCode2); + task.put("point_code1", zxqIvtList.get(0).getPoint_code()); + if (task.getString("task_type").equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->待检区)"))) { + sendDjqKzjTask.createTask(task); + } else { + sendGzqKzjTask.createTask(task); + } + } } /** - * 装箱区->待检区或管制区补空载具 + * 二次分配任务 */ public void sendVehicleToDjqOrGzq() { //存在装箱区有空载具的点位 @@ -76,7 +113,7 @@ public class AutoSendVehicleToDjq { task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->管制区)")); } } - //去待检区或管制区搬运空载具 + //去装箱区搬运空载具 if (pointCode2 != null) { task.put("point_code2", pointCode2); //送空二次分配,目标点分配等待点 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToKzj.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToKzj.java index 77d446b1c..7fef83cd6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToKzj.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToKzj.java @@ -29,14 +29,84 @@ public class AutoSendVehicleToKzj { @Resource private IbstIvtPackageinfoivtService packageinfoivtService; - + //待检区或管制区->空载具缓存位补空 public void run() { - this.toKzjHcw(); + this.toKzjHcw2(); + } + + + public void toKzjHcw() { + //存在空载具缓存位无空载具的点位 + List kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), ""); + if (CollectionUtils.isEmpty(kzjIvtList)) { + return; + } + String pointCode1 = null; + JSONObject task = new JSONObject(); + //待检区有空载具 + List djqPointList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", ""); + if (CollectionUtils.isNotEmpty(djqPointList)) { + pointCode1 = djqPointList.get(0).getPoint_code(); + } else { + //查询装箱区有空载具 + List zxqPointList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", ""); + if (CollectionUtils.isNotEmpty(zxqPointList)) { + pointCode1 = zxqPointList.get(0).getPoint_code(); + } + } + //去装箱区搬运空载具 + if (pointCode1 != null) { + task.put("point_code1", pointCode1); + //送到到任意空载具缓存位 + task.put("point_code2", kzjIvtList.get(0).getPoint_code()); + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)")); + djqToKzjhcwTask.createTask(task); + } } /** - * 待检区或管制区->空载具缓存位补空 + * 二次分配任务 + */ + public void toKzjHcw2() { + //存在空载具缓存位无空载具的点位 + String pointCode1 = null; + JSONObject task = new JSONObject(); + List kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"), "", ""); + if (CollectionUtils.isEmpty(kzjIvtList)) { + return; + } + //待检区有空载具且过滤未完成任务 + List djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), ""); + if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)) { + pointCode1 = djqPackageinfoivtList.get(0).getPoint_code(); + task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配")); + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)")); + } else { + //管制区有空位 + List gzqList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", ""); + if (CollectionUtils.isNotEmpty(gzqList)) { + pointCode1 = gzqList.get(0).getPoint_code(); + task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配")); + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")); + } + } + //去待检区或管制区搬运空载具 + if (pointCode1 != null) { + task.put("point_code1", pointCode1); + //送空二次分配,目标点分配等待点 + task.put("point_code4", kzjIvtList.get(0).getPoint_code()); + task.put("point_code2", packageinfoivtService.getWaitPoint(kzjIvtList.get(0).getBlock(), kzjIvtList.get(0).getWait_point_type())); + if (task.getString("task_type").equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"))) { + djqToKzjhcwTask.createTask(task); + } else { + gzqToKzjhcwTask.createTask(task); + } + } + } + + /** + * 二次分配任务 */ public void toKzjHcw1() { //存在空载具缓存位无空载具的点位 @@ -49,10 +119,10 @@ public class AutoSendVehicleToKzj { //待检区有空载具且过滤未完成任务 List djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), ""); if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)) { - //无二次分配 + //无需二次分配 List notNeedAllocation = djqPackageinfoivtList.stream().filter(r -> !r.getWait_point_type().equals(PackageInfoIvtEnum.WAIT_POINT_TYPE.code("待检区等待点"))).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(notNeedAllocation)) { - pointCode1 = notNeedAllocation.get(0).getPoint_code(); + pointCode1 = djqPackageinfoivtList.get(0).getPoint_code(); task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配")); } else { if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)) { @@ -87,34 +157,4 @@ public class AutoSendVehicleToKzj { } } } - - public void toKzjHcw() { - //存在空载具缓存位无空载具的点位 - List kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), ""); - if (CollectionUtils.isEmpty(kzjIvtList)) { - return; - } - String pointCode1 = null; - JSONObject toKzjHcwTask = new JSONObject(); - //待检区有空载具 - List djqPointList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", ""); - if (CollectionUtils.isNotEmpty(djqPointList)) { - pointCode1 = djqPointList.get(0).getPoint_code(); - } else { - //查询装箱区有空载具 - List zxqPointList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", ""); - if (CollectionUtils.isNotEmpty(zxqPointList)) { - pointCode1 = zxqPointList.get(0).getPoint_code(); - } - } - //去装箱区搬运空载具 - if (pointCode1 != null) { - toKzjHcwTask.put("point_code1", pointCode1); - //送到到任意空载具缓存位 - toKzjHcwTask.put("point_code2", kzjIvtList.get(0).getPoint_code()); - toKzjHcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)")); - djqToKzjhcwTask.createTask(toKzjHcwTask); - } - } - } 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 db911ba1d..ab68f8eef 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 @@ -64,6 +64,9 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.lang.reflect.Method; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -1748,14 +1751,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 这个情况是有agv任务在搬去待检区或管制区的路上,还没有更新任务状态;需要查询是否有这种任务,等这个任务更新完后, // 再补发之前创建的输送线到满轴缓存位任务; log.info("二楼到一楼,成品子卷到达一楼输送线,sendProductToFirstFloor--------------------------:" + whereJson.toString()); - JSONObject result = new JSONObject(); if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) { throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为空!"); } if (whereJson.getString("device_code").equals("null") || whereJson.getString("material_barcode").equals("null")) { throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为null!"); } - RLock lock = redissonClient.getLock(whereJson.getString("material_barcode")); + String containerName = whereJson.getString("material_barcode"); + JSONObject result = new JSONObject(); + result.put("data", containerName); + RLock lock = redissonClient.getLock(containerName); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { if (tryLock) { @@ -1765,10 +1770,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); List mzPointList = bstIvtPackageinfoivtList.stream() .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位").equals(r.getPoint_status()) - && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList()); + && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())) + .sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq).reversed()).collect(Collectors.toList()); + JSONObject jo = new JSONObject(); jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); - jo.put("vehicle_code", whereJson.getString("material_barcode")); + jo.put("vehicle_code", containerName); //2.创建输送线->满轴位桁架任务, String point_code1 = whereJson.getString("device_code"); jo.put("point_code1", point_code1); @@ -1778,56 +1785,30 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { List kzjPointList = bstIvtPackageinfoivtList.stream() .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status()) && PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())) - .sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq).reversed()).collect(Collectors.toList()); + .sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq)).collect(Collectors.toList()); //空载具缓存位有空载具,桁架取空载具从外到里取空载具,升序 if (CollectionUtils.isNotEmpty(kzjPointList)) { - // 创建前先判断是否有已创建相同任务 - List existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")); - if (CollectionUtils.isEmpty(existTaskList)) { - jo.put("point_code3", kzjPointList.get(0).getPoint_code()); - //终点为输送线点位 - jo.put("point_code4", whereJson.getString("device_code")); - jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")); - jo.put("is_send", true); - mzhcwTask.createTask(jo); - } + //创建输送线四个点任务 + return createTask(containerName, jo, kzjPointList.get(0).getPoint_code(), whereJson.getString("device_code")); } else { - //如果空载具缓存位确少空载具,创建输送线->满轴缓存位两个点任务 - List existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); - if (CollectionUtils.isEmpty(existTaskList)) { - jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); - jo.put("is_send", true); - mzhcwTask.createTask(jo); - } - //空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务 - List existTasks = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); - if (CollectionUtils.isEmpty(existTasks)) { - JSONObject jo1 = new JSONObject(); - //创建确定终点任务 - jo1.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); - jo1.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); - jo1.put("point_code2", "NBJ1002"); - jo1.put("task_status", TaskStatusEnum.SURE_END.getCode()); - jo1.put("is_send", false); - ssxDjwTask.createTask(jo1); - } + //创建输送线->满轴缓存位两个点任务 + return createTask2(containerName, jo); } - result.put("status", HttpStatus.OK.value()); - result.put("message", "反馈成功!"); } else { - // 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发; - // List existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); - // //如果有就不创建,没有就创建 - // if (CollectionUtils.isEmpty(existTaskList)) { - // //只确定起点NBJ1002 - // JSONObject jo2 = new JSONObject(); - // jo2.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); - // jo2.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); - // jo2.put("point_code1", "NBJ1002"); - // jo.put("task_status", TaskStatusEnum.SURE_START.getCode()); - // jo2.put("is_send", false); - // mzhcwTask.createTask(jo2); - // } + //如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发; + List existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"),containerName); + //如果有就不创建,没有就创建 + if (CollectionUtils.isEmpty(existTaskList)) { + //只确定起点NBJ1002 + JSONObject jo2 = new JSONObject(); + jo2.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + jo2.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); + jo2.put("point_code1", "NBJ1002"); + jo.put("task_status", TaskStatusEnum.SURE_START.getCode()); + jo2.put("is_send", false); + mzhcwTask.createTask(jo2); + } + result.put("data", containerName); result.put("status", HttpStatus.BAD_REQUEST.value()); result.put("message", "满轴缓存位暂无空位!"); } @@ -1844,6 +1825,61 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return result; } + private JSONObject createTask2(String containerName, JSONObject jo) { + JSONObject result = new JSONObject(); + result.put("data", containerName); + //如果空载具缓存位确少空载具,创建输送线->满轴缓存位两个点任务 + List existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); + List existTaskList1 = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), containerName); + if (CollectionUtils.isEmpty(existTaskList1)) { + jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); + jo.put("is_send", true); + mzhcwTask.createTask(jo); + //空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务 + List existTasks = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); + List existTask1 = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), containerName); + if (CollectionUtils.isEmpty(existTask1)) { + JSONObject jo1 = new JSONObject(); + //创建确定终点任务 + jo1.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + jo1.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); + jo1.put("point_code2", "NBJ1002"); + jo1.put("vehicle_code", containerName); + jo1.put("task_status", TaskStatusEnum.SURE_END.getCode()); + jo1.put("is_send", false); + ssxDjwTask.createTask(jo1); + } + result.put("status", HttpStatus.OK.value()); + result.put("message", "反馈成功!"); + } else { + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message", "该子卷号:" + containerName + "桁架任务已存在,二楼下一楼存在相同子卷号,请检查!"); + } + return result; + } + + private JSONObject createTask(String containerName, JSONObject jo, String pointCode3, String pointCode4) { + JSONObject result = new JSONObject(); + result.put("data", containerName); + // 创建前先判断是否有已创建相同任务 + List existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")); + List existTaskList1 = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), containerName); + if (CollectionUtils.isEmpty(existTaskList1)) { + jo.put("point_code3", pointCode3); + //终点为输送线点位 + jo.put("point_code4", pointCode4); + jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")); + jo.put("is_send", true); + mzhcwTask.createTask(jo); + result.put("status", HttpStatus.OK.value()); + result.put("message", "反馈成功!"); + } else { + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message", "该子卷号:" + containerName + "桁架任务已存在,二楼下一楼存在相同子卷号,请检查!"); + } + return result; + } + private List getExistTasks(String taskType) { return taskService.list(new LambdaUpdateWrapper() .eq(SchBaseTask::getTask_type, taskType) @@ -1851,6 +1887,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))); } + private List getExistTasks(String taskType, String containerName) { + String startTime = LocalDate.now().atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + return taskService.list(new LambdaQueryWrapper() + .eq(SchBaseTask::getTask_type, taskType) + .eq(SchBaseTask::getVehicle_code, containerName) + .gt(SchBaseTask::getCreate_time, startTime) + .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) + + ); + } + @Override @Transactional(rollbackFor = Exception.class) diff --git a/lms/nladmin-ui/src/views/wms/pdm/sub/MaterDialog.vue b/lms/nladmin-ui/src/views/wms/pdm/sub/MaterDialog.vue index 5eaf298d1..5a826a192 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/sub/MaterDialog.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/sub/MaterDialog.vue @@ -67,7 +67,7 @@ 请仔细核对子卷与木箱规格是否匹配,

- 木箱长度为:{{ this.boxLength }}, + 木箱规格为:{{ this.boxLength }}

子卷规格为:{{ this.paperTubeDescription }}, @@ -211,7 +211,7 @@ export default { submit() { debugger this.rows = this.$refs.table.selection - this.boxLength = this.rows[0].box_length + this.boxLength = this.rows[0].material_code if (this.rows.length <= 0) { this.$message('请先选择木箱信息') return