From f2833c7f3e01c997e94a66bd5dd9be738b5c6cc7 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 26 六月 2025 13:31:08 +0800
Subject: [PATCH] 波次任务下发功能优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java |   54 +++++++++++++++++++++++++++++++-----------------------
 1 files changed, 31 insertions(+), 23 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
index 3165298..62b4973 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -46,6 +46,8 @@
     private WcsService wcsService;
     @Autowired
     private OutStockService outStockService;
+    @Autowired
+    private WaveService waveService;
 
 
     /**
@@ -72,22 +74,29 @@
         List<LocItem> items = map.getItems();
         Map<Long, List<LocItem>> listMap = items.stream().collect(Collectors.groupingBy(LocItem::getLocId));
         AsnOrder order;
+        Wave wave;
         if (!Objects.isNull(map.getSourceId())) {
-            order = outStockService.getById(map.getSourceId());
+            if (map.getType().equals(Constants.TASK_TYPE_WAVE_OUT_STOCK)) {
+                order = new AsnOrder();
+                wave = waveService.getById(map.getSourceId());
+            } else {
+                wave = new Wave();
+                order = outStockService.getById(map.getSourceId());
+            }
         } else {
+            wave = new Wave();
             order = new AsnOrder();
         }
 
         listMap.keySet().forEach(key -> {
             Task task = new Task();
             Loc loc = locService.getById(key);
-            logger.info("搴撲綅锛�>{}<UNK>", loc.getCode());
-
+            logger.info("搴撲綅锛�>{}", loc.getCode());
             if (Objects.isNull(loc)) {
                 throw new CoolException("鏁版嵁閿欒锛氭墍閫夊簱瀛樹俊鎭笉瀛樺湪锛侊紒");
             }
             if (!loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) {
-                throw new CoolException("搴撲綅:" + loc.getCode() +  ",涓嶅浜嶧.鍦ㄥ簱鐘舵�侊紝涓嶅彲鎵цR.鍑哄簱棰勭害鎿嶄綔锛侊紒");
+                throw new CoolException("搴撲綅:" + loc.getCode() + ",涓嶅浜嶧.鍦ㄥ簱鐘舵�侊紝涓嶅彲鎵цR.鍑哄簱棰勭害鎿嶄綔锛侊紒");
             }
 
             loc.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
@@ -115,19 +124,14 @@
             }
 
             Double orgQty = locItems.stream().mapToDouble(LocItem::getAnfme).sum();
-            Double workQty = locItems.stream().mapToDouble(LocItem::getWorkQty).sum();
             List<LocItem> locItemList = listMap.get(key);
             Double outQty = locItemList.stream().mapToDouble(LocItem::getOutQty).sum();
 
-//            Task serviceOne = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, loc.getBarcode()));
-//            if (!Objects.isNull(serviceOne)) {
-//                throw new CoolException("鎵樼洏浠诲姟鎵ц涓紝涓嶈兘閲嶅鍒涘缓锛�");
-//            }
-
-            if (map.getType().equals(Constants.TASK_TYPE_OUT_STOCK) || map.getType().equals(Constants.TASK_TYPE_ORDER_OUT_STOCK)) {
-                Double useQty = Math.round((outQty + workQty) * 10000) / 10000.0;
-                if (orgQty.compareTo(useQty) > 0) {
-                    //鎷f枡鍑哄簱
+            if (map.getType().equals(Constants.TASK_TYPE_OUT_STOCK)
+                    || map.getType().equals(Constants.TASK_TYPE_ORDER_OUT_STOCK)
+                    || map.getType().equals(Constants.TASK_TYPE_WAVE_OUT_STOCK)) {
+                if (orgQty.compareTo(outQty) > 0) {
+                    //鎷f枡鍑哄簱 -- 鐩樼偣鍑哄簱
                     DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
                             .eq(DeviceSite::getSite, siteNo)
                             .eq(DeviceSite::getChannel, loc.getChannel())
@@ -207,17 +211,21 @@
                         .setCreateBy(loginUserId)
                         .setCreateTime(new Date())
                         .setUpdateTime(new Date())
-                        .setOrderType(OrderType.ORDER_OUT.type)
-                        .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type));
-               if (map.getType().equals(Constants.TASK_TYPE_ORDER_OUT_STOCK)) {
+                        .setOrderType(OrderType.ORDER_OUT.type);
+                if (map.getType().equals(Constants.TASK_TYPE_ORDER_OUT_STOCK)) {
                     taskItem.setWkType(Short.parseShort(order.getWkType()))
                             .setSourceCode(order.getCode())
                             .setSourceId(order.getId());
-               } else if (map.getType().equals(Constants.TASK_TYPE_OUT_CHECK) || map.getType().equals(Constants.TASK_TYPE_OUT_STOCK)) {
-                   taskItem.setSource(item.getId())
-                           .setSourceId(item.getLocId())
-                           .setSourceCode(item.getLocCode());
-               }
+                } else if (map.getType().equals(Constants.TASK_TYPE_WAVE_OUT_STOCK)) {
+                    taskItem.setSourceId(wave.getId())
+                            .setSourceCode(wave.getCode())
+                            .setSource(item.getSource());
+                } else if (map.getType().equals(Constants.TASK_TYPE_OUT_CHECK) || map.getType().equals(Constants.TASK_TYPE_OUT_STOCK)) {
+                    taskItem.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type))
+                            .setSource(item.getId())
+                            .setSourceId(item.getLocId())
+                            .setSourceCode(item.getLocCode());
+                }
                 taskItems.add(taskItem);
 
                 Double qty = Math.round((item.getWorkQty() + item.getOutQty()) * 10000) / 10000.0;
@@ -281,7 +289,7 @@
         if (Objects.isNull(map.getTarLoc()) || StringUtils.isBlank(map.getTarLoc())) {
             //鐩爣搴撲綅涓虹┖锛岃嚜鍔ㄨ幏鍙栨柊搴撲綅
             DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
-                            .eq(DeviceSite::getType, TaskType.TASK_TYPE_LOC_MOVE.type)
+                    .eq(DeviceSite::getType, TaskType.TASK_TYPE_LOC_MOVE.type)
                     .eq(DeviceSite::getChannel, orgLoc.getChannel()), false);
             if (Objects.isNull(deviceSite)) {
                 throw new CoolException("绔欑偣淇℃伅涓嶅瓨鍦紒锛�");

--
Gitblit v1.9.1