From be14e23722db5053f2ac9048629d72abd05dea08 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 24 三月 2025 13:38:57 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/service/CommonService.java |   90 ++++++++++++++++++++++++++++----------------
 1 files changed, 57 insertions(+), 33 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index adfcf81..78b8010 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -19,6 +19,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -50,6 +51,7 @@
 
     /**
      * 鐢熸垚宸ヤ綔鍙�
+     *
      * @param wrkMk
      * @return workNo(宸ヤ綔鍙�)
      */
@@ -62,17 +64,17 @@
         int workNo = wrkLastno.getWrkNo();
         int sNo = wrkLastno.getSNo();
         int eNo = wrkLastno.getENo();
-        workNo = workNo>=eNo ? sNo : workNo+1;
+        workNo = workNo >= eNo ? sNo : workNo + 1;
         while (true) {
             WrkMast wrkMast = wrkMastService.selectById(workNo);
             if (null != wrkMast) {
-                workNo = workNo>=eNo ? sNo : workNo+1;
+                workNo = workNo >= eNo ? sNo : workNo + 1;
             } else {
                 break;
             }
         }
         // 淇敼搴忓彿璁板綍
-        if (workNo > 0){
+        if (workNo > 0) {
             wrkLastno.setWrkNo(workNo);
             wrkLastnoService.updateById(wrkLastno);
         }
@@ -80,7 +82,7 @@
         if (workNo == 0) {
             throw new CoolException("鐢熸垚宸ヤ綔鍙峰け璐ワ紝璇疯仈绯荤鐞嗗憳");
         } else {
-            if (wrkMastService.selectById(workNo)!=null) {
+            if (wrkMastService.selectById(workNo) != null) {
                 throw new CoolException("鐢熸垚宸ヤ綔鍙�" + workNo + "鍦ㄥ伐浣滄。涓凡瀛樺湪");
             }
         }
@@ -89,10 +91,10 @@
 
     /**
      * 妫�绱㈠簱浣嶅彿
-     * @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋�
-     * @param staDescId 璺緞宸ヤ綔绫诲瀷
+     *
+     * @param whsType     绫诲瀷 1:鍙屾繁寮忚揣鏋�
+     * @param staDescId   璺緞宸ヤ綔绫诲瀷
      * @param sourceStaNo 婧愮珯
-
      * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
      */
     @Transactional
@@ -115,14 +117,14 @@
 //        }
 
         // 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂�
-        locMast = getLocNoStep3(staDescId, matnr, batch, grade, locTypeDto,sourceStaNo);
+        locMast = getLocNoStep3(staDescId, matnr, batch, grade, locTypeDto, sourceStaNo);
         if (locMast != null) {
             //鎵惧埌搴撲綅锛岃繑鍥瀌to
             return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
         }
 
         //鎼滅储鏁翠釜绌哄簱浣嶇粍
-        locMast = getLocNoStepSingle(locTypeDto,sourceStaNo);
+        locMast = getLocNoStepSingle(locTypeDto, sourceStaNo);
         if (locMast != null) {
             //鎵惧埌搴撲綅锛岃繑鍥瀌to
             return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
@@ -134,43 +136,65 @@
     }
 
     // 鎼滅储鍗曞搧(鏁翠釜搴撲綅缁�)
-    private LocMast getLocNoStepSingle(LocTypeDto locTypeDto,Integer sourceStaNo) {
+    private LocMast getLocNoStepSingle(LocTypeDto locTypeDto, Integer sourceStaNo) {
         LocMast locMast = null;
 
-        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", 1).eq("stn_no", sourceStaNo));
+        List<StaDesc> staDescs = staDescService.selectList(new EntityWrapper<StaDesc>().eq("type_no", 1).eq("stn_no", sourceStaNo));
+        int num = 0;
+        int crn_no = 1;
+        for (StaDesc staDesc : staDescs) {
+            List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), staDesc.getCrnNo());//鎼滅储璐х墿
+            int temp = locMast == null ? 0 : locMasts.size();
+            if (num <= temp) {
+                num = temp;
+                crn_no = staDesc.getCrnNo();
+            }
+        }
+        //for (StaDesc staDesc : staDescs) {
         //鍗曞搧
-        List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1(),staDesc.getCrnNo());//鎼滅储璐х墿
+        List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), crn_no);//鎼滅储璐х墿
 
         for (LocMast mast : locMasts) {
             LocMast tmp = null;
-            boolean groupLoc = Utils.isShallowLoc(slaveProperties,mast.getLocNo());
+            boolean groupLoc = Utils.isShallowLoc(slaveProperties, mast.getLocNo());
             if (groupLoc) {
                 String shallowLoc = Utils.getDeepLoc(slaveProperties, mast.getLocNo());
                 LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
-                        .eq("loc_no", shallowLoc).eq("loc_sts", "O"));
+                        .eq("loc_no", shallowLoc));
                 if (!Cools.isEmpty(locMast2)) {
-                    tmp = locMast2;
-
-                }else {
-                    tmp = mast;
+                    if (locMast2.getLocSts().equals("F") || locMast2.getLocSts().equals("D")) {
+                        tmp = mast;
+                        if (!Cools.isEmpty(mast)) {
+                            if (mast.getLocSts().equals("O")) {
+                                tmp = mast;
+                            }
+                        }
+                    }
+                    //棰勭暀绌哄簱浣�
+                    if (tmp != null && locMastService.checkEmptyCount(mast, 10)) {
+                        locMast = tmp;
+                        return locMast;
+                    }
                 }
-            }else {
-                if (!Cools.isEmpty(mast)) {
-                    tmp = mast;
 
+            } else {
+                tmp = mast;
+                //棰勭暀绌哄簱浣�
+                if (tmp != null && locMastService.checkEmptyCount(mast, 10)) {
+                    locMast = tmp;
+                    return locMast;
                 }
             }
-            //棰勭暀绌哄簱浣�
-            if (tmp != null && locMastService.checkEmptyCount(mast, 10)) {
-                locMast = tmp;
-                break;
-            }
+
+
+            // }
         }
-
         return locMast;
     }
+
     // 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂�
-    private LocMast getLocNoStep3(Integer staDescId, String matnr, String batch, String grade, LocTypeDto locTypeDto,Integer sourceStaNo) {
+    private LocMast getLocNoStep3(Integer staDescId, String matnr, String batch, String grade, LocTypeDto
+            locTypeDto, Integer sourceStaNo) {
         LocMast locMast = null;
         StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", 1).eq("stn_no", sourceStaNo));
         if (staDescId == 1) {
@@ -179,7 +203,7 @@
             for (WrkMast wrkMast : wrkMasts) {
                 LocMast locMast0 = locMastService.findNearloc(wrkMast.getLocNo());
                 if (null != locMast0) {
-                    if (!staDesc.getCrnNo().equals(locMast0.getCrnNo())){
+                    if (!staDesc.getCrnNo().equals(locMast0.getCrnNo())) {
                         continue;
                     }
                     // 娴呭簱浣嶇鍚堝昂瀵告娴�
@@ -194,7 +218,7 @@
                 for (String locNo : locNos) {
                     LocMast locMast0 = locMastService.findNearloc(locNo);
                     if (null != locMast0) {
-                        if (!staDesc.getCrnNo().equals(locMast0.getCrnNo())){
+                        if (!staDesc.getCrnNo().equals(locMast0.getCrnNo())) {
                             continue;
                         }
                         // 娴呭簱浣嶇鍚堝昂瀵告娴�
@@ -218,7 +242,7 @@
         Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                 .eq("type_no", staDescId)
                 .eq("stn_no", sourceStaNo)
-                .eq("crn_no",locMast.getCrnNo());
+                .eq("crn_no", locMast.getCrnNo());
         StaDesc staDesc = staDescService.selectOne(wrapper);
         if (Cools.isEmpty(staDesc)) {
             log.error("鍏ュ簱璺緞涓嶅瓨鍦�, staDescId={}, sourceStaNo={}", staDescId, sourceStaNo);
@@ -259,7 +283,7 @@
             List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                     .eq("loc_sts", "O")
                     .eq("crn_no", staDesc.getCrnNo())
-                    .eq("loc_type1",locTypeDto.getLocType1())
+                    .eq("loc_type1", locTypeDto.getLocType1())
                     .orderBy("lev1,bay1,row1"));
             if (!locMasts.isEmpty()) {
                 for (LocMast loc : locMasts) {
@@ -287,7 +311,7 @@
             return msg.substring(0, 16);
         } else {
             StringBuilder msgBuilder = new StringBuilder(msg);
-            for(int i = 0; i < count - msg.length(); ++i) {
+            for (int i = 0; i < count - msg.length(); ++i) {
                 msgBuilder.insert(0, "0");
             }
             return msgBuilder.toString();

--
Gitblit v1.9.1