From ec7342d38bb1ca9f5b4e08f4901aa10a3b8d7265 Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期六, 07 十月 2023 11:55:21 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/service/CommonService.java |   62 +++++++++++++++++++++++++------
 1 files changed, 50 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index a0f4f87..f46b33e 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -16,10 +16,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
 
 /**
  * 璐ф灦鏍稿績鍔熻兘
@@ -288,11 +285,13 @@
     private LocMast getLocNoStep2(LocTypeDto locTypeDto, List<String> matNos, List<Integer> rows, List<Integer> crnNos) {
         LocMast locMast = null;
         //鍏堟壘宸ヤ綔妗�
+
         List<WrkMast> wrkMasts = wrkMastService.selectSameWrkMast(matNos.get(0));
         for (WrkMast wrkMast : wrkMasts) {
             List<String> groupLoc = Utils.getGroupLoc(wrkMast.getLocNo());
             //闅忔満鍙敤鍫嗗灈鏈哄彿
             Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1());
+            Collections.shuffle(crnNos);
             for (Integer crnNo : crnNos) {
                 List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc, crnNo);
                 for (LocMast locMast0 : locMasts) {
@@ -349,7 +348,9 @@
         //鏈壘鍒板贩閬擄紝鎵句竴鏉℃柊鐨勭┖宸烽亾
         if (locMast == null) {
             //闅忔満鍙敤鍫嗗灈鏈哄彿
+            Boolean flag = false;
             Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1());
+            Collections.shuffle(crnNos);
             for (Integer crnNo : crnNos) {
                 List<LocMast> locMasts = locMastService.findInEmptyLocMast(locTypeDto.getLocType1(), rows, crnNo);//鎵句竴鏉℃柊鐨勭┖宸烽亾
                 for (LocMast locMast0 : locMasts) {
@@ -366,10 +367,14 @@
                             // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
                             if (locMastService.checkEmptyCount(locMast0, 10)) {
                                 locMast = locMast0;
+                                flag = true;
                                 break;
                             }
                         }
                     }
+                }
+                if (flag) {
+                    break;
                 }
             }
         }
@@ -392,9 +397,9 @@
         //鎵炬渶澶栦晶绌哄簱浣�
         List<LocMast> locMasts = locMastService.findOutMast(locTypeDto.getLocType1(), randomCrnNos);
         for (LocMast locMast0 : locMasts) {
-            //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
-            if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
-                //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣�
+            //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆銆丱
+            if (Utils.checkInsideLocIsDFXO(locMast0.getLocNo())) {
+                //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆丱銆備笉鑳介�夊彇璇ュ簱浣�
                 continue;
             }
 
@@ -407,6 +412,20 @@
                         locMast = locMast0;
                     }
                 }
+            }
+        }
+
+        //鍓旈櫎褰撳墠闅忔満鍫嗗灈鏈哄厓绱犲皾璇曢噸鏂版煡鎵�
+        if (locMast == null) {
+            ArrayList<Integer> crns = new ArrayList<>();
+            for (int crnNo : crnNos) {
+                if (randomCrnNo == crnNo) {
+                    continue;
+                }
+                crns.add(crnNo);
+            }
+            if (!crns.isEmpty()) {
+                return getLocNoStep3(locTypeDto, crns);
             }
         }
 
@@ -423,7 +442,7 @@
         List<LocMast> locMasts = locMastService.findEmptyLowFrequencyLocMast(locTypeDto.getLocType1(), randomCrnNo);
         for (LocMast locMast0 : locMasts) {
             //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
-            if (Utils.checkInsideLocIsDFX2(locMast0.getLocNo())) {
+            if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
                 //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣�
                 continue;
             }
@@ -449,16 +468,35 @@
             if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
                 // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父
                 if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
-                    //鍒ゆ柇鏄惁闇�瑕佺Щ搴�
-
-                    // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
-                    if (locMastService.checkEmptyCount0(locMast0, 2)) {
+                    Integer outermostRow = Utils.getOutermostRow(locMast0.getLocNo(), true);
+                    LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", outermostRow).eq("bay1", locMast0.getBay1()).eq("lev1", locMast0.getLev1()));
+                    if (!locMast1.getLocSts().equals("O") && !locMast0.getRow1().equals(outermostRow)){
+                        // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                        if (locMastService.checkEmptyCount0(locMast0, 5)) {
+                            locMast = locMast0;
+                        }
+                    }else {
                         locMast = locMast0;
                     }
+
                 }
             }
         }
 
+        //鍓旈櫎褰撳墠闅忔満鍫嗗灈鏈哄厓绱犲皾璇曢噸鏂版煡鎵�
+        if (locMast == null) {
+            ArrayList<Integer> crns = new ArrayList<>();
+            for (int crnNo : crnNos) {
+                if (randomCrnNo == crnNo) {
+                    continue;
+                }
+                crns.add(crnNo);
+            }
+            if (!crns.isEmpty()) {
+                return getLocNoStep4(locTypeDto, crns);
+            }
+        }
+
         return locMast;
     }
 

--
Gitblit v1.9.1