From 7c36a39a0a2abf561d6c529f4918323f2c44945c Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期三, 26 二月 2025 08:58:26 +0800
Subject: [PATCH] agv站点修改

---
 src/main/java/com/zy/common/service/CommonService.java |  216 +++++++++++++++++++++--------------------------------
 1 files changed, 87 insertions(+), 129 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 7e9701e..c6031f3 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -121,7 +121,7 @@
      * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
      */
     @Transactional
-    public StartupDto getLocNo( Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, LocTypeDto locTypeDto) {
+    public StartupDto getLocNo( Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, LocTypeDto locTypeDto,boolean mixture) {
         try{
             Integer whsType = Utils.GetWhsType(sourceStaNo);
             RowLastno rowLastno = rowLastnoService.selectById(whsType);
@@ -139,7 +139,7 @@
                     log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�",sourceStaNo);
                     break;
                 case 4:
-                    return getLocNoRun4(whsType,staDescId,sourceStaNo,matnr,batch,grade,4,locTypeDto,0);
+                    return getLocNoRun4(whsType,staDescId,sourceStaNo,matnr,batch,grade,4,locTypeDto,0,mixture);
                 case 5:
                     return getLocNoRun5(whsType,staDescId,sourceStaNo,matnr,batch,grade,0,locTypeDto,0);
                 default:
@@ -418,13 +418,13 @@
                             locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
                                     .eq("loc_no", shallowLoc).eq("loc_sts", "F").eq("whs_type",rowLastnoType.getType().longValue()));
                             if (!Cools.isEmpty(locMast2)) {
-                                locMast = locMast2;
+                                locMast = locMast1;
                                 break;
                             } else {
                                 locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
                                         .eq("loc_no", shallowLoc).eq("loc_sts", "D").eq("whs_type",rowLastnoType.getType().longValue()));
                                 if (!Cools.isEmpty(locMast2)) {
-                                    locMast = locMast2;
+                                    locMast = locMast1;
                                     break;
                                 }
                             }
@@ -471,7 +471,7 @@
         return startupDto;
     }
 
-    public StartupDto getLocNoRun4(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times) {
+    public StartupDto getLocNoRun4(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times,boolean mixture) {
         if (Cools.isEmpty(matnr)) {  //鐗╂枡鍙�
             matnr = "";
         }
@@ -534,50 +534,6 @@
             throw new CoolException("鏃犲彲鐢ㄥ簱浣�");
         }
 
-
-        // 鐩镐技宸ヤ綔妗f --- 鍚屽ぉ鍚岃鏍肩墿鏂�
-        if (!Cools.isEmpty(matnr) && (staDescId == 1 || staDescId == 11 || staDescId == 111) ) {
-            //鏌ヨ鐩镐技宸ヤ綔妗f
-            List<WrkMast> wrkMasts = wrkMastService.selectWrkMastWrkDetlMatnrBatch(staDescId, matnr, batch,grade, crnNo);
-            int nearbay = 0;    //鐩镐技宸ヤ綔妗f 鐩爣搴撲綅鍒�
-            int nearlev = 0;    //鐩镐技宸ヤ綔妗f 鐩爣搴撲綅灞�
-            for (WrkMast wrkMast:wrkMasts){
-                LocMast locMastWrk = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getLocNo()));
-                List<LocMast> locMasts = new ArrayList<>();
-                if (locMastWrk.getBay1() >=1 && locMastWrk.getBay1()<=2){
-                    locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
-                            .eq("gro1", locMastWrk.getGro1())
-                            .eq("crn_no", 7)
-                            .orderBy("bay1", true));
-                }else if (locMastWrk.getBay1() >=4 && locMastWrk.getBay1()<=12){
-                    locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
-                            .eq("gro1", locMastWrk.getGro1())
-                            .eq("crn_no", 7)
-                            .orderBy("bay1", false));
-                }else {
-                    locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
-                            .eq("gro1", locMastWrk.getGro1())
-                            .eq("crn_no", 7)
-                            .orderBy("bay1", true));
-                }
-                if (Cools.isEmpty(locMasts)) {
-                    continue;
-                }
-                for (LocMast locMastGro1 : locMasts) {
-                    if (locMastGro1.getLocSts().equals("P") || locMastGro1.getLocSts().equals("Q")) {
-                        break;
-                    }
-                    if (locMastGro1.getLocSts().equals("O") || locMastGro1.getLocSts().equals("S")){
-                        locMast = locMastGro1;
-                        break;
-                    }
-                }
-
-
-            }
-
-        }
-
         Wrapper<StaDesc> wrapper = null;
         StaDesc staDesc = null;
         BasDevp staNo = null;
@@ -612,11 +568,64 @@
 
         // 1.鎸夎鍒欐煡鎵惧簱浣�
         if (Cools.isEmpty(locMast) && crnNo != 0) {
-            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
-                    .eq("bay1", nearRow)
-                    .eq("loc_sts", "O").eq("whs_type",rowLastnoType.getType().longValue())
-                    .eq("crn_no",7)
-                    .orderBy("lev1",true).orderBy("row1",false));//鏈�娴呭簱浣�
+            List<LocMast> locMasts = new ArrayList<>();
+            int floor = 0;
+            if (locTypeDto.getLev1() == null){
+                if (locTypeDto.getLocType1() == 1){
+                    int F1count = locMastService.selectCount(new EntityWrapper<LocMast>()
+                            .in("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())
+                            .eq("crn_no", 7)
+                            .eq("loc_type1", locTypeDto.getLocType1())
+                            .eq("lev1", 1));
+                    if (F1count <= 10) {
+                        int F2count = locMastService.selectCount(new EntityWrapper<LocMast>()
+                                .in("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())
+                                .eq("crn_no", 7)
+                                .eq("loc_type1", locTypeDto.getLocType1())
+                                .eq("lev1", 2));
+                        if (F2count <= 10) {
+                            throw new CoolException("搴撲綅涓嶈冻");
+                        }else {
+                            floor = 2;
+                        }
+                    }else {
+                        floor = 1;
+                    }
+
+                }else if (locTypeDto.getLocType1() == 2){
+                    int F3count = locMastService.selectCount(new EntityWrapper<LocMast>()
+                            .in("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())
+                            .eq("crn_no", 7)
+                            .eq("loc_type1", locTypeDto.getLocType1())
+                            .eq("lev1", 3));
+                    if (F3count <= 10) {
+                        throw new CoolException("搴撲綅涓嶈冻");
+                    }
+                    floor = 3;
+                }else {
+                    throw new CoolException("搴撲綅楂樺害鏁版嵁寮傚父");
+                }
+            }
+
+            if (locTypeDto.getLev1() != null){
+                locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("bay1", nearRow)
+                        .in("loc_sts", "O").eq("whs_type",rowLastnoType.getType().longValue())
+                        .eq("crn_no",7)
+                        .eq("loc_type1",locTypeDto.getLocType1())
+                        .eq("lev1",locTypeDto.getLev1()).orderBy("row1",false));//鏈�娴呭簱浣�
+            }else {
+                if (floor == 0){
+                    throw new CoolException("搴撲綅宸叉弧");
+                }
+                locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("bay1", nearRow)
+                        .in("loc_sts", "O").eq("whs_type",rowLastnoType.getType().longValue())
+                        .eq("crn_no",7)
+                        .eq("loc_type1",locTypeDto.getLocType1())
+                        .eq("lev1",floor).orderBy("row1",false));//鏈�娴呭簱浣�
+            }
+
 
             for (LocMast locMast1 : locMasts) {
                 if (locMast != null){
@@ -625,84 +634,33 @@
                 if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
                     continue;
                 }
-                if (Utils.BooleanWhsTypeStaIoType(rowLastno)){
-                    //鑾峰彇鐩爣搴撲綅鎵�鍦ㄥ贩閬撴渶娣辩┖搴撲綅
-//                    LocMast locMast2 = locMastService.selectLocByLocStsPakInO(curRow,nearRow,locMast1,rowLastnoType.getType().longValue());
-//                    if (!Cools.isEmpty(locMast2) && locMast2.getBay1()==curRow) {
-//                        locMast = locMast2;
-//                        break;
-//                    }
-                    List<LocMast> locMasts1 = null;
-                    if (curRow < nearRow){
-                        locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>()
-                                .eq("gro1", locMast1.getGro1())
-                                .eq("crn_no",7)
-                                .orderBy("bay1",true));
-                        if(locMasts1.size() == 3  || (curRow>20 && locMasts1.size() == 2)){
-                            locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>()
-                                    .eq("gro1", locMast1.getGro1())
-                                    .eq("crn_no",7)
-                                    .orderBy("bay1",false));
-                        }
-                    }else {
-                        locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>()
-                                .eq("gro1", locMast1.getGro1())
-                                .eq("crn_no",7)
-                                .orderBy("bay1",false));
-                    }
-                    if (Cools.isEmpty(locMasts1)) {
-                        continue;
-                    }
-                    for (LocMast locMastGro1 : locMasts1) {
-                        if (locMastGro1.getLocSts().equals("F")){
-                            LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_No", locMastGro1.getLocNo()));
-                            if (!locDetl.getMatnr().equals(matnr) || !locDetl.getBatch().equals(batch)){
-                                break;
-                            }
-                        }
-                        if (locMastGro1.getLocSts().equals("P") || locMastGro1.getLocSts().equals("Q")) {
-                            break;
-                        }
-                        if (locMastGro1.getLocSts().equals("O")){
-                            locMast = locMastGro1;
-                            break;
-                        }
-                    }
-
-
-
+                List<LocMast> locMasts1 = null;
+                if (nearRow == 2 || nearRow ==7 || nearRow == 12){
+                    locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>()
+                            .eq("gro1", locMast1.getGro1())
+                            .eq("crn_no",7)
+                            .eq("loc_type1",locTypeDto.getLocType1())
+                            .orderBy("bay1",true));
+                }else {
+                    locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>()
+                            .eq("gro1", locMast1.getGro1())
+                            .eq("crn_no",7)
+                            .eq("loc_type1",locTypeDto.getLocType1())
+                            .orderBy("bay1",false));
                 }
-            }
-
-            //鏈壘鍒�  鍏佽娣锋枡
-            if (Cools.isEmpty(locMast) && Utils.BooleanWhsTypeStaIoType(rowLastno)){
-                for (LocMast locMast1 : locMasts) {
-                    if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
-                        continue;
+                if (Cools.isEmpty(locMasts1)) {
+                    continue;
+                }
+                for (LocMast locMastGro1 : locMasts1) {
+                    if (locMastGro1.getLocSts().equals("P") || locMastGro1.getLocSts().equals("Q") || locMastGro1.getLocSts().equals("R") || locMastGro1.getLocSts().equals("X")) {
+                        break;
                     }
-                    if (Utils.BooleanWhsTypeStaIoType(rowLastno)){
-                        //鑾峰彇鐩爣搴撲綅鎵�鍦ㄥ贩閬撳苟鎺掑簭
-//                        List<String> groupOutsideLocCrn = Utils.getGroupOutLocCrn(curRow,nearRow,locMast1.getLocNo(), curRow>nearRow);
-
-                        //鑾峰彇鐩爣搴撲綅鎵�鍦ㄥ贩閬撴渶娴呴潪绌哄簱浣�
-                        LocMast locMast2 = locMastService.selectLocByLocStsPakInF(curRow,nearRow,locMast1,rowLastnoType.getType().longValue());
-                        if (Cools.isEmpty(locMast2)) {
-                            LocMast locMast3 = locMastService.selectLocByLocStsPakInO(curRow,nearRow,locMast1,rowLastnoType.getType().longValue());
-                            if (!Cools.isEmpty(locMast3)) {
-                                locMast = locMast3;
-                                break;
-                            }
-                        } else {
-                            if ((locMast2.getLocSts().equals("F") && staDescId == 1) || (locMast2.getLocSts().equals("D") && staDescId == 10)){
-                                LocMast locMast3 = locMastService.selectLocByLocStsPakInO(curRow,nearRow,locMast1,rowLastnoType.getType().longValue());
-                                if (!Cools.isEmpty(locMast3)) {
-                                    locMast = locMast3;
-                                    break;
-                                }
-                            }
-                        }
+                    if (locMastGro1.getLocSts().equals("O")){
+                        locMast = locMastGro1;
+                        break;
                     }
                 }
+
             }
         }
 
@@ -711,7 +669,7 @@
             // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
             if (times < rowCount*2) {
                 times = times + 1;
-                return getLocNoRun4(whsType, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo, locTypeDto, times);
+                return getLocNoRun4(whsType, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo, locTypeDto, times,mixture);
             }
             log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times);
             throw new CoolException("娌℃湁绌哄簱浣�");

--
Gitblit v1.9.1