From 33df2026a4a69be7badbc0342fff7e1f544c58a8 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期五, 23 一月 2026 19:09:42 +0800
Subject: [PATCH] lsh#自动组托完善

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java          |    1 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java           |   24 +++++-------
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java |   32 ++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java    |   19 ++++++---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java                    |    1 
 5 files changed, 56 insertions(+), 21 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java
index 9da4be0..253326f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java
@@ -18,4 +18,5 @@
 
     R AGVBindAndInTaskStart(WaitPakinParam waitPakinPda, Long loginUserId);
     R AGVBindAndInTaskStart(String barcode);
+    boolean AGVBindAndInTaskStart(String barcode, String sta);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
index 195c55a..4f38bed 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
@@ -63,6 +63,14 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean AGVBindAndInTaskStart(String barcode, String sta) {
+        //楠岃瘉鏉$爜
+        checkStaStatus(barcode,sta);
+        return true;
+    }
+
+    @Override
     public R getStaMsgSelect(Map<String, Object> params) {
         String sta = params.get("sta").toString();
         if (Cools.isEmpty(sta)) {
@@ -248,15 +256,9 @@
             throw new CoolException("瀹瑰櫒鐮佷笉鑳戒负绌�");
         }
         if (Cools.isEmpty(sta)) {
-            throw new CoolException("鎺ラ┏浣嶆潯鐮佷笉鑳戒负绌�");
+            throw new CoolException("绔欑偣淇℃伅涓嶈兘涓虹┖");
         }
-        WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
-                .eq(WaitPakin::getBarcode, barcode)
-                .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
-        );
-        if (Cools.isEmpty(waitPakin)) {
-            throw new CoolException("瀹瑰櫒鐮佹湭鎵惧埌缁勬墭淇℃伅,璇锋鏌ョ粍鎵樼姸鎬�");
-        }
+
         BasStation isBarcodeSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                         .eq(BasStation::getBarcode, barcode)
                 , false
@@ -269,9 +271,6 @@
         );
         if (Cools.isEmpty(basStation)) {
             throw new CoolException("鏈壘鍒扮珯鐐逛俊鎭�");
-        }
-        if (!basStation.getUseStatus().equals("O")) {
-            throw new CoolException("绔欑偣鐘舵�佷笉涓虹┖闂�");
         }
         if (!Cools.isEmpty(basStation.getContainerType())) {
             List<Long> longs1 = JSONObject.parseArray(basStation.getContainerType(), Long.class);
@@ -287,9 +286,6 @@
                     break;  // 鎵惧埌鍖归厤鐨勫氨閫�鍑哄惊鐜�
                 }
             }
-//            boolean matches = containers.stream()
-//                    .map(BasContainer::getCodeType)
-//                    .anyMatch(codeType -> barcode.matches(codeType));
             if (!matches) {
                 throw new CoolException("鏉$爜涓庣珯鐐逛笉鍖归厤");
             }
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 cdbe0d6..4509896 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
@@ -506,13 +506,18 @@
                     //缁勬墭
                     WaitPakinParam pakinParam = new WaitPakinParam();
                     pakinParam.setBarcode(palletId.get());
-                    CompletableFuture.runAsync(() -> {
-                        try {
-                            asyncMergeItemsWcs(pakinParam, syncOrder.getOrderNo(), loginUserId);
-                        } catch (Exception e) {
-                            log.warn("璁㈠崟 {} 寮�濮嬭嚜鍔ㄧ粍鎵�", syncOrder.getOrderNo());
-                        }
-                    });
+                    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());
+                            }
+                        });
+                    }
                 }
             });
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java
index 87bd8d3..5101ef4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java
@@ -11,6 +11,7 @@
 
     WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId);
     WaitPakin mergeItemsWcs(WaitPakinParam waitPakin, Long userId);
+    boolean mergeItemsCheck(WaitPakinParam waitPakin, Long userId);
 
     WaitPakin unBind(WaitPakinParam param);
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
index 49a184b..26810ba 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -177,6 +177,38 @@
         return pakin;
     }
 
+    /**
+     * @author Munch D. Luffy
+     * @date 2026/01/23
+     * @description: PDA缁勬嫋鍓嶇疆妫�鏌�
+     * @version 1.0
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public synchronized boolean mergeItemsCheck(WaitPakinParam waitPakin, Long userId) {
+        if (StringUtils.isBlank(waitPakin.getBarcode())) {
+            throw new CoolException("鍙傛暟閿欒锛氭墭鐩樼爜涓虹┖锛侊紒");
+        }
+        WaitPakin pakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
+                .eq(WaitPakin::getBarcode, waitPakin.getBarcode()));
+        if (!Objects.isNull(pakin)) {
+            throw new CoolException("鎵樼洏鐮侊細" + waitPakin.getBarcode() + "宸茶缁勬墭鍗曪細" + pakin.getCode() + "浣跨敤锛侊紒");
+        }
+        List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, waitPakin.getBarcode()));
+        if (!locs.isEmpty()) {
+            List<String> locCodes = locs.stream().map(Loc::getCode).collect(Collectors.toList());
+            String join = StringUtils.join(locCodes, ",");
+            throw new CoolException("鎵樼洏鐮侊細" + waitPakin.getBarcode() + "宸茶搴撲綅锛�" + join + "浣跨敤锛侊紒");
+        }
+
+        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_WAIT_PAKIN_CODE, null);
+        if (StringUtils.isBlank(ruleCode)) {
+            throw new CoolException("缂栫爜瑙勫垯閿欒锛� 缂栫爜瑙勫垯銆孲YS_WAIT_PAKIN_CODE銆嶈鍒欐槸涓嶅瓨鍦�");
+        }
+
+        return agvService.AGVBindAndInTaskStart(waitPakin.getBarcode(),waitPakin.getStaNo());
+
+    }
 
 
     /**

--
Gitblit v1.9.1