From f574055ed80a64cbccd601b200afc437a87b52eb Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期六, 07 二月 2026 16:03:39 +0800
Subject: [PATCH] RCS入库流程优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java |  107 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 62 insertions(+), 45 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index ee5af53..e0ac9b8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -623,57 +623,74 @@
         //TODO 鍚庣画闇�鏍规嵁绛栫暐閰嶇疆锛岃幏鍙栫粍鎷栨暟鎹�傚锛氭贩瑁咃紝鎸夋壒娆℃贩瑁呯瓑
         LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<>();
         
-        // 鏋勫缓OR鏌ヨ鏉′欢缁�
-        // 缁熻鏈夋晥鏉′欢鏁伴噺
-        int conditionCount = 0;
-        if (!Cools.isEmpty(code)) conditionCount++;
-        if (!Cools.isEmpty(batch)) conditionCount++;
-        if (!Objects.isNull(fieldIndex)) conditionCount++;
-        if (!Cools.isEmpty(matnrCode)) conditionCount++;
-        if (!Cools.isEmpty(asnCode)) conditionCount++;
-        
-        // 濡傛灉鍙湁涓�涓潯浠讹紝鐩存帴浣跨敤eq锛涘鏋滄湁澶氫釜鏉′欢锛屼娇鐢╝nd鍖呰9or鏉′欢缁�
-        if (conditionCount == 1) {
-            // 鍗曚釜鏉′欢锛岀洿鎺ユ煡璇�
+        // 濡傛灉鏈堿SN鍗曞彿锛屽垯鍙煡璇㈣鍗曞彿涓嬬殑鐗╂枡锛圓SN鍗曞彿浣滀负蹇呴』鏉′欢锛�
+        if (!Cools.isEmpty(asnCode)) {
+            // ASN鍗曞彿浣滀负蹇呴』鏉′欢
+            queryWrapper.eq(WarehouseAreasItem::getAsnCode, asnCode);
+            
+            // 濡傛灉鍚屾椂鏈夌墿鏂欑紪鐮侊紝鍒欐煡璇㈣ASN鍗曞彿涓嬬殑璇ョ墿鏂�
+            if (!Cools.isEmpty(matnrCode)) {
+                queryWrapper.eq(WarehouseAreasItem::getMatnrCode, matnrCode);
+            }
+            
+            // 濡傛灉鍚屾椂鏈夋壒娆★紝鍒欐煡璇㈣ASN鍗曞彿涓嬬殑璇ユ壒娆�
+            if (!Cools.isEmpty(batch)) {
+                queryWrapper.eq(WarehouseAreasItem::getSplrBatch, batch);
+            }
+            
+            // 濡傛灉鍚屾椂鏈夌エ鍙凤紝鍒欐煡璇㈣ASN鍗曞彿涓嬬殑璇ョエ鍙�
+            if (!Objects.isNull(fieldIndex)) {
+                queryWrapper.eq(WarehouseAreasItem::getFieldsIndex, fieldIndex);
+            }
+            
+            // 濡傛灉鍚屾椂鏈夎窡韪爜锛屽垯鏌ヨ璇SN鍗曞彿涓嬬殑璇ヨ窡韪爜
             if (!Cools.isEmpty(code)) {
                 queryWrapper.eq(WarehouseAreasItem::getTrackCode, code);
-            } else if (!Cools.isEmpty(batch)) {
-                queryWrapper.eq(WarehouseAreasItem::getSplrBatch, batch);
-            } else if (!Objects.isNull(fieldIndex)) {
-                queryWrapper.eq(WarehouseAreasItem::getFieldsIndex, fieldIndex);
-            } else if (!Cools.isEmpty(matnrCode)) {
-                queryWrapper.eq(WarehouseAreasItem::getMatnrCode, matnrCode);
-            } else if (!Cools.isEmpty(asnCode)) {
-                queryWrapper.eq(WarehouseAreasItem::getAsnCode, asnCode);
             }
         } else {
-            // 澶氫釜鏉′欢锛屼娇鐢∣R杩炴帴
-            queryWrapper.and(wrapper -> {
-                boolean first = true;
+            // 娌℃湁ASN鍗曞彿鏃讹紝鍙互鎵弿浠绘剰鐗╂枡缁勬墭锛屼娇鐢∣R杩炴帴澶氫釜鏉′欢
+            // 缁熻鏈夋晥鏉′欢鏁伴噺
+            int conditionCount = 0;
+            if (!Cools.isEmpty(code)) conditionCount++;
+            if (!Cools.isEmpty(batch)) conditionCount++;
+            if (!Objects.isNull(fieldIndex)) conditionCount++;
+            if (!Cools.isEmpty(matnrCode)) conditionCount++;
+            
+            // 濡傛灉鍙湁涓�涓潯浠讹紝鐩存帴浣跨敤eq
+            if (conditionCount == 1) {
                 if (!Cools.isEmpty(code)) {
-                    wrapper.eq(WarehouseAreasItem::getTrackCode, code);
-                    first = false;
+                    queryWrapper.eq(WarehouseAreasItem::getTrackCode, code);
+                } else if (!Cools.isEmpty(batch)) {
+                    queryWrapper.eq(WarehouseAreasItem::getSplrBatch, batch);
+                } else if (!Objects.isNull(fieldIndex)) {
+                    queryWrapper.eq(WarehouseAreasItem::getFieldsIndex, fieldIndex);
+                } else if (!Cools.isEmpty(matnrCode)) {
+                    queryWrapper.eq(WarehouseAreasItem::getMatnrCode, matnrCode);
                 }
-                if (!Cools.isEmpty(batch)) {
-                    if (!first) wrapper.or();
-                    wrapper.eq(WarehouseAreasItem::getSplrBatch, batch);
-                    first = false;
-                }
-                if (!Objects.isNull(fieldIndex)) {
-                    if (!first) wrapper.or();
-                    wrapper.eq(WarehouseAreasItem::getFieldsIndex, fieldIndex);
-                    first = false;
-                }
-                if (!Cools.isEmpty(matnrCode)) {
-                    if (!first) wrapper.or();
-                    wrapper.eq(WarehouseAreasItem::getMatnrCode, matnrCode);
-                    first = false;
-                }
-                if (!Cools.isEmpty(asnCode)) {
-                    if (!first) wrapper.or();
-                    wrapper.eq(WarehouseAreasItem::getAsnCode, asnCode);
-                }
-            });
+            } else if (conditionCount > 1) {
+                // 澶氫釜鏉′欢锛屼娇鐢∣R杩炴帴
+                queryWrapper.and(wrapper -> {
+                    boolean first = true;
+                    if (!Cools.isEmpty(code)) {
+                        wrapper.eq(WarehouseAreasItem::getTrackCode, code);
+                        first = false;
+                    }
+                    if (!Cools.isEmpty(batch)) {
+                        if (!first) wrapper.or();
+                        wrapper.eq(WarehouseAreasItem::getSplrBatch, batch);
+                        first = false;
+                    }
+                    if (!Objects.isNull(fieldIndex)) {
+                        if (!first) wrapper.or();
+                        wrapper.eq(WarehouseAreasItem::getFieldsIndex, fieldIndex);
+                        first = false;
+                    }
+                    if (!Cools.isEmpty(matnrCode)) {
+                        if (!first) wrapper.or();
+                        wrapper.eq(WarehouseAreasItem::getMatnrCode, matnrCode);
+                    }
+                });
+            }
         }
         
         // 鎵撳嵃鏌ヨ鍙傛暟鍒版帶鍒跺彴

--
Gitblit v1.9.1