From 5edbc95f689813cee37ee573af48e59175ddff92 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 21 一月 2025 13:37:28 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/common/service/AgvCommonService.java |  105 +++++++++++++++++++++++++++++++++-------------------
 1 files changed, 67 insertions(+), 38 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..02ad465 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;
             }
@@ -141,38 +141,67 @@
         throw new CoolException(floor + "妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅");
     }
 
-    /*
-    搴撲綅瑙勫垯鏌ユ壘
+    /**
+     * 搴撲綅瑙勫垯鏌ユ壘
      */
-    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;
+            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("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�");
+        }
+    }
+
+    /*
+  搴撲綅瑙勫垯鏌ユ壘
+   */
+    public AgvLocMast getLocByFloorAndLev1(int type, int floor, int lev1) {
+
+        try {
+            EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
+            wrapper.eq("loc_sts", "O").eq("loc_type1", type);
+            wrapper.eq("floor", floor).eq("lev1", lev1);
+
+            List<AgvLocMast> 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;
+                }
+            }
+            return null;
+        } catch (Exception e) {
+            throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�");
+        }
     }
 
     /*

--
Gitblit v1.9.1