From 2813341fbe56da21d55685608ce2b48c520ca5a8 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期四, 26 二月 2026 13:19:34 +0800
Subject: [PATCH] lsh#

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java |   89 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 74 insertions(+), 15 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
index cd0ab43..67eefb8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -18,6 +18,9 @@
 import com.vincent.rsf.server.common.domain.BaseParam;
 import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.manager.controller.dto.LocStockDto;
+import com.vincent.rsf.server.manager.controller.dto.OrderOutItemDto;
+import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
+import com.vincent.rsf.server.manager.controller.params.OutStockToTaskParams;
 import com.vincent.rsf.server.manager.controller.params.PakinItem;
 import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
 import com.vincent.rsf.server.manager.entity.*;
@@ -112,6 +115,8 @@
     private WarehouseAreasItemServiceImpl warehouseAreasItemService;
     @Autowired
     private LocItemService locItemService;
+    @Autowired
+    private OutStockService outStockService;
 
 
     /**
@@ -523,22 +528,45 @@
                     throw new CoolException("璁″垝鏀惰揣鏁伴噺淇敼澶辫触锛侊紒");
                 }
 
-                // 绔嬪嵆瑙﹀彂寮傛浠诲姟锛屼笉绛夊緟缁撴灉
-                if (!Cools.isEmpty(palletId.get()) && StringUtils.isNotBlank(syncOrder.getOrderNo()) && !Cools.isEmpty(syncOrder.getStationId())) {
-                    //缁勬墭
-                    WaitPakinParam pakinParam = new WaitPakinParam();
-                    pakinParam.setBarcode(palletId.get());
-                    pakinParam.setStaNo(syncOrder.getStationId());
+                if (!rule.equals(SerialRuleCode.SYS_OUT_STOCK_CODE)){
+                    // 鍏ュ簱锛氳仈鍔ㄧ粍鎵�
+                    // 绔嬪嵆瑙﹀彂寮傛浠诲姟锛屼笉绛夊緟缁撴灉
+                    if (!Cools.isEmpty(palletId.get()) && StringUtils.isNotBlank(syncOrder.getOrderNo()) && !Cools.isEmpty(syncOrder.getStationId())) {
+                        //缁勬墭
+                        WaitPakinParam pakinParam = new WaitPakinParam();
+                        pakinParam.setBarcode(palletId.get());
+                        pakinParam.setStaNo(syncOrder.getStationId());
 
-                    boolean itemsCheck = waitPakinService.mergeItemsCheck(pakinParam, loginUserId);
-                    if (itemsCheck) {
-                        CompletableFuture.runAsync(() -> {
-                            try {
-                                asyncMergeItemsWcs(pakinParam, syncOrder.getOrderNo(), loginUserId);
-                            } catch (Exception e) {
-                                log.warn("璁㈠崟 {} 寮�濮嬭嚜鍔ㄧ粍鎵�", syncOrder.getOrderNo());
-                            }
-                        });
+                        boolean itemsCheck = waitPakinService.mergeItemsCheck(pakinParam, loginUserId);
+                        if (itemsCheck) {
+                            CompletableFuture.runAsync(() -> {
+                                try {
+                                    asyncMergeItemsWcs(pakinParam, syncOrder.getOrderNo(), loginUserId);
+                                } catch (Exception e) {
+                                    log.warn("璁㈠崟 {} 寮�濮嬭嚜鍔ㄧ粍鎵�", syncOrder.getOrderNo());
+                                }
+                            });
+                        }
+                    }
+                } else {
+                    // 鍑哄簱锛氭寚瀹氬嚭搴�
+                    // 绔嬪嵆瑙﹀彂寮傛浠诲姟锛屼笉绛夊緟缁撴灉
+                    if (!Cools.isEmpty(palletId.get()) && StringUtils.isNotBlank(syncOrder.getOrderNo()) && !Cools.isEmpty(syncOrder.getStationId())) {
+                        Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, palletId.get()));
+                        if (!Cools.isEmpty(loc)) {
+//                            outStockService.getOrderOutTaskItem(orderOutTaskParam,param.getOrderItemId());
+                            //鍑哄簱
+//                        boolean itemsCheck = waitPakinService.mergeItemsCheck(pakinParam, loginUserId);
+//                            if (true) {
+                            CompletableFuture.runAsync(() -> {
+                                try {
+                                    asyncOutboundExecutionWcs(syncOrder.getStationId(), wkOrder.getId(), loginUserId);
+                                } catch (Exception e) {
+                                    log.warn("璁㈠崟 {} 寮�濮嬭嚜鍔ㄥ嚭搴�", syncOrder.getOrderNo());
+                                }
+                            });
+//                            }
+                        }
                     }
                 }
             });
@@ -580,6 +608,37 @@
         }
     }
 
+    @Async
+    public void asyncOutboundExecutionWcs(String stationId ,Long orderId, Long loginUserId) {
+        try {
+
+            OrderOutTaskParam orderOutTaskParam = new OrderOutTaskParam();
+            orderOutTaskParam.setOrderId(orderId);
+            orderOutTaskParam.setWaveId(16L);
+            List<OrderOutItemDto> orderOutTaskItemAuto = outStockService.getOrderOutTaskItemAuto(orderOutTaskParam);
+
+            List<OutStockToTaskParams> tasks = new ArrayList<>();
+            for (OrderOutItemDto orderOutItemDto : orderOutTaskItemAuto){
+                OutStockToTaskParams outStockToTaskParams = new OutStockToTaskParams(orderOutItemDto);
+                outStockToTaskParams.setId(orderOutItemDto.getLocItem().getId());
+//                                outStockToTaskParams.setOutQty(locItemServiceOne.getAnfme());
+                outStockToTaskParams.setLocCode(orderOutItemDto.getLocItem().getLocCode());
+                outStockToTaskParams.setBarcode(orderOutItemDto.getLocItem().getBarcode());
+                outStockToTaskParams.setSiteNo(stationId);
+                tasks.add(outStockToTaskParams);
+            }
+            if (tasks.isEmpty()){
+                log.warn("璁㈠崟ID {} 娌℃湁鎵惧埌鍙嚭搴撴槑缁嗭紝璺宠繃鑷姩鍑哄簱", orderId);
+                return;
+            }
+            outStockService.genOutStockTask(tasks, loginUserId, orderId);
+
+            log.info("璁㈠崟ID {} 鑷姩鍑哄簱锛屽叡澶勭悊 {} 涓槑缁�", orderId, tasks.size());
+        } catch (Exception e) {
+            log.error("璁㈠崟ID {} 鑷姩鍑哄簱: {}", orderId, e.getMessage(), e);
+        }
+    }
+
     /**
      * @author Ryan
      * @date 2025/8/19

--
Gitblit v1.9.1