From 7cd8c743cb1f377a3102d9a154669fb2bc10535c Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 26 六月 2023 18:10:58 +0800
Subject: [PATCH] lift
---
src/main/java/com/zy/core/thread/LiftThread.java | 6 +-
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 85 +++++++++++++++++++++++++++++++++++++-----
src/main/java/com/zy/core/model/protocol/LiftProtocol.java | 22 +++++++++++
3 files changed, 99 insertions(+), 14 deletions(-)
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 0ab1ebe..3e5142c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -684,13 +684,17 @@
//鐘舵��8锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣�
//鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
- if (!liftProtocol.isIdle()) {
+ if (!liftProtocol.isIdleNoTask()) {
try {
Thread.sleep(1000);//浼戠湢1s
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
continue;//鎻愬崌鏈哄繖
+ }
+ //鍒ゆ柇鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙锋槸鍚︿竴鑷�
+ if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
+ continue;
}
//鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌浣嶏紝鍒ゆ柇绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙�
@@ -986,13 +990,17 @@
}else if(wrkMast.getWrkSts() == 25) {//鐘舵��25锛岄渶瑕佸悜灏忚溅涓嬪彂鍛戒护浠庢彁鍗囨満绉诲姩鍑哄幓锛岄渶瑕佸垽鏂彁鍗囨満鐘舵槸鍚︾┖闂层�佹彁鍗囨満鏄惁鍒拌揪鐩爣妤煎眰銆佺洰鏍囨ゼ灞傜珯鐐规槸鍚﹀瓨鍦ㄣ�佺洰鏍囨ゼ灞傜珯鐐规槸鍚︾粰鍑烘彁鍗囨満鍒颁綅淇″彿
//鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
- if (!liftProtocol.isIdle()) {
+ if (!liftProtocol.isIdleNoTask()) {
try {
Thread.sleep(1000);//浼戠湢1s
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
continue;//鎻愬崌鏈哄繖
+ }
+ //鍒ゆ柇鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙锋槸鍚︿竴鑷�
+ if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
+ continue;
}
//鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌浣嶏紝鍒ゆ柇绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙�
@@ -1071,7 +1079,7 @@
BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
- String disLocNo = "190020" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆
+ String disLocNo = "2000202" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆
LocMast locMast1 = locMastService.queryByLoc(disLocNo);
if (locMast1 == null) {
continue;//鎵句笉鍒板簱浣�
@@ -1158,6 +1166,21 @@
ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, commands.get(0).getRunDirection(), startCode, 1400, 500);
commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
+ //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅
+ BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
+ Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
+
+ String disLocNo = "2000202" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆
+ LocMast locMast1 = locMastService.queryByLoc(disLocNo);
+ if (locMast1 == null) {
+ continue;//鎵句笉鍒板簱浣�
+ }
+ short disCode = Short.parseShort(locMast1.getQrCodeValue());
+ //浠诲姟鎵ц瀹屽悗锛屽皬杞﹁繘鍏ョЩ寮�鎻愬崌鏈哄彛绔欑偣浣嶇疆锛屼互鍏嶅潬钀�
+ ShuttleCommand moveCommand2 = shuttleThread.getMoveCommand(endStartCode, disCode, 1400, ShuttleRunDirection.BOTTOM.id, endStartCode, 1400, 500);
+ commands.add(moveCommand2);
+
+
//鍒嗛厤鐩爣搴撲綅
shuttleProtocol.setLocNo(wrkMast.getSourceLocNo());
//鍒嗛厤浠诲姟鍙�
@@ -1197,7 +1220,7 @@
//鑾峰彇鍥涘悜绌挎杞︾嚎绋�
ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
- if (shuttleProtocol == null) {
+ if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
continue;
}
if (!shuttleProtocol.isIdle()) {
@@ -1411,8 +1434,13 @@
continue;
}
- //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬�
- if (!liftProtocol.isIdle()) {
+
+// if (!liftProtocol.isIdle()) {
+// continue;
+// }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬侊紝娌℃湁鍒ゆ柇浠诲姟鍙凤紝鍙兘鎻愬崌鏈哄浜庣┖闂诧紝浣嗘槸杩樻湁浠诲姟鏈畬鎴�
+ if (!liftProtocol.isIdleNoTask()) {
continue;
}
@@ -1434,6 +1462,15 @@
}
if (wrkMast.getWrkSts() == 2) {//2.璁惧涓婅蛋
+ if (liftProtocol.getTaskNo().intValue() != 0) {
+ //瀛樺湪鏈畬鎴愪换鍔″彿
+ continue;
+ }
+ if (liftProtocol.getPlatShuttleCheck()) {
+ //鎻愬崌鏈烘鏃舵湁鍥涘悜杞︼紝鍙兘鏈夋湭瀹屾垚鐨勪换鍔★紝绂佹鍒嗛厤鏂颁换鍔�
+ continue;
+ }
+
//宸ヤ綔妗g洰鏍囧簱浣嶅彿
String wrkMastLocNo = wrkMast.getLocNo();
//宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞�
@@ -1478,6 +1515,10 @@
wrkMast.setWrkSts(3L);//3.鎻愬崌鏈烘惉杩愪腑
} else if (wrkMast.getWrkSts() == 6) {//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑
+ if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
+ //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷�
+ continue;
+ }
liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
//鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐咃紝涓斿浜庣┖闂茬姸鎬�
@@ -1494,6 +1535,10 @@
}
if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) {
continue;//灏忚溅褰撳墠浜岀淮鐮佸拰鎻愬崌鏈哄唴閮ㄤ簩缁寸爜涓嶄竴鑷达紝涓嶅厑璁告墽琛�
+ }
+ if (!liftProtocol.getPlatShuttleCheck()) {
+ //鎻愬崌鏈烘湭妫�娴嬪埌灏忚溅锛岀姝㈡墽琛�
+ continue;
}
//宸ヤ綔妗g洰鏍囧簱浣嶅彿
@@ -1514,6 +1559,10 @@
wrkMast.setWrkSts(7L);//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑
} else if(wrkMast.getWrkSts() == 23) {//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑
+ if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
+ //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷�
+ continue;
+ }
liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
//鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐咃紝涓斿浜庣┖闂茬姸鎬�
@@ -1531,6 +1580,10 @@
}
if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) {
continue;//灏忚溅褰撳墠浜岀淮鐮佸拰鎻愬崌鏈哄唴閮ㄤ簩缁寸爜涓嶄竴鑷达紝涓嶅厑璁告墽琛�
+ }
+ if (!liftProtocol.getPlatShuttleCheck()) {
+ //鎻愬崌鏈烘湭妫�娴嬪埌灏忚溅锛岀姝㈡墽琛�
+ continue;
}
//宸ヤ綔妗g洰鏍囧簱浣嶅彿
@@ -1551,6 +1604,15 @@
wrkMast.setWrkSts(24L);//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑
} else if (wrkMast.getWrkSts() == 27) {//27.灏忚溅鍑哄簱鎼繍瀹屾垚
+ if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
+ //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷�
+ continue;
+ }
+ if (liftProtocol.getPlatShuttleCheck()) {
+ //鎻愬崌鏈烘鏃舵湁鍥涘悜杞︼紝鍙兘鏈夋湭瀹屾垚鐨勪换鍔★紝绂佹鍒嗛厤鏂颁换鍔�
+ continue;
+ }
+
//宸ヤ綔妗f簮搴撲綅鍙�
String wrkMastLocNo = wrkMast.getSourceLocNo();
//宸ヤ綔妗f簮搴撲綅妤煎眰
@@ -1632,6 +1694,9 @@
&& !liftProtocol.getRunning()
) {
+ //鏍囪澶嶄綅
+ liftProtocol.setPakMk(true);
+
DevpThread devpThread = null;
Integer devpId = null;
for (DevpSlave devp : slaveProperties.getDevp()){
@@ -1664,6 +1729,8 @@
case 28://28.鎻愬崌鏈烘惉杩愪腑 ==> 29.鎻愬崌鏈烘惉杩愬畬鎴�
wrkMast.setWrkSts(29L);
wrkMast.setWrkSts(34L);//34.鍑哄簱瀹屾垚锛屾殏鏃跺厛鐩存帴瀹屾垚鍑哄簱宸ヤ綔妗o紝鍚庣画闇�瑕佹牴鎹緭閫佺嚎缁欏嚭鐨勭姸鎬佹潵纭畾34.鍑哄簱瀹屾垚鐘舵��
+ //浠诲姟鍙锋竻闆�
+ liftProtocol.setTaskNo((short) 0);
break;
default:
}
@@ -1671,13 +1738,9 @@
if (wrkMastMapper.updateById(wrkMast) > 0) {
//璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵��
liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
- //浠诲姟鍙锋竻闆�
- liftProtocol.setTaskNo((short) 0);
- //鏍囪澶嶄綅
- liftProtocol.setPakMk(true);
//浠诲姟鎸囦护娓呴浂
liftProtocol.setAssignCommand(null);
- News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo());
+ News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo());
} else {
News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo());
}
diff --git a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
index fd78a3c..790bb2f 100644
--- a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
@@ -268,6 +268,28 @@
return res;
}
+ // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�侊紝涓嶅垽鏂换鍔″彿
+ public Boolean isIdleNoTask() {
+ if(this.taskNo == null
+ || this.liftLock == null
+ || this.ready == null
+ || this.running == null
+ || this.mode == null
+ || this.pakMk == null
+ ){
+ return false;
+ }
+
+ boolean res = !this.liftLock
+// && this.ready
+ && !this.running
+ && this.mode
+ && this.pakMk
+ && !this.securityMk
+ ;
+ return res;
+ }
+
public void setPositionArrivalFeedback(Short position) {
Short lev = null;
switch (position) {
diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
index 37d80f3..2504792 100644
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -363,9 +363,6 @@
return false;
}
- //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
- liftProtocol.setPakMk(false);
-
Object o = redisUtil.get("lift_wrk_no_" + wrkNo);
if (o == null) {
return false;
@@ -408,6 +405,9 @@
News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
liftProtocol.setWrkTime(new Date());//鏇存柊宸ヤ綔鏃堕棿
+ //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
+ liftProtocol.setPakMk(false);
+
//淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class);
if (liftOptService != null) {
--
Gitblit v1.9.1