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 +++++++++++++++++++++++------------------
 1 files changed, 46 insertions(+), 36 deletions(-)

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