From 0c9b8fe24e495da1f5e3362fa6b36acc41617cb7 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 29 六月 2023 11:35:19 +0800
Subject: [PATCH] 优化寻车,出库问题

---
 src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java  |    2 
 src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java        |    5 ++
 src/main/java/com/zy/asrs/service/WrkMastService.java          |    4 ++
 src/main/java/com/zy/asrs/utils/Utils.java                     |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java    |   42 ++++++++++++++++++---
 src/main/java/com/zy/core/thread/ShuttleThread.java            |   13 +++++-
 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java |    5 ++
 src/main/java/com/zy/core/enums/ShuttleTaskModeType.java       |    1 
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java            |    4 ++
 src/main/resources/mapper/WrkMastMapper.xml                    |    7 +++
 src/main/java/com/zy/asrs/controller/LiftController.java       |    1 
 src/main/webapp/views/lift.html                                |    2 +
 12 files changed, 78 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/LiftController.java b/src/main/java/com/zy/asrs/controller/LiftController.java
index 487738c..716ce31 100644
--- a/src/main/java/com/zy/asrs/controller/LiftController.java
+++ b/src/main/java/com/zy/asrs/controller/LiftController.java
@@ -121,6 +121,7 @@
             vo.setLineEndHasStock(liftProtocol.getLineEndHasStock());
             vo.setInConveyLineCardTrayAlarm(liftProtocol.getInConveyLineCardTrayAlarm());
             vo.setOutConveyLineCardTrayAlarm(liftProtocol.getOutConveyLineCardTrayAlarm());
+            vo.setShuttleNo(liftProtocol.getShuttleNo().intValue());
         }
         return R.ok().add(list);
     }
diff --git a/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java
index 17b006a..b24c1c4 100644
--- a/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java
+++ b/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java
@@ -56,6 +56,11 @@
      */
     private Boolean outConveyLineCardTrayAlarm;
 
+    /**
+     * 绌挎杞﹀彿
+     */
+    private Integer shuttleNo;
+
     public String getLineFrontHasStock$() {
         if (this.lineFrontHasStock == null) {
             return "N";
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index b474982..0bf2156 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.mapper;
 
 import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.WrkMast;
 import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Repository;
@@ -105,4 +106,7 @@
     WrkMast selectByWorkNo372428(Integer workNo);
 
     List<WrkMast> selectBy2125();
+
+    //鏌ヨ鎸囧畾妤煎眰寰呭垎閰嶈溅杈嗙殑浠诲姟
+    List<LocMast> selectNoShuttleWrkByLev(String lev);
 }
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index f5c3e5c..3814bd2 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.service;
 
 import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.WrkMast;
 
 import java.util.List;
@@ -13,4 +14,7 @@
 
     List<WrkMast> selectToBeHistoryData();
 
+    //鏌ヨ鎸囧畾妤煎眰寰呭垎閰嶈溅杈嗙殑浠诲姟
+    List<LocMast> selectNoShuttleWrkByLev(Integer lev);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 3d831aa..d0c1937 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -53,6 +53,8 @@
     @Autowired
     private WrkMastMapper wrkMastMapper;
     @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
     private WrkDetlService wrkDetlService;
     @Autowired
     private LocMastService locMastService;
@@ -1100,7 +1102,7 @@
 
                             if (wrkMastMapper.updateById(wrkMast) > 0) {
                                 //涓嬪彂浠诲姟
-                                MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+//                                MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
                             }
                         }else {
                             //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿(灏嗗皬杞︾Щ鍔ㄥ埌鎻愬崌鏈轰綅缃�)
@@ -1278,16 +1280,23 @@
             //鍚屼竴妤煎眰锛屾病鏈夌┖闂茬┛姊溅锛屽彧鑳戒粠鍏朵粬妤煎眰璋冨害
             //瀵绘壘绂讳换鍔℃渶杩戠殑绌挎杞�
             for (ShuttleThread shuttleThread : diffLev) {
-                if (recentShuttle == null) {//鏈�杩戠┛姊溅涓虹┖锛屽垯榛樿璧嬩簣涓烘渶杩戠┛姊溅
-                    recentShuttle = shuttleThread;
-                }
 
                 //褰撳墠绌挎杞﹀簱浣嶅彿
                 String currentLocNo = shuttleThread.getShuttleProtocol().getCurrentLocNo();
                 int currentLev = Utils.getLev(currentLocNo);
+                List<LocMast> locMasts = wrkMastService.selectNoShuttleWrkByLev(currentLev);//鍒ゆ柇褰撳墠绌挎杞︽ゼ灞傛槸鍚︽湁寰呭垎閰嶈溅杈嗙殑浠诲姟锛屽鏋滄湁鍒欎笉鍒嗛厤杩欒締杞�
+                if (locMasts.size() > 0) {
+                    //瀛樺湪鍏朵粬浠诲姟锛岃烦杩囪繖杈嗚溅
+                    continue;
+                }
+
+                if (recentShuttle == null) {//鏈�杩戠┛姊溅涓虹┖锛屽垯榛樿璧嬩簣涓烘渶杩戠┛姊溅
+                    recentShuttle = shuttleThread;
+                }
                 //鐩墠鏈�杩戠┛姊溅搴撲綅鍙�
                 String recentLocNo = recentShuttle.getShuttleProtocol().getCurrentLocNo();
                 int recentLev = Utils.getLev(recentLocNo);
+
 
                 //褰撳墠鏈�杩戝洓鍚戠┛姊溅鍒板綋鍓嶈溅瀛愭墍鍦ㄦゼ灞傜殑鎻愬崌鏈哄彛璺濈
                 List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentLocNo, Utils.levToOutInStaLocNo(recentLev), NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleThread.getSlave().getId(), recentLev));//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘
@@ -1330,6 +1339,8 @@
             ) {
                 //鏍囪澶嶄綅
                 shuttleProtocol.setPakMk(true);
+
+                ShuttleAssignCommand assignCommand = shuttleProtocol.getAssignCommand();
 
                 //灏嗕换鍔℃。鏍囪涓哄畬鎴�
                 WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo().intValue());
@@ -1383,6 +1394,23 @@
 
                     } else {
                         News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
+                    }
+                }
+
+                if (assignCommand != null) {
+                    if (assignCommand.getTaskMode().intValue() == ShuttleTaskModeType.AVOID.id) {
+                        //閬胯浠诲姟
+                        //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
+                        shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
+                        //浠诲姟鍙锋竻闆�
+                        shuttleProtocol.setTaskNo((short) 0);
+                        //婧愬簱浣嶆竻闆�
+                        shuttleProtocol.setSourceLocNo(null);
+                        //鐩爣搴撲綅娓呴浂
+                        shuttleProtocol.setLocNo(null);
+                        //浠诲姟鎸囦护娓呴浂
+                        shuttleProtocol.setAssignCommand(null);
+                        News.info("鍥涘悜绌挎杞﹂伩璁╀换鍔″凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
                     }
                 }
 
@@ -1744,6 +1772,8 @@
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                             }
                             wrkMast.setWrkSts(4L);
+                            //浠诲姟鍙锋竻闆�
+                            liftProtocol.setTaskNo((short) 0);
                             break;
                         case 7://7.鎻愬崌鏈鸿縼绉诲皬杞︿腑 ==> 8.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴�
                             if (liftProtocol.getLev().intValue() != lev) {
@@ -1763,6 +1793,8 @@
                             }
                             wrkMast.setWrkSts(29L);
                             wrkMast.setWrkSts(34L);//34.鍑哄簱瀹屾垚锛屾殏鏃跺厛鐩存帴瀹屾垚鍑哄簱宸ヤ綔妗o紝鍚庣画闇�瑕佹牴鎹緭閫佺嚎缁欏嚭鐨勭姸鎬佹潵纭畾34.鍑哄簱瀹屾垚鐘舵��
+                            //浠诲姟鍙锋竻闆�
+                            liftProtocol.setTaskNo((short) 0);
                             break;
                         default:
                     }
@@ -1772,8 +1804,6 @@
                         liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
                         //浠诲姟鎸囦护娓呴浂
                         liftProtocol.setAssignCommand(null);
-                        //浠诲姟鍙锋竻闆�
-                        liftProtocol.setTaskNo((short) 0);
                         News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo());
                     } else {
                         News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo());
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index 63e7cd2..806bf19 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.WrkMastService;
@@ -27,4 +28,8 @@
         return this.baseMapper.selectToBeHistoryData();
     }
 
+    @Override
+    public List<LocMast> selectNoShuttleWrkByLev(Integer lev) {
+        return this.baseMapper.selectNoShuttleWrkByLev("%" + lev);
+    }
 }
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index d862cba..bd681ed 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -582,7 +582,7 @@
             ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
             assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
             assignCommand.setTaskNo((short) commonService.getWorkNo(7));//浠诲姟鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id.shortValue());//绉诲姩鍒扮洰鏍囧簱浣�
+            assignCommand.setTaskMode(ShuttleTaskModeType.AVOID.id.shortValue());//閬胯浠诲姟
             assignCommand.setSourceLocNo(startLocNo);//婧愬簱浣�
 
             //鍒嗛厤鐩爣搴撲綅
diff --git a/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java b/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java
index 0ffce57..340dad8 100644
--- a/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java
@@ -19,6 +19,7 @@
     MOVE_LOC_NO(14, "绉诲姩鍒扮洰鏍囧簱浣�"),
     CHARGE(15, "鍏呯數"),
     MOVE_LIFT(16, "绉诲姩鍒版彁鍗囨満"),
+    AVOID(17, "閬胯浠诲姟"),
     ;
 
     public Integer id;
diff --git a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
index 3cfe21e..065926c 100644
--- a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
@@ -251,7 +251,7 @@
                 if (chargeLine == null) {
                     return false;
                 }
-                return this.getBatteryPower$() > chargeLine;
+                return this.getBatteryPower$() >= chargeLine;
             } catch (Exception e) {
                 News.error("fail", e);
                 return false;
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index 88b5ab8..029180e 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -804,6 +804,10 @@
             }
         }
 
+        if (commands.size() == 0) {
+            return false;
+        }
+
         //鍙栧嚭鍛戒护
         ShuttleCommand command = commands.get(commandStep);
 
@@ -1069,8 +1073,13 @@
     }
 
     private boolean executeLift(LiftThread liftThread, LiftProtocol liftProtocol, ShuttleRedisCommand redisCommand, Integer shuttleLocNoLev) {//璋冨害鎻愬崌鏈�
-        if (liftProtocol.getRunning()) {
-            //鎻愬崌鏈鸿繍琛屼腑锛岀姝笅鍙�
+        if (!liftProtocol.isIdle()) {
+            //鎻愬崌鏈轰笉绌洪棽绂佹涓嬪彂
+            return false;
+        }
+
+        if (liftProtocol.getPlatShuttleCheck()) {
+            //鎻愬崌鏈哄唴鏈夎溅绂佹涓嬪彂
             return false;
         }
 
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 10794cc..0917047 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -272,4 +272,11 @@
         where wrk_sts in (21,25)
         order by io_pri desc,wrk_sts desc
     </select>
+
+    <select id="selectNoShuttleWrkByLev" resultMap="BaseResultMap">
+        select * from dbo.asr_wrk_mast
+        where shuttle_no is null
+        and (wrk_sts = 2 and loc_no like #{lev}) or (wrk_sts = 21 and source_loc_no like #{lev})
+        order by io_pri desc,wrk_sts desc
+    </select>
 </mapper>
diff --git a/src/main/webapp/views/lift.html b/src/main/webapp/views/lift.html
index c704819..b8f5ea6 100644
--- a/src/main/webapp/views/lift.html
+++ b/src/main/webapp/views/lift.html
@@ -65,6 +65,7 @@
                     <th>杩涜緭閫佺嚎鍗℃墭鐩樻姤璀�</th>
                     <th>鍑鸿緭閫佺嚎鍗℃墭鐩樻姤璀�</th>
                     <th>浣滀笟鏍囪</th>
+                    <th>绌挎杞﹀彿</th>
                 </tr>
                 </thead>
                 <tbody>
@@ -369,6 +370,7 @@
                         setVal(tr.children("td").eq(7), table[i-1].inConveyLineCardTrayAlarm$);
                         setVal(tr.children("td").eq(8), table[i-1].outConveyLineCardTrayAlarm$);
                         setVal(tr.children("td").eq(9), table[i-1].pakMk);
+                        setVal(tr.children("td").eq(10), table[i-1].shuttleNo);
                     }
                 } else if (res.code === 403){
                     window.location.href = baseUrl+"/login";

--
Gitblit v1.9.1