From 9f0fe04350c019c2ed1655d5b833648788734994 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 14 一月 2025 16:34:51 +0800
Subject: [PATCH] 优化库位检索逻辑,移除冗余参数

---
 src/main/java/com/zy/common/service/AgvCommonService.java        |   82 +++++++++++++++------------
 src/main/java/com/zy/asrs/controller/AgvMobileController.java    |    7 +
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java |   24 ++++++-
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java   |   18 +++---
 src/main/java/com/zy/asrs/service/AgvWorkService.java            |    2 
 src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java      |    2 
 6 files changed, 82 insertions(+), 53 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvMobileController.java b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
index 4db9799..94adb56 100644
--- a/src/main/java/com/zy/asrs/controller/AgvMobileController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -77,7 +77,7 @@
     @RequestMapping("/pick/again/auth")
     @ManagerAuth(memo = "鍐嶆鎷f枡")
     public R pickAgain(@RequestBody PickParam pickParams) {
-        if (pickParams == null ) {
+        if (pickParams == null) {
             return R.error("缂哄皯鍙傛暟");
         }
         agvMobileService.pickAgain(pickParams, 1l);
@@ -177,6 +177,9 @@
             return R.error("缂哄皯鍙傛暟");
         }
         for (AgvMobileStartParam.Pda pda : params.getPad()) {
+            if (pda == null || Cools.isEmpty(pda.getContainerCode())) {
+                return R.error("缂哄皯瀹瑰櫒淇℃伅");
+            }
             pda.setContainerType(Short.valueOf(pda.getContainerCode().substring(0, 2)));
             workService.emptyPlateIn(pda.getDevNo(), pda.getContainerCode(), pda.getContainerType(), getUserId(), false);
         }
@@ -416,7 +419,7 @@
 
         AgvLocMast agvLocMastByContainerCode = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode", containerCode));
         AgvLocMast agvLocMastByLocNo = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo));
-        if (agvLocMastByLocNo==null){
+        if (agvLocMastByLocNo == null) {
             return R.error("搴撲綅涓嶅瓨鍦�");
         }
         String barcode1 = agvLocMastByLocNo.getBarcode();
diff --git a/src/main/java/com/zy/asrs/service/AgvWorkService.java b/src/main/java/com/zy/asrs/service/AgvWorkService.java
index dee9873..b266a04 100644
--- a/src/main/java/com/zy/asrs/service/AgvWorkService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWorkService.java
@@ -44,7 +44,7 @@
     /*
     绌烘澘鍏ュ簱
      */
-    String emptyPlateIn(String station,String containerCode,Short containerType, Long userId, boolean emptyAutoIn, String factory );
+    String emptyPlateIn(String station, String containerCode, Short containerType, Long userId, boolean emptyAutoIn);
 
     void emptyPlateOut(String station, int containerType, Long userId);
 
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
index 6b192ba..2173736 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -4,6 +4,7 @@
 import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
+import com.zy.asrs.constant.AsrsConstants;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
 import com.zy.asrs.service.*;
@@ -760,7 +761,7 @@
     public String handBack(AgvMobileStartPakin param, Long userId) {
         Date now = new Date();
         AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo()));
-        if (agvWrkMast == null){
+        if (agvWrkMast == null) {
             throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�");
         }
         agvWrkMast.setIoType(113);
@@ -790,8 +791,23 @@
         agvWrkMastLogService.save(agvWrkMast);
         agvWrkDetlLogService.save(agvWrkMast.getWrkNo());
         String sourceLocNo = agvWrkMast.getSourceLocNo();
-        AgvLocMast newLocMast = agvCommonService.getLocNo(3, 1, false, false);
-        if (newLocMast==null){
+
+        // TODO 鍥涙湡
+        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode()));
+        String factory = null;
+        if (agvWrkDetls != null && !Cools.isEmpty(agvWrkDetls)) {
+            String orderNo = agvWrkDetls.get(0).getOrderNo();
+            if (!Cools.isEmpty(orderNo)) {
+                if (orderNo.contains(AsrsConstants.ERCHANG)) {
+                    factory = AsrsConstants.ERCHANG;
+                } else if (orderNo.contains(AsrsConstants.SANCHANG)) {
+                    factory = AsrsConstants.SANCHANG;
+                }
+            }
+        }
+        AgvLocMast newLocMast = agvCommonService.getLocByLocRule(3, 1, factory);
+        //AgvLocMast newLocMast = agvCommonService.getLocNo(3, 1, false, false);
+        if (newLocMast == null) {
             throw new CoolException("鏃犲彲鐢ㄥ簱浣�");
         }
         agvWrkMast.setSourceLocNo(agvWrkMast.getLocNo());
@@ -813,7 +829,7 @@
         agvLocMastService.updateLocStsByLocNo(sourceLocNo, "O", "", (short) 30);
         agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocNo));
 
-        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode()));
+        //List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode()));
         agvWrkDetls.forEach(agvWrkDetl -> {
             for (AgvWrkDetl wrkDetl : param.getWrkDetls()) {
                 if (wrkDetl.getMatnr().equals(agvWrkDetl.getMatnr()) && wrkDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())) {
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index 2d6e30c..595e10c 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -103,7 +103,7 @@
             List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvBasDevp.getBarcode()));
 
             //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(), agvBasDevp.getFloor(), false, false,null);
+            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(), agvBasDevp.getFloor(), false, false, null);
             //鐢熸垚宸ヤ綔妗�
             AgvWrkMast wrkMast = createWrkMast(1, 201L, agvBasDevp.getDevNo(), agvLocMast.getLocNo(), agvBasDevp.getBarcode(), now, userId, agvBasDevp.getLocType2(), agvLocMast.getPltType());
             //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
@@ -480,7 +480,7 @@
     鍏ュ簱
      */
     @Transactional
-    public String emptyPlateIn(String station, String containerCode, Short containerType, Long userId, boolean emptyAutoIn,String factory) {
+    public String emptyPlateIn(String station, String containerCode, Short containerType, Long userId, boolean emptyAutoIn) {
 
         Date now = new Date();
 
@@ -528,9 +528,9 @@
             locType = 2;
         } else if (containerType == 30) {
             locType = 3;
-        }  else if (containerType == 31) {
+        } else if (containerType == 31) {
             locType = 6;
-        }else {
+        } else {
             locType = agvBasDevp.getLocType1();
         }
 
@@ -569,19 +569,19 @@
             Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "elevatorTasks"));
             if (Cools.isEmpty(config)) {
                 if (isCurrLev.get()) {
-                    agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true,factory);
+                    agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true, factory);
                 } else {
-                    agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false,factory);
+                    agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false, factory);
                 }
             } else {
                 List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().like("loc_no", "02F1").like("source_loc_no", "F1"));
                 if (Integer.parseInt(config.getValue()) <= agvWrkMasts.size()) {
-                    agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true,factory);
+                    agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true, factory);
                 } else {
                     if (isCurrLev.get()) {
-                        agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true,factory);
+                        agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true, factory);
                     } else {
-                        agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false,factory);
+                        agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false, factory);
                     }
                     //agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
                 }
diff --git a/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java
index 8f165ed..a1eccd5 100644
--- a/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java
@@ -189,7 +189,7 @@
     private ReturnT<String> doAutoMove2(AgvWrkMast agvWrkMast) {
         Date now = new Date();
         //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,true,null);
+        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,true);
         if (Cools.isEmpty(locMast)) {
             log.info("鏆傛棤搴撲綅");
             return FAIL;
diff --git a/src/main/java/com/zy/common/service/AgvCommonService.java b/src/main/java/com/zy/common/service/AgvCommonService.java
index 5be7c9a..98c2b2f 100644
--- a/src/main/java/com/zy/common/service/AgvCommonService.java
+++ b/src/main/java/com/zy/common/service/AgvCommonService.java
@@ -78,7 +78,7 @@
      * 妫�绱㈠簱浣嶅彿
      * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
      */
-    public AgvLocMast getLocNo(int type, int floor, boolean isEmpty, boolean isCurrLev, String factory) {
+    public AgvLocMast getLocNo(int type, int floor, boolean isEmpty, boolean isCurrLev) {
         // 鐩爣搴撲綅
         AgvLocMast locMast = null;
 //        if(Cools.isEmpty(agvWaitPakinList)){
@@ -120,16 +120,16 @@
             // 寮�濮嬫煡鎵惧簱浣� ==============================>>
             // 鍥涙湡椤圭洰锛氶渶瑕佹敼鏌ユ壘搴撲綅閫昏緫
             // 绠卞3鍏ュ簱
-            if (type == 3 && factory != null) {
-                //浼樺厛鍏ュ簱鍚稿1妤硷紝鍦�2妤�
-                locMast = locUtils.getLocNoRuleByFactory(type, isEmpty, factory);
-            } else if (type == 6) {
-                //鍗婃垚鍝佺澹冲叆搴擄紝鍏ュ埌鍚稿2妤肩殑370涓簱浣嶉噷
-                locMast = locUtils.getLocNoRuleByFloor(type, floor, isEmpty, 2);
-            } else {
-                //涓嶅姩杩欎釜閫昏緫
-                locMast = getLocNoRule(type, floor, isEmpty, isCurrLev);
-            }
+//            if (type == 3 && factory != null) {
+//                //浼樺厛鍏ュ簱鍚稿1妤硷紝鍦�2妤�
+//                locMast = locUtils.getLocNoRuleByFactory(type, isEmpty, factory);
+//            } else if (type == 6) {
+//                //鍗婃垚鍝佺澹冲叆搴擄紝鍏ュ埌鍚稿2妤肩殑370涓簱浣嶉噷
+//                locMast = locUtils.getLocNoRuleByFloor(type, floor, isEmpty, 2);
+//            } else {
+//                //涓嶅姩杩欎釜閫昏緫
+            locMast = getLocNoRule(type, floor, isEmpty, isCurrLev);
+//            }
             if (locMast != null) {
                 return locMast;
             }
@@ -144,35 +144,45 @@
     /*
     搴撲綅瑙勫垯鏌ユ壘
      */
-    private AgvLocMast getLocByLocRule(AgvWaitPakin agvWaitPakin, int floor) {
-        List<AgvLocRule> agvLocRules = null;
-        agvLocRules = agvLocRuleService.selectList(new EntityWrapper<AgvLocRule>()
-                .eq("matnr", agvWaitPakin.getMatnr())
-                .eq("batch", agvWaitPakin.getModel())
-                .eq("floor", floor));
-        if (Cools.isEmpty(agvLocRules)) {
-            agvLocRules = agvLocRuleService.selectList(new EntityWrapper<AgvLocRule>()
-                    .eq("matnr", agvWaitPakin.getMatnr())
-                    .eq("floor", floor));
-        }
-        if (Cools.isEmpty(agvLocRules)) {
-            return null;
-        }
+    public AgvLocMast getLocByLocRule(int type, int floor, String factory) {
 
-        for (AgvLocRule agvLocRule : agvLocRules) {
+        try {
             EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
-            wrapper.between("row1", agvLocRule.getRowBeg(), agvLocRule.getRowEnd())
-                    .between("bay1", agvLocRule.getBayBeg(), agvLocRule.getBayEnd())
-                    .between("lev1", agvLocRule.getLevBeg(), agvLocRule.getLevEnd())
-                    .eq("floor", floor)
-                    .eq("loc_sts", "O");
-            AgvLocMast agvLocMast = agvLocMastService.selectOne(wrapper);
-            if (!Cools.isEmpty(agvLocMast)) {
-                return agvLocMast;
+            wrapper.eq("loc_sts", "O").eq("loc_type1", type);
+            List<AgvLocMast> agvLocMasts = new ArrayList<>();
+            //涓嶆槸绌烘澘浼樺厛鎵�2灞�
+            if (Cools.isEmpty(factory)) {
+                wrapper.eq("floor", floor).orderBy("lev1", false);
+            } else {
+                //B鏄簩鍘傦紝G鏄笁鍘�
+                switch (factory) {
+                    case "B":
+                        wrapper.eq("floor", floor).orderBy("lev1", true);
+                        break;
+                    case "G":
+                        wrapper.eq("floor", floor).orderBy("lev1", false);
+                        break;
+                    default:
+                        wrapper.eq("floor", floor).orderBy("lev1", true);
+                        break;
+                }
             }
-        }
 
-        return null;
+            //褰撶洰鏍囧簱浣嶆槸1妤�
+            if (floor == 1) {
+                wrapper.orderBy("loc_no", false);
+            }
+            agvLocMasts = agvLocMastService.selectList(wrapper);
+            for (AgvLocMast agvLocMast : agvLocMasts) {
+                AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo()));
+                if (agvLocMast1.getLocSts().equals("O")) {
+                    return agvLocMast1;
+                }
+            }
+            throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�");
+        } catch (Exception e) {
+            throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�");
+        }
     }
 
     /*

--
Gitblit v1.9.1