ChenYang 1 rok pred
rodič
commit
2af779cce1

+ 4 - 11
ruoyi-admin/src/main/java/com/ruoyi/init/StartService.java

@@ -2,28 +2,21 @@ package com.ruoyi.init;
 
 
 import com.ruoyi.ams.agv.ndc.AciService;
 import com.ruoyi.ams.agv.ndc.AciService;
 import com.ruoyi.ams.agv.ndc.config.InitTaskConfig;
 import com.ruoyi.ams.agv.ndc.config.InitTaskConfig;
-import com.ruoyi.ams.agv.ndc.thread.*;
+import com.ruoyi.ams.agv.ndc.thread.AciServiceThread;
+import com.ruoyi.ams.agv.ndc.thread.AutoButtonBoxTask;
+import com.ruoyi.ams.agv.ndc.thread.AutoTaskThread;
+import com.ruoyi.ams.agv.ndc.thread.AutoTranSitTask;
 import com.ruoyi.ams.business.IBusinessService;
 import com.ruoyi.ams.business.IBusinessService;
-import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
-import com.ruoyi.ams.config.domain.dto.AgvCallItemDTO;
-import com.ruoyi.ams.config.domain.dto.LotattDTO;
 import com.ruoyi.ams.xuankuang.service.StirringTankClientService;
 import com.ruoyi.ams.xuankuang.service.StirringTankClientService;
-import com.ruoyi.base.constant.Constant;
-import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.service.IBaseLocationInfoService;
-import com.ruoyi.framework.config.ThreadPoolConfig;
 import com.ruoyi.hard.xuankang.StirringTankClient;
 import com.ruoyi.hard.xuankang.StirringTankClient;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
-import org.quartz.spi.ThreadPool;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
 
 
 @Slf4j
 @Slf4j
 @Component
 @Component

+ 3 - 2
warewms-ams/src/main/java/com/ruoyi/ams/task/service/IWcsTaskService.java

@@ -187,12 +187,13 @@ public interface IWcsTaskService {
     /**
     /**
      * 翻转任务状态
      * 翻转任务状态
      * @author chenyang
      * @author chenyang
-     * @param taskNo 任务号
+     * @param billNo  出入库单号
+     * @param taskType 任务类型
      * @param sourceStatus 源状态
      * @param sourceStatus 源状态
      * @param targetStatus 目标状态
      * @param targetStatus 目标状态
      * @return
      * @return
      */
      */
-    Boolean updateTaskStatus(String taskNo, Integer sourceStatus, Integer targetStatus);
+    Boolean updateTaskStatus(String billNo, String taskType, Integer sourceStatus, Integer targetStatus);
 
 
     /**
     /**
      * 根据入库单号查询多个
      * 根据入库单号查询多个

+ 2 - 2
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -562,9 +562,9 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
     }
     }
 
 
     @Override
     @Override
-    public Boolean updateTaskStatus(String taskNo, Integer sourceStatus, Integer targetStatus) {
+    public Boolean updateTaskStatus(String billNo, String taskType, Integer sourceStatus, Integer targetStatus) {
         LambdaUpdateWrapper<WcsTask> updateWrapper = Wrappers.<WcsTask>lambdaUpdate().set(WcsTask::getState, targetStatus)
         LambdaUpdateWrapper<WcsTask> updateWrapper = Wrappers.<WcsTask>lambdaUpdate().set(WcsTask::getState, targetStatus)
-                .eq(WcsTask::getTaskNo, taskNo).eq(WcsTask::getState, sourceStatus);
+                .eq(WcsTask::getExt1, billNo).eq(WcsTask::getExt8, taskType).eq(WcsTask::getState, sourceStatus);
         return wcsTaskMapper.update(null, updateWrapper) == 1;
         return wcsTaskMapper.update(null, updateWrapper) == 1;
     }
     }
 
 

+ 10 - 8
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/AgvCallProxyService.java

@@ -102,7 +102,7 @@ public class AgvCallProxyService {
         String agvTargetLocationId = String.valueOf(getAgvLocationId("bucketLocationIdList"));
         String agvTargetLocationId = String.valueOf(getAgvLocationId("bucketLocationIdList"));
         String agvTaskNo = IdWorker.getIdStr();
         String agvTaskNo = IdWorker.getIdStr();
         addWcsTask(agvTaskNo, agvSourceLocationId, agvTargetLocationId,
         addWcsTask(agvTaskNo, agvSourceLocationId, agvTargetLocationId,
-                asnNo, palletNo, Constant.TASK_STS.TASK_CREATE.getLongValue(), "agv入库任务下发");
+                asnNo, palletNo, Constant.TASK_STS.TASK_CREATE.getLongValue(), "agv入库任务下发", Constant.TaskType.AGV.getDesc());
 
 
         //3.入库单创建
         //3.入库单创建
         WmsDocAsnHeader wmsDocAsnHeader =
         WmsDocAsnHeader wmsDocAsnHeader =
@@ -146,7 +146,7 @@ public class AgvCallProxyService {
         String agvSourceLocationId = String.valueOf(getAgvLocationId("bucketLocationIdList"));
         String agvSourceLocationId = String.valueOf(getAgvLocationId("bucketLocationIdList"));
         String agvTaskNo = IdWorker.getIdStr();
         String agvTaskNo = IdWorker.getIdStr();
         addWcsOutTask(agvTaskNo, agvSourceLocationId, targetLocationId,
         addWcsOutTask(agvTaskNo, agvSourceLocationId, targetLocationId,
-                orderNo, Constant.TASK_STS.TASK_CREATE.getLongValue(), "agv出库任务下发");
+                orderNo, Constant.TASK_STS.TASK_CREATE.getLongValue(), "agv出库任务下发", Constant.TaskType.AGV.getDesc());
 
 
         //3.出库单创建
         //3.出库单创建
         WmsDocOrderHeader docOrderHeader =
         WmsDocOrderHeader docOrderHeader =
@@ -240,7 +240,7 @@ public class AgvCallProxyService {
         Assert.isTrue(ObjectUtil.isNotNull(baseSku), "baseSku is null");
         Assert.isTrue(ObjectUtil.isNotNull(baseSku), "baseSku is null");
         //1.生成一个wcs任务
         //1.生成一个wcs任务
         String locationInfoId = String.valueOf(baseLocationInfo.getId());
         String locationInfoId = String.valueOf(baseLocationInfo.getId());
-        addWcsOutTask(taskNo, locationInfoId, bucketCacheLocationId, orderNo, 10L, "桶装料出库任务");
+        addWcsOutTask(taskNo, locationInfoId, bucketCacheLocationId, orderNo, 10L, "桶装料出库任务", Constant.TaskType.GENERAL_INV.getDesc());
         //修改出库出库存的traceId
         //修改出库出库存的traceId
         invLotLocIdService.operateTraceIdByLocationId(bucketCacheLocationId, taskNo);
         invLotLocIdService.operateTraceIdByLocationId(bucketCacheLocationId, taskNo);
         //4.组装wcs任务请求参数并同步当前的wcs任务
         //4.组装wcs任务请求参数并同步当前的wcs任务
@@ -251,14 +251,14 @@ public class AgvCallProxyService {
 
 
 
 
     private AjaxResult addWcsTask(String taskNo, String locationFrom, String locationTo
     private AjaxResult addWcsTask(String taskNo, String locationFrom, String locationTo
-            , String asnNo, String palletNo, Long state, String remake) {
-        return wcsTaskSubService.addWcsTask(taskNo, locationFrom, locationTo, asnNo, palletNo, StringUtils.EMPTY, state, remake);
+            , String asnNo, String palletNo, Long state, String remake, String taskType) {
+        return wcsTaskSubService.addWcsTask(taskNo, locationFrom, locationTo, asnNo, palletNo, StringUtils.EMPTY, state, remake, taskType);
     }
     }
 
 
     private AjaxResult addWcsOutTask(String taskNo, String locationFrom, String locationTo,
     private AjaxResult addWcsOutTask(String taskNo, String locationFrom, String locationTo,
-                                     String orderNo, Long status, String remark) {
+                                     String orderNo, Long status, String remark, String taskType) {
         return wcsTaskSubService.addWcsOutTask(taskNo, locationFrom, locationTo
         return wcsTaskSubService.addWcsOutTask(taskNo, locationFrom, locationTo
-                , orderNo, StringUtils.EMPTY, StringUtils.EMPTY, status, remark);
+                , orderNo, StringUtils.EMPTY, StringUtils.EMPTY, status, remark, taskType);
     }
     }
 
 
     private WcsResponseVo noticeBucketIntoLocTask(String taskNo, String bucketCacheLocationId, String asnNo, String palletNo, String materialType, Double quantity) {
     private WcsResponseVo noticeBucketIntoLocTask(String taskNo, String bucketCacheLocationId, String asnNo, String palletNo, String materialType, Double quantity) {
@@ -272,7 +272,9 @@ public class AgvCallProxyService {
         invLotLocIdSubService.initInv(bucketCacheLocationId, baseSku.getSku(), palletNo, asnNo, taskNo, quantity);
         invLotLocIdSubService.initInv(bucketCacheLocationId, baseSku.getSku(), palletNo, asnNo, taskNo, quantity);
         // 3.生成任务
         // 3.生成任务
         addWcsTask(taskNo, bucketCacheLocationId
         addWcsTask(taskNo, bucketCacheLocationId
-                , String.valueOf(baseLocationInfo.getId()), asnNo, palletNo, Constant.TASK_STS.TASK_PUBILSH.getLongValue(), "四向车入库任务");
+                , String.valueOf(baseLocationInfo.getId()), asnNo, palletNo,
+                Constant.TASK_STS.TASK_PUBILSH.getLongValue(), "四向车入库任务",
+                Constant.TaskType.GENERAL_INV.getDesc());
         //4.同步当前的wcs任务
         //4.同步当前的wcs任务
         AgvInTaskForm agvInTaskForm = assemblyAgvInTaskForm(taskNo, asnNo, materialType, quantity, palletNo, baseLocationInfo);
         AgvInTaskForm agvInTaskForm = assemblyAgvInTaskForm(taskNo, asnNo, materialType, quantity, palletNo, baseLocationInfo);
         return wmsToWcsApiService.wmsAgvInTask(agvInTaskForm);
         return wmsToWcsApiService.wmsAgvInTask(agvInTaskForm);

+ 0 - 35
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WcsTaskSubService.java

@@ -64,16 +64,6 @@ public class WcsTaskSubService {
     private WmsDocAsnSubService wmsDocAsnSubService;
     private WmsDocAsnSubService wmsDocAsnSubService;
 
 
 
 
-
-
-
-
-
-    public AjaxResult addWcsTask(String taskNo, String locationFrom, String locationTo
-            , String asnNo, String palletNo, String wcsNo, Long state, String remake) {
-        return addWcsTask(taskNo, locationFrom, locationTo, asnNo, palletNo, wcsNo, state, remake, StringUtils.EMPTY);
-    }
-
     public AjaxResult addWcsTask(String taskNo, String locationFrom, String locationTo
     public AjaxResult addWcsTask(String taskNo, String locationFrom, String locationTo
             , String asnNo, String palletNo, String wcsNo, Long state, String remake, String taskType) {
             , String asnNo, String palletNo, String wcsNo, Long state, String remake, String taskType) {
 
 
@@ -156,31 +146,6 @@ public class WcsTaskSubService {
         return addWcsTask(taskNo, locationFrom, locationTo, orderNo, palletNo, wcsNo, state, remark, StringUtils.EMPTY);
         return addWcsTask(taskNo, locationFrom, locationTo, orderNo, palletNo, wcsNo, state, remark, StringUtils.EMPTY);
     }
     }
 
 
-    /*public AjaxResult addWcsOutTask(String taskNo, String locationFrom, String locationTo
-            , String orderNo, String palletNo, String remark) {
-        return addWcsOutTask(taskNo, locationFrom, locationTo, orderNo, palletNo, remark, StringUtils.EMPTY);
-    }
-
-    public AjaxResult addWcsOutTask(String taskNo, String locationFrom, String locationTo
-            , String orderNo, String palletNo, String remark, String taskType) {
-        return addWcsOutTask(taskNo, locationFrom, locationTo, orderNo, palletNo, StringUtils.EMPTY, 10L, remark, taskType);
-    }
-
-    public AjaxResult addWcsOutTask(String taskNo, String locationFrom, String locationTo
-            , String orderNo, String palletNo, String wcsNo, String remark, String taskType) {
-        return addWcsOutTask(taskNo, locationFrom, locationTo, orderNo, palletNo, wcsNo, 10L, remark, taskType);
-    }
-
-    public AjaxResult addWcsOutTask(String taskNo, String locationFrom, String locationTo
-            , String orderNo, Long status, String remark) {
-        return addWcsOutTask(taskNo, locationFrom, locationTo, orderNo, StringUtils.EMPTY, StringUtils.EMPTY, status, remark);
-    }
-
-    public AjaxResult addWcsOutTask(String taskNo, String locationFrom, String locationTo
-            , String orderNo) {
-        return addWcsOutTask(taskNo, locationFrom, locationTo, orderNo, StringUtils.EMPTY, StringUtils.EMPTY, 10L, "立体库出库任务", StringUtils.EMPTY);
-    }*/
-
 
 
     /**
     /**
      * 增加越库任务
      * 增加越库任务

+ 3 - 1
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WcsToWmsApiService.java

@@ -592,7 +592,9 @@ public class WcsToWmsApiService {
     public Boolean callbackNotice(CallbackTaskForm callbackForm) {
     public Boolean callbackNotice(CallbackTaskForm callbackForm) {
         Assert.isTrue(StringUtils.equals(Constant.SAFE_CODE.PASS.getCode(), callbackForm.getSafeCode()),
         Assert.isTrue(StringUtils.equals(Constant.SAFE_CODE.PASS.getCode(), callbackForm.getSafeCode()),
                 "当前任务未执行");
                 "当前任务未执行");
-        return wcsTaskService.updateTaskStatus(callbackForm.getTaskNo(),
+        WcsTask wcsTask = wcsTaskService.selectWcsTaskByTaskNo(callbackForm.getTaskNo());
+        Assert.isTrue(ObjectUtil.isNotNull(wcsTask), "wcsTask is null");
+        return wcsTaskService.updateTaskStatus(wcsTask.getExt1(), Constant.TaskType.AGV.getDesc(),
                 Constant.TASK_STS.TASK_CREATE.getValue(),  Constant.TASK_STS.TASK_WAIT.getValue());
                 Constant.TASK_STS.TASK_CREATE.getValue(),  Constant.TASK_STS.TASK_WAIT.getValue());
     }
     }
 
 

+ 39 - 13
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WmsDocOrderSubService.java

@@ -116,7 +116,6 @@ public class WmsDocOrderSubService {
         //重新筛选库存
         //重新筛选库存
 //        baseLocationLotattVOS1 = filterInv(baseLocationLotattVOS, orderNo);
 //        baseLocationLotattVOS1 = filterInv(baseLocationLotattVOS, orderNo);
 
 
-        if(1==1) throw new RuntimeException("test");
         boolean con = true;
         boolean con = true;
         //机械手应拆袋数
         //机械手应拆袋数
         int allocateQuantities = 0;
         int allocateQuantities = 0;
@@ -241,7 +240,7 @@ public class WmsDocOrderSubService {
 
 
             int locationIndex = partitionLocationIdList.indexOf(locationInfo.getId());
             int locationIndex = partitionLocationIdList.indexOf(locationInfo.getId());
             if(StringUtils.equals(partitionRowKey, Constants.FIRST)) {
             if(StringUtils.equals(partitionRowKey, Constants.FIRST)) {
-                List<Long> firstRightSubList = ListUtil.sub(partitionLocationIdList, locationIndex, partitionLocationIdList.size());
+                List<Long> firstRightSubList = ListUtil.reverse(ListUtil.sub(partitionLocationIdList, locationIndex, partitionLocationIdList.size()));
                 List<Long> resultLocationIdList = checkLocationIdList(locationInfo.getId(), sourceInvLotLocIdList, firstRightSubList,
                 List<Long> resultLocationIdList = checkLocationIdList(locationInfo.getId(), sourceInvLotLocIdList, firstRightSubList,
                         baseLocationLotattList, quantity);
                         baseLocationLotattList, quantity);
                 if(CollectionUtil.isEmpty(resultLocationIdList)) continue;
                 if(CollectionUtil.isEmpty(resultLocationIdList)) continue;
@@ -257,12 +256,16 @@ public class WmsDocOrderSubService {
             }
             }
 
 
             if(StringUtils.equals(partitionRowKey, Constants.MIDDLE)){
             if(StringUtils.equals(partitionRowKey, Constants.MIDDLE)){
-                List<Long> middleLeftSubList = ListUtil.reverse(ListUtil.sub(partitionLocationIdList, Constants.START_VALUE, locationIndex + 1));
+                List<Long> middleLeftSubList = ListUtil.sub(partitionLocationIdList, Constants.START_VALUE, locationIndex + 1);
                 List<Long> middleLeftLocationIdList = checkLocationIdList(locationInfo.getId(), sourceInvLotLocIdList, middleLeftSubList,
                 List<Long> middleLeftLocationIdList = checkLocationIdList(locationInfo.getId(), sourceInvLotLocIdList, middleLeftSubList,
                         baseLocationLotattList, quantity);
                         baseLocationLotattList, quantity);
-                List<Long> middleRightSubList = ListUtil.sub(partitionLocationIdList, locationIndex, partitionLocationIdList.size());
+                System.err.println(JSONObject.toJSONString(middleLeftLocationIdList));
+
+                List<Long> middleRightSubList = ListUtil.reverse(ListUtil.sub(partitionLocationIdList, locationIndex, partitionLocationIdList.size()));
                 List<Long> middleRightLocationIdList = checkLocationIdList(locationInfo.getId(), sourceInvLotLocIdList, middleRightSubList,
                 List<Long> middleRightLocationIdList = checkLocationIdList(locationInfo.getId(), sourceInvLotLocIdList, middleRightSubList,
                         baseLocationLotattList, quantity);
                         baseLocationLotattList, quantity);
+                System.err.println(JSONObject.toJSONString(middleRightLocationIdList));
+
                 if(CollectionUtil.isEmpty(middleLeftLocationIdList)
                 if(CollectionUtil.isEmpty(middleLeftLocationIdList)
                         && CollectionUtil.isEmpty(middleRightLocationIdList)) continue;
                         && CollectionUtil.isEmpty(middleRightLocationIdList)) continue;
 
 
@@ -274,22 +277,25 @@ public class WmsDocOrderSubService {
                         .filter(item -> CollectionUtil.contains(middleRightLocationIdList, Long.parseLong(item.getLocationId()))
                         .filter(item -> CollectionUtil.contains(middleRightLocationIdList, Long.parseLong(item.getLocationId()))
                                 && ObjectUtil.isNotNull(item.getQty()))
                                 && ObjectUtil.isNotNull(item.getQty()))
                         .map(item -> item.getQty()).reduce(BigDecimal.ZERO, BigDecimal::add);
                         .map(item -> item.getQty()).reduce(BigDecimal.ZERO, BigDecimal::add);
-                BigDecimal singleRowInvCount = CompareUtil.compare(middleLeftCount, middleRightCount) < 0
-                        && CompareUtil.compare(middleLeftCount, BigDecimal.ZERO) > 0 ? middleLeftCount : middleRightCount;
-                quantity = NumberUtil.sub(quantity, singleRowInvCount);
 
 
-                List<Long> finalList = CompareUtil.compare(middleLeftCount, middleRightCount) < 0
-                        && CompareUtil.compare(middleLeftCount, BigDecimal.ZERO) > 0
+
+                BigDecimal compareCount = compareCount(middleLeftCount, middleRightCount);
+                if(ObjectUtil.isNull(compareCount) || CompareUtil.compare(compareCount, BigDecimal.ZERO)==0) continue;
+                List<Long> finalLeftLocationIdList = CompareUtil.compare(compareCount, middleLeftCount) == 0
                         ? middleLeftLocationIdList : middleRightLocationIdList;
                         ? middleLeftLocationIdList : middleRightLocationIdList;
+                BigDecimal singleRowInvCount = CompareUtil.compare(compareCount, middleLeftCount) == 0
+                        ? middleLeftCount : middleRightCount;
+                quantity = NumberUtil.sub(quantity, singleRowInvCount);
 
 
                 baseLocationLotattList = baseLocationLotattList.stream()
                 baseLocationLotattList = baseLocationLotattList.stream()
-                        .filter(item -> !CollectionUtil.contains(finalList, item.getId())).collect(Collectors.toList());
-                selectedLocationIdList.addAll(finalList);
+                        .filter(item -> !CollectionUtil.contains(finalLeftLocationIdList, item.getId())).collect(Collectors.toList());
+                System.err.println(JSONObject.toJSONString(finalLeftLocationIdList));
+                selectedLocationIdList.addAll(finalLeftLocationIdList);
                 if(CompareUtil.compare(quantity, BigDecimal.ZERO) <= 0) break;
                 if(CompareUtil.compare(quantity, BigDecimal.ZERO) <= 0) break;
             }
             }
 
 
             if(StringUtils.equals(partitionRowKey, Constants.LAST)) {
             if(StringUtils.equals(partitionRowKey, Constants.LAST)) {
-                List<Long> lastLeftSubList = ListUtil.reverse(ListUtil.sub(partitionLocationIdList, Constants.START_VALUE, locationIndex + 1));
+                List<Long> lastLeftSubList = ListUtil.sub(partitionLocationIdList, Constants.START_VALUE, locationIndex + 1);
                 List<Long> lastLeftLocationIdList = checkLocationIdList(locationInfo.getId(), sourceInvLotLocIdList, lastLeftSubList,
                 List<Long> lastLeftLocationIdList = checkLocationIdList(locationInfo.getId(), sourceInvLotLocIdList, lastLeftSubList,
                         baseLocationLotattList, quantity);
                         baseLocationLotattList, quantity);
                 if(CollectionUtil.isEmpty(lastLeftLocationIdList)) continue;
                 if(CollectionUtil.isEmpty(lastLeftLocationIdList)) continue;
@@ -309,6 +315,25 @@ public class WmsDocOrderSubService {
         return copyLocationLotattList.stream().filter(item -> CollectionUtil.contains(selectedLocationIdList, item.getId())).collect(Collectors.toList());
         return copyLocationLotattList.stream().filter(item -> CollectionUtil.contains(selectedLocationIdList, item.getId())).collect(Collectors.toList());
     }
     }
 
 
+    private BigDecimal compareCount(BigDecimal middleLeftCount, BigDecimal middleRightCount) {
+        if(CompareUtil.compare(middleLeftCount, middleRightCount) < 0
+                && CompareUtil.compare(middleLeftCount, BigDecimal.ZERO) > 0){
+            return middleLeftCount;
+        }
+        if(CompareUtil.compare(middleLeftCount, middleRightCount) >= 0
+                && CompareUtil.compare(middleRightCount, BigDecimal.ZERO) > 0){
+            return middleRightCount;
+        }
+        if(CompareUtil.compare(middleLeftCount, BigDecimal.ZERO) != 0
+                && CompareUtil.compare(middleRightCount, BigDecimal.ZERO) == 0){
+            return middleLeftCount;
+        }
+        if(CompareUtil.compare(middleRightCount, BigDecimal.ZERO) != 0
+                && CompareUtil.compare(middleLeftCount, BigDecimal.ZERO) == 0){
+            return middleRightCount;
+        }
+        return null;
+    }
 
 
 
 
     private List<Long> checkLocationIdList(Long locationId, List<InvLotLocId> sourceInvLotLocIdList, List<Long> subList,
     private List<Long> checkLocationIdList(Long locationId, List<InvLotLocId> sourceInvLotLocIdList, List<Long> subList,
@@ -334,8 +359,9 @@ public class WmsDocOrderSubService {
                 .filter(item -> CollectionUtil.contains(subList, Long.parseLong(item.getLocationId()))).collect(Collectors.toList());
                 .filter(item -> CollectionUtil.contains(subList, Long.parseLong(item.getLocationId()))).collect(Collectors.toList());
         BigDecimal singleRowInvCount = invLocIdList.stream().filter(item -> ObjectUtil.isNotNull(item.getQty()))
         BigDecimal singleRowInvCount = invLocIdList.stream().filter(item -> ObjectUtil.isNotNull(item.getQty()))
                 .map(item -> item.getQty()).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
                 .map(item -> item.getQty()).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+        List<Long> invIdList = invLocIdList.stream().map(item -> Long.parseLong(item.getLocationId())).collect(Collectors.toList());
         return CompareUtil.compare(singleRowInvCount, quantity) < 0
         return CompareUtil.compare(singleRowInvCount, quantity) < 0
-                ? invLocIdList.stream().map(item -> Long.parseLong(item.getLocationId())).collect(Collectors.toList())
+                ? subList.stream().filter(item -> CollectionUtil.contains(invIdList, item)).collect(Collectors.toList())
                 : Lists.newArrayList();
                 : Lists.newArrayList();
     }
     }
 
 

+ 4 - 1
warewms-base/src/main/java/com/ruoyi/base/constant/Constant.java

@@ -67,8 +67,11 @@ public class Constant {
 
 
 
 
     public enum TaskType{
     public enum TaskType{
+        //
         EMPTY_PALLET("emptyPallet"),
         EMPTY_PALLET("emptyPallet"),
-        MOVE_INV("moveInv");
+        MOVE_INV("moveInv"),
+        AGV("agv"),
+        GENERAL_INV("general");
 
 
         private String desc;
         private String desc;