From 41fbb8c98f76384939de58eb09830c31ce48dcf6 Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Wed, 10 Sep 2025 17:03:46 +0800 Subject: [PATCH] =?UTF-8?q?opt:=E7=8E=B0=E5=9C=BA=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E7=9A=84=E4=B8=80=E4=BA=9B=E5=A4=84=E7=90=86=E4=B8=8E=E4=BC=98?= =?UTF-8?q?=E5=8C=96:=20=E5=85=88=E6=9C=89=E6=B5=85=E8=B4=A7=E4=BD=8D?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E4=BB=BB=E5=8A=A1=E6=9C=AA=E5=AE=8C=E6=88=90?= =?UTF-8?q?=EF=BC=8C=20=E5=90=8E=E6=9C=89=E6=B7=B1=E8=B4=A7=E4=BD=8D?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E4=BB=BB=E5=8A=A1=EF=BC=8C=E9=98=BB=E6=8C=A1?= =?UTF-8?q?=E5=90=8E=E7=94=9F=E6=88=90=E7=A7=BB=E5=BA=93=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=20=E5=88=A4=E6=96=AD=E6=9D=A1=E4=BB=B6=E6=9C=89?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E5=B7=B2=E4=BF=AE=E5=A4=8D=EF=BC=9B?= =?UTF-8?q?=20=E6=96=99=E7=AE=B1=E5=BA=93=E6=8A=80=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=B8=8B=E5=8F=91=E7=A7=BB=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=9B=20=E6=8B=A3=E9=80=89=E4=BD=8D=E5=9D=87?= =?UTF-8?q?=E8=A1=A1=E5=88=86=E9=85=8D.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/common/TableDataInfo.java | 1 + .../java/org/nl/common/enums/StatusEnum.java | 2 +- .../impl/diy/DepthPriorityHandler.java | 38 +++++++++---- .../task/handler/impl/MoveStorageTask.java | 47 ++++++++------- .../task/handler/impl/OutStorageTask.java | 4 +- .../task/handler/impl/ToPickPlatformTask.java | 44 +++++++------- .../controller/StIvtStructattrController.java | 12 ++++ .../service/IStIvtStructattrService.java | 3 + .../impl/StIvtStructattrServiceImpl.java | 57 ++++++++++++++++--- .../quartz/task/TaskScheduleService.java | 36 ++++++------ .../wms/stor_manage/storIvtInfo/index.vue | 15 +++++ .../wms/stor_manage/storIvtInfo/structattr.js | 8 +++ 12 files changed, 190 insertions(+), 77 deletions(-) diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java index 36a76105..800767d4 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java @@ -28,6 +28,7 @@ public class TableDataInfo implements Serializable { */ private long totalElements; + /** * 列表数据 */ diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java index cc802489..61d9c1c2 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java @@ -71,7 +71,7 @@ public enum StatusEnum { /** * 点位锁类型 */ - LOCK(ForkMap.of("无锁", "00", null, "入库锁", "10", null, "入库盘点锁", "16", null, "出库锁", "20", null, "盘点出库锁", "26", null, "移库锁", "50", null, "异常锁定", "60", null, "空出锁", "70", null)), + LOCK(ForkMap.of("无锁", "00", null, "入库锁", "10", null, "入库盘点锁", "16", null, "出库锁", "20", null, "盘点出库锁", "26", null, "移库锁", "50", null, "异常锁定", "60", null, "空出锁", "70", null,"临时锁", "99", null)), STRATEGY_TYPE(ForkMap.of("入库", "1", null, "出库", "2", null, "出入库", "3", null)), diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/DepthPriorityHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/DepthPriorityHandler.java index 30c1fc51..c83fd6b6 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/DepthPriorityHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/DepthPriorityHandler.java @@ -1,18 +1,22 @@ package org.nl.wms.decision_manage.handler.decisioner.impl.diy; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.SpringContextHolder; import org.nl.wms.decision_manage.handler.decisioner.Decisioner; +import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; +import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /* *深位优先 @@ -58,17 +62,13 @@ public class DepthPriorityHandler extends Decisioner 0) { - if (returnResult.size() < 3) { - return getOtherStructattr(list, param, startTime1, depCollect); - } else { - log.info("深位优先策略:载具号:" + param.getString("vehicle_code") + "分配结果: 存在深位并对应浅位无货的库位,分配仓位:" + returnResult.get(0).getStruct_code()); - log.info("深位优先策略:载具号:"+param.getString("vehicle_code")+"获取深货位且浅货位无货仓位耗时:{}", System.currentTimeMillis() - startTime1); - return returnResult; - } - } else { + if (returnResult.isEmpty() || returnResult.size() < 3) { + //深位为空或数量小于3,分配有货的浅库位 return getOtherStructattr(list, param, startTime1, depCollect); } + log.info("深位优先策略:载具号:{} 分配结果: 存在深位并对应浅位无货的库位,分配仓位:{}", param.getString("vehicle_code"), returnResult.get(0).getStruct_code()); + log.info("深位优先策略:载具号:{} 获取深货位且浅货位无货仓位耗时:{}", param.getString("vehicle_code"), System.currentTimeMillis() - startTime1); + return returnResult; } private static List getOtherStructattr(List list, JSONObject param, long startTime1, List depCollect) { @@ -80,12 +80,26 @@ public class DepthPriorityHandler extends Decisioner taskList = iSchBaseTaskService.list( + new LambdaQueryWrapper() + .lt(SchBaseTask::getStatus, StatusEnum.FORM_STATUS.code("完成")) + .select(SchBaseTask::getPoint_code1, SchBaseTask::getPoint_code2) + ); + Set pointCodes = taskList.stream() + .flatMap(t -> Stream.of(t.getPoint_code1(), t.getPoint_code2())) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); List list1 = iStIvtStructattrService.list(new LambdaUpdateWrapper() .in(StIvtStructattr::getRow_num, Arrays.asList(1, 4)) .eq(StIvtStructattr::getStor_code, StatusEnum.STOCK_INFO.code("料箱库")) .eq(StIvtStructattr::getIs_used, 1) .eq(StIvtStructattr::getLock_type, StatusEnum.LOCK.code("无锁"))); - //先找2排的再找3排的 + list1 = list1.stream() + .filter(s -> !pointCodes.contains(s.getStruct_code())) + .collect(Collectors.toList()); + //先找1排对应的2排的再找3排对应的4排 if (!list1.isEmpty()) { List combinedResult = new ArrayList<>(); //1排 @@ -126,8 +140,10 @@ public class DepthPriorityHandler extends Decisioner list = taskService.list(new QueryWrapper().eq("vehicle_code", vehicle_code) .lt("status", StatusEnum.FORM_STATUS.code("完成"))); if (!CollectionUtils.isEmpty(list)){ @@ -73,25 +74,27 @@ public class MoveStorageTask extends AbstractTask { SchBaseTask task = new SchBaseTask(); task.setId(IdUtil.getStringId()); task.setPriority(StatusEnum.PRIORITY_TYPE.code("移库")); - task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); - task.setStatus(StatusEnum.FORM_STATUS.code("生成")); - task.setHandle_class(this.getClass().getName()); - task.setAcs_type(StatusEnum.ACS_TYPE.code("立库")); - task.setCreate_time(now); - task.setCreate_name(SecurityUtils.getCurrentNickName()); - task.setTask_type(from.getString("task_type")); - task.setVehicle_code(vehicle_code); - task.setPoint_code1(start_struct_code); - task.setPoint_code2(end_struct_code); - iMdPbVehicleMaterService.getVehicleMaters(task,true); + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + task.setStatus(StatusEnum.FORM_STATUS.code("生成")); + task.setHandle_class(this.getClass().getName()); + task.setAcs_type(StatusEnum.ACS_TYPE.code("立库")); + task.setCreate_time(now); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setTask_type(from.getString("task_type")); + task.setVehicle_code(vehicle_code); + task.setPoint_code1(start_struct_code); + task.setPoint_code2(end_struct_code); + //批量移库,完成后自动禁用货位的标记 + task.setSource_form_id(StringUtils.isNotBlank(isAllMove) ? "99" : null); + iMdPbVehicleMaterService.getVehicleMaters(task, true); taskService.save(task); iMdPbVehicleMaterService.update(new LambdaUpdateWrapper() - .set(MdPbVehicleMater::getTask_code,task.getTask_code()) - .eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code()) - .eq(MdPbVehicleMater::getIs_delete,false)); + .set(MdPbVehicleMater::getTask_code, task.getTask_code()) + .eq(MdPbVehicleMater::getVehicle_code, task.getVehicle_code()) + .eq(MdPbVehicleMater::getIs_delete, false)); //TODO:是否下发 Boolean isSend = from.getBoolean("is_send"); - if (isSend){ + if (isSend) { //参数封装,调acs接口 } return (JSONObject)JSON.toJSON(task); @@ -105,12 +108,18 @@ public class MoveStorageTask extends AbstractTask { @Override public void finish(JSONObject data) { - data.put("status",StatusEnum.FORM_STATUS.code("完成")); + data.put("status", StatusEnum.FORM_STATUS.code("完成")); this.updateTask(data); SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper().eq("task_code", data.getString("task_code"))); - iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code1(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.FALSE,schBaseTask.getPoint_code2()); - iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code2(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.TRUE,schBaseTask.getPoint_code2()); - + iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code1(), schBaseTask.getVehicle_code(), schBaseTask.getTask_type(), null, Boolean.FALSE, schBaseTask.getPoint_code2()); + iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code2(), schBaseTask.getVehicle_code(), schBaseTask.getTask_type(), null, Boolean.TRUE, schBaseTask.getPoint_code2()); + if ("99".equals(schBaseTask.getSource_form_id())) { + iStIvtStructattrService.update( + new UpdateWrapper() + .set("lock_type", StatusEnum.LOCK.code("临时锁")) + .eq("struct_code", schBaseTask.getPoint_code1()) + ); + } } @Override diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java index 2fe618dd..9032670f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java @@ -177,7 +177,7 @@ public class OutStorageTask extends AbstractTask { } } else { /** - * 1.判断对应浅位是否存在托盘 + * 1.判断对应浅位是否存在料箱 * 2.如果有则判断是否存在出库任务 * 3.如果没有则生成移库任务 */ @@ -187,7 +187,7 @@ public class OutStorageTask extends AbstractTask { log.info("-----出库分配:深位查询浅位是否有货:{}", block != null); if (block != null) { int count = taskService.count(new QueryWrapper() - .eq("point_code1", block.getStor_code()) + .eq("point_code1", block.getStruct_code()) .lt("status", StatusEnum.FORM_STATUS.code("完成"))); if (count == 0) { AtomicReference moveStruct = new AtomicReference<>(); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java index 2ee3e9e1..f087060b 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java @@ -15,7 +15,6 @@ import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SpringContextHolder; import org.nl.wms.dispatch_manage.point.service.ISchBasePointService; -import org.nl.wms.dispatch_manage.point.service.dao.SchBasePoint; import org.nl.wms.dispatch_manage.task.handler.AbstractTask; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; @@ -67,22 +66,29 @@ public class ToPickPlatformTask extends AbstractTask { if (start_struct_code.contains("B")) { target_point = "1311"; } else { - List targetPoints = iSchBasePointService.list(new QueryWrapper() - .eq("region_code", "PICK01").eq("is_used", true)); - //通过全局变量获取目标位置 - if (CollectionUtils.isEmpty(targetPoints)) { - throw new BadRequestException("当前拣选工位未启用"); - } - //轮询 - log.info("上次拣选平台分配位置:{},拣选平台开放点:{}", Lask_Point, targetPoints); - for (int i = 0; i < targetPoints.size(); i++) { - String code = targetPoints.get(i).getCode(); - if (targetPoints.size() > 1 && !code.equals(Lask_Point)) { - target_point = code; - break; - } - target_point = code; - } + List list = iSchBaseTaskService.list(new QueryWrapper() + .lt("status", StatusEnum.FORM_STATUS.code("完成"))); + String pointCode1 = "1308"; + String pointCode2 = "1311"; + long count1 = list.stream().filter(r -> r.getPoint_code2().equals(pointCode1)).count(); + long count2 = list.stream().filter(r -> r.getPoint_code2().equals(pointCode2)).count(); + target_point = count1 >= count2 ? pointCode2 : pointCode1; + // List targetPoints = iSchBasePointService.list(new QueryWrapper() + // .eq("region_code", "PICK01").eq("is_used", true)); + // //通过全局变量获取目标位置 + // if (CollectionUtils.isEmpty(targetPoints)) { + // throw new BadRequestException("当前拣选工位未启用"); + // } + // //轮询 + // log.info("上次拣选平台分配位置:{},拣选平台开放点:{}", Lask_Point, targetPoints); + // for (int i = 0; i < targetPoints.size(); i++) { + // String code = targetPoints.get(i).getCode(); + // if (targetPoints.size() > 1 && !code.equals(Lask_Point)) { + // target_point = code; + // break; + // } + // target_point = code; + // } } if (StringUtils.isEmpty(vehicle_code) || StringUtils.isEmpty(target_point)) { throw new BadRequestException("创建任务失败:方法请求参数不能为空"); @@ -117,8 +123,8 @@ public class ToPickPlatformTask extends AbstractTask { task.setPriority("1".equals(priority)?StatusEnum.PRIORITY_TYPE.code("加急"):StatusEnum.PRIORITY_TYPE.code("较高")); iMdPbVehicleMaterService.getVehicleMaters(task,true); iSchBaseTaskService.save(task); - Lask_Point = target_point; - log.info("当前拣选平台分配位置:{},{}", Lask_Point, target_point); + //Lask_Point = target_point; + // log.info("当前拣选平台分配位置:{},{}", Lask_Point, target_point); iMdPbVehicleMaterService.update(new LambdaUpdateWrapper() .set(MdPbVehicleMater::getTask_code, task.getTask_code()) .eq(MdPbVehicleMater::getVehicle_code, task.getVehicle_code()) diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/controller/StIvtStructattrController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/controller/StIvtStructattrController.java index b04ecf27..719c8ff5 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/controller/StIvtStructattrController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/controller/StIvtStructattrController.java @@ -166,6 +166,18 @@ public class StIvtStructattrController { structattrService.createIdleTask(taskList); return new ResponseEntity<>(HttpStatus.OK); } + /** + * 批量移库下发 + */ + @PostMapping("/createMoveTask") + @Log("批量移库下发") + public ResponseEntity createMoveTask(@RequestBody List> taskList) { + structattrService.createMoveTask(taskList); + return new ResponseEntity<>(HttpStatus.OK); + } + + + @PostMapping("/exportFile") diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java index 6be53369..2b2f85f5 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java @@ -67,4 +67,7 @@ public interface IStIvtStructattrService extends IService { Long getIoBillCounts(String vehicleCode); void createIdleTask( List> taskList); + + void createMoveTask( List> taskList); + } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java index 0eec8cd4..d9cff5cc 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; @@ -15,10 +16,9 @@ import org.nl.common.TableDataInfo; import org.nl.common.domain.entity.PageQuery; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.enums.StatusEnum; -import org.nl.common.utils.ErpServiceUtils; -import org.nl.common.utils.IdUtil; -import org.nl.common.utils.SpringContextHolder; +import org.nl.common.utils.*; import org.nl.wms.decision_manage.handler.decisioner.impl.base.SameBlockNumRuleHandler; +import org.nl.wms.dispatch_manage.task.handler.impl.MoveStorageTask; import org.nl.wms.dispatch_manage.task.handler.impl.OutStorageTask; import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.DecisionHandler; import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService; @@ -40,15 +40,14 @@ import org.nl.wms.system_manage.service.param.dao.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** @@ -461,5 +460,49 @@ public class StIvtStructattrServiceImpl extends ServiceImpl> taskList) { + if (CollectionUtils.isEmpty(taskList)) { + return; + } + String structCode = taskList.get(0).get("struct_code").toString(); + QueryWrapper query = new QueryWrapper() + .eq("is_used", true) + .likeRight("struct_code", structCode.substring(0, structCode.lastIndexOf("-"))) + .eq("stor_code", StatusEnum.STOCK_INFO.code("料箱库")); + List list = this.list(query); + List list1 = list.stream().filter(r -> StringUtils.isNotBlank(r.getVehicle_code())).collect(Collectors.toList()); + Set list2 = list.stream() + .filter(r -> StringUtils.isBlank(r.getVehicle_code())) + .map(StIvtStructattr::getStruct_code) + .collect(Collectors.toSet()); + if (ObjectUtils.isNotEmpty(list1)) { + list1.forEach(r -> { + AtomicReference moveStruct = new AtomicReference<>(); + String vehicleCode = r.getVehicle_code(); + RedissonUtils.lock(() -> { + System.out.println("---3--" + Thread.currentThread().getName()); + //出阻挡说明是同排跟任务一个类型载具 + Map process = SpringContextHolder.getBean(DecisionHandler.class).dispenseTransa(ListOf.of("limitStorage", "depthPriority", "alleyAve"), new JSONObject(MapOf.of("is_move", true, "stor_code", r.getStor_code(), "vehicle_code", vehicleCode, "errorTask", "errorTask"))); + moveStruct.set(((Map) process.get("form_data")).get("end_struct_code")); + }, "1" + r.getStor_code(), 5); + Map moveForm = MapOf.of("task_type", StatusEnum.IOBILL_TYPE_MOVE.code("移库") + , "is_send", false + , "vehicle_code", StringUtils.isEmpty(vehicleCode) ? "YCZJ" + r.getVehicle_code() : vehicleCode, "form_data", new JSONObject(MapOf.of("start_struct_code", r.getStruct_code(), "end_struct_code", moveStruct.get()))); + moveForm.put("isAllMove", "1"); + SpringContextHolder.getBean(MoveStorageTask.class).createTask(new JSONObject(moveForm)); + }); + } + if (ObjectUtils.isNotEmpty(list2)) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.set(StIvtStructattr::getLock_type, "99"); + lambdaUpdateWrapper.in(StIvtStructattr::getStruct_code, list2); + this.update(lambdaUpdateWrapper); + } + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/TaskScheduleService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/TaskScheduleService.java index c3ac4a4b..beb45719 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/TaskScheduleService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/TaskScheduleService.java @@ -127,24 +127,24 @@ public class TaskScheduleService { delayTaskList.removeAll(waitTaskList); } //相同载具号,任务类型的任务不下发 - // Map> grouped = delayTaskList.stream() - // .collect(Collectors.groupingBy(task -> task.getVehicle_code() + "_" + task.getTask_type())); - // List toRemove = new ArrayList<>(); - // grouped.forEach((k, t) -> { - // if (t.size() > 1) { - // toRemove.addAll(t.subList(1, t.size())); - // } - // }); - // if (toRemove.size() > 0) { - // List taskIds = toRemove.stream().map(SchBaseTask::getId).collect(Collectors.toList()); - // LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - // updateWrapper.in(SchBaseTask::getId, taskIds); - // updateWrapper.set(SchBaseTask::getStatus, StatusEnum.FORM_STATUS.code("完成")); - // updateWrapper.set(SchBaseTask::getIs_delete, "1"); - // updateWrapper.set(SchBaseTask::getRemark, "前置校验,载具号与任务类型相同,校验完成"); - // iSchBaseTaskService.update(updateWrapper); - // delayTaskList.removeAll(toRemove); - // } + Map> grouped = delayTaskList.stream() + .collect(Collectors.groupingBy(task -> task.getVehicle_code() + "_" + task.getTask_type())); + List toRemove = new ArrayList<>(); + grouped.forEach((k, t) -> { + if (t.size() > 1) { + toRemove.addAll(t.subList(1, t.size())); + } + }); + if (toRemove.size() > 0) { + List taskIds = toRemove.stream().map(SchBaseTask::getId).collect(Collectors.toList()); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(SchBaseTask::getId, taskIds); + updateWrapper.set(SchBaseTask::getStatus, StatusEnum.FORM_STATUS.code("完成")); + updateWrapper.set(SchBaseTask::getIs_delete, "1"); + updateWrapper.set(SchBaseTask::getRemark, "前置校验,载具号与任务类型相同,校验完成"); + iSchBaseTaskService.update(updateWrapper); + delayTaskList.removeAll(toRemove); + } if (ObjectUtil.isNotEmpty(delayTaskList)) { DELAY_EXECUTOR.execute(() -> { try { diff --git a/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/index.vue b/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/index.vue index 15689561..43cd6bed 100644 --- a/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/index.vue +++ b/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/index.vue @@ -154,6 +154,15 @@ + + 批量移库下发 + { + this.crud.notify('批量移库任务下发成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }) } } } diff --git a/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/structattr.js b/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/structattr.js index e4e70876..22a0e722 100644 --- a/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/structattr.js +++ b/wms_pro/qd/src/views/wms/stor_manage/storIvtInfo/structattr.js @@ -123,12 +123,20 @@ export function createIdleTask(data) { data }) } +export function createMoveTask(data) { + return request({ + url: '/api/structattr/createMoveTask', + method: 'post', + data + }) +} export default { add, edit, unlock, createIdleTask, + createMoveTask, del, getVehicleTask, getIosInvDtl,