diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/IbstIvtPackageinfoivtService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/IbstIvtPackageinfoivtService.java index 0ccba5603..376cbc309 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/IbstIvtPackageinfoivtService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/IbstIvtPackageinfoivtService.java @@ -1,15 +1,11 @@ package org.nl.b_lms.sch.point.service; - import com.alibaba.fastjson.JSONObject; import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; import com.baomidou.mybatisplus.extension.service.IService; - import java.util.List; import java.util.Map; import java.util.Set; - import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.common.domain.query.PageQuery; @@ -61,7 +57,13 @@ public interface IbstIvtPackageinfoivtService extends IService getBstIvtPackageinfoivts(String ivtType, String ivtStatus, String sortType); /** 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 7dea812bd..d933c6d94 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 @@ -132,7 +132,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl() .eq(SchBaseTask::getTask_code, taskCode) @@ -153,23 +155,22 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl空载具缓存位)")) || baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)")) ) { - //检查是否满足二次分配条件 - checkTaskInfo(baseTask); newPoint = checkIvtSBlock(baseTask); } else { if (baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"))) { @@ -178,25 +179,31 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl checkEndPointTask(String ivtType, String ivtStatus, String pointCode, String sortType, String taskType) { + List taskList; + Set pointSets; List returList = new ArrayList<>(); List packageinfoivtList = getBstIvtPackageinfoivts(ivtType, ivtStatus, sortType); Set pointIds = packageinfoivtList.stream() @@ -223,8 +232,6 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl 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("取货分配"))) { @@ -232,8 +239,10 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl(); + } else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("四个点任务取货"))) { taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, null, pointIds, null); } else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("空载具放货"))) { taskList = bstIvtPackageinfoivtMapper.getTaskList(null, pointIds, null, pointIds); @@ -264,7 +273,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl Stream.of( task.getPoint_code1(), @@ -330,7 +339,10 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl getNoBlockIvt(String pointCode, List taskList, List ivtList) { - Set taskPointSet = taskList.stream().map(SchBaseTask::getPoint_code2).filter(pointCode2 -> !pointCode2.equals("ZXQ_01_1")).collect(Collectors.toSet()); + Set taskPointSet = null; + if (CollectionUtils.isEmpty(taskList)) { + taskPointSet = taskList.stream().map(SchBaseTask::getPoint_code2).filter(pointCode2 -> !pointCode2.equals("ZXQ_01_1")).collect(Collectors.toSet()); + } List pointList = new ArrayList<>(); //存在补空载具任务已分配却未完成的任务 if (CollectionUtils.isEmpty(taskPointSet)) { @@ -352,47 +364,73 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl taskList1 = taskService.list(new LambdaQueryWrapper() - .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) - .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) - .and( - r -> r.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")) - .or() - .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)") - ))); - if (CollectionUtils.isNotEmpty(taskList1)) { - List taskList3 = taskList1.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList()); - if (taskList3.size() == 1) { - //校验已分配的补空载具任务是否为当前请求的任务,是可重新分配,否不允许重新分配 - if (!taskList3.get(0).getTask_code().equals(baseTask.getTask_code())) { - log.info("一楼装箱区二次分配" + taskList3.get(0).getTask_code() + ",分配失败,存在多个或上一个已分配的补空载具任务未完成,请检查!"); - throw new BadRequestException("一楼装箱区二次分配" + taskList3.get(0).getTask_code() + ",分配失败,存在多个或上一个已分配的补空载具任务未完成,请检查!"); + //补空载具放货任务 + if (baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")) || + baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)")) + ) { + List taskList = taskService.list(new LambdaQueryWrapper() + .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) + .and( + r -> r.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")) + .or() + .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)")) + .or() + .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) + .or() + .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")) + )); + //是否有执行中已分配补空载具任务 + List taskList1 = taskList.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"))).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(taskList1)) { + List taskList2 = taskList1.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList()); + if (taskList2.size() == 1) { + //校验已分配的补空载具任务是否为当前请求的任务,是可重新分配,否不允许重新分配 + if (!taskList2.get(0).getTask_code().equals(baseTask.getTask_code())) { + log.info("一楼装箱区放货分配" + baseTask.getTask_code() + ",分配失败,存在已分配的补空载具任务编号为:" + taskList2.get(0).getTask_code() + "的任务未完成,请检查!"); + throw new BadRequestException("一楼装箱区放货分配" + baseTask.getTask_code() + ",分配失败,存在已分配的补空载具任务编号为:" + taskList2.get(0).getTask_code() + "的任务未完成,请检查!"); + } + } else if (taskList2.size() > 1) { + log.info("一楼装箱区放货分配" + baseTask.getTask_code() + ",分配失败,存在已分配的补空载具任务编号为:" + taskList2.get(0).getTask_code() + "的任务未完成,请检查!"); + throw new BadRequestException("一楼装箱区放货分配" + baseTask.getTask_code() + ",分配失败,存在已分配的补空载具任务编号为:" + taskList2.get(0).getTask_code() + "的任务未完成,请检查!"); } - } else if (taskList3.size() > 1) { - log.info("一楼装箱区二次分配" + taskList3.get(0).getTask_code() + ",分配失败,存在多个或上一个已分配的补空载具任务未完成,请检查!"); - throw new BadRequestException("一楼装箱区二次分配:" + taskList3.get(0).getTask_code() + ",分配失败,存在多个或上一个已分配的补空载具任务未完成,请检查!"); } - } - //是否有执行中的行架任务,有等待取空载具任务完成再分配 - List taskList2 = taskService.list(new LambdaQueryWrapper() - .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) - .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) - .and( - r -> r.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) - .or() - .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)") - ))); - if (CollectionUtils.isNotEmpty(taskList2)) { - if (StringUtils.isBlank(taskList2.get(0).getRequest_param())) { - log.info("一楼装箱区二次分配" + taskList2.get(0).getTask_code() + ",分配失败,请等待桁架任务取空载具动作执行完成"); - throw new BadRequestException("一楼装箱区二次分配" + taskList2.get(0).getTask_code() + ",分配失败,请等待桁架任务取空载具动作执行完成"); - } else { - if (!taskList2.get(0).getRequest_param().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) { - log.info("一楼装箱区二次分配" + taskList2.get(0).getTask_code() + ",分配失败,请等待桁架任务取空载具动作执行完成"); - throw new BadRequestException("一楼装箱区二次分配" + taskList2.get(0).getTask_code() + ",分配失败,请等待桁架任务取空载具动作执行完成"); + //是否有执行中的行架任务,有等待取空载具任务完成再分配 + List taskList3 = taskList.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(taskList3)) { + if (StringUtils.isBlank(taskList3.get(0).getRequest_param())) { + log.info("一楼装箱区放货分配" + baseTask.getTask_code() + ",分配失败,桁架任务编号为:" + taskList3.get(0).getTask_code() + "的取载具动作未完成,请检查!"); + throw new BadRequestException("一楼装箱区放货分配" + baseTask.getTask_code() + ",分配失败,桁架任务编号为:" + taskList3.get(0).getTask_code() + "的取载具动作未完成,请检查!"); + } else { + if (!taskList3.get(0).getRequest_param().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) { + log.info("一楼装箱区放货分配" + baseTask.getTask_code() + ",分配失败,桁架任务编号为:" + taskList3.get(0).getTask_code() + "的取载具动作未完成,请检查!"); + throw new BadRequestException("一楼装箱区放货分配" + baseTask.getTask_code() + ",分配失败,桁架任务编号为:" + taskList3.get(0).getTask_code() + "的取载具动作未完成,请检查!"); + } + } + } + } else if (baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"))) { + List taskList = taskService.list(new LambdaQueryWrapper() + .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) + .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"))); + //满轴缓存位->待检区agv任务如果分配了起点,是否发送取货完成信息,否,则需等待此任务发送取货完成信号才能分配第2个任务的起点 + List taskList1 = taskList.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(taskList1)) { + //多个已分配的未完成的取满轴任务,需要全部取货完成才能继续分配 + List taskList2 = taskList1.stream().filter(r -> StringUtils.isBlank(r.getRequest_param())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(taskList2)) { + log.info("一楼装箱区取货分配" + baseTask.getTask_code() + ",分配失败,存在已分配的取满轴任务编号为:" + taskList2.get(0).getTask_code() + "的任务未完成,请检查!"); + throw new BadRequestException("一楼装箱区取货分配" + baseTask.getTask_code() + ",分配失败,存在已分配的取满轴任务编号为:" + taskList2.get(0).getTask_code() + "的任务未完成,请检查!"); + } + List taskList3 = taskList1.stream().filter(r -> StringUtils.isNotBlank(r.getRequest_param())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(taskList3)) { + if (taskList3.stream().anyMatch(r -> !r.getRequest_param().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成")))) { + log.info("一楼装箱区取货分配" + baseTask.getTask_code() + ",分配失败,存在已分配的取满轴任务编号为:" + taskList3.get(0).getTask_code() + "的任务未完成,请检查!"); + throw new BadRequestException("一楼装箱区取货分配" + baseTask.getTask_code() + ",分配失败,存在已分配的取满轴任务编号为:" + taskList3.get(0).getTask_code() + "的任务未完成,请检查!"); + } } } } @@ -401,8 +439,12 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl getBstIvtPackageinfoivts(String ivtType, String ivtStatus, String sortType) { + public List getBstIvtPackageinfoivts(String ivtType, String ivtStatus, String sortType) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) .eq(BstIvtPackageinfoivt::getPoint_status, ivtType); @@ -467,23 +509,27 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl待检区"))) { + //过滤未二次分配的任务 + if (StringUtils.isBlank(baseTask.getResponse_param())) { + throw new BadRequestException("取货完成失败" + baseTask.getTask_code() + ",起点未进行二次分配!"); + } List ivtList = packageinfoivtService.list(new LambdaQueryWrapper() .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) .eq(BstIvtPackageinfoivt::getPoint_code, baseTask.getPoint_code1())); if (CollectionUtils.isEmpty(ivtList)) { - throw new BadRequestException("任务编号为:" + baseTask.getTask_code() + "取货完成的目标点位不存在!"); + throw new BadRequestException("取货完成失败" + baseTask.getTask_code() + "agv取货完成的目标点位不存在!"); } //只有子卷号相同才能清除库存 if (baseTask.getVehicle_code().equals(ivtList.get(0).getContainer_name())) { - upDateIvtOrTask(baseTask, baseTask.getPoint_code1(), false); + upDateIvtOrTask(baseTask, baseTask.getPoint_code1()); } } else if (baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) || baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))) { pointCode = baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) ? baseTask.getPoint_code3() : baseTask.getPoint_code1(); if (StringUtils.isBlank(baseTask.getRequest_param())) { - upDateIvtOrTask(baseTask, pointCode, true); + upDateIvtOrTask(baseTask, pointCode); } else if (StringUtils.isNotBlank(baseTask.getRequest_param())) { if (!baseTask.getRequest_param().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) { - upDateIvtOrTask(baseTask, pointCode, true); + upDateIvtOrTask(baseTask, pointCode); } } } @@ -502,7 +548,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("point_code", pointCode); - updateWrapper.setSql("ivt_status = '0', container_name = null"); + updateWrapper.set("ivt_status", "0"); + updateWrapper.set("container_name", null); //清空起点库存状态 bstIvtPackageinfoivtMapper.update(null, updateWrapper); - if (isUpDateTask) { - //标记桁架任务取空载具完成 - UpdateWrapper updateWrapper1 = new UpdateWrapper<>(); - updateWrapper1.eq("task_id", baseTask.getTask_id()); - updateWrapper1.set("request_param", PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成")); - taskService.update(updateWrapper1); - } - log.info("一楼装箱区二次分配的任务编号为:" + baseTask.getTask_code() + ",取货完成执行成功,取货信息:点位:" + pointCode + "子卷号为:" + baseTask.getVehicle_code()); + log.info("一楼装箱区二次分配清空起点库存" + baseTask.getTask_code() + ",执行成功,点位:" + pointCode + "子卷号:" + baseTask.getVehicle_code()); + //标记agv取满轴或四个点或两个点任务取空载具完成 + UpdateWrapper updateWrapper1 = new UpdateWrapper<>(); + updateWrapper1.eq("task_id", baseTask.getTask_id()); + updateWrapper1.set("request_param", PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成")); + taskService.update(updateWrapper1); + log.info("一楼装箱区二次分配取货完成" + baseTask.getTask_code() + ",取货完成信号接收成功,点位:" + pointCode + "子卷号:" + baseTask.getVehicle_code()); } /** @@ -535,8 +581,8 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); if (PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货分配").equals(actionType)) { @@ -550,6 +596,10 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl newPointList = packageinfoivtService.checkEndPointTask(bstIvtPackageinfoivt.getPoint_status(), ivtInfo.getIvt_status(), targetPoint, ivtInfo.getSort_seq().toString(), ""); 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 c5c24f104..0e4559e48 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 @@ -79,7 +79,7 @@ public class AutoSendMzToDjq { return; } //满轴有子卷且过滤未完成任务 - List mzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("四个点任务放货"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), ""); + 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; } 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 b20c1d841..d260b1130 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 @@ -13,7 +13,6 @@ import org.nl.common.enums.PackageInfoIvtEnum; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.stereotype.Component; - import javax.annotation.Resource; import java.util.List; import java.util.concurrent.TimeUnit; @@ -25,6 +24,8 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class AutoSendVehicleToDjq { private final String THIS_CLASS = AutoSendVehicleToDjq.class.getName(); + + @Resource private RedissonClient redissonClient; @Resource @@ -32,6 +33,9 @@ public class AutoSendVehicleToDjq { @Resource private SendGzqKzjTask sendGzqKzjTask; + @Resource + private IbstIvtPackageinfoivtService ibstIvtPackageinfoivtService; + @Resource private IbstIvtPackageinfoivtService packageinfoivtService; @@ -43,32 +47,27 @@ public class AutoSendVehicleToDjq { @SneakyThrows public void sendVehicleToDjqOrGzq1() { - log.info(THIS_CLASS+"-装箱区->待检区或管制区补空任务开始执行扫描。"); + log.info(THIS_CLASS + "-装箱区->待检区或管制区补空任务开始执行扫描。"); RLock lock = redissonClient.getLock(THIS_CLASS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { if (tryLock) { - //存在装箱区有空载具的点位 - String pointCode2 = null; + String pointCode2; JSONObject task = new JSONObject(); + List ivtList =ibstIvtPackageinfoivtService.getBstIvtPackageinfoivts(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("合格品"),""); + if (CollectionUtils.isNotEmpty(ivtList)) { + return; + } + //存在装箱区有空载具的点位 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("补空(装箱区->待检区)")); + if ( Integer.parseInt(zxqIvtList.get(0).getSort_seq().toString()) % 2 != 0) { + //优先去管制区 + pointCode2 = getPointCode(task, 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("补空(装箱区->管制区)")); - } + pointCode2 = getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->管制区)")); } //去装箱区搬运空载具 if (pointCode2 != null) { @@ -91,6 +90,40 @@ public class AutoSendVehicleToDjq { } + + private String getPointCode(JSONObject task, String taskType) { + String pointCode2 = null; + List packageList; + if (taskType.equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->待检区)"))) { + packageList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), ""); + if (CollectionUtils.isEmpty(packageList)) { + packageList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), ""); + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->管制区)")); + } else { + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->待检区)")); + } + } else { + packageList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), ""); + if (CollectionUtils.isEmpty(packageList)) { + packageList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), ""); + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->待检区)")); + } else { + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->管制区)")); + } + } + if (CollectionUtils.isNotEmpty(packageList)) { + pointCode2 = packageList.get(0).getPoint_code(); + task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")); + } + return 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 e03e2ad7d..cfad2df36 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 @@ -37,8 +37,6 @@ public class AutoSendVehicleToKzj { private DjqToKzjhcwTask djqToKzjhcwTask; @Resource private GzqToKzjhcwTask gzqToKzjhcwTask; - @Resource - private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper; @Resource private IbstIvtPackageinfoivtService packageinfoivtService; @@ -112,10 +110,10 @@ public class AutoSendVehicleToKzj { return; } if (existTask.size() % 2 != 0) { - //优先去待检区 - pointCode1 = getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")); - } else { + //优先去管制区 pointCode1 = getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)")); + } else { + pointCode1 = getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")); } //去待检区或管制区搬运空载具 if (pointCode1 != null) { diff --git a/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java b/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java index 1f822b3cb..3d0a67628 100644 --- a/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java @@ -41,7 +41,7 @@ public enum PackageInfoIvtEnum { //起点终点类型 - TASK_POINT_TYPE(MapOf.of("取货任务", "1", "放货任务", "2", "取货分配", "3", "放货分配", "4", "取货任务取货分配", "5", "放货任务放货分配", "6", "四个点任务放货", "7","空载具放货", "8", "四个点任务分配", "9","空载具放货分配", "10")), + TASK_POINT_TYPE(MapOf.of("取货任务", "1", "放货任务", "2", "取货分配", "3", "放货分配", "4", "取货任务取货分配", "5", "放货任务放货分配", "6", "四个点任务取货", "7","空载具放货", "8", "四个点任务分配", "9","空载具放货分配", "10")), //等待点类型 WAIT_POINT_TYPE(MapOf.of("满轴区等待点", "1", "待检区等待点", "2")), diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java index cdffdf2d8..6dd3129b7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java @@ -118,7 +118,7 @@ public class BakingServiceImpl implements BakingService { */ JSONObject jsonPointZc = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); - JSONObject cool_jo = coolIvtTab.query("full_point_code = '" + point_code1 + "' AND point_type = '3'").uniqueResult(0); + JSONObject cool_jo = coolIvtTab.query("point_code = '" + point_code1 + "' AND point_type = '3'").uniqueResult(0); if (ObjectUtil.isNotEmpty(jsonPointZc) || ObjectUtil.isNotEmpty(cool_jo)) { if (ObjectUtil.isEmpty(jsonPointZc)) { jsonPointZc = cool_jo; @@ -150,7 +150,27 @@ public class BakingServiceImpl implements BakingService { } if (ObjectUtil.isEmpty(jsonHotIvt)) { - throw new BadRequestException("烘烤区没有合适温度的空位!"); + //如果属于B1的烘箱,变更位置再查询 + if (ObjectUtil.isNotEmpty(cool_jo) && cool_jo.getString("product_area").equals("B1")) { + jsonMap.put("point_location", jsonPointZc.getString("point_location").equals("0") ? "1" : "0"); + hot_rows = WQL.getWO("PDA_BAKING_01").addParamMap(jsonMap).process().getResultJSONArray(0); + for (int i = 0; i < hot_rows.size(); i++) { + JSONObject hot_row = hot_rows.getJSONObject(i); + String point_code = hot_row.getString("point_code"); + String point_temperature = (String) redisUtils.hget(point_code, "temperature"); + if (!ObjectUtil.isEmpty(point_temperature)) { + if (point_temperature.equals(temperature)) { + jsonHotIvt = hot_row; + break; + } + } + } + if (ObjectUtil.isEmpty(jsonHotIvt)) { + throw new BadRequestException("烘烤区没有合适温度的空位!"); + } + } else { + throw new BadRequestException("烘烤区没有合适温度的空位!"); + } } // 2.创建暂存位 --> 烘烤区任务 JSONObject param = new JSONObject(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java index 9e6b760bc..4786aadd4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java @@ -268,7 +268,9 @@ public class FeedingServiceImpl implements FeedingService { } JSONObject cool_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + point_code + "'").uniqueResult(0); - + if (ObjectUtil.isEmpty(cool_jo)) { + cool_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("point_code = '" + point_code + "'").uniqueResult(0); + } if (ObjectUtil.isEmpty(cool_jo)) { throw new BadRequestException("请输入或者扫描冷却区满轴位的点位做为起点!"); } else { @@ -285,54 +287,99 @@ public class FeedingServiceImpl implements FeedingService { } if (cool_jo.getString("product_area").equals("B1")) { - JSONObject cut_jo = WQLObject.getWQLObject("st_ivt_cutpointivt").query("full_point_code = '" + next_point_code + "'").uniqueResult(0); - JSONObject task_jo = new JSONObject(); - task_jo.put("point_code1", cool_jo.getString("point_code")); - String reging_id = ""; - //查询出的对接位 - switch (cool_jo.getString("product_area")) { - case "A1": - reging_id = RegionTypeEnum.A_HKZC.getId(); - break; - case "A2": - reging_id = RegionTypeEnum.B_HKZC.getId(); - break; - case "A3": - reging_id = RegionTypeEnum.C_HKZC.getId(); - break; - case "A4": - reging_id = RegionTypeEnum.D_HKZC.getId(); - break; - case "B1": - reging_id = RegionTypeEnum.B1_HKZC.getId(); - break; - case "B2": - reging_id = RegionTypeEnum.B2_HKZC.getId(); - break; - default: - break; + if (ObjectUtil.isNotEmpty(cool_jo) && cool_jo.getString("point_type").equals("4")) { + JSONObject cut_jo = WQLObject.getWQLObject("st_ivt_cutpointivt").query("full_point_code = '" + next_point_code + "'").uniqueResult(0); + //起点为分切缓存位,终点为分切机 + JSONObject jo = new JSONObject(); + if (StrUtil.equals("01", cut_jo.getString("empty_point_status"))) { + jo.put("point_code1", cool_jo.getString("full_point_code")); + jo.put("point_code2", cut_jo.getString("full_point_code")); + jo.put("material_code", cool_jo.getString("container_name")); + jo.put("product_area", cut_jo.getString("product_area")); + jo.put("task_type", "010302"); + } else { + jo.put("point_code1", cool_jo.getString("full_point_code")); + jo.put("point_code2", cut_jo.getString("full_point_code")); + jo.put("point_code3", cut_jo.getString("empty_point_code")); + // 2.找冷却区空货位 + JSONObject map = new JSONObject(); + map.put("flag", "2"); + map.put("product_area", cut_jo.getString("product_area")); + map.put("point_location", "0"); + + JSONObject jsonCooIvt = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0); + // 如果为空 + if (ObjectUtil.isEmpty(jsonCooIvt)) { + map.put("point_location", "1"); + jsonCooIvt = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0); + } + if (ObjectUtil.isEmpty(jsonCooIvt)) { + throw new BadRequestException("冷却区空位不足"); + } + jo.put("point_code4", jsonCooIvt.getString("empty_point_code")); + jo.put("material_code", cool_jo.getString("container_name")); + jo.put("product_area", cut_jo.getString("product_area")); + jo.put("task_type", "010301"); + } + AbstractAcsTask task = new CoolCutTask(); + task.createTask(jo); + } else { + JSONObject cut_jo = WQLObject.getWQLObject("st_ivt_cutpointivt").query("full_point_code = '" + next_point_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(cut_jo) && ObjectUtil.isEmpty(cool_jo)) { + throw new BadRequestException("目的点不存在!"); + } + JSONObject task_jo = new JSONObject(); + task_jo.put("point_code1", cool_jo.getString("point_code")); + String reging_id = ""; + //查询出的对接位 + switch (cool_jo.getString("product_area")) { + case "A1": + reging_id = RegionTypeEnum.A_HKZC.getId(); + break; + case "A2": + reging_id = RegionTypeEnum.B_HKZC.getId(); + break; + case "A3": + reging_id = RegionTypeEnum.C_HKZC.getId(); + break; + case "A4": + reging_id = RegionTypeEnum.D_HKZC.getId(); + break; + case "B1": + reging_id = RegionTypeEnum.B1_HKZC.getId(); + break; + case "B2": + reging_id = RegionTypeEnum.B2_HKZC.getId(); + break; + default: + break; + } + JSONObject map = new JSONObject(); + map.put("flag", "1"); + map.put("reging_id", reging_id); + map.put("point_location", cool_jo.getString("point_location")); + //只找出箱点位 + map.put("point_type", "5"); + + JSONObject pointArr = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0); + if (ObjectUtil.isEmpty(pointArr)) { + map.put("point_location", cool_jo.getString("point_location").equals("0") ? "1" : "0"); + pointArr = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0); + if (ObjectUtil.isEmpty(pointArr)) { + throw new BadRequestException("没有无货且没有任务的点位类型为出箱的烘箱对接位!"); + } + } + + + task_jo.put("point_code2", pointArr.getString("point_code")); + //将分切机的点位作为目的点,桁架任务完成时,自动创建AGV任务 + task_jo.put("point_code3", next_point_code); + task_jo.put("material_code", cool_jo.getString("container_name")); + task_jo.put("product_area", cool_jo.getString("product_area")); + task_jo.put("task_type", "010205"); + OutHotTask outHotTask = new OutHotTask(); + String task_id = outHotTask.createTask(task_jo); } - JSONObject map = new JSONObject(); - map.put("flag", "1"); - map.put("reging_id", reging_id); - map.put("point_location", cool_jo.getString("point_location")); - //只找出箱点位 - map.put("point_type", "5"); - - JSONObject pointArr = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0); - if (ObjectUtil.isEmpty(pointArr)) { - throw new BadRequestException("没有无货且没有任务的点位类型为出箱的烘箱对接位!"); - } - - - task_jo.put("point_code2", pointArr.getString("point_code")); - //将分切机的点位作为目的点,桁架任务完成时,自动创建AGV任务 - task_jo.put("point_code3", next_point_code); - task_jo.put("vehicle_code", cool_jo.getString("container_name")); - task_jo.put("product_area", cut_jo.getString("product_area")); - task_jo.put("task_type", "010205"); - OutHotTask outHotTask = new OutHotTask(); - String task_id = outHotTask.createTask(task_jo); } else { JSONObject jo = new JSONObject(); //查询该分切机对应的点位 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java index 4a2918c59..f75795b5c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java @@ -215,8 +215,13 @@ public class RawFoilServiceImpl implements RawFoilService { cache_map.put("point_location", jsonSb.getString("point_location")); //只找入箱点位 cache_map.put("point_type", "4"); + cache_map.put("mater_flag", "1"); JSONObject point_code2_jo = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(cache_map).process().uniqueResult(0); + if (ObjectUtil.isEmpty(point_code2_jo)) { + cache_map.put("point_location", jsonSb.getString("point_location").equals("0") ? "1" : "0"); + point_code2_jo = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(cache_map).process().uniqueResult(0); + } if (ObjectUtil.isEmpty(point_code2_jo)) { throw new BadRequestException("未查询到可用的点位类型为入箱的烘箱对接位!"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql index c28b660d3..d8de3aa8b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql @@ -82,6 +82,9 @@ OPTION 输入.point_type = "5" IFNULL(po.material_code,'') = '' ENDOPTION + OPTION 输入.mater_flag = "1" + IFNULL(po.material_code,'') = '' + ENDOPTION UNION SELECT task.task_id, @@ -137,6 +140,9 @@ OPTION 输入.point_type = "5" IFNULL(po.material_code,'') = '' ENDOPTION + OPTION 输入.mater_flag = "1" + IFNULL(po.material_code,'') = '' + ENDOPTION ) c GROUP BY c.point_code diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_COOLIN.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_COOLIN.wql index 515398dbb..443ad9d92 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_COOLIN.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_COOLIN.wql @@ -129,7 +129,7 @@ FROM sch_base_task WHERE - ( point_code1 = empty_point_code OR point_code2 = empty_point_code ) + ( point_code1 = empty_point_code OR point_code2 = empty_point_code OR point_code2 = point_code ) AND task_status < '07' AND is_delete = '0' ) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls index ddfeb1f7a..eea2bd21c 100644 Binary files a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls and b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls differ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java index a94f18522..e6ab26607 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java @@ -114,17 +114,50 @@ public class CoolCutTask extends AbstractAcsTask { if ("B1".equals(product_area)) { //更新起点烘箱对接位 JSONObject dj_jo = WQLObject.getWQLObject("sch_base_point").query("point_code ='" + point_code1 + "'").uniqueResult(0); - dj_jo.put("point_status", "1"); - dj_jo.put("material_code", ""); - WQLObject.getWQLObject("sch_base_point").update(dj_jo); + JSONObject cool_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code ='" + point_code1 + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(dj_jo)) { + dj_jo.put("point_status", "1"); + dj_jo.put("material_code", ""); + WQLObject.getWQLObject("sch_base_point").update(dj_jo); + } + if (ObjectUtil.isNotEmpty(cool_jo)) { + cool_jo.put("full_point_status", "01"); + cool_jo.put("container_name", ""); + cool_jo.put("workorder_id", ""); + cool_jo.put("update_optid", currentUserId); + cool_jo.put("update_optname", currentUsername); + cool_jo.put("update_time", DateUtil.now()); + WQLObject.getWQLObject("st_ivt_coolpointivt").update(cool_jo); + } + JSONObject full_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code ='" + point_code2 + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(full_jo)) { + full_jo.put("full_point_status", "02"); + full_jo.put("container_name", jsonTask.getString("material_code")); + full_jo.put("update_optid", currentUserId); + full_jo.put("update_optname", currentUsername); + full_jo.put("update_time", DateUtil.now()); + WQLObject.getWQLObject("st_ivt_coolpointivt").update(full_jo); + } + //更新满轴终点的空轴对接位 JSONObject cut_jo = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("empty_point_code = '" + point_code3 + "'").uniqueResult(0); - cut_jo.put("empty_point_status", "02"); - cut_jo.put("empty_vehicle_code", "SJG"); - cut_jo.put("update_optid", currentUserId); - cut_jo.put("update_optname", currentUsername); - cut_jo.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("ST_IVT_CutPointIvt").update(cut_jo); + if (ObjectUtil.isEmpty(cut_jo)) { + cut_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("empty_point_code = '" + point_code3 + "'").uniqueResult(0); + cut_jo.put("empty_point_status", "01"); + cut_jo.put("empty_vehicle_code", ""); + cut_jo.put("update_optid", currentUserId); + cut_jo.put("update_optname", currentUsername); + cut_jo.put("update_time", DateUtil.now()); + WQLObject.getWQLObject("st_ivt_coolpointivt").update(cut_jo); + } else { + cut_jo.put("empty_point_status", "02"); + cut_jo.put("empty_vehicle_code", "SJG"); + cut_jo.put("update_optid", currentUserId); + cut_jo.put("update_optname", currentUsername); + cut_jo.put("update_time", DateUtil.now()); + WQLObject.getWQLObject("ST_IVT_CutPointIvt").update(cut_jo); + } + //更新空轴点位 JSONObject jsonCoolIvt2 = WQLObject.getWQLObject("st_ivt_coolpointivt").query("empty_point_code = '" + point_code4 + "'").uniqueResult(0); jsonCoolIvt2.put("empty_point_status", "02"); @@ -207,63 +240,83 @@ public class CoolCutTask extends AbstractAcsTask { if ("B1".equals(product_area)) { //更新起点烘箱对接位 JSONObject dj_jo = WQLObject.getWQLObject("sch_base_point").query("point_code ='" + point_code1 + "'").uniqueResult(0); - dj_jo.put("point_status", "1"); - dj_jo.put("material_code", ""); - WQLObject.getWQLObject("sch_base_point").update(dj_jo); + JSONObject cool_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code ='" + point_code1 + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(dj_jo)) { + dj_jo.put("point_status", "1"); + dj_jo.put("material_code", ""); + WQLObject.getWQLObject("sch_base_point").update(dj_jo); + } + if (ObjectUtil.isNotEmpty(cool_jo)) { + cool_jo.put("full_point_status", "01"); + cool_jo.put("container_name", ""); + cool_jo.put("workorder_id", ""); + cool_jo.put("update_optid", currentUserId); + cool_jo.put("update_optname", currentUsername); + cool_jo.put("update_time", DateUtil.now()); + WQLObject.getWQLObject("st_ivt_coolpointivt").update(cool_jo); + } //更新满轴终点的空轴对接位 JSONObject cut_jo = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("full_point_code = '" + point_code2 + "'").uniqueResult(0); - cut_jo.put("empty_point_status", "02"); - cut_jo.put("empty_vehicle_code", "SJG"); + if (ObjectUtil.isEmpty(cut_jo)) { + cut_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + point_code2 + "'").uniqueResult(0); + cut_jo.put("full_point_status", "02"); + cut_jo.put("container_name", jsonTask.getString("material_code")); + WQLObject.getWQLObject("st_ivt_coolpointivt").update(cut_jo); + } else { + cut_jo.put("empty_point_status", "02"); + cut_jo.put("empty_vehicle_code", "SJG"); + cut_jo.put("update_optid", currentUserId); + cut_jo.put("update_optname", currentUsername); + cut_jo.put("update_time", DateUtil.now()); + WQLObject.getWQLObject("ST_IVT_CutPointIvt").update(cut_jo); + } + + } else { + // 更新主表状态 + JSONObject coolMst = ivtTab.query("task_id = '" + task_id + "'").uniqueResult(0); + coolMst.put("bill_status", "50"); + ivtTab.update(coolMst); + + //更新冷却区母卷库存 + JSONObject jsonCoolIvt = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + point_code1 + "'").uniqueResult(0); + String container_name = jsonCoolIvt.getString("container_name"); // 母卷号 + + jsonCoolIvt.put("full_point_status", "01"); + jsonCoolIvt.put("container_name", ""); + jsonCoolIvt.put("workorder_id", ""); + jsonCoolIvt.put("ivt_qty", "0"); + jsonCoolIvt.put("cool_ivt_status", "01"); + jsonCoolIvt.put("instorage_time", ""); + jsonCoolIvt.put("update_optid", currentUserId); + jsonCoolIvt.put("update_optname", currentUsername); + jsonCoolIvt.put("update_time", DateUtil.now()); + WQLObject.getWQLObject("st_ivt_coolpointivt").update(jsonCoolIvt); + + //更新分切区母卷库存 + JSONObject cut_jo = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("full_point_code = '" + point_code2 + "'").uniqueResult(0); + cut_jo.put("full_point_status", "02"); + cut_jo.put("container_name", container_name); cut_jo.put("update_optid", currentUserId); cut_jo.put("update_optname", currentUsername); cut_jo.put("update_time", DateUtil.now()); WQLObject.getWQLObject("ST_IVT_CutPointIvt").update(cut_jo); - } else { + //更新该母卷对应分切计划的状态 + HashMap map = new HashMap<>(); + map.put("is_parent_ok", "1"); + WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(map, "parent_container_name = '" + container_name + "'"); + + //回传MES + JSONObject mom_jo = new JSONObject(); + mom_jo.put("contain_name", container_name); + mom_jo.put("warehouse", "1"); + //判断该接口是否需要回传 + JSONObject back_jo = WQLObject.getWQLObject("MD_PB_InterfaceBack").query("interface_name = 'cutPlanMomRollDeliveryComplete'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(back_jo) && "1".equals(back_jo.getString("is_back"))) { + new LmsToMesServiceImpl().cutPlanMomRollDeliveryComplete(mom_jo); + } } - // 更新主表状态 - JSONObject coolMst = ivtTab.query("task_id = '" + task_id + "'").uniqueResult(0); - coolMst.put("bill_status", "50"); - ivtTab.update(coolMst); - //更新冷却区母卷库存 - JSONObject jsonCoolIvt = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + point_code1 + "'").uniqueResult(0); - String container_name = jsonCoolIvt.getString("container_name"); // 母卷号 - - jsonCoolIvt.put("full_point_status", "01"); - jsonCoolIvt.put("container_name", ""); - jsonCoolIvt.put("workorder_id", ""); - jsonCoolIvt.put("ivt_qty", "0"); - jsonCoolIvt.put("cool_ivt_status", "01"); - jsonCoolIvt.put("instorage_time", ""); - jsonCoolIvt.put("update_optid", currentUserId); - jsonCoolIvt.put("update_optname", currentUsername); - jsonCoolIvt.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("st_ivt_coolpointivt").update(jsonCoolIvt); - - //更新分切区母卷库存 - JSONObject cut_jo = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("full_point_code = '" + point_code2 + "'").uniqueResult(0); - cut_jo.put("full_point_status", "02"); - cut_jo.put("container_name", container_name); - cut_jo.put("update_optid", currentUserId); - cut_jo.put("update_optname", currentUsername); - cut_jo.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("ST_IVT_CutPointIvt").update(cut_jo); - - //更新该母卷对应分切计划的状态 - HashMap map = new HashMap<>(); - map.put("is_parent_ok", "1"); - WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(map, "parent_container_name = '" + container_name + "'"); - - //回传MES - JSONObject mom_jo = new JSONObject(); - mom_jo.put("contain_name", container_name); - mom_jo.put("warehouse", "1"); - //判断该接口是否需要回传 - JSONObject back_jo = WQLObject.getWQLObject("MD_PB_InterfaceBack").query("interface_name = 'cutPlanMomRollDeliveryComplete'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(back_jo) && "1".equals(back_jo.getString("is_back"))) { - new LmsToMesServiceImpl().cutPlanMomRollDeliveryComplete(mom_jo); - } } if ("010303".equals(jsonTask.getString("task_type"))) { @@ -379,6 +432,7 @@ public class CoolCutTask extends AbstractAcsTask { json.put("vehicle_code", form.getString("vehicle_code")); json.put("vehicle_code2", form.getString("vehicle_code2")); json.put("product_area", form.getString("product_area")); + json.put("material_code", form.getString("material_code")); json.put("handle_class", THIS_CLASS); json.put("create_id", currentUserId); json.put("create_name", currentUsername); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java index ee1cd48d0..3a37961da 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java @@ -117,56 +117,56 @@ public class InHotTask extends AbstractAcsTask { String hot_point_code = ""; // 判断此任务是否有三个点位 - if (ObjectUtil.isEmpty(jsonTask.getString("point_code3"))) { + if (ObjectUtil.isEmpty(jsonTask.getString("point_code3"))) { - if (jsonTask.getString("task_type").equals("010204")) { - //更新冷却区库存 - JSONObject cool_jo = coolIvtTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); - cool_jo.put("full_point_status", "02"); - cool_jo.put("cool_ict_status", "01"); - cool_jo.put("container_name", jsonTask.getString("material_code")); - coolIvtTab.update(cool_jo); - //更新对接位库存 - JSONObject dj_jo = pointTab.query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); - dj_jo.put("point_status", "1"); - dj_jo.put("material_code", ""); - pointTab.update(dj_jo); - return; - } else { - /* - * 暂存区入烘箱任务 - */ - // 更新烘箱区库存状态 - JSONObject jsonHotIvt = hotIvtTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); - jsonHotIvt.put("point_status", "02"); - jsonHotIvt.put("container_name", jsonHotMst.getString("container_name")); - jsonHotIvt.put("workorder_id", jsonHotMst.getString("workorder_id")); - jsonHotIvt.put("ivt_qty", jsonHotMst.getString("qty")); - jsonHotIvt.put("instorage_time", DateUtil.now()); - jsonHotIvt.put("update_optid", currentUserId); - jsonHotIvt.put("update_optname", currentUsername); - jsonHotIvt.put("update_time", DateUtil.now()); - hotIvtTab.update(jsonHotIvt); - - String product_area = jsonHotIvt.getString("product_area"); - if (product_area.equals("B1")) { - JSONObject jsonPoint = coolIvtTab.query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); - jsonPoint.put("container_name", ""); - jsonPoint.put("full_point_status", "01"); - coolIvtTab.update(jsonPoint); + if (jsonTask.getString("task_type").equals("010204")) { + //更新冷却区库存 + JSONObject cool_jo = coolIvtTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); + cool_jo.put("full_point_status", "02"); + cool_jo.put("cool_ict_status", "01"); + cool_jo.put("container_name", jsonTask.getString("material_code")); + coolIvtTab.update(cool_jo); + //更新对接位库存 + JSONObject dj_jo = pointTab.query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); + dj_jo.put("point_status", "1"); + dj_jo.put("material_code", ""); + pointTab.update(dj_jo); + return; } else { - // 更新暂存区点位状态为空位 - JSONObject jsonPoint = pointTab.query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); - jsonPoint.put("point_status", "1"); - jsonPoint.put("material_code", ""); - pointTab.update(jsonPoint); + /* + * 暂存区入烘箱任务 + */ + // 更新烘箱区库存状态 + JSONObject jsonHotIvt = hotIvtTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); + jsonHotIvt.put("point_status", "02"); + jsonHotIvt.put("container_name", jsonHotMst.getString("container_name")); + jsonHotIvt.put("workorder_id", jsonHotMst.getString("workorder_id")); + jsonHotIvt.put("ivt_qty", jsonHotMst.getString("qty")); + jsonHotIvt.put("instorage_time", DateUtil.now()); + jsonHotIvt.put("update_optid", currentUserId); + jsonHotIvt.put("update_optname", currentUsername); + jsonHotIvt.put("update_time", DateUtil.now()); + hotIvtTab.update(jsonHotIvt); + + String product_area = jsonHotIvt.getString("product_area"); + if (product_area.equals("B1")) { + JSONObject jsonPoint = coolIvtTab.query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); + jsonPoint.put("container_name", ""); + jsonPoint.put("full_point_status", "01"); + coolIvtTab.update(jsonPoint); + } else { + // 更新暂存区点位状态为空位 + JSONObject jsonPoint = pointTab.query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); + jsonPoint.put("point_status", "1"); + jsonPoint.put("material_code", ""); + pointTab.update(jsonPoint); + } + + + hot_point_code = jsonHotIvt.getString("ext_code"); } - - hot_point_code = jsonHotIvt.getString("ext_code"); - } - - } else { + } else { /* * 冷却区入烘箱任务 */ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java index 9f367a1c5..61e349873 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java @@ -103,12 +103,27 @@ public class OutHotTask extends AbstractAcsTask { if (jsonTask.getString("task_type").equals("010205")) { JSONObject cut_jo = WQLObject.getWQLObject("st_ivt_cutpointivt").query("full_point_code = '" + jsonTask.getString("point_code3") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(cut_jo)) { + cut_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + jsonTask.getString("point_code3") + "'").uniqueResult(0); + } + //清空起点库存 + JSONObject cool_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); + cool_jo.put("container_name", ""); + cool_jo.put("full_point_status", "01"); + WQLObject.getWQLObject("st_ivt_coolpointivt").update(cool_jo); + + //更新终点库存 + JSONObject jsonPoint2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); + jsonPoint2.put("point_status", "2"); + jsonPoint2.put("material_code", jsonTask.getString("material_code")); + pointTab.update(jsonPoint2); + //创建AGV任务 JSONObject jo = new JSONObject(); if (StrUtil.equals("01", cut_jo.getString("empty_point_status"))) { jo.put("point_code1", jsonTask.getString("point_code2")); jo.put("point_code2", cut_jo.getString("full_point_code")); - jo.put("vehicle_code", jsonTask.getString("material_code")); + jo.put("material_code", jsonTask.getString("material_code")); jo.put("product_area", cut_jo.getString("product_area")); jo.put("task_type", "010302"); } else { @@ -131,7 +146,7 @@ public class OutHotTask extends AbstractAcsTask { throw new BadRequestException("冷却区空位不足"); } jo.put("point_code4", jsonCooIvt.getString("empty_point_code")); - jo.put("vehicle_code", jsonTask.getString("container_name")); + jo.put("material_code", jsonTask.getString("material_code")); jo.put("product_area", cut_jo.getString("product_area")); jo.put("task_type", "010301"); } diff --git a/lms/nladmin-ui/src/views/wms/pdm/ivt/packageinfoivt/index.vue b/lms/nladmin-ui/src/views/wms/pdm/ivt/packageinfoivt/index.vue index 71165b9ce..02ceeef53 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/ivt/packageinfoivt/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/ivt/packageinfoivt/index.vue @@ -151,7 +151,6 @@ {{ dict.label.is_used[scope.row.is_used] }} - diff --git a/lms/nladmin-ui/src/views/wms/sch/task/index.vue b/lms/nladmin-ui/src/views/wms/sch/task/index.vue index 8c3075070..612a9ef54 100644 --- a/lms/nladmin-ui/src/views/wms/sch/task/index.vue +++ b/lms/nladmin-ui/src/views/wms/sch/task/index.vue @@ -142,6 +142,7 @@ +