From a68f64232c3f3ad22d27f9b5c89fe761c8a56280 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期二, 28 四月 2026 13:16:13 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/service/CommonService.java |   76 ++++++++++++++++++++++++--------------
 1 files changed, 48 insertions(+), 28 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 0eb9d75..642f3c5 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -162,7 +162,7 @@
     @Transactional
     public StartupDto getLocNoV2(Integer staDescId, Integer sourceStaNo, WrkMast wrkMast, LocTypeDto locTypeDto) {
         try {
-            Integer whsType = Utils.GetWhsType(sourceStaNo);
+            Integer whsType = 1;
             RowLastno rowLastno = rowLastnoService.selectById(whsType);
             RowLastnoType rowLastnoType = rowLastnoTypeService.selectById(rowLastno.getTypeId());
             /**
@@ -409,7 +409,7 @@
     }
 
     /**
-     * 褰撳洖婧愬簱浣嶄笉鍦ㄦ湰宸烽亾鏃讹紝鍑哄簱鑷�1070閲嶆柊妫�绱㈠贩閬撴牴鎹�1锛�2宸烽亾涔嬮棿鍒嗛厤锛�3锛�4宸烽亾鍏ㄥ眬鍒嗛厤瑙勫垯
+     * 褰撳洖婧愬簱浣嶄笉鍦ㄦ湰宸烽亾鏃讹紝閲嶆柊妫�绱㈠贩閬撴牴鎹�1锛�2宸烽亾涔嬮棿鍒嗛厤锛�3锛�4宸烽亾鍏ㄥ眬鍒嗛厤瑙勫垯
      */
     @Transactional
     public StartupDto getLocNoRunV2(Integer whsType, Integer staDescId, Integer sourceStaNo, WrkMast wrkMast, Integer moveCrnNo, LocTypeDto locTypeDto, int times) {
@@ -420,18 +420,22 @@
             detl = wrkDetl.get(0);
         }
         String matnr = detl == null ? null : detl.getMatnr();
-        int[] candidates = wrkMast.getCrnNo() != null && wrkMast.getCrnNo() < 3 ? new int[]{1, 2} : new int[]{1, 2, 3, 4};
+        Integer sourceCrnNo = null;
+        if (moveCrnNo != null && moveCrnNo != 0) {
+            sourceCrnNo = moveCrnNo;
+        } else if (wrkMast != null && !Cools.isEmpty(wrkMast.getSourceLocNo())) {
+            LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
+            if (!Cools.isEmpty(sourceLoc) && sourceLoc.getCrnNo() != null) {
+                sourceCrnNo = sourceLoc.getCrnNo();
+            }
+        } else if (wrkMast != null && wrkMast.getCrnNo() != null) {
+            sourceCrnNo = wrkMast.getCrnNo();
+        }
+        int[] candidates = sourceCrnNo != null && sourceCrnNo < 3 ? new int[]{1, 2} : new int[]{1, 2, 3, 4};
         Integer chosenCrnNo = null;
         Integer chosenCount = null;
         for (int candidate : candidates) {
-            if (!basCrnpService.checkSiteError(candidate, true)) {
-                continue;
-            }
-            StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                    .eq("type_no", staDescId)
-                    .eq("stn_no", sourceStaNo)
-                    .eq("crn_no", candidate));
-            if (Cools.isEmpty(staDesc)) {
+            if (sourceCrnNo != null && candidate == sourceCrnNo) {
                 continue;
             }
             //鍒ゆ柇璇ュ贩閬撴槸鍚﹀瓨鍦ㄧ┖浣�
@@ -457,23 +461,41 @@
                 chosenCount = count;
             }
         }
-        if (chosenCrnNo == null) {
-            throw new CoolException("娌℃湁绌哄簱浣�");
+        LocMast locMast = null;
+        if (chosenCrnNo != null) {
+            locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+                    .eq("crn_no", chosenCrnNo)
+                    .eq("loc_sts", "O")
+                    .eq("frozen", 0)
+                    .eq("deleted", 0)
+                    .eq("whs_type", 1)
+                    .orderBy("lev1,bay1"));
         }
-        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                .eq("type_no", staDescId)
-                .eq("stn_no", sourceStaNo)
-                .eq("crn_no", chosenCrnNo));
-        if (Cools.isEmpty(staDesc)) {
-            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+        if (Cools.isEmpty(locMast)) {
+            List<LocMast> anyLocs = locMastService.selectList(new EntityWrapper<LocMast>()
+                    .eq("loc_sts", "O")
+                    .eq("frozen", 0)
+                    .eq("deleted", 0)
+                    .eq("whs_type", 1)
+                    .orderBy("lev1,bay1"));
+            if (!Cools.isEmpty(anyLocs)) {
+                for (LocMast anyLoc : anyLocs) {
+                    if (anyLoc == null || anyLoc.getCrnNo() == null) {
+                        continue;
+                    }
+                    if (sourceCrnNo != null && sourceCrnNo.equals(anyLoc.getCrnNo())) {
+                        continue;
+                    }
+                    if (!basCrnpService.checkSiteError(anyLoc.getCrnNo(), true)) {
+                        continue;
+                    }
+                    chosenCrnNo = anyLoc.getCrnNo();
+                    locMast = anyLoc;
+                    break;
+                }
+            }
         }
-        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-                .eq("crn_no", chosenCrnNo)
-                .eq("loc_sts", "O")
-                .eq("frozen", 0)
-                .eq("deleted", 0)
-                .eq("whs_type", 1)
-                .orderBy("lev1,bay1"));
+
         if (Cools.isEmpty(locMast)) {
             throw new CoolException("娌℃湁绌哄簱浣�");
         }
@@ -481,9 +503,7 @@
         int workNo = getWorkNo(0);
         startupDto.setWorkNo(workNo);
         startupDto.setCrnNo(chosenCrnNo);
-        startupDto.setSourceStaNo(sourceStaNo);
         startupDto.setLocNo(locNo);
-        startupDto.setStaNo(staDesc.getCrnStn());
         return startupDto;
     }
 

--
Gitblit v1.9.1