From 6494d25e5677f2e81c898006b3aada6260511f33 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期四, 24 七月 2025 09:41:32 +0800
Subject: [PATCH] #

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

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index eb95817..ddd63f7 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -9,6 +9,7 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.result.KeyValueVo;
 import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.MatServiceImpl;
 import com.zy.asrs.utils.Utils;
 import com.zy.asrs.utils.VersionUtils;
 import com.zy.common.model.LocTypeDto;
@@ -52,6 +53,8 @@
     private LocDetlService locDetlService;
     @Autowired
     private SlaveProperties slaveProperties;
+    @Autowired
+    private MatServiceImpl matService;
 
     /**
      * 鐢熸垚宸ヤ綔鍙�
@@ -119,7 +122,7 @@
      */
     @Transactional
     public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, LocTypeDto locTypeDto) {
-        whsType = Utils.GetWhsType(sourceStaNo);
+         whsType = Utils.GetWhsType(sourceStaNo);
         return getLocNoRun(whsType,staDescId,sourceStaNo,matnr,batch,grade,0,locTypeDto,0);
     }
 
@@ -134,8 +137,12 @@
      */
     @Transactional
     public StartupDto getLocNoRun(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times) {
+        long start = System.currentTimeMillis();
+        int tagId = 0;
         if (Cools.isEmpty(matnr)) {  //鐗╂枡鍙�
             matnr = "";
+        }else{
+            tagId = matService.getTagIdByMatnr(matnr);
         }
         if (Cools.isEmpty(batch)) {  //绠卞彿
             batch = "";
@@ -156,7 +163,6 @@
         int sRow = rowLastno.getsRow();
         int eRow = rowLastno.geteRow();
         int crnNumber = rowLastno.getCrnQty();
-
         if (Cools.isEmpty(rowLastno)) {
             throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
         }
@@ -165,11 +171,7 @@
 
         if (!Cools.isEmpty(moveCrnNo) && moveCrnNo!=0){
             crnNumber = moveCrnNo;
-            if (times==0){
-                curRow = moveCrnNo*4-1;
-            }else {
-                curRow = moveCrnNo*4-2;
-            }
+            curRow = eRow;
         }
 
         //姝ょ▼搴忕敤浜庝紭鍖栧爢鍨涙満寮傚父鏃剁殑杩愯鏃堕棿
@@ -182,7 +184,7 @@
                 nearRow = locNecessaryParameters[3];
                 List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O"));
                 int crnCountO = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).le("io_type",100));
-                if (locMasts.size()-crnCountO<=2){
+                if (locMasts.size()-crnCountO<=0){
                     times++;
                     continue;
                 }
@@ -191,9 +193,9 @@
                 times++;
             }
         }
-        if (nearRow == 0) {
-            throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満");
-        }
+//        if (nearRow == 0) {
+//            throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満");
+//        }
 
         boolean signRule1 = false;
         boolean signRule2 = false;
@@ -202,7 +204,7 @@
         if (Utils.BooleanWhsTypeStaIoType(whsType)){
             // 闈犺繎鎽嗘斁瑙勫垯 --- 鍚屽ぉ鍚岃鏍肩墿鏂� //鍒嗙鐗�
             if (!Cools.isEmpty(matnr) &&  staDescId == 1){
-                signRule1 = true;
+                signRule1 = false;
             }
             // 闈犺繎鎽嗘斁瑙勫垯 --- 鍚屽ぉ鍚岃鏍肩墿鏂� //浜掗�氱増
             if (!Cools.isEmpty(matnr) && staDescId == 1) {
@@ -253,21 +255,7 @@
             }
         }
 
-//        // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭  //鍒嗙鐗�
-//        if (staDescId == 10 && Utils.BooleanWhsTypeStaIoType(whsType)) {
-//            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O"));
-//            for (LocMast locMast1:locMasts){
-//                if (VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
-//                    continue;
-//                }
-//                String shallowLoc = Utils.getDeepLoc(slaveProperties,locMast1.getLocNo());
-//                LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",shallowLoc));
-//                if (!Cools.isEmpty(locMast2) && locMast2.getLocSts().equals("D")){
-//                    locMast = locMast1;
-//                    break;
-//                }
-//            }
-//        }
+
 
         // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭 //浜掗�氱増
         if (staDescId == 10  && Utils.BooleanWhsTypeStaIoType(whsType)) {
@@ -329,86 +317,67 @@
 
         // 1.鎸夎鍒欐煡鎵惧簱浣�
         if (Cools.isEmpty(locMast) && crnNo != 0) {
-            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
-                    .eq("row1", nearRow)
-                    .eq("loc_sts", "O")
-                    .orderBy("lev1",true).orderBy("bay1",true));
-            for (LocMast locMast1 : locMasts) {
-                if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
-                    continue;
-                }
-                if (Utils.BooleanWhsTypeStaIoType(whsType)){
-                    String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast1.getLocNo());
-                    LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
-                            .eq("loc_no", shallowLoc).eq("loc_sts", "O"));
-                    if (!Cools.isEmpty(locMast2)) {
-                        locMast = locMast2;
-                        break;
-                    }
-                } else {
-                    if (!Cools.isEmpty(locMast1)) {
-                        locMast = locMast1;
-                        break;
-                    }
-                }
+            List<LocMast> locMasts = null;
+            if(sourceStaNo % 100 > 10){
+                locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("row1", nearRow)
+                        .eq("loc_sts", "O")
+                        .orderBy("lev1",true).orderBy("bay1",false));
+            }else{
+                 locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("row1", nearRow)
+                        .eq("loc_sts", "O")
+                        .orderBy("lev1",true).orderBy("bay1",true));
             }
 
+
             if (Cools.isEmpty(locMast) && Utils.BooleanWhsTypeStaIoType(whsType)){
+                if(tagId == 226){
+                    List<LocMast> filteredLocMasts = new ArrayList<>();
+                    for (LocMast loc : locMasts) {
+                        Integer lev = loc.getLev1();
+                        if (lev != null && lev >= 6 && lev <= 10) {
+                            filteredLocMasts.add(loc);
+                        }
+                    }
+                    locMasts = filteredLocMasts;
+                }else{
+                    List<LocMast> filteredLocMasts = new ArrayList<>();
+                    for (LocMast loc : locMasts) {
+                        Integer lev = loc.getLev1();
+                        if (lev != null && lev >= 1 && lev <= 5) {
+                            filteredLocMasts.add(loc);
+                        }
+                    }
+                    locMasts = filteredLocMasts;
+                }
                 for (LocMast locMast1 : locMasts) {
                     if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
                         continue;
                     }
-                    if (Utils.BooleanWhsTypeStaIoType(whsType)){
-                        String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast1.getLocNo());
-                        LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
-                                .eq("loc_no", shallowLoc).eq("loc_sts", "O"));
-                        if (!Cools.isEmpty(locMast2)) {
-                            locMast = locMast2;
-                            break;
-                        } else {
-                            locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
-                                    .eq("loc_no", shallowLoc).eq("loc_sts", "F"));
-                            if (!Cools.isEmpty(locMast2)) {
-                                locMast = locMast2;
-                                break;
-                            } else {
-                                locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
-                                        .eq("loc_no", shallowLoc).eq("loc_sts", "D"));
-                                if (!Cools.isEmpty(locMast2)) {
-                                    locMast = locMast2;
-                                    break;
-                                }
-                            }
-                        }
-                    } else {
-                        if (!Cools.isEmpty(locMast1)) {
-                            locMast = locMast1;
-                            break;
-                        }
+
+                    if (!Cools.isEmpty(locMast1)) {
+                        locMast = locMast1;
+                        break;
                     }
+
                 }
             }
         }
 
-        if (!Cools.isEmpty(locMast) && !basCrnpService.checkSiteError(crnNo, true)) {
+        if (!basCrnpService.checkSiteError(crnNo, true)) {
             locMast = null;
         }
 
         // 閫掑綊鏌ヨ
         if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("O")) {
             // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
-            if (times < rowCount*2) {
+            if (times < 1) {
                 times = times + 1;
-                return getLocNoRun(whsType, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo, locTypeDto, times);
+                return getLocNoRun(whsType, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo+1, locTypeDto, times);
             }
-//            // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
-//            if (locTypeDto.getLocType1() < 2) {
-//                int i = locTypeDto.getLocType1() + 1;
-//                locTypeDto.setLocType1((short)i);
-//                return getLocNo(1, staDescId, sourceStaNo, matnr,batch,grade, locTypeDto, 0);
-//            }
             log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times);
-            throw new CoolException("娌℃湁绌哄簱浣�");
+            throw new CoolException("娌℃湁绌哄簱浣嶆垨鍫嗗灈鏈哄紓甯�");
         }
         String locNo = locMast.getLocNo();
 
@@ -419,6 +388,8 @@
         startupDto.setCrnNo(crnNo);
         startupDto.setSourceStaNo(sourceStaNo);
         startupDto.setLocNo(locNo);
+        log.info("搴撲綅妫�绱㈣�楁椂: {} ms", System.currentTimeMillis() - start);
+
         return startupDto;
     }
 }

--
Gitblit v1.9.1