From 03b0ea7369dcba72b560ec80f941f9d29ff7b9a5 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期五, 06 十二月 2024 16:21:47 +0800
Subject: [PATCH] 修复库位类型字段错误并优化工作档状态检查逻辑

---
 src/main/java/com/zy/common/service/AgvCommonService.java |  158 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 147 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/zy/common/service/AgvCommonService.java b/src/main/java/com/zy/common/service/AgvCommonService.java
index ccf1f43..e7aded0 100644
--- a/src/main/java/com/zy/common/service/AgvCommonService.java
+++ b/src/main/java/com/zy/common/service/AgvCommonService.java
@@ -9,6 +9,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -31,6 +32,8 @@
     private MatService matService;
     @Autowired
     private LocRuleService locRuleService;
+    @Autowired
+    AgvBasDevpService agvBasDevpService;
 
     public int getWorkNo(Integer wrkMk) {
         AgvWrkLastno wrkLastno = agvWrkLastnoService.selectById(wrkMk);
@@ -71,7 +74,7 @@
      * 妫�绱㈠簱浣嶅彿
      * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
      */
-    public AgvLocMast getLocNo(int type, int floor) {
+    public AgvLocMast getLocNo(int type, int floor,boolean isEmpty,boolean isCurrLev) {
         // 鐩爣搴撲綅
         AgvLocMast locMast = null;
 //        if(Cools.isEmpty(agvWaitPakinList)){
@@ -109,14 +112,18 @@
 //        }
 
 
-        // 寮�濮嬫煡鎵惧簱浣� ==============================>>
-        locMast = getLocNoRule(type,floor);
-        if (locMast != null) {
-            return locMast;
+        try{
+            // 寮�濮嬫煡鎵惧簱浣� ==============================>>
+            locMast = getLocNoRule(type,floor,isEmpty,isCurrLev);
+            if (locMast != null) {
+                return locMast;
+            }
+        }catch (Exception e){
+            throw new CoolException(floor+"妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅===>"+e.getMessage());
         }
 
         //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
-        throw new CoolException("璇ユゼ灞傛病鏈夌┖搴撲綅");
+        throw new CoolException(floor+"妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅");
     }
 
     /*
@@ -227,12 +234,141 @@
     }
 
     //闅忔満鍙栦竴涓揣浣�
-    private AgvLocMast getLocNoRule(int type,int floor){
-        return agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>()
-                .eq("loc_sts","O")
-                .eq("floor",floor)
-                .eq("loc_type1",type));
+    private AgvLocMast getLocNoRule(int type,int floor,boolean isEmpty,boolean isCurrLev){
+        Boolean orderBy = false;
+        int levCount = 0;
+        int times = 1;
+        if (floor == 1 || floor >= 4) {
+            if (floor >= 4 ) {
+                floor = 1;
+            }
+            orderBy = true;
+            levCount = 2;
+        } else {
+            orderBy = false;
+            levCount = 1;
+        }
+        try{
+            EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
+            wrapper.eq("loc_sts", "O").eq("loc_type1", type);
+            List<AgvLocMast> agvLocMasts = new ArrayList<>();
+            //涓嶆槸绌烘澘浼樺厛鎵�2灞�
+            if (isEmpty) {
+                wrapper.eq("floor", floor).eq("lev1",1);
+            } else {
+                if (isCurrLev) {
+                    wrapper.eq("floor", floor).eq("lev1",1);
+                } else {
+                    wrapper.eq("floor", floor).orderBy("lev1",!orderBy);
+                }
+            }
+
+
+            //褰撶洰鏍囧簱浣嶆槸1妤�
+            if(floor == 1) {
+                wrapper.orderBy("loc_no",false);
+            }
+            agvLocMasts = agvLocMastService.selectList(wrapper);
+            //鏄惁褰撳墠灞�
+            if (Cools.isEmpty(agvLocMasts) && !isCurrLev) {
+                if (times < levCount) {
+                    times++;
+                    return getLocNoRule(type,floor,isEmpty,isCurrLev);
+                }
+            }
+            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("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�");
+        }
+    }
+    /**
+     * 妫�绱㈠簱浣嶅彿
+     * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
+     */
+    public AgvBasDevp getDevpNo(int type, int floor) {
+        // 鐩爣搴撲綅
+        AgvBasDevp basDevp = null;
+
+        // 寮�濮嬫煡鎵惧簱浣� ==============================>>
+        basDevp = getDevpNoRule(type,floor);
+        if (basDevp != null) {
+            return basDevp;
+        }
+
+        //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
+        throw new CoolException("妤煎眰鍙凤細"+floor+"锛涜妤煎眰娌℃湁绌烘帴椹充綅");
     }
 
 
+    /**
+     * 妫�绱㈠簱浣嶅彿
+     * @return locNo 妫�绱㈣嚜鍔ㄦ帴椹充綅
+     */
+    public AgvBasDevp getDevpNo(int type, int floor, String auto) {
+        // 鐩爣搴撲綅
+        AgvBasDevp basDevp = null;
+
+        // 寮�濮嬫煡鎵惧簱浣� ==============================>>
+        basDevp = getDevpNoAuto(type,floor,auto);
+        if (basDevp != null) {
+            return basDevp;
+        }
+
+        //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
+        throw new CoolException("妤煎眰鍙凤細"+floor+"锛涜妤煎眰娌℃湁绌烘帴椹充綅");
+    }
+
+    /**
+     * 妫�绱㈠簱浣嶅彿
+     * @return locNo 妫�绱㈠彲鍏ユ帴椹充綅
+     */
+    public AgvBasDevp getDevpNo(int type, int floor, String auto ,String inEable) {
+        // 鐩爣搴撲綅
+        AgvBasDevp basDevp = null;
+
+        // 寮�濮嬫煡鎵惧簱浣� ==============================>>
+        basDevp = getDevpNoInEable(type,floor,inEable);
+        if (basDevp != null) {
+            return basDevp;
+        }
+
+        //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
+        return basDevp;
+    }
+
+    //闅忔満鍙栦竴涓揣浣�
+    private AgvBasDevp getDevpNoRule(int type,int floor){
+        return agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>()
+                .eq("loc_sts","O")
+                .eq("floor",floor)
+                .eq("loc_type1",type)
+                .like("dev_no","DB"));
+    }
+
+    //闅忔満鍙栦竴涓揣浣�
+    private AgvBasDevp getDevpNoAuto(int type,int floor,String auto){
+        return agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>()
+                .eq("loc_sts","O")
+                .eq("floor",floor)
+                .eq("loc_type1",type)
+                .eq("autoing",auto)
+                .like("dev_no","DB"));
+    }
+
+    //闅忔満鍙栦竴涓揣浣�
+    private AgvBasDevp getDevpNoInEable(int type,int floor,String inEable){
+        return agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>()
+                .eq("loc_sts","O")
+                .eq("floor",floor)
+                .eq("loc_type1",type)
+                .eq("in_enable",inEable)
+                .like("dev_no","DB"));
+    }
+
 }

--
Gitblit v1.9.1