From c46f9c28f8d40d2a4efcc7ef6e528661d97a4be0 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 14 二月 2023 13:48:18 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/service/CommonService.java |  116 ++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 73 insertions(+), 43 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 423aee2..296bbbd 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -178,9 +178,12 @@
                     if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
                         // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父
                         if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
-                            crnNo = locMast0.getCrnNo();
-                            locMast = locMast0;
-                            break;
+                            // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                            if (locMastService.checkEmptyCount(locMast0, 10)) {
+                                crnNo = locMast0.getCrnNo();
+                                locMast = locMast0;
+                                break;
+                            }
                         }
                     }
                 }
@@ -200,9 +203,12 @@
                         if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
                             // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父
                             if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
-                                crnNo = locMast0.getCrnNo();
-                                locMast = locMast0;
-                                break;
+                                // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                                if (locMastService.checkEmptyCount(locMast0, 10)) {
+                                    crnNo = locMast0.getCrnNo();
+                                    locMast = locMast0;
+                                    break;
+                                }
                             }
                         }
                     }
@@ -224,9 +230,12 @@
                         if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
                             // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父
                             if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
-                                crnNo = locMast0.getCrnNo();
-                                locMast = locMast0;
-                                break;
+                                // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                                if (locMastService.checkEmptyCount(locMast0, 10)) {
+                                    crnNo = locMast0.getCrnNo();
+                                    locMast = locMast0;
+                                    break;
+                                }
                             }
                         }
                     }
@@ -334,6 +343,7 @@
         // 寮�濮嬫煡鎵惧簱浣� ==============================>>
 
         // 1.褰撴绱㈠簱鎺掍负娴呭簱浣嶆帓鏃讹紝浼樺厛瀵绘壘褰撳墠搴撴帓鐨勬繁搴撲綅鎺�
+        // 楂樹綆棰戠鎺с�佸簱浣嶇粍鍏ㄩ儴涓篛
         if (locMast == null) {
             List<Integer> rows = Utils.getGroupLoc(curRow);
             List<LocMast> locMasts = locMastService.queryFreeLocMast0(rows, rows.size(), locTypeDto.getLocType1(), inoutEveryday);
@@ -349,6 +359,52 @@
 
             // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
             if (!locMastService.checkEmptyCount(locMast, 10)) { locMast = null; }
+        }
+
+        // 2.1 楂樹綆棰戠鎺с�佸簱浣嶇粍鏃犻渶鍏ㄩ儴涓篛锛屾壘鍒板簱浣嶅搴旀繁搴撲綅涓嶈兘涓篜 R
+        if (Cools.isEmpty(locMast)) {
+            int sign = curRow;
+            while (sign != 0 && Cools.isEmpty(locMast)) {
+                List<LocMast> locMasts = locMastService.queryFreeLocMastEnd1(sign, locTypeDto.getLocType1(), inoutEveryday);
+                for (LocMast loc : locMasts) {
+                    // 鍚屽簱浣嶇粍瀵瑰簲鍏堕挶搴撲綅鏄惁涓� O.绌哄簱浣�
+                    boolean success = true;
+                    // 娴呭簱浣�
+                    List<String> outerLocList = Utils.getGroupOuterLoc(loc.getLocNo());
+                    for (String outerLocNo : outerLocList) {
+                        LocMast outerLoc = locMastService.selectById(outerLocNo);
+                        if (Cools.isEmpty(outerLoc)) {
+                            continue;
+                        }
+                        if (!outerLoc.getLocSts().equals("O")) {
+                            success = false; break;
+                        }
+                    }
+                    // 娣卞簱浣嶅垽鏂�
+                    List<String> insideLocList = Utils.getGroupInsideLoc(loc.getLocNo());
+                    for (String insideLocNo : insideLocList) {
+                        LocMast insideLoc = locMastService.selectById(insideLocNo);
+                        if (Cools.isEmpty(insideLoc)) {
+                            continue;
+                        }
+                        if (insideLoc.getLocSts().equals("R")
+                                || insideLoc.getLocSts().equals("P")
+                                || insideLoc.getLocSts().equals("Q")
+                                || insideLoc.getLocSts().equals("S")) {
+                            success = false; break;
+                        }
+                    }
+                    // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                    if (!locMastService.checkEmptyCount(loc, 10)) {
+                        success = false;
+                    }
+                    if (success) {
+                        locMast = loc;
+                        break;
+                    }
+                }
+                sign = getCurRow(sign);
+            }
         }
 
         // 2.鏃犲簱浣嶆椂锛屾棤瑙嗗尯鍩熼攣瀹氾紝閲嶆柊鏌ユ壘搴撲綅
@@ -377,9 +433,16 @@
                         if (Cools.isEmpty(insideLoc)) {
                             continue;
                         }
-                        if (insideLoc.getLocSts().equals("R") || insideLoc.getLocSts().equals("P")) {
+                        if (insideLoc.getLocSts().equals("R")
+                                || insideLoc.getLocSts().equals("P")
+                                || insideLoc.getLocSts().equals("Q")
+                                || insideLoc.getLocSts().equals("S")) {
                             success = false; break;
                         }
+                    }
+                    // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                    if (!locMastService.checkEmptyCount(loc, 10)) {
+                        success = false;
                     }
                     if (success) {
                         locMast = loc;
@@ -389,39 +452,6 @@
                 sign = getCurRow(sign);
             }
         }
-
-
-//        if (Cools.isEmpty(locMast)){
-//            List<LocMast> locMasts = locMastService.queryFreeLocMastEnd(curRow, locTypeDto.getLocType1());
-//            int sign=curRow;
-//            while (true){
-//                if (locMasts.size()==0){
-//                    sign = getCurRow(sign);
-//                    if (sign != 0){
-//                        locMasts = locMastService.queryFreeLocMastEnd(sign, locTypeDto.getLocType1());
-//                    }else {
-//                        break;
-//                    }
-//                }else {
-//                    break;
-//                }
-//            }
-//            for (LocMast locMast1 : locMasts){
-//                List<LocMast> locMasts1 = locMastService.queryFreeLocMastEnd0(locMast1.getBay1(), locMast1.getLev1(),locMast1.getRow1(), locTypeDto.getLocType1());
-//                Integer innermostRow = Utils.getInnermostRow(locMasts1.get(0).getLocNo());
-//                for (LocMast locMast2:locMasts1){
-//                    if (locMast2.getLocSts().equals("O")){
-//                        locMast = locMast2;
-//                        break;
-//                    }else if (!locMast2.getLocSts().equals("F")){
-//                        break;
-//                    }
-//                }
-//                if (!Cools.isEmpty(locMast)){
-//                    break;
-//                }
-//            }
-//        }
 
         // 3.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
         if (Cools.isEmpty(locMast)) {

--
Gitblit v1.9.1