From 298ccf07fc34186c690d5cee51d1c66f55e9263f Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 28 五月 2025 14:19:06 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java | 3
src/main/java/com/zy/asrs/controller/ConsoleController.java | 63 ++++++++++++++-
src/main/java/com/zy/asrs/service/WrkMastService.java | 6
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 63 +++++----------
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | 6
src/main/webapp/views/console.html | 25 ++++++
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 6
src/main/java/com/zy/core/action/ForkLiftAction.java | 32 ++++++++
src/main/resources/mapper/WrkMastMapper.xml | 8 -
9 files changed, 150 insertions(+), 62 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java
index a7beef5..821fb46 100644
--- a/src/main/java/com/zy/asrs/controller/ConsoleController.java
+++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -7,17 +7,26 @@
import com.core.common.R;
import com.zy.asrs.domain.param.SystemSwitchParam;
import com.zy.asrs.entity.BasMap;
+import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.BasMapService;
+import com.zy.asrs.service.WrkMastService;
import com.zy.common.model.MapNode;
import com.zy.common.model.enums.NavigationMapType;
import com.zy.common.utils.NavigateMapData;
import com.zy.common.utils.RedisUtil;
+import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.RedisKeyType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.ForkLiftSlave;
+import com.zy.core.model.ShuttleSlave;
+import com.zy.core.model.protocol.ForkLiftProtocol;
+import com.zy.core.model.protocol.ShuttleProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.properties.SystemProperties;
+import com.zy.core.thread.ForkLiftThread;
+import com.zy.core.thread.ShuttleThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@@ -33,15 +42,15 @@
public class ConsoleController {
@Autowired
- private SlaveProperties slaveProperties;
- @Autowired
private BasMapService basMapService;
@Autowired
private RedisUtil redisUtil;
- @Value("${super.pwd}")
- private String superPwd;
@Autowired
private NavigateMapData navigateMapData;
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private SlaveProperties slaveProperties;
@PostMapping("/system/running/status")
@ManagerAuth(memo = "绯荤粺杩愯鐘舵��")
@@ -122,4 +131,48 @@
return R.ok();
}
+ /**
+ * 浠诲姟妫�娴�
+ */
+ @GetMapping("/checkTask")
+ @ManagerAuth(memo = "浠诲姟妫�娴�")
+ public R checkTask() {
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<>());
+ if (!wrkMasts.isEmpty()) {
+ return R.error("瀛樺湪鏈粨鏉熶换鍔�");
+ }
+
+ for (ShuttleSlave slave : slaveProperties.getShuttle()) {
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId());
+ if (shuttleThread == null) {
+ continue;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ if (shuttleProtocol.getTaskNo() > 0) {
+ return R.error(slave.getId() + "鍙峰皬杞﹀瓨鍦ㄥ伐浣滃彿");
+ }
+ }
+
+ for (ForkLiftSlave slave : slaveProperties.getForkLift()) {
+ ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, slave.getId());
+ if (forkLiftThread == null) {
+ continue;
+ }
+ ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
+ if (forkLiftProtocol == null) {
+ continue;
+ }
+
+ if (forkLiftProtocol.getTaskNo() > 0) {
+ return R.error(slave.getId() + "鍙疯揣鍙夋彁鍗囨満瀛樺湪宸ヤ綔鍙�");
+ }
+ }
+
+ return R.ok();
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 9dd9c7e..983cb84 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -28,14 +28,14 @@
List<WrkMast> selectBy2125();
- //鏌ヨ鎸囧畾妤煎眰寰呭垎閰嶈溅杈嗙殑浠诲姟
- List<WrkMast> selectNoShuttleWrkByLev(String lev);
+ //鏌ヨ鎸囧畾妤煎眰浠诲姟
+ List<WrkMast> selectWrkByLev(String lev);
List<WrkMast> selectShuttleWrkByLev(String lev);
List<WrkMast> selectShuttleOutWrkByLev(String lev);
- WrkMast selectLiftWrkMast(Integer liftNo);
+ List<WrkMast> selectLiftWrkMast(Integer liftNo);
List<WrkMast> selectLocToLocWrkMast();//鏌ヨ搴撲綅绉昏浆宸ヤ綔妗�
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index f9f57f2..9f0081a 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -11,8 +11,8 @@
Boolean judgeInbound(WrkMast wrkMast);
- //鏌ヨ鎸囧畾妤煎眰寰呭垎閰嶈溅杈嗙殑浠诲姟
- List<WrkMast> selectNoShuttleWrkByLev(Integer lev);
+ //鏌ヨ鎸囧畾妤煎眰浠诲姟
+ List<WrkMast> selectWrkByLev(Integer lev);
//鏌ヨ鎸囧畾妤煎眰宸插垎閰嶈溅杈嗙殑浠诲姟
List<WrkMast> selectShuttleWrkByLev(Integer lev);
@@ -32,6 +32,6 @@
List<WrkMast> selectShuttleMoveWrk();
- WrkMast selectLiftWrkMast(Integer liftNo);
+ List<WrkMast> selectLiftWrkMast(Integer liftNo);
}
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 c21959d..fccd9c9 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -681,6 +681,13 @@
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
return false;
}
+
+ //鐢宠鎻愬崌鏈鸿祫婧�
+ boolean applyForkLift = forkLiftAction.applyForkLift(liftNo, wrkMast.getWrkNo());
+ if(!applyForkLift) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀敵璇锋彁鍗囨満璧勬簮澶辫触锛岀姝㈠叆搴�", wrkMast.getWrkNo());
+ return false;
+ }
}
ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
@@ -700,15 +707,6 @@
if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) {
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡叆搴撴ā寮忥紝绂佹鍏ュ簱", wrkMast.getWrkNo());
return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
}
//妫�娴嬫ゼ灞傛槸鍚︽湁鍙敤绌挎杞�
@@ -754,7 +752,6 @@
assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑 1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
- wrkMast.setLiftNo(liftNo);
wrkMast.setSystemMsg("");//娓呯┖娑堟伅
wrkMast.setModiTime(now);
if (wrkMastService.updateById(wrkMast)) {
@@ -835,6 +832,12 @@
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
return false;
}
+ //鐢宠鎻愬崌鏈鸿祫婧�
+ boolean applyForkLift = forkLiftAction.applyForkLift(liftSta.getLiftNo(), wrkMast.getWrkNo());
+ if(!applyForkLift) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀敵璇锋彁鍗囨満璧勬簮澶辫触锛岀姝㈡墽琛屽嚭搴�", wrkMast.getWrkNo());
+ return false;
+ }
}
ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
@@ -854,15 +857,6 @@
if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) {
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡嚭搴撴ā寮忥紝绂佹鍑哄簱", wrkMast.getWrkNo());
return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
}
//璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿嚭搴�
@@ -885,7 +879,6 @@
assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
wrkMast.setWrkSts(WrkStsType.OUTBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑 103.鐢熸垚鍏ュ簱浠诲姟 ==> 104.鎻愬崌鏈烘惉杩愪腑
- wrkMast.setLiftNo(liftNo);
wrkMast.setShuttleNo(null);//閲婃斁灏忚溅
wrkMast.setSystemMsg("");//娓呯┖娑堟伅
wrkMast.setModiTime(new Date());
@@ -1545,18 +1538,12 @@
}
if (wrkMast.getLiftNo() == null) {
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftSta.getLiftNo());
- if (liftWrkMast != null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ //鐢宠鎻愬崌鏈鸿祫婧�(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
+ boolean applyForkLift = forkLiftAction.applyForkLift(liftSta.getLiftNo(), wrkMast.getWrkNo());
+ if(!applyForkLift) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀敵璇锋彁鍗囨満璧勬簮澶辫触锛岀姝㈢Щ鍔ㄨ嚦绔欑偣", wrkMast.getWrkNo());
+ return false;
}
-
- wrkMast.setModiTime(now);
- wrkMast.setLiftNo(liftSta.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMastService.updateById(wrkMast);
- return false;
}
//*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
@@ -1632,14 +1619,6 @@
if (!forkLiftThread.isIdle()) {
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
return false;
- }
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
}
//鑾峰彇婧愮珯
@@ -1940,9 +1919,9 @@
continue;
}
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
+ //鐢宠鎻愬崌鏈鸿祫婧�
+ boolean applyForkLift = forkLiftAction.applyForkLift(liftNo, null);
+ if(!applyForkLift) {
continue;//鎻愬崌鏈哄凡琚粦瀹氾紝涓嶅啀鎵ц棰勮皟搴︿换鍔�
}
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 bed7f63..625a066 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -44,8 +44,8 @@
}
@Override
- public List<WrkMast> selectNoShuttleWrkByLev(Integer lev) {
- return this.baseMapper.selectNoShuttleWrkByLev("%" + lev);
+ public List<WrkMast> selectWrkByLev(Integer lev) {
+ return this.baseMapper.selectWrkByLev("%" + lev);
}
@Override
@@ -122,7 +122,7 @@
}
@Override
- public WrkMast selectLiftWrkMast(Integer liftNo) {
+ public List<WrkMast> selectLiftWrkMast(Integer liftNo) {
return this.baseMapper.selectLiftWrkMast(liftNo);
}
}
diff --git a/src/main/java/com/zy/core/action/ForkLiftAction.java b/src/main/java/com/zy/core/action/ForkLiftAction.java
index e7c6a4b..9d7a7b3 100644
--- a/src/main/java/com/zy/core/action/ForkLiftAction.java
+++ b/src/main/java/com/zy/core/action/ForkLiftAction.java
@@ -154,4 +154,36 @@
return response;
}
+ //鐢宠鎻愬崌鏈鸿祫婧�
+ public synchronized boolean applyForkLift(Integer liftNo, Integer waitBindTaskNo) {
+ ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
+ if (forkLiftThread == null) {
+ return false;
+ }
+ ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
+ if (forkLiftProtocol == null) {
+ return false;
+ }
+ if (!forkLiftThread.isIdle()) {
+ return false;
+ }
+
+ List<WrkMast> wrkMasts = wrkMastService.selectLiftWrkMast(liftNo);
+ if (!wrkMasts.isEmpty()) {
+ return false;
+ }
+
+ if (waitBindTaskNo != null) {
+ WrkMast wrkMast = wrkMastService.selectByWorkNo(waitBindTaskNo);
+ if (wrkMast == null) {
+ return false;
+ }
+
+ wrkMast.setLiftNo(liftNo);
+ wrkMast.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ }
+ return true;
+ }
+
}
diff --git a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
index 2600041..5e0d93c 100644
--- a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
+++ b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
@@ -168,7 +168,8 @@
//褰撳墠绌挎杞﹀簱浣嶅彿
String currentLocNo = shuttleProtocol.getCurrentLocNo();
int currentLev = Utils.getLev(currentLocNo);
- List<WrkMast> wrkMasts1 = wrkMastService.selectNoShuttleWrkByLev(currentLev);//鍒ゆ柇褰撳墠绌挎杞︽ゼ灞傛槸鍚︽湁寰呭垎閰嶈溅杈嗙殑浠诲姟锛屽鏋滄湁鍒欎笉鍒嗛厤杩欒締杞�
+ //鍒ゆ柇褰撳墠妤煎眰鏄惁鏈変换鍔★紝濡傛灉鏈夊垯涓嶅垎閰嶈繖杈嗚溅
+ List<WrkMast> wrkMasts1 = wrkMastService.selectWrkByLev(currentLev);
int shuttleCount = this.getShuttleCountByLev(currentLev);//鑾峰彇绌挎杞︽ゼ灞傝溅杈嗘暟閲�
if (!wrkMasts1.isEmpty() && shuttleCount <= 1) {
//瀛樺湪鍏朵粬浠诲姟涓斿彲鐢ㄥ皬杞︽暟閲忓皬浜庣瓑浜�1锛岃烦杩囪繖杈嗚溅
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 727c376..424ef07 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -73,10 +73,10 @@
order by io_pri desc,wrk_sts desc
</select>
- <select id="selectNoShuttleWrkByLev" resultMap="BaseResultMap">
+ <select id="selectWrkByLev" resultMap="BaseResultMap">
select * from asr_wrk_mast
- where shuttle_no is null
- and ((wrk_sts = 2 and loc_no like #{lev}) or (wrk_sts = 101 and source_loc_no like #{lev}))
+ where 1=1
+ and ((loc_no like #{lev}) or (source_loc_no like #{lev}))
order by io_pri desc,wrk_sts desc
</select>
@@ -97,8 +97,6 @@
<select id="selectLiftWrkMast" resultMap="BaseResultMap">
select * from asr_wrk_mast
where lift_no = #{liftNo}
- and wrk_sts not in (9,10,109,110,210,311,410)
- limit 0,1
</select>
<select id="selectLocToLocWrkMast" resultMap="BaseResultMap">
diff --git a/src/main/webapp/views/console.html b/src/main/webapp/views/console.html
index 1da3dbe..8e4316f 100644
--- a/src/main/webapp/views/console.html
+++ b/src/main/webapp/views/console.html
@@ -78,6 +78,7 @@
<div>
<!-- <el-button @click="testMove()">娴嬭瘯绉诲姩杞�</el-button>-->
<el-button @click="resetMap()">閲嶇疆鍦板浘</el-button>
+ <el-button @click="checkTask()">浠诲姟妫�娴�</el-button>
<!-- <el-button @click="initLoc()">鍒濆鍖栧簱浣�</el-button>-->
</div>
</div>
@@ -664,6 +665,30 @@
}
})
},
+ checkTask() {
+ let that = this
+ $.ajax({
+ url:baseUrl+"/console/checkTask",
+ headers:{
+ 'token': localStorage.getItem('token')
+ },
+ data:{},
+ method:'get',
+ success:function (res) {
+ if (res.code === 200) {
+ that.$message({
+ message: res.msg,
+ type: 'success'
+ });
+ } else {
+ that.$message({
+ message: res.msg,
+ type: 'error'
+ });
+ }
+ }
+ })
+ },
initLev(){
let that = this
$.ajax({
--
Gitblit v1.9.1