From 0f769b47d8d71bd419ddf1733b0b2f21c82e86b1 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 07 十月 2024 10:33:30 +0800
Subject: [PATCH] 跨巷道移库

---
 src/main/java/com/zy/common/service/CommonService.java |   78 +++++++++++++++++++++------------------
 1 files changed, 42 insertions(+), 36 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..96e877c 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -17,7 +17,10 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 璐ф灦鏍稿績鍔熻兘
@@ -119,20 +122,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,37 +135,49 @@
        //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
         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());
+
+        // 鎼滅储娣卞簱浣�
+        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"));
+
+        // 娣卞簱浣嶆病鏈夊垯鎼滅储娴呭簱浣�
+        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"));
+        }
+        if (locMasts.isEmpty()) {
+            throw new CoolException("娌℃湁鍙敤搴撲綅");
+        }
+
+        // 璁板綍鍫嗗灈鏈烘槸鍚︽煡璇㈣繃锛岄伩鍏嶉噸澶嶆煡璇�
+        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)) {
+                    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;
             }
         }
 

--
Gitblit v1.9.1