From 5fc35be9138e965b2cf3e1211257bdf12009a358 Mon Sep 17 00:00:00 2001
From: Administrator <335182714>
Date: 星期三, 17 九月 2025 08:23:01 +0800
Subject: [PATCH] 订单出库显示明细是否完成修复

---
 src/main/java/com/zy/common/service/CommonService.java |  109 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 74 insertions(+), 35 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 67550c8..fe43f14 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -12,12 +12,18 @@
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.StartupDto;
 import com.zy.common.properties.SlaveProperties;
+import com.zy.system.entity.Config;
+import com.zy.system.mapper.ConfigMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 璐ф灦鏍稿績鍔熻兘
@@ -45,6 +51,9 @@
     private LocDetlService locDetlService;
     @Autowired
     private SlaveProperties slaveProperties;
+
+    @Resource
+    private ConfigMapper configMapper;
 
     /**
      * 鐢熸垚宸ヤ綔鍙�
@@ -119,20 +128,11 @@
      * 鍙屾繁鎵惧簱浣�
      */
     @Transactional
-    public StartupDto getLocNo(Integer staDescId, Integer sourceStaNo,LocTypeDto locTypeDto) {
-
-        // 鐩爣搴撲綅
+    public StartupDto getLocNo(Integer staDescId, Integer sourceStaNo,LocTypeDto locTypeDto,int times) {
         LocMast locMast;
 
-//        // 鎼滅储绌烘墭
-//        locMast = getLocNoStep4(staDescId, sourceStaNo);
-//        if (locMast != null) {
-//            //鎵惧埌搴撲綅锛岃繑鍥瀌to
-//            return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
-//        }
-
-        //鎼滅储鏁翠釜绌哄簱浣嶇粍
         locMast = getLocNoStepSingle(locTypeDto);
+
         if (locMast != null) {
             //鎵惧埌搴撲綅锛岃繑鍥瀌to
             return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
@@ -141,38 +141,77 @@
        //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
         throw new CoolException("娌℃湁绌哄簱浣�");
     }
+
     // 鎼滅储鍗曞搧(鏁翠釜搴撲綅缁�)
     private LocMast getLocNoStepSingle(LocTypeDto locTypeDto) {
+
         LocMast locMast = null;
-        //鍗曞搧
-        List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1());//鎼滅储璐х墿
 
+        // 鑾峰彇妯″紡涓虹數鑴戞ā寮忥紝鏃犱换鍔$殑鍫嗗灈鏈哄垪琛�:闃叉鍒嗛厤鍒板爢鍨涙満涓嶅彲鐢�
+        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3)
+                .eq("wrk_no",0).eq("in_enable","Y"));
+        if (basCrnps.isEmpty()) {
+            // 閮芥湁浠诲姟鍒欒幏鍙栫數鑴戞ā寮忕殑鍫嗗灈鏈哄垪琛�
+            basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3).eq("in_enable","Y"));
+        }
+        if (basCrnps.isEmpty()) {
+            throw new CoolException("娌℃湁鍙敤鍫嗗灈鏈�,鍫嗗灈鏈哄仠姝㈡垨寮傚父鎴栫鐢�");
+        }
+        // 鍙敤鍫嗗灈鏈哄垪琛�
+        List<Integer> crnNoList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList());
+
+       // 鑾峰彇澶囪揣鍖洪厤缃�
+        Config config = configMapper.selectConfigByCode("auto_stock_up");
+        if (config == null) {
+            throw new CoolException("鐞嗚揣鑾峰彇澶囪揣鍖洪厤缃敊璇紒锛侊紒");
+        }
+
+        // 鍓嶅嚑鍒楁槸澶囪揣鍖�
+        int columnNum = Integer.parseInt(config.getValue());
+
+        // 鎼滅储娣卞簱浣�
+        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                .eq("loc_sts","O").in("crn_no",crnNoList).in("row1","1,4,5,8,9,12,13,16,17,20,21,24").orderBy("lev1,bay1,row1")
+                .gt("bay1",columnNum));
+
+        // 娣卞簱浣嶆病鏈夊垯鎼滅储娴呭簱浣�
+        if (locMasts.isEmpty()) {
+            locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                    .eq("loc_sts","O").in("crn_no",crnNoList).in("row1","2,3,6,7,10,11,14,15,18,19,22,23").orderBy("lev1,bay1,row1")
+                    .gt("bay1",columnNum));
+        }
+        if (locMasts.isEmpty()) {
+            throw new CoolException("娌℃湁鍙敤搴撲綅");
+        }
+        // 娴呭簱浣�
+        String[] split = "02,03,06,07,10,11,14,15,18,19,22,23".split(",");
+        // 璁板綍鍫嗗灈鏈烘槸鍚︽煡璇㈣繃锛岄伩鍏嶉噸澶嶆煡璇�
+        Map<Integer,Boolean> crnMap = new HashMap<>();
         for (LocMast mast : locMasts) {
-            List<String> groupLoc = Utils.getGroupLocNo(mast.getLocNo(), true);
-//            if (!locMastService.checkAllLocEmpty(groupLoc)) {
-//                continue;
-//            }
-
-            LocMast tmp = null;
-            for (String loc : groupLoc) {
-                LocMast locMast1 = locMastService.selectByLoc(loc);
-                if (locMast1 == null) {
-                    continue;
+            if (crnMap.get(mast.getCrnNo()) == null) {
+                //棰勭暀绌哄簱浣�
+                if (locMastService.checkEmptyCount(mast, 10)) {
+                    Integer row1 = mast.getRow1();
+                    if(slaveProperties.getDoubleLocs().contains(row1)){
+                        // 鍙栨祬搴撲綅
+                        String s = split[slaveProperties.getDoubleLocs().indexOf(row1)];
+                        LocMast locMast1 = locMastService.selectById(s + mast.getLocNo().substring(2));
+                        if(locMast1 != null && !locMast1.getLocSts().equals("O")) {
+                            log.warn("鍏ュ簱鍒嗛厤搴撲綅锛歿}锛屽搴旀祬搴撲綅{}涓嶄负绌猴細{}",mast.getLocNo(),locMast1.getLocNo(),locMast1.getLocSts());
+                            continue;
+                        }
+                    }
+                    locMast = mast;
+                    break;
+                } else {
+                    crnMap.put(mast.getCrnNo(),true);
                 }
-
-                if (!locMast1.getLocSts().equals("O")) {
-                    continue;
-                }
-
-                tmp = locMast1;
-                break;
             }
+        }
 
-            //棰勭暀绌哄簱浣�
-            if (tmp != null && locMastService.checkEmptyCount(mast, 10)) {
-                locMast = tmp;
-                break;
-            }
+        if (locMast == null) {
+            log.error("鍏ュ簱璇锋眰搴撲綅涓嶈冻锛屽墿浣欏簱浣嶄笉瓒�/涓嶆弧瓒冲叆搴撴潯浠�");
+            throw new CoolException("鍏ュ簱璇锋眰搴撲綅涓嶈冻锛屽墿浣欐暟閲忎笉瓒�/涓嶆弧瓒冲叆搴撴潯浠�");
         }
 
         return locMast;

--
Gitblit v1.9.1