From 5e1164518df7f1d3fe1870f9c29b073e33048e4a Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期三, 05 六月 2024 16:47:04 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/service/AgvCommonService.java        |   48 +++++++++++++---
 src/main/webapp/views/home/map2.html                             |    6 +
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java |    4 
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java   |    8 +-
 src/main/java/com/zy/asrs/task/AutoMoveScheduler.java            |   32 +++++-----
 src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java |   31 ++++++++-
 src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java      |   14 ++--
 7 files changed, 99 insertions(+), 44 deletions(-)

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 0660704..591ab0b 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -423,7 +423,7 @@
             throw new CoolException("褰撳墠"+agvLocMast.getBarcode()+"璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�");
         }
         //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-        AgvLocMast locMast = agvCommonService.getLocNo(agvLocMast.getLocType1(),floor);
+        AgvLocMast locMast = agvCommonService.getLocNo(agvLocMast.getLocType1(),floor,false,true);
         if (Cools.isEmpty(locMast)) {
             throw new CoolException("褰撳墠妤煎眰娌℃湁绌哄簱浣�");
         }
@@ -556,7 +556,7 @@
         if (agvWrkMast.getCrnNo() != agvBasDevp.getFloor()) {
             throw new CoolException("璇风Щ鍔ㄥ埌->" + agvWrkMast.getCrnNo() + "妤煎叆搴撶偣鍏ュ簱");
         }
-        AgvLocMast locNo = agvCommonService.getLocNo(3, 1);
+        AgvLocMast locNo = agvCommonService.getLocNo(3, 1,false,true);
         //宸ヤ綔鐘舵��
         agvWrkMast.setWrkSts(211L);
         //鍏ュ嚭搴撶被鍨�
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 6669120..542545d 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -91,7 +91,7 @@
             List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvBasDevp.getBarcode()));
 
             //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(),agvBasDevp.getFloor());
+            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(),agvBasDevp.getFloor(),false,false);
             //鐢熸垚宸ヤ綔妗�
             AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId, agvBasDevp.getLocType2());
             //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
@@ -349,12 +349,13 @@
         }
 
         //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-        AgvLocMast agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor());
+        AgvLocMast agvLocMast = new AgvLocMast();
+
 
         //鏌ヨ鍏ュ簱閫氱煡妗�
         List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectByContainerCode(containerCode);
         if(!Cools.isEmpty(agvWaitPakinList)){
-
+            agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
 
             String devNo = agvBasDevp.getDevNo();
             String locNo = agvLocMast.getLocNo();
@@ -370,6 +371,7 @@
             //鏇存柊婧愮珯鐐圭姸鎬�
             updateAgvBasDevp(agvBasDevp,"R",containerType);
         }else {
+            agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),true,true);
             // 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱
             createWrkMast(10,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),containerCode,now,userId,containerType);
             //鏇存柊婧愮珯鐐圭姸鎬�
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
index dc15777..e3f57a5 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -105,7 +105,7 @@
     public int startAllcationIn(AgvWrkMast agvWrkMast) throws IOException {
         AgvBasDevp basDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo());
         //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-        AgvLocMast locMast = agvCommonService.getLocNo(basDevp.getLocType1(),basDevp.getFloor());
+        AgvLocMast locMast = agvCommonService.getLocNo(basDevp.getLocType1(),basDevp.getFloor(),false,true);
         agvWrkMast.setLocNo(locMast.getLocNo());
         agvWrkMast.setWrkSts(201L);
         agvWrkMastService.updateById(agvWrkMast);
@@ -221,10 +221,31 @@
             agvWrkMast.setWrkNo(-agvWrkMast.getWrkNo());
         }
         agvTaskCreateParam.setTaskCode(agvWrkMast.getWrkNo().toString());
-        if (agvWrkMast.getIoType() == 108 || (agvWrkMast.getIoType() == 109  && agvWrkMast.getWrkSts() == 201) || agvWrkMast.getIoType() == 12) {
-            agvTaskCreateParam.setTaskTyp("F06");
-        } else  {
-            agvTaskCreateParam.setTaskTyp("F01");
+        switch (agvWrkMast.getIoType()) {
+            case 108:
+            case 12:
+                agvTaskCreateParam.setTaskTyp("F06");
+                break;
+            case 109:
+                if (agvWrkMast.getWrkSts() == 201) {
+                    agvTaskCreateParam.setTaskTyp("F06");
+                } else {
+                    agvTaskCreateParam.setTaskTyp("F01");
+                }
+                break;
+            case 1:
+                // 鍏ュ簱浠诲姟鏄彧鏈� 鎺ラ┏浣� -- > 搴撲綅
+                AgvLocMast loc = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvWrkMast.getLocNo()));
+                String locSub = loc.getLocNo().substring(loc.getLocNo().length() - 4).substring(0, 2).substring(0, 2);
+                if ("02".equals(locSub)) {
+                    agvTaskCreateParam.setTaskTyp("F06");
+                } else {
+                    agvTaskCreateParam.setTaskTyp("F01");
+                }
+                break;
+            default:
+                agvTaskCreateParam.setTaskTyp("F01");
+                break;
         }
 
         agvTaskCreateParam.setPositionCodePath(agvTaskParamList);
diff --git a/src/main/java/com/zy/asrs/task/AutoMoveScheduler.java b/src/main/java/com/zy/asrs/task/AutoMoveScheduler.java
index 1c82e8f..5c9af68 100644
--- a/src/main/java/com/zy/asrs/task/AutoMoveScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AutoMoveScheduler.java
@@ -203,24 +203,22 @@
      */
     @Scheduled(cron = "0/2 * * * * ? ")
     private void autoEmptyBack4(){
-//        if (determineFloorConnection(2)){
-            // 鏌ヨ 涓嶄负1妤肩殑绌鸿揣鏋�
-            List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(
-                    new EntityWrapper<AgvLocMast>()
-                            .ne("floor", 1)
-                            .eq("loc_sts","D")
-                            .eq("loc_type1",3));
-            if (agvLocMasts.isEmpty()) {
-                return;
+        // 鏌ヨ 涓嶄负1妤肩殑绌鸿揣鏋�
+        List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(
+                new EntityWrapper<AgvLocMast>()
+                        .ne("floor", 1)
+                        .eq("loc_sts","D")
+                        .eq("loc_type1",3));
+        if (agvLocMasts.isEmpty()) {
+            return;
+        }
+        for (AgvLocMast agvLocMast : agvLocMasts) {
+            try{
+                autoMoveHandler.autoEmptyBack4(agvLocMast);
+            } catch (Exception e){
+                log.error("搴撲綅鍙�"+agvLocMast.getLocNo()+"绌烘澘鑷姩鍥炲簱 搴撲綅-鎺ラ┏鐐�  搴撲綅-鍚稿杞﹂棿,澶勭悊澶辫触锛�===銆嬪紓甯稿師鍥狅細"+e.getMessage());
             }
-            for (AgvLocMast agvLocMast : agvLocMasts) {
-                try{
-                    autoMoveHandler.autoEmptyBack4(agvLocMast);
-                } catch (Exception e){
-                    log.error("搴撲綅鍙�"+agvLocMast.getLocNo()+"绌烘澘鑷姩鍥炲簱 搴撲綅-鎺ラ┏鐐�  搴撲綅-鍚稿杞﹂棿,澶勭悊澶辫触锛�===銆嬪紓甯稿師鍥狅細"+e.getMessage());
-                }
-            }
-//        }
+        }
     }
 
     private boolean determineFloorConnection(Integer floor){
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 1a40d13..1d2ebdc 100644
--- a/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java
@@ -55,7 +55,7 @@
         doHandMove2(agvWrkMast);
         return SUCCESS;
     }
-
+    //鏍规嵁搴撲綅鐨刲octype鍊煎彂閫佷换鍔�--寮冪敤
     private ReturnT<String> doAutoMove(AgvLocMast agvLocMast) {
         Date now = new Date();
         //鏌ヨ宸ヤ綔妗�
@@ -64,7 +64,7 @@
             throw new CoolException("褰撳墠"+agvLocMast.getBarcode()+"璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�");
         }
         //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-        AgvLocMast LocMast = agvCommonService.getLocNo(3,agvLocMast.getLocType3());
+        AgvLocMast LocMast = agvCommonService.getLocNo(3,agvLocMast.getLocType3(),false,true);
         //鐢熸垚宸ヤ綔妗�
         AgvWrkMast mast = new AgvWrkMast();
         //宸ヤ綔鐘舵��
@@ -182,7 +182,7 @@
     private ReturnT<String> doAutoMove2(AgvWrkMast agvWrkMast) {
         Date now = new Date();
         //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo());
+        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,true);
         if (Cools.isEmpty(locMast)) {
             throw new CoolException("鏆傛棤搴撲綅");
         }
@@ -274,7 +274,7 @@
         Date now = new Date();
         AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo());
         //妫�绱㈢┖闂叉帴椹充綅锛岄�夋嫨鍚堥�傜殑鎺ラ┏浣�
-        AgvLocMast locMast = agvCommonService.getLocNo(3, 1);
+        AgvLocMast locMast = agvCommonService.getLocNo(3, 1,true,true);
         if (Cools.isEmpty(locMast)) {
             throw new CoolException("1妤兼殏鏃犵┖搴撲綅");
         }
@@ -299,7 +299,7 @@
             throw new CoolException("褰撳墠"+agvLocMast.getBarcode()+"璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�");
         }
         //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-        AgvLocMast LocMast = agvCommonService.getLocNo(3,1);
+        AgvLocMast LocMast = agvCommonService.getLocNo(3,1,true,true);
         //鐢熸垚宸ヤ綔妗�
         AgvWrkMast mast = new AgvWrkMast();
         //宸ヤ綔鐘舵��
@@ -361,7 +361,7 @@
             ioType = 109;
         } else {
             //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-            locMast = agvCommonService.getLocNo(3,1);
+            locMast = agvCommonService.getLocNo(3,1,true,true);
             locNo = locMast.getLocNo();
             wrkSts = 201L;
             ioType = 109;
@@ -434,7 +434,7 @@
             //鍏ュ嚭搴撶被鍨�
             mast.setIoType(109);
             //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-            AgvLocMast locMast = agvCommonService.getLocNo(3,1);
+            AgvLocMast locMast = agvCommonService.getLocNo(3,1,true,true);
             mast.setLocNo(locMast.getLocNo());
             updateAgvLocMast(locMast,"S");
         } else {
diff --git a/src/main/java/com/zy/common/service/AgvCommonService.java b/src/main/java/com/zy/common/service/AgvCommonService.java
index f756a9a..8efe2b6 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;
 
 /**
@@ -73,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)){
@@ -113,16 +114,16 @@
 
         try{
             // 寮�濮嬫煡鎵惧簱浣� ==============================>>
-            locMast = getLocNoRule(type,floor);
+            locMast = getLocNoRule(type,floor,isEmpty,isCurrLev);
             if (locMast != null) {
                 return locMast;
             }
         }catch (Exception e){
-            throw new CoolException("妤煎眰鍙凤細"+floor+"锛涜妤煎眰娌℃湁绌哄簱浣�===>"+e.getMessage());
+            throw new CoolException(floor+"妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅===>"+e.getMessage());
         }
 
         //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
-        throw new CoolException("妤煎眰鍙凤細"+floor+"锛涜妤煎眰娌℃湁绌哄簱浣�");
+        throw new CoolException(floor+"妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅");
     }
 
     /*
@@ -233,12 +234,41 @@
     }
 
     //闅忔満鍙栦竴涓揣浣�
-    private AgvLocMast getLocNoRule(int type,int floor){
+    private AgvLocMast getLocNoRule(int type,int floor,boolean isEmpty,boolean isCurrLev){
+        Boolean orderBy = false;
+        int levCount = 0;
+        int times = 1;
+        if (floor == 1) {
+            orderBy = true;
+            levCount = 2;
+        } else {
+            orderBy = false;
+            levCount = 1;
+        }
         try{
-            List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(new EntityWrapper<AgvLocMast>()
-                    .eq("loc_sts", "O")
-                    .eq("floor", floor)
-                    .eq("loc_type1", type));
+            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 {
+                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")){
diff --git a/src/main/webapp/views/home/map2.html b/src/main/webapp/views/home/map2.html
index e8e0c00..25a0932 100644
--- a/src/main/webapp/views/home/map2.html
+++ b/src/main/webapp/views/home/map2.html
@@ -591,7 +591,6 @@
             currentLev: {
                 deep: true,
                 handler(val) {
-                    console.log(val)
                     this.init()
                     if (this.searchMatnr != ""
                         || this.searchOrderNo != ""
@@ -605,6 +604,11 @@
             currentFloor: {
                 deep: true,
                 handler(val) {
+                    if (val == 1) {
+                        this.floorList = [1,2]
+                    } else {
+                        this.floorList = [1]
+                    }
                     this.init()
                     if (this.searchMatnr != ""
                         || this.searchOrderNo != ""

--
Gitblit v1.9.1