From d8cbfdcac8292522dd3c39e5cafdf19a43d15a5d Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期四, 30 四月 2026 11:21:08 +0800
Subject: [PATCH] 强制组托单号必填

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java |   39 +++++++++++++++++++++++++++++++++++----
 1 files changed, 35 insertions(+), 4 deletions(-)

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 52f6778..c469ace 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
@@ -49,6 +49,8 @@
     private MatnrMapper matnrMapper;
     @Autowired
     private ConfigService configService;
+    @Autowired
+    private CusBarcodeSyncMatnrService cusBarcodeSyncMatnrService;
 
 
     /**
@@ -67,6 +69,13 @@
         }
         if (StringUtils.isBlank(waitPakin.getBarcode())) {
             throw new CoolException("鍙傛暟閿欒锛氭枡绠辩爜涓虹┖锛侊紒");
+        }
+        if (isPdaPakinAsnRequired()) {
+            for (PakinItem it : waitPakin.getItems()) {
+                if (StringUtils.isBlank(it.getAsnCode())) {
+                    throw new CoolException("璇峰厛鎵弿WMS鍗曞彿");
+                }
+            }
         }
         WaitPakin pakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                 .eq(WaitPakin::getBarcode, waitPakin.getBarcode()));
@@ -123,6 +132,11 @@
                         throw new CoolException("鏃犺鍗曠粍鎵樻椂鐗╂枡ID涓嶈兘涓虹┖锛侊紒");
                     }
                     Matnr matnr = matnrMapper.selectById(pakinItem1.getMatnrId());
+                    if (matnr == null) {
+                        throw new CoolException("鐗╂枡淇℃伅涓嶅瓨鍦紝鐗╂枡ID锛�" + pakinItem1.getMatnrId());
+                    }
+                    cusBarcodeSyncMatnrService.syncFromMatnrCodes(Collections.singletonList(matnr.getCode()), userId);
+                    matnr = matnrMapper.selectById(pakinItem1.getMatnrId());
                     if (matnr == null) {
                         throw new CoolException("鐗╂枡淇℃伅涓嶅瓨鍦紝鐗╂枡ID锛�" + pakinItem1.getMatnrId());
                     }
@@ -236,7 +250,11 @@
 
         for (PakinItem pakinItem1 : waitPakin.getItems()) {
             WaitPakinItem pakinItem = new WaitPakinItem();
-            if (StringUtils.isBlank(pakinItem1.getAsnCode())) {
+            // 鍘熼�昏緫锛歩f (StringUtils.isBlank(pakinItem1.getAsnCode())) { ... } else { 鎸夊崟鎹檺鍒� ... }
+            // 鍙湁鍗曟嵁鍙峰瓨鍦ㄤ笖鑳芥煡鍒板崟鎹椂鎵嶆寜鍗曟嵁闄愬埗
+            WkOrder bindOrder = StringUtils.isBlank(pakinItem1.getAsnCode()) ? null :
+                    asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getCode, pakinItem1.getAsnCode()));
+            if (bindOrder == null) {
                 if (Objects.isNull(pakinItem1.getMatnrId())) {
                     throw new CoolException("鐗╂枡ID涓嶈兘涓虹┖锛侊紒");
                 }
@@ -279,9 +297,9 @@
                 if (null == orderItem) {
                     throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
                 }
-                WkOrder order = asnOrderService.getById(orderItem.getOrderId());
-                if (null == order) {
-                    throw new CoolException("璁㈠崟涓嶅瓨鍦紒锛�");
+                WkOrder order = bindOrder;
+                if (orderItem.getOrderId() == null || !orderItem.getOrderId().equals(order.getId())) {
+                    throw new CoolException("鐗╂枡涓嶅湪褰撳墠鍗曟嵁涓紝涓嶈兘鎸夊崟鎹粍鎵橈紒锛�");
                 }
                 pakinItem.setAnfme(QuantityUtils.roundToScale(orderItem.getAnfme()))
                         .setPakinId(waitPakin1.getId())
@@ -497,4 +515,17 @@
 
         return R.ok("Delete Success").add(pakinIds);
     }
+
+    private boolean isPdaPakinAsnRequired() {
+        Config c = configService.getOne(new LambdaQueryWrapper<Config>()
+                .eq(Config::getFlag, GlobalConfigCode.PDA_PAKIN_ASN_REQUIRED)
+                .eq(Config::getDeleted, 0)
+                .last("LIMIT 1"));
+        boolean required = true;
+        if (c != null && StringUtils.isNotBlank(c.getVal())) {
+            String v = c.getVal().trim();
+            required = Boolean.parseBoolean(v) || "1".equals(v);
+        }
+        return required;
+    }
 }

--
Gitblit v1.9.1