From f99e3966686d3891b814ff28d200b001fcdc8e1e Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期四, 05 二月 2026 12:54:26 +0800
Subject: [PATCH] 组托优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java |   83 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 83 insertions(+), 0 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 c5c7240..ee5af53 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
@@ -582,6 +582,44 @@
             throw new CoolException("璇疯嚦灏戣緭鍏ヤ竴涓煡璇㈡潯浠讹細鐗╂枡缂栫爜銆丄SN鍗曞彿銆佽窡韪爜銆佹壒娆℃垨绁ㄥ彿");
         }
         
+        // 濡傛灉鎵弿鐗╂枡缂栫爜涓擜SN鍗曞彿涓虹┖锛岀洿鎺ヤ粠鐗╂枡淇℃伅琛ㄨ幏鍙栵紝涓嶆煡璇㈡敹璐у尯
+        if (!Cools.isEmpty(matnrCode) && Cools.isEmpty(asnCode) && Cools.isEmpty(code) 
+                && Cools.isEmpty(batch) && Objects.isNull(fieldIndex)) {
+            logger.info("=== 浠庣墿鏂欎俊鎭〃鏌ヨ鐗╂枡淇℃伅锛堜笉鏌ヨ鏀惰揣鍖猴級 ===");
+            logger.info("鏌ヨ鍙傛暟 - matnrCode: {}", matnrCode);
+            
+            Matnr matnr = matnrMapper.selectOne(new LambdaQueryWrapper<Matnr>()
+                    .eq(Matnr::getCode, matnrCode)
+                    .eq(Matnr::getDeleted, 0)
+                    .last("LIMIT 1"));
+            
+            if (matnr == null) {
+                logger.warn("鐗╂枡淇℃伅琛ㄤ腑鏈壘鍒扮墿鏂欑紪鐮�: {}", matnrCode);
+                return R.ok(new ArrayList<>());
+            }
+            
+            // 鏋勯�犱竴涓櫄鎷熺殑 WarehouseAreasItem 瀵硅薄杩斿洖鐗╂枡淇℃伅
+            WarehouseAreasItem item = new WarehouseAreasItem();
+            item.setMatnrId(matnr.getId());
+            item.setMatnrCode(matnr.getCode());
+            item.setMaktx(matnr.getName());
+            item.setStockUnit(matnr.getStockUnit());
+            item.setUnit(matnr.getUnit());
+            item.setAnfme(0.0); // 鏁伴噺璁句负0锛屽洜涓轰笉鏄粠鏀惰揣鍖烘煡璇㈢殑
+            item.setWorkQty(0.0);
+            item.setQty(0.0);
+            
+            // 璁剧疆鎵╁睍瀛楁
+            Map<String, String> fields = FieldsUtils.getFields(matnr.getFieldsIndex());
+            item.setExtendFields(fields);
+            
+            List<WarehouseAreasItem> resultList = new ArrayList<>();
+            resultList.add(item);
+            
+            logger.info("浠庣墿鏂欎俊鎭〃杩斿洖 1 鏉$墿鏂欐暟鎹�");
+            return R.ok(resultList);
+        }
+        
         //TODO 鍚庣画闇�鏍规嵁绛栫暐閰嶇疆锛岃幏鍙栫粍鎷栨暟鎹�傚锛氭贩瑁咃紝鎸夋壒娆℃贩瑁呯瓑
         LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<>();
         
@@ -685,6 +723,51 @@
             logger.warn("鏁版嵁搴撴煡璇㈢粨鏋滀负绌猴紝鍙兘鍘熷洜锛�1.鐗╂枡缂栫爜涓嶅尮閰� 2.鐗╂枡鏈敹璐ц嚦鏀惰揣鍖� 3.鏁版嵁宸茶鍒犻櫎");
         }
         
+        // 濡傛灉鎵弿鐗╂枡缂栫爜鍔犺浇鐗╂枡骞朵笖ASN鍗曞彿涓虹┖鏃讹紝浠庣墿鏂欎俊鎭〃鑾峰彇鐗╂枡淇℃伅骞舵洿鏂�
+        if (!Cools.isEmpty(matnrCode) && Cools.isEmpty(asnCode) && !list.isEmpty()) {
+            // 鏀堕泦鎵�鏈夊敮涓�鐨勭墿鏂欑紪鐮�
+            Set<String> matnrCodes = list.stream()
+                    .map(WarehouseAreasItem::getMatnrCode)
+                    .filter(matCode -> !Cools.isEmpty(matCode))
+                    .collect(Collectors.toSet());
+            
+            // 鎵归噺鏌ヨ鐗╂枡淇℃伅
+            if (!matnrCodes.isEmpty()) {
+                Map<String, Matnr> matnrMap = new HashMap<>();
+                for (String matCode : matnrCodes) {
+                    Matnr matnr = matnrMapper.selectOne(new LambdaQueryWrapper<Matnr>()
+                            .eq(Matnr::getCode, matCode)
+                            .eq(Matnr::getDeleted, 0)
+                            .last("LIMIT 1"));
+                    if (matnr != null) {
+                        matnrMap.put(matCode, matnr);
+                    }
+                }
+                
+                // 鏇存柊鍒楄〃涓殑鐗╂枡淇℃伅
+                list.forEach(item -> {
+                    String itemMatnrCode = item.getMatnrCode();
+                    if (!Cools.isEmpty(itemMatnrCode) && matnrMap.containsKey(itemMatnrCode)) {
+                        Matnr matnr = matnrMap.get(itemMatnrCode);
+                        // 浠庣墿鏂欎俊鎭〃鏇存柊鐗╂枡鍚嶇О
+                        if (!Cools.isEmpty(matnr.getName())) {
+                            item.setMaktx(matnr.getName());
+                        }
+                        // 浠庣墿鏂欎俊鎭〃鏇存柊搴撳瓨鍗曚綅
+                        if (!Cools.isEmpty(matnr.getStockUnit())) {
+                            item.setStockUnit(matnr.getStockUnit());
+                        }
+                        // 浠庣墿鏂欎俊鎭〃鏇存柊鍗曚綅
+                        if (!Cools.isEmpty(matnr.getUnit())) {
+                            item.setUnit(matnr.getUnit());
+                        }
+                        logger.debug("宸蹭粠鐗╂枡淇℃伅琛ㄦ洿鏂扮墿鏂欎俊鎭� - matnrCode: {}, name: {}, stockUnit: {}", 
+                                itemMatnrCode, matnr.getName(), matnr.getStockUnit());
+                    }
+                });
+            }
+        }
+        
         list.forEach(item -> {
             Map<String, String> fields = FieldsUtils.getFields(item.getFieldsIndex());
             item.setExtendFields(fields);

--
Gitblit v1.9.1