From c550c142bcd4b079ba0b4c23498f2bf7488e61a4 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期六, 30 八月 2025 14:02:25 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/common/service/CommonService.java |  114 ++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 81 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 38d6e60..53b7b8d 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -123,34 +123,82 @@
      */
     @Transactional
     public StartupDto getLocNo(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto) {
-        try {
-            Integer whsType = Utils.GetWhsType(sourceStaNo);
-            RowLastno rowLastno = rowLastnoService.selectById(whsType);
-            RowLastnoType rowLastnoType = rowLastnoTypeService.selectById(rowLastno.getTypeId());
-            /**
-             * 搴撳瀷 1: 鏍囧噯鍫嗗灈鏈哄簱  2: 骞冲簱  3: 绌挎鏉�  4: 鍥涘悜杞�  5: AGV  0: 鏈煡
-             */
-            switch (rowLastnoType.getType()) {
-                case 1:
-                    return getLocNoRun(whsType, staDescId, sourceStaNo, findLocNoAttributeVo, 0, locTypeDto, 0);
-                case 2:
-                    log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�", sourceStaNo);
-                    break;
-                case 3:
-                    log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�", sourceStaNo);
-                    break;
-                case 4:
-                    return getLocNoRun4(whsType, staDescId, sourceStaNo, findLocNoAttributeVo, 4, locTypeDto, 0);
-                case 5:
-                    return getLocNoRun5(whsType, staDescId, sourceStaNo, findLocNoAttributeVo, 0, locTypeDto, 0);
-                default:
-                    log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�", sourceStaNo);
-                    break;
-            }
+        // try {
+        Integer whsType = Utils.GetWhsType(sourceStaNo);
+        RowLastno rowLastno = rowLastnoService.selectById(whsType);
+        RowLastnoType rowLastnoType = rowLastnoTypeService.selectById(rowLastno.getTypeId());
+        /**
+         * 搴撳瀷 1: 鏍囧噯鍫嗗灈鏈哄簱  2: 骞冲簱  3: 绌挎鏉�  4: 鍥涘悜杞�  5: AGV  0: 鏈煡
+         */
+        switch (rowLastnoType.getType()) {
+            case 1:
+                Config crnSearchDetectTaskCountConfig = configService.selectConfigByCode("crnSearchDetectTaskCount");
+                int crnSearchDetectTaskCount = Integer.parseInt(crnSearchDetectTaskCountConfig.getValue());
 
-        } catch (Exception e) {
-            log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒欙紝{}", sourceStaNo,e.getMessage());
+                Config applyInTaskTotalCountConfig = configService.selectConfigByCode("applyInTaskTotalCount");
+                int applyInTaskTotalCount = Integer.parseInt(applyInTaskTotalCountConfig.getValue());
+                int crnNo = 6;
+                boolean flag = true;
+                List<String> data = new ArrayList<>();
+                while (crnNo > 0) {
+                    List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                            .eq("loc_sts", "O")
+                            .eq("crn", crnNo)
+                            .eq("whs_type", rowLastnoType.getType().longValue())
+                            .eq("loc_type1", locTypeDto.getLocType1())
+                            .eq("loc_type2", locTypeDto.getLocType2())
+                    );
+                    if (locMasts.size() <= 15) {
+                        log.error(crnNo + "鍙峰爢鍨涙満娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}", JSON.toJSONString(locTypeDto));
+                        data.add(crnNo + "鍙锋病鏈夌┖搴撲綅;");
+                    } else {
+                        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                                .eq("crn_no", crnNo)
+                                .in("io_type", 1, 10, 53, 57)
+                        );
+                        if (wrkMasts.size() > crnSearchDetectTaskCount) {
+                            log.error(crnNo + "鍙峰爢鍨涙満宸茶揪鍒板叆搴撴帶鍒朵笂闄愶紒锛侊紒 浠诲姟鏁伴噺锛� {}锛� 鎺у埗鏁伴噺锛歿}", wrkMasts.size(), crnSearchDetectTaskCount);
+                            data.add(crnNo + "鍙峰叆搴撴帶鍒朵笂闄�;");
+                            continue;
+                        }
+                        List<WrkMast> wrkMastsList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                                .eq("crn_no", crnNo)
+                                .in("io_type", 1, 10, 53, 57, 101, 103, 107, 110)
+                        );
+                        if (wrkMastsList.size() > applyInTaskTotalCount) {
+                            log.error(crnNo + "鍙峰爢鍨涙満宸茶揪鍒扮敵璇峰叆搴撴椂鎬讳换鍔℃暟閲忎笂闄�(鍏ュ簱銆佸嚭搴�)锛侊紒锛� 浠诲姟鏁伴噺锛� {}锛� 鎺у埗鏁伴噺锛歿}", wrkMastsList.size(), applyInTaskTotalCount);
+                            data.add(crnNo + "鍙风敵璇峰叆搴撴椂鎬讳换鍔℃暟閲忎笂闄�;");
+                            continue;
+                        }
+                        flag = false;
+                        break;
+                    }
+                    crnNo--;
+                }
+                if (!flag) {
+                    return getLocNoRun(whsType, staDescId, sourceStaNo, findLocNoAttributeVo, 0, locTypeDto, 0);
+                } else {
+                    log.info("鏁版嵁锛歿}", data);
+                    throw new CoolException(data.toString());
+                }
+            case 2:
+                log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�", sourceStaNo);
+                break;
+            case 3:
+                log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�", sourceStaNo);
+                break;
+            case 4:
+                return getLocNoRun4(whsType, staDescId, sourceStaNo, findLocNoAttributeVo, 4, locTypeDto, 0);
+            case 5:
+                return getLocNoRun5(whsType, staDescId, sourceStaNo, findLocNoAttributeVo, 0, locTypeDto, 0);
+            default:
+                log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�", sourceStaNo);
+                break;
         }
+
+//        } catch (Exception e) {
+//            log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒欙紝{}", sourceStaNo, e.getMessage());
+//        }
         return null;
     }
 
@@ -222,7 +270,7 @@
                         .eq("crn_no", crnNo)
                         .in("io_type", 1, 10, 53, 57)
                 );
-                if(wrkMasts.size() > crnSearchDetectTaskCount){
+                if (wrkMasts.size() > crnSearchDetectTaskCount) {
                     log.error(crnNo + "鍙峰爢鍨涙満宸茶揪鍒板叆搴撴帶鍒朵笂闄愶紒锛侊紒 浠诲姟鏁伴噺锛� {}锛� 鎺у埗鏁伴噺锛歿}", wrkMasts.size(), crnSearchDetectTaskCount);
                     continue;
                 }
@@ -233,6 +281,7 @@
                 );
                 if (wrkMastsList.size() > applyInTaskTotalCount) {
                     log.error(crnNo + "鍙峰爢鍨涙満宸茶揪鍒扮敵璇峰叆搴撴椂鎬讳换鍔℃暟閲忎笂闄�(鍏ュ簱銆佸嚭搴�)锛侊紒锛� 浠诲姟鏁伴噺锛� {}锛� 鎺у埗鏁伴噺锛歿}", wrkMastsList.size(), applyInTaskTotalCount);
+                    continue;
                 }
 
                 rowCount = locNecessaryParameters[0];
@@ -263,7 +312,7 @@
                             .eq("crn_no", crnNo)
                             .in("io_type", 1, 10, 53, 57)
                     );
-                    if(wrkMasts.size() > crnSearchDetectTaskCount){
+                    if (wrkMasts.size() > crnSearchDetectTaskCount) {
                         log.error(crnNo + "鍙峰爢鍨涙満宸茶揪鍒板叆搴撴帶鍒朵笂闄愶紒锛侊紒 浠诲姟鏁伴噺锛� {}锛� 鎺у埗鏁伴噺锛歿}", wrkMasts.size(), crnSearchDetectTaskCount);
                         flag = false;
                     }
@@ -315,7 +364,7 @@
                             .eq("crn_no", crnNo)
                             .in("io_type", 1, 10, 53, 57)
                     );
-                    if(wrkMasts.size() > crnSearchDetectTaskCount){
+                    if (wrkMasts.size() > crnSearchDetectTaskCount) {
                         log.error(crnNo + "鍙峰爢鍨涙満宸茶揪鍒板叆搴撴帶鍒朵笂闄愶紒锛侊紒 浠诲姟鏁伴噺锛� {}锛� 鎺у埗鏁伴噺锛歿}", wrkMasts.size(), crnSearchDetectTaskCount);
                         flag = false;
                     }
@@ -524,7 +573,7 @@
         if (Cools.isEmpty(locMast) && crnNo != 0) {
             List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                     .eq("row1", nearRow)
-                    .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()).ne("inv_wh",1)
+                    .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()).ne("inv_wh", 1)
                     .orderBy("lev1", true).orderBy("bay1", true));
             for (LocMast locMast1 : locMasts) {
                 if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
@@ -600,7 +649,7 @@
 //                locTypeDto.setLocType1((short)i);
 //                return getLocNo(1, staDescId, sourceStaNo, matnr,batch,grade, locTypeDto, 0);
 //            }
-            log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿},{}", JSON.toJSONString(locTypeDto), times,moveCrnNo);
+            log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿},{}", JSON.toJSONString(locTypeDto), times, moveCrnNo);
             throw new CoolException("娌℃湁绌哄簱浣�");
         }
 
@@ -615,13 +664,12 @@
         //閽堝1鍙峰爢鍨涙満鎵撶殑琛ヤ竵锛岄槻姝㈡壘鍒板簱浣嶆椂锛屾壘鍒版渶娴呭簱浣�
         String deepLoc2 = Utils.getDeepLoc2(slaveProperties, locMast.getLocNo());
         if (!Cools.isEmpty(deepLoc2)) {
-            LocMast locMastNew = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no",locMast.getCrnNo())
+            LocMast locMastNew = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", locMast.getCrnNo())
                     .eq("loc_no", deepLoc2).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
             if (!Cools.isEmpty(locMastNew)) {
                 locMast = locMastNew;
             }
         }
-
 
 
         // 鑾峰彇鐩爣绔�

--
Gitblit v1.9.1