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 6ff1f27c5..ed6789d1b 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 @@ -111,7 +111,11 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl { /** * 查找当前设备有没有送轴的任务 + * * @param resourceName / * @return / */ List getTaskByPlanQzzNoAndDevice(String resourceName); + + + List getExistTasks(String taskType, String containerName); + + List getExistTasks(String taskType1, String taskType2, String taskType3,String containerName); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java index 1ef1e9fbe..7caea0772 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java @@ -3,19 +3,22 @@ package org.nl.b_lms.sch.task.service.impl; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper; import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.common.domain.query.PageQuery; import org.nl.common.utils.SecurityUtils; import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Map; import java.util.Set; @@ -133,5 +136,28 @@ public class SchBaseTaskServiceImpl extends ServiceImpl getExistTasks(String taskType, String containerName) { + return this.list(new LambdaUpdateWrapper() + .eq(SchBaseTask::getTask_type, taskType) + .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))); + } + + public List getExistTasks(String taskType1, String taskType2, String taskType3, String containerName) { + String startTime = LocalDate.now().atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + return this.list(new LambdaQueryWrapper() + .and( + r -> r.eq(SchBaseTask::getTask_type, taskType1) + .or() + .eq(SchBaseTask::getTask_type, taskType2 + ).or() + .eq(SchBaseTask::getTask_type, taskType3 + )) + .eq(SchBaseTask::getVehicle_code, containerName) + .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) + ); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java index 5af71ca36..c52496278 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java @@ -129,23 +129,32 @@ public class MzhcwTask extends AbstractAcsTask { //createTaskToDjq(schBaseTask); //4.创建空载具到输送线任务,完成后需要创建空载具缓存位->输送线任务 if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))) { - //如果是输送线->满轴缓存位任务 - List kzjPointList = packageinfoivtService - .list(new LambdaUpdateWrapper() - .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) - .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位")) - .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")) - .orderByDesc(BstIvtPackageinfoivt::getSort_seq)); - JSONObject toSsxTask = new JSONObject(); - toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); - toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); - toSsxTask.put("vehicle_code", schBaseTask.getVehicle_code()); - //判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具,如果暂时没有空载具,定时任务会不断判断是否有空载具 - if (CollectionUtils.isNotEmpty(kzjPointList)) { - //直接创建搬运空载具任务 - toSsxTask.put("point_code1", kzjPointList.get(0).getPoint_code()); - //终点为输送线点位 - toSsxTask.put("point_code2", schBaseTask.getPoint_code1()); + //校验任务是否存在 + List existTask = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), schBaseTask.getVehicle_code()); + if (CollectionUtils.isEmpty(existTask)) { + //如果是输送线->满轴缓存位任务 + List kzjPointList = packageinfoivtService + .list(new LambdaUpdateWrapper() + .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位")) + .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")) + .orderByDesc(BstIvtPackageinfoivt::getSort_seq)); + JSONObject toSsxTask = new JSONObject(); + toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); + toSsxTask.put("vehicle_code", schBaseTask.getVehicle_code()); + //判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具,如果暂时没有空载具,定时任务会不断判断是否有空载具 + if (CollectionUtils.isEmpty(kzjPointList)) { + toSsxTask.put("task_status", TaskStatusEnum.SURE_END.getCode()); + //确定终点为输送线点位 + toSsxTask.put("point_code2", schBaseTask.getPoint_code1()); + } else { + toSsxTask.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + //直接创建搬运空载具任务 + toSsxTask.put("point_code1", kzjPointList.get(0).getPoint_code()); + //终点为输送线点位 + toSsxTask.put("point_code2", schBaseTask.getPoint_code1()); + } ssxDjwTask.createTask(toSsxTask); } } else { diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoExecuteWaitTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoExecuteWaitTask.java index 780a507b0..794de8772 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoExecuteWaitTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoExecuteWaitTask.java @@ -81,7 +81,7 @@ public class AutoExecuteWaitTask { if (CollectionUtils.isEmpty(kzjPointList)) { return; } - List existTaskList = getExistTasks(taskType, task.getVehicle_code()); + List existTaskList = taskService.getExistTasks(taskType, task.getVehicle_code()); if (existTaskList.size() > 1) { throw new BadRequestException("存在多个子卷号相同的任务!"); } @@ -100,7 +100,7 @@ public class AutoExecuteWaitTask { return; } //校验相同是否存在相同子卷号任务 - List existTaskList = getExistTasks(taskType, task.getVehicle_code()); + List existTaskList = taskService.getExistTasks(taskType, task.getVehicle_code()); //如果有就不创建,没有就创建 if (existTaskList.size() > 1) { throw new BadRequestException("存在多个子卷号相同的任务!"); @@ -122,15 +122,4 @@ public class AutoExecuteWaitTask { } } - //校验相同子卷号的任务 - 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("否")) - - ); - } } 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 899381717..ea8debdf8 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 @@ -68,7 +68,7 @@ public class AutoSendMzToDjq { try { if (tryLock) { //满轴有子卷且过滤未完成任务 - 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/common/enums/PackageInfoIvtEnum.java b/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java index bc6ab7623..35b95b94a 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")), + TASK_POINT_TYPE(MapOf.of("取货任务", "1", "放货任务", "2", "取货分配", "3", "放货分配", "4", "取货任务取货分配", "5", "放货任务放货分配", "6", "四个点任务放货", "7")), //等待点类型 WAIT_POINT_TYPE(MapOf.of("满轴区等待点", "1", "待检区等待点", "2")), 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 388ddcf47..f4a12e0b9 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 @@ -1,6 +1,5 @@ package org.nl.wms.ext.acs.service.impl; -import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; @@ -27,7 +26,6 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.tasks.TwoBoxExcepTask; import org.nl.b_lms.sch.tasks.TwoExceptionInTask; -import org.nl.b_lms.sch.tasks.TwoOutHeapTask; import org.nl.b_lms.sch.tasks.first_floor_area.MzhcwTask; import org.nl.b_lms.sch.tasks.first_floor_area.SsxDjwTask; import org.nl.b_lms.sch.tasks.slitter.service.SlitterService; @@ -38,8 +36,8 @@ import org.nl.b_lms.storage_manage.ios.enums.TASKEnum; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.*; import org.nl.common.enums.NoticeTypeEnum; import org.nl.common.enums.PackageInfoIvtEnum; -import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; @@ -71,14 +69,11 @@ 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; -import java.util.stream.Collectors; - @Service @RequiredArgsConstructor @Slf4j @@ -1842,7 +1837,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } } else { //如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发; - List existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), containerName); + List existTaskList = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"),containerName); //如果有就不创建,没有就创建 if (CollectionUtils.isEmpty(existTaskList)) { //只确定起点NBJ1002 @@ -1850,13 +1845,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { 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("vehicle_code", containerName); + jo2.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", "满轴缓存位暂无空位!"); + result.put("status", HttpStatus.OK.value()); + result.put("message", "反馈成功!"); } } else { log.info("二楼到一楼成品子卷到达一楼输送线任务正在创建被锁住。"); @@ -1872,19 +1868,20 @@ 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); + List existTaskList1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), 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); + List existTask1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), containerName); if (CollectionUtils.isEmpty(existTask1)) { JSONObject jo1 = new JSONObject(); //创建确定终点任务 @@ -1909,8 +1906,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject result = new JSONObject(); result.put("data", containerName); // 创建前先判断是否有已创建相同任务 - List existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")); - List existTaskList1 = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), containerName); + List existTaskList1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), containerName); if (CollectionUtils.isEmpty(existTaskList1)) { jo.put("point_code3", pointCode3); //终点为输送线点位 @@ -1927,24 +1923,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return result; } - private List getExistTasks(String taskType) { - return taskService.list(new LambdaUpdateWrapper() - .eq(SchBaseTask::getTask_type, taskType) - .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) - .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) - .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) - .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) - - ); - } @Override diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/util/TaskUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/util/TaskUtil.java index ee99d3ee8..cf1bcee29 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/util/TaskUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/util/TaskUtil.java @@ -1,11 +1,18 @@ package org.nl.wms.util; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.commons.lang3.StringUtils; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.modules.common.exception.BadRequestException; import org.nl.wms.sch.manage.TaskStatusEnum; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; + public class TaskUtil { /** @@ -52,4 +59,5 @@ public class TaskUtil { } return maxNum; } + } \ No newline at end of file