From 2acd428a1254175dbf6f0cdb1bdb9772a4f4f938 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 19 六月 2023 17:33:18 +0800
Subject: [PATCH] 提升机状态6,8迁移小车问题
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 394 ++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 271 insertions(+), 123 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 bbca4a3..28d2612 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,6 +10,7 @@
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.*;
+import com.zy.common.model.enums.NavigationMapType;
import com.zy.common.model.enums.WrkChargeType;
import com.zy.common.service.CommonService;
import com.zy.common.service.erp.ErpService;
@@ -569,7 +570,7 @@
//鏁版嵁搴撲腑涔熶笉瀛樺湪鍦板浘鏁版嵁锛屼粠鍦板浘鏂囦欢涓幏鍙�
//杞藉叆鍦板浘
NavigateMapData mapData = new NavigateMapData(i);
- List<List<MapNode>> lists = mapData.getJsonData(-1);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
+ List<List<MapNode>> lists = mapData.getJsonData(-1, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
//瀛樺叆鏁版嵁搴�
basMap = new BasMap();
@@ -670,12 +671,40 @@
if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 8) {
ShuttleThread shuttleThread = null;
HashMap<String, Object> searchIdleShuttle = null;
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
+ LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+
if (wrkMast.getWrkSts() == 4) {
//瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅
searchIdleShuttle = this.searchIdleShuttle(wrkMast);
shuttleThread = (ShuttleThread) searchIdleShuttle.get("result");
- }else {
- //鐘舵��8锛屽洓鍚戠┛姊溅宸插湪鎻愬崌鏈哄彛锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣�
+ }else if(wrkMast.getWrkSts() == 8){//鐘舵��8锛岄渶瑕佸悜灏忚溅涓嬪彂鍛戒护浠庢彁鍗囨満绉诲姩鍑哄幓锛岄渶瑕佸垽鏂彁鍗囨満鐘舵槸鍚︾┖闂层�佹彁鍗囨満鏄惁鍒拌揪鐩爣妤煎眰銆佺洰鏍囨ゼ灞傜珯鐐规槸鍚﹀瓨鍦ㄣ�佺洰鏍囨ゼ灞傜珯鐐规槸鍚︾粰鍑烘彁鍗囨満鍒颁綅淇″彿
+ //鐘舵��8锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣�
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+ if (!liftProtocol.isIdle()) {
+ continue;//鎻愬崌鏈哄繖
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌浣嶏紝鍒ゆ柇绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙�
+ String locNo = wrkMast.getLocNo();
+ int lev = Utils.getLev(locNo);//鐩爣浜岀淮鐮佹墍鍦ㄦゼ灞�
+ int liftLev = liftProtocol.getLev().intValue();//鎻愬崌鏈烘墍鍦ㄦゼ灞�
+ if (liftLev != lev) {
+ continue;//鎻愬崌鏈轰笉鍦ㄧ洰鏍囨ゼ灞傝烦杩�
+ }
+
+ Integer staNo = Utils.levToOutInStaNo(lev >= 2 ? lev + 1 : lev);
+ //鑾峰彇鐩爣绔欎俊鎭�
+ StaProtocol staProtocol1 = devpThread.getStation().get(staNo);
+ if (staProtocol1 == null) {
+ continue;//绔欑偣淇℃伅涓嶅瓨鍦�
+ }
+ if (!staProtocol1.isLiftArrival()) {
+ continue;//绔欑偣鎻愬崌鏈哄埌浣嶄俊鍙穎alse
+ }
+
Integer shuttleNo = wrkMast.getShuttleNo();//鍥涘悜绌挎杞﹀彿
shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
}
@@ -705,7 +734,7 @@
assignCommand.setSourceLocNo(currentLocNo);//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
String locNo = wrkMast.getLocNo();//褰撳墠宸ヤ綔妗e簱浣嶅彿
- Integer currentLev = Utils.getLev(currentLocNo);//灏忚溅褰撳墠灞傞珮
+ Integer currentLev = wrkMast.getWrkSts() == 4 ? Utils.getLev(currentLocNo) : liftProtocol.getLev();//灏忚溅褰撳墠灞傞珮
//鎻愬崌鏈哄彛绔欑偣搴撲綅鍙�
String liftSiteLocNo = Utils.levToOutInStaLocNo(currentLev);
@@ -713,15 +742,20 @@
if (wrkMast.getWrkSts() == 8 || Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) {
//鍚屼竴灞傜洿鎺ュ彇璐ф棤闇�缁忚繃鎻愬崌鏈�
//鐩存帴璁$畻杞﹀埌鎻愬崌鏈哄彇璐у啀鍒板簱浣嶈矾寰勬寚浠�
- List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, locNo, assignCommand,shuttleThread);
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(wrkMast.getWrkSts() == 4 ? currentLocNo : liftSiteLocNo, liftSiteLocNo, locNo, assignCommand, shuttleThread);
+ if (commands == null) {
+ continue;//鎵句笉鍒拌矾寰勭瓑寰呬笅涓�娆�
+ }
if (wrkMast.getWrkSts() == 8) {
- //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
- BasDevp basDevp = basDevpService.selectById(109);//鑾峰彇鎻愬崌鏈轰俊鎭�
- short startCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
- Short distCode = commands.get(0).getStartCodeNum();//鎻愬崌鏈哄彛浜岀淮鐮�
- Short runDirection = commands.get(0).getRunDirection();//杩愯鏂瑰悜
+ //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
+ Integer staNo = Utils.levToOutInStaNo(currentLev >= 2 ? currentLev + 1 : currentLev);//绔欑偣鍙�
+ BasDevp basDevp = basDevpService.selectById(staNo);
+
+ short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
+ Short distCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄彛绔欑偣浜岀淮鐮�
+ Short runDirection = ShuttleRunDirection.BOTTOM.id;//杩愯鏂瑰悜
//鑾峰彇鍛戒护
- ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1300, runDirection, (short) 1, 0);
+ ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, runDirection, startCode, 1400, 500);
commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
}
assignCommand.setCommands(commands);
@@ -735,6 +769,15 @@
//灏忚溅绉诲姩鍒版彁鍗囨満鍙o紝璁$畻璺緞
List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, ShuttleTaskModeType.PAK_IN.id, assignCommand, shuttleThread);
+
+ //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅
+ BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
+ Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
+
+ //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护
+ ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, endStartCode, 1400, 500);
+ commands.add(moveCommand);
+
//鍒嗛厤鐩爣搴撲綅
shuttleProtocol.setLocNo(liftSiteLocNo);
//鐩爣搴撲綅
@@ -757,7 +800,7 @@
}
- //鑾峰彇璧风偣-缁堢偣鎸囦护銆俶apType锛�0=>鏃犺揣鐗╁湴鍥撅紝1=銆嬫惡甯﹁揣鐗╁嚭鍏ュ簱鍦板浘
+ //鑾峰彇璧风偣-缁堢偣鎸囦护
public synchronized List<ShuttleCommand> shuttleAssignCommand(String startLocNo, String locNo, Integer mapType, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
//鑾峰彇灏忚溅绉诲姩閫熷害
BasShuttle basShuttle = basShuttleService.selectById(assignCommand.getShuttleNo());
@@ -825,7 +868,7 @@
List<NavigateNode> allNode = new ArrayList<>();
//璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护
- List<NavigateNode> calc = NavigateUtils.calc(startLocNo, middleLocNo, 1);//灏忚溅鏃犺揣锛岃蛋鍏ュ簱鍦板浘
+ List<NavigateNode> calc = NavigateUtils.calc(startLocNo, middleLocNo, NavigationMapType.NORMAL.id);//灏忚溅鏃犺揣锛岃蛋姝e父搴撲綅閫氶亾
List<ShuttleCommand> commands = new ArrayList<>();
if (calc != null) {
@@ -859,7 +902,7 @@
commands.add(shuttleThread.getPalletCommand((short) 1));
//璁$畻灏忚溅涓偣鍒扮粓鐐规墍闇�鍛戒护
- List<NavigateNode> calc2 = NavigateUtils.calc(middleLocNo, locNo, 2);//灏忚溅鏈夎揣锛岃蛋鍑哄簱鍦板浘(鍑哄簱鍦板浘鏈変笓鐢ㄨ揣閬�)
+ List<NavigateNode> calc2 = NavigateUtils.calc(middleLocNo, locNo, NavigationMapType.DFX.id);//灏忚溅鏈夎揣锛岃蛋绂佺敤杩嘍FX搴撲綅鐨勫湴鍥鹃�氶亾
if (calc2 == null) {
return null;
}
@@ -923,11 +966,43 @@
|| wrkMast.getWrkSts() == 31) {
ShuttleThread shuttleThread = null;
HashMap<String, Object> searchIdleShuttle = null;
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
+ LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+
if (wrkMast.getWrkSts() == 21) {
//瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅
searchIdleShuttle = this.searchIdleShuttle(wrkMast);
shuttleThread = (ShuttleThread) searchIdleShuttle.get("result");
- }else if(wrkMast.getWrkSts() == 31 || wrkMast.getWrkSts() == 25) {
+ }else if(wrkMast.getWrkSts() == 25) {//鐘舵��25锛岄渶瑕佸悜灏忚溅涓嬪彂鍛戒护浠庢彁鍗囨満绉诲姩鍑哄幓锛岄渶瑕佸垽鏂彁鍗囨満鐘舵槸鍚︾┖闂层�佹彁鍗囨満鏄惁鍒拌揪鐩爣妤煎眰銆佺洰鏍囨ゼ灞傜珯鐐规槸鍚﹀瓨鍦ㄣ�佺洰鏍囨ゼ灞傜珯鐐规槸鍚︾粰鍑烘彁鍗囨満鍒颁綅淇″彿
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+ if (!liftProtocol.isIdle()) {
+ continue;//鎻愬崌鏈哄繖
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌浣嶏紝鍒ゆ柇绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙�
+ String locNo = wrkMast.getSourceLocNo();
+ int lev = Utils.getLev(locNo);//鐩爣浜岀淮鐮佹墍鍦ㄦゼ灞�
+ int liftLev = liftProtocol.getLev().intValue();//鎻愬崌鏈烘墍鍦ㄦゼ灞�
+ if (liftLev != lev) {
+ continue;//鎻愬崌鏈轰笉鍦ㄧ洰鏍囨ゼ灞傝烦杩�
+ }
+
+ Integer staNo = Utils.levToOutInStaNo(lev);
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ //鑾峰彇鐩爣绔欎俊鎭�
+ StaProtocol staProtocol1 = devpThread.getStation().get(staNo);
+ if (staProtocol1 == null) {
+ continue;//绔欑偣淇℃伅涓嶅瓨鍦�
+ }
+ if (!staProtocol1.isLiftArrival()) {
+ continue;//绔欑偣鎻愬崌鏈哄埌浣嶄俊鍙穎alse
+ }
+
+ //缁х画瀹屾垚涔嬪墠灏忚溅鏈畬鎴愮殑浠诲姟
+ shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ } else if (wrkMast.getWrkSts() == 31) {
//缁х画瀹屾垚涔嬪墠灏忚溅鏈畬鎴愮殑浠诲姟
shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
}
@@ -995,6 +1070,15 @@
//灏忚溅鍒版彁鍗囨満鍙f寚浠�
List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, ShuttleTaskModeType.PAK_IN.id, assignCommand, shuttleThread);
shuttleProtocol.setLocNo(liftSiteLocNo);
+
+ //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅
+ BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
+ Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
+
+ //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护
+ ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, endStartCode, 1400, 500);
+ commands.add(moveCommand);
+
//鐩爣搴撲綅
assignCommand.setLocNo(liftSiteLocNo);
assignCommand.setCommands(commands);
@@ -1032,10 +1116,13 @@
*/
public HashMap<String,Object> searchIdleShuttle(WrkMast wrkMast) {
HashMap<String, Object> map = new HashMap<>();
- String locNo = wrkMast.getWrkSts() < 10 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo();//搴撲綅鍙�
+ String locNo = wrkMast.getIoType() < 101 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo();//搴撲綅鍙�
LocMast locMast = locMastService.queryByLoc(locNo);//鎵惧埌搴撲綅璁板綍
int lev = Utils.getLev(locNo);//褰撳墠宸ヤ綔妗e簱浣嶅眰楂�
ShuttleThread recentShuttle = null;//褰撳墠璺濈鏈�杩戠殑鍥涘悜绌挎杞︾嚎绋�
+
+ ArrayList<ShuttleThread> sameLev = new ArrayList<>();//鐩稿悓妤煎眰鐨勭┛姊溅
+ ArrayList<ShuttleThread> diffLev = new ArrayList<>();//涓嶅悓妤煎眰鐨勭┛姊溅
for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
//鑾峰彇鍥涘悜绌挎杞︾嚎绋�
@@ -1051,58 +1138,131 @@
String shuttleLocNo = shuttleProtocol.getCurrentLocNo();//浜岀淮鐮佸搴斿簱浣嶅彿
int shuttleLocNoLey = Utils.getLev(shuttleLocNo);//搴撲綅鍙峰搴斿眰楂�
if (lev == shuttleLocNoLey) {
- //褰撳墠鍥涘悜绌挎杞﹀拰宸ヤ綔妗d换鍔″湪鍚屼竴灞傦紝鍒欒皟閰嶈杞﹁締
- map.put("sameLay", true);//鍚屼竴灞�
- map.put("result", shuttleThread);
- return map;
- }
-
- //鏇存柊褰撳墠鏈�杩戠殑鍥涘悜绌挎杞�
- if (recentShuttle == null) {
- recentShuttle = shuttleThread;
+ //宸ヤ綔妗fゼ灞傜浉鍚岀殑绌挎杞�
+ sameLev.add(shuttleThread);
}else {
- ShuttleProtocol recentShuttleProtocol = recentShuttle.getShuttleProtocol();//鐩墠鏈�杩戠┛姊溅
- String recentShuttleLocNo = recentShuttleProtocol.getCurrentLocNo();//浜岀淮鐮佸搴斿簱浣嶅彿
- String recentShuttleLocNoLay = recentShuttleLocNo.substring(recentShuttleLocNo.length() - 2, recentShuttleLocNo.length());//搴撲綅鍙峰搴斿眰楂�
-
- int recentShuttleLocNoLayInt = Integer.parseInt(recentShuttleLocNoLay);
- int i = Math.abs(lev - recentShuttleLocNoLayInt);//宸ヤ綔妗fゼ灞傚噺鏈�杩戠┛姊溅妤煎眰锛屽彇缁濆鍊�
- int j = Math.abs(lev - shuttleLocNoLey);//宸ヤ綔妗fゼ灞傚噺褰撳墠绌挎杞︽ゼ灞傦紝鍙栫粷瀵瑰��
- if (i < j) {
- //鏇存柊鏈�杩戠┛姊溅
- recentShuttle = shuttleThread;
- } else if (i == j) {
- //妤煎眰鐩稿悓鎯呭喌
- //鎵捐窛绂诲嚭搴撶偣鏈�杩戠殑杞�
-
- if (!(recentShuttleProtocol.isIdle() && shuttleProtocol.isIdle())) {
- //鍙鏈変竴杈嗚溅涓嶆槸绌洪棽鍒欎笉杩涜璋冨害
- map.put("sameLay", false);//涓嶅悓灞�
- map.put("result", null);
- return map;
- }
-
- //鑾峰彇鎻愬崌鏈�
- LiftSlave liftSlave = slaveProperties.getLift().get(0);
- //鎻愬崌鏈哄簱浣嶅彿
- String recentLiftLocNo = liftSlave.getLiftLocNo(recentShuttleLocNoLayInt);
- String shuttleLiftLocNo = liftSlave.getLiftLocNo(shuttleLocNoLey);
-
- //褰撳墠鏈�杩戝洓鍚戠┛姊溅鍒版彁鍗囨満璺緞
- List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentShuttleLocNo, recentLiftLocNo, ShuttleTaskModeType.PAK_IN.id);
- //褰撳墠妤煎眰鍥涘悜绌挎杞﹀埌鎻愬崌鏈鸿矾寰�
- List<NavigateNode> shuttlePath = NavigateUtils.calc(shuttleLocNo, shuttleLiftLocNo, ShuttleTaskModeType.PAK_IN.id);
- //鍒ゆ柇鍝竴涓矾寰勬渶鐭�
- if (shuttlePath.size() < recentShuttlePath.size()) {
- //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠┛姊溅
- recentShuttle = shuttleThread;
- }
- }
+ //宸ヤ綔妗d笉鍚屾ゼ灞傜殑绌挎杞�
+ diffLev.add(shuttleThread);
}
+//
+// //鏇存柊褰撳墠鏈�杩戠殑鍥涘悜绌挎杞�
+// if (recentShuttle == null) {
+// recentShuttle = shuttleThread;
+// }else {
+// ShuttleProtocol recentShuttleProtocol = recentShuttle.getShuttleProtocol();//鐩墠鏈�杩戠┛姊溅
+// String recentShuttleLocNo = recentShuttleProtocol.getCurrentLocNo();//浜岀淮鐮佸搴斿簱浣嶅彿
+// String recentShuttleLocNoLay = recentShuttleLocNo.substring(recentShuttleLocNo.length() - 2, recentShuttleLocNo.length());//搴撲綅鍙峰搴斿眰楂�
+//
+// int recentShuttleLocNoLayInt = Integer.parseInt(recentShuttleLocNoLay);
+// int i = Math.abs(lev - recentShuttleLocNoLayInt);//宸ヤ綔妗fゼ灞傚噺鏈�杩戠┛姊溅妤煎眰锛屽彇缁濆鍊�
+// int j = Math.abs(lev - shuttleLocNoLey);//宸ヤ綔妗fゼ灞傚噺褰撳墠绌挎杞︽ゼ灞傦紝鍙栫粷瀵瑰��
+// if (i < j) {
+// //鏇存柊鏈�杩戠┛姊溅
+// recentShuttle = shuttleThread;
+// } else if (i == j) {
+// //妤煎眰鐩稿悓鎯呭喌
+// //鎵捐窛绂诲嚭搴撶偣鏈�杩戠殑杞�
+//
+// if (!(recentShuttleProtocol.isIdle() && shuttleProtocol.isIdle())) {
+// //鍙鏈変竴杈嗚溅涓嶆槸绌洪棽鍒欎笉杩涜璋冨害
+// map.put("sameLay", false);//涓嶅悓灞�
+// map.put("result", null);
+// return map;
+// }
+//
+// //鑾峰彇鎻愬崌鏈�
+// LiftSlave liftSlave = slaveProperties.getLift().get(0);
+// //鎻愬崌鏈哄簱浣嶅彿
+// String recentLiftLocNo = liftSlave.getLiftLocNo(recentShuttleLocNoLayInt);
+// String shuttleLiftLocNo = liftSlave.getLiftLocNo(shuttleLocNoLey);
+//
+// //褰撳墠鏈�杩戝洓鍚戠┛姊溅鍒版彁鍗囨満璺緞
+// List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentShuttleLocNo, recentLiftLocNo, ShuttleTaskModeType.PAK_IN.id);
+// //褰撳墠妤煎眰鍥涘悜绌挎杞﹀埌鎻愬崌鏈鸿矾寰�
+// List<NavigateNode> shuttlePath = NavigateUtils.calc(shuttleLocNo, shuttleLiftLocNo, ShuttleTaskModeType.PAK_IN.id);
+// //鍒ゆ柇鍝竴涓矾寰勬渶鐭�
+// if (shuttlePath.size() < recentShuttlePath.size()) {
+// //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠┛姊溅
+// recentShuttle = shuttleThread;
+// }
+// }
+// }
}
- map.put("sameLay", false);//涓嶅悓灞�
- map.put("result", recentShuttle);
+ if (sameLev.size() > 0) {
+ //鍚屼竴妤煎眰鏈夌┖闂茬┛姊溅锛屽垯鍙湪宸ヤ綔妗fゼ灞傚鎵�
+ //瀵绘壘绂讳换鍔℃渶杩戠殑绌挎杞�
+ for (ShuttleThread shuttleThread : sameLev) {
+ if (recentShuttle == null) {//鏈�杩戠┛姊溅涓虹┖锛屽垯榛樿璧嬩簣涓烘渶杩戠┛姊溅
+ recentShuttle = shuttleThread;
+ }
+
+ //鍒ゆ柇鍏朵粬绌洪棽绌挎杞︽槸鍚︾浠诲姟鏈�杩�
+ String distLocNo = null;//鐩爣鍦扮偣锛屽叆搴�=銆嬫彁鍗囨満鍙o紝鍑哄簱=銆嬭揣鐗╁簱浣嶅彿
+ if (wrkMast.getIoType() < 101) {
+ //鍏ュ簱
+ distLocNo = Utils.levToOutInStaLocNo(lev);
+ }else {
+ //鍑哄簱
+ distLocNo = locNo;
+ }
+
+ //褰撳墠绌挎杞﹀簱浣嶅彿
+ String currentLocNo = shuttleThread.getShuttleProtocol().getCurrentLocNo();
+ //鐩墠鏈�杩戠┛姊溅搴撲綅鍙�
+ String recentLocNo = recentShuttle.getShuttleProtocol().getCurrentLocNo();
+
+ //褰撳墠鏈�杩戝洓鍚戠┛姊溅鍒扮洰鏍囧湴鐐硅窛绂�
+ List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentLocNo, distLocNo, NavigationMapType.NORMAL.id);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘
+ //褰撳墠绌挎杞︾嚎绋嬪埌鐩爣鍦扮偣璺濈
+ List<NavigateNode> currentShuttlePath = NavigateUtils.calc(currentLocNo, distLocNo, NavigationMapType.NORMAL.id);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘
+ if (recentShuttlePath == null || currentShuttlePath == null) {
+ continue;
+ }
+ Integer recentAllDistance = NavigateUtils.getOriginPathAllDistance(recentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
+ Integer currentAllDistance = NavigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
+ if (currentAllDistance < recentAllDistance) {
+ //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠┛姊溅
+ recentShuttle = shuttleThread;
+ }
+ }
+
+ map.put("sameLay", true);//鍚屽眰
+ map.put("result", recentShuttle);
+ }else {
+ //鍚屼竴妤煎眰锛屾病鏈夌┖闂茬┛姊溅锛屽彧鑳戒粠鍏朵粬妤煎眰璋冨害
+ //瀵绘壘绂讳换鍔℃渶杩戠殑绌挎杞�
+ for (ShuttleThread shuttleThread : diffLev) {
+ if (recentShuttle == null) {//鏈�杩戠┛姊溅涓虹┖锛屽垯榛樿璧嬩簣涓烘渶杩戠┛姊溅
+ recentShuttle = shuttleThread;
+ }
+
+ //褰撳墠绌挎杞﹀簱浣嶅彿
+ String currentLocNo = shuttleThread.getShuttleProtocol().getCurrentLocNo();
+ int currentLev = Utils.getLev(currentLocNo);
+ //鐩墠鏈�杩戠┛姊溅搴撲綅鍙�
+ String recentLocNo = recentShuttle.getShuttleProtocol().getCurrentLocNo();
+ int recentLev = Utils.getLev(recentLocNo);
+
+ //褰撳墠鏈�杩戝洓鍚戠┛姊溅鍒板綋鍓嶈溅瀛愭墍鍦ㄦゼ灞傜殑鎻愬崌鏈哄彛璺濈
+ List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentLocNo, Utils.levToOutInStaLocNo(recentLev), NavigationMapType.NORMAL.id);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘
+ //褰撳墠绌挎杞︾嚎绋嬪埌褰撳墠杞﹀瓙鎵�鍦ㄦゼ灞傜殑鎻愬崌鏈哄彛璺濈
+ List<NavigateNode> currentShuttlePath = NavigateUtils.calc(currentLocNo, Utils.levToOutInStaLocNo(currentLev), NavigationMapType.NORMAL.id);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘
+ if (recentShuttlePath == null || currentShuttlePath == null) {
+ continue;
+ }
+
+ Integer recentAllDistance = NavigateUtils.getOriginPathAllDistance(recentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
+ Integer currentAllDistance = NavigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
+ if (currentAllDistance < recentAllDistance) {
+ //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠┛姊溅
+ recentShuttle = shuttleThread;
+ }
+ }
+
+ map.put("sameLay", false);//涓嶅悓灞�
+ map.put("result", recentShuttle);
+ }
return map;
}
@@ -1290,13 +1450,46 @@
command4.setOperaStaNo(distStaNo.shortValue());//鎿嶄綔鐩爣妤煎眰绔欑偣
command4.setRotationDire(1);//缁欒緭閫佺嚎涓嬪彂閾炬潯杞姩淇″彿锛屾杞�
command4.setDevpId(devpId);
+ command4.setStaNo(distStaNo.shortValue());//璁剧疆鐩爣绔�
commands.add(command4);//灏嗗懡浠ゆ坊鍔犺繘list
wrkMast.setWrkSts(3L);//3.鎻愬崌鏈烘惉杩愪腑
- }else if(wrkMast.getWrkSts() == 6 || wrkMast.getWrkSts() == 23) {//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑 || 23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑
+ } else if (wrkMast.getWrkSts() == 6) {//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑
liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
- //鎵惧埌鍥涘悜绌挎杞︾殑绾跨▼
+ //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐咃紝涓斿浜庣┖闂茬姸鎬�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ continue;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+ if (!shuttleProtocol.isIdle()) {
+ continue;//灏忚溅鐘舵�佸繖
+ }
+ if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) {
+ continue;//灏忚溅褰撳墠浜岀淮鐮佸拰鎻愬崌鏈哄唴閮ㄤ簩缁寸爜涓嶄竴鑷达紝涓嶅厑璁告墽琛�
+ }
+
+ //宸ヤ綔妗g洰鏍囧簱浣嶅彿
+ String wrkMastLocNo = wrkMast.getIoType() == 101 ? wrkMast.getSourceLocNo() : wrkMast.getLocNo();
+ //宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞�
+ int wrkMastLocNoLey = Utils.getLev(wrkMastLocNo);
+ if (wrkMastLocNoLey >= 2) {
+ wrkMastLocNoLey++;
+ }
+
+ //鎻愬崌鏈哄墠寰�鐩爣妤煎眰(宸ヤ綔妗g洰鏍囨ゼ灞�)
+ LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey);
+ commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
+
+ wrkMast.setWrkSts(7L);//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑
+ } else if(wrkMast.getWrkSts() == 23) {//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑
+ liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
+
+ //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐咃紝涓斿浜庣┖闂茬姸鎬�
ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
if (shuttleThread == null) {
continue;
@@ -1306,46 +1499,26 @@
continue;
}
- //褰撳墠绌挎杞﹀簱浣嶅彿
- String currentLocNo = shuttleProtocol.getCurrentLocNo();
- //褰撳墠绌挎杞︽ゼ灞�
- int currentLocNoLey = Utils.getLev(currentLocNo);
+ if (!shuttleProtocol.isIdle()) {
+ continue;//灏忚溅鐘舵�佸繖
+ }
+ if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) {
+ continue;//灏忚溅褰撳墠浜岀淮鐮佸拰鎻愬崌鏈哄唴閮ㄤ簩缁寸爜涓嶄竴鑷达紝涓嶅厑璁告墽琛�
+ }
//宸ヤ綔妗g洰鏍囧簱浣嶅彿
String wrkMastLocNo = wrkMast.getIoType() == 101 ? wrkMast.getSourceLocNo() : wrkMast.getLocNo();
//宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞�
int wrkMastLocNoLey = Utils.getLev(wrkMastLocNo);
-
- //鎻愬崌鏈哄綋鍓嶆ゼ灞�
- int liftLev = liftProtocol.getLev().intValue();
- if (liftLev == 0) {//鎻愬崌鏈哄綋鍓嶆ゼ灞備负0锛屾彁鍗囨満澶卞幓浣嶇疆淇℃伅锛岃鎻愬崌鏈哄墠寰�涓�妤�
- LiftCommand command = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), LiftLevType.ONE.lev);
- commands.add(command);//灏嗗懡浠ゆ坊鍔犺繘list
+ if (wrkMastLocNoLey >= 2) {
+ wrkMastLocNoLey++;
}
- if (liftLev != currentLocNoLey) {
- //涓嶅悓妤煎眰
- //鑾峰彇鐩爣妤煎眰(绌挎杞︽墍鍦ㄦゼ灞�)鍛戒护
- LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), currentLocNoLey);
- commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
- }
+ //鎻愬崌鏈哄墠寰�鐩爣妤煎眰(宸ヤ綔妗g洰鏍囨ゼ灞�)
+ LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey);
+ commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
- //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩杩涙潵(鍙嶈浆)
- LiftCommand command2 = liftThread.getLiftTurnCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), 4);
- commands.add(command2);//灏嗗懡浠ゆ坊鍔犺繘list
-
- if (liftLev != currentLocNoLey) {
- //鎻愬崌鏈哄墠寰�鐩爣妤煎眰(宸ヤ綔妗g洰鏍囨ゼ灞�)
- LiftCommand command3 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey);
- commands.add(command3);//灏嗗懡浠ゆ坊鍔犺繘list
- }
-
- //鎻愬崌鏈哄埌杈炬寚瀹氭ゼ灞傦紝杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲嚭鍘�
- //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩鍑哄幓(姝h浆)
- LiftCommand command4 = liftThread.getLiftTurnCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), 1);
- commands.add(command4);//灏嗗懡浠ゆ坊鍔犺繘list
-
- wrkMast.setWrkSts(wrkMast.getWrkSts() == 6 ? 7L : 24L);//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑 || 23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑
+ wrkMast.setWrkSts(24L);//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑
} else if (wrkMast.getWrkSts() == 27) {//27.灏忚溅鍑哄簱鎼繍瀹屾垚
//宸ヤ綔妗f簮搴撲綅鍙�
String wrkMastLocNo = wrkMast.getSourceLocNo();
@@ -1421,31 +1594,6 @@
if (liftProtocol == null) {
continue;
}
-
-// //褰撴彁鍗囨満鐘舵�佸浜庡伐浣滀腑锛屼絾鎻愬崌鏈哄疄闄呬负绌洪棽鐘舵�侊紝涓旀椂闀胯秴杩�30绉掞紝鑷姩澶嶄綅
-// if (liftProtocol.getProtocolStatus() == LiftProtocolStatusType.WORKING.id
-// && liftProtocol.getTaskNo() != 0
-// && !liftProtocol.getRunning()
-// ) {
-// if (liftProtocol.getWrkTime() == null) {
-// continue;
-// }
-//
-// Date wrkTime = liftProtocol.getWrkTime();
-// Date now = new Date();
-// long interval = (now.getTime() - wrkTime.getTime()) / 1000;//璁$畻鏃堕棿宸�
-// if (interval >= 30) {//瓒呰繃30绉掕嚜鍔ㄥ浣�
-// //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵��
-// liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
-// //浠诲姟鍙锋竻闆�
-// liftProtocol.setTaskNo((short) 0);
-// //鏍囪澶嶄綅
-// liftProtocol.setPakMk(true);
-// //浠诲姟鎸囦护娓呴浂
-// liftProtocol.setAssignCommand(null);
-// News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo());
-// }
-// }
//鎻愬崌鏈轰负绛夊緟纭涓旂┖闂�
if (liftProtocol.getProtocolStatus() == LiftProtocolStatusType.WAITING.id
--
Gitblit v1.9.1