From 4e1a8e484888b3d3f28dc9629904e6e54d90ebc5 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 28 七月 2023 16:26:40 +0800
Subject: [PATCH] 穿梭车命令封装
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 346 ++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 291 insertions(+), 55 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 b9d9799..45518cf 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
@@ -200,16 +201,17 @@
}
// 杩囨护鐩樼偣/鎷f枡/骞舵澘浠诲姟
-// if (null != wrkMastMapper.selectPickStepByBarcode(barcode)) {
-// continue;
-// }
+ WrkMast wrkMast1 = wrkMastMapper.selectPickStepByBarcode(barcode);
+ if (null != wrkMast1) {
+ continue;
+ }
// 鍒ゆ柇閲嶅宸ヤ綔妗�
-// WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
-// if (wrkMast != null) {
-// News.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
-// continue;
-// }
+ WrkMast wrkMast2 = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
+ if (wrkMast2 != null) {
+ News.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast2.getWrkNo());
+ continue;
+ }
try {
LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
@@ -382,6 +384,7 @@
/**
* 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
*/
+ @Transactional
public synchronized void stnToCrnStnPick(){
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鎷f枡鍏ュ簱鍙�
@@ -397,25 +400,20 @@
}
if (staProtocol.isAutoing()
&& staProtocol.isLoading()
- && staProtocol.isInEnable()
- // 0 - 9990 鎴栬�� 9996
- && (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990)
+ && (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9999)
&& staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue())
&& staProtocol.isPakMk()){
// 鑾峰彇鏉$爜鎵弿浠俊鎭�
-// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
-// if (barcodeThread == null) {
-// continue;
-// }
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+ if (barcodeThread == null) {
+ continue;
+ }
+ String barcode = barcodeThread.getBarcode();
WrkMast wrkMast = null;
- if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990) {
- wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo());
- if (null == wrkMast) {
- continue;
- }
- } else {
+ wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode);
+ if (wrkMast == null) {
continue;
}
// if (staProtocol.getWorkNo() == 9996) {
@@ -455,6 +453,7 @@
// News.error("{}鏉$爜閿欒锛屾殏鏃犳嫞鏂欎换鍔★紒", barcode);
// }
// }
+
if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
|| Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo()) ) {
continue;
@@ -509,14 +508,22 @@
wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯
wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
wrkMast.setCrnNo(dto.getCrnNo());
- wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
- wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+ wrkMast.setLocNo(sourceLocNo); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+ wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌�
wrkMast.setModiTime(new Date());
if (wrkMastMapper.updateById(wrkMast) == 0) {
throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
}
if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) {
throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+ }
+
+ // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+ LocMast locMast = locMastService.selectById(sourceLocNo);
+ locMast.setLocSts("Q");
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
}
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
@@ -565,7 +572,7 @@
* 鍒濆鍖栧疄鏃跺湴鍥�
*/
public synchronized void initRealtimeBasMap() {
- for (int i = 1; i <= 4; i++) {//鎬诲叡鍥涘眰妤�
+ for (int i = 1; i <= 10; i++) {//鎬诲叡鍥涘眰妤�
Object data = redisUtil.get("realtimeBasMap_" + i);
if (data == null) {//redis鍦板浘鏁版嵁涓虹┖锛屼粠鏁版嵁搴撲腑鑾峰彇
BasMap basMap = basMapService.selectLatestMap(i);
@@ -778,7 +785,7 @@
if (commands == null) {
continue;//鎵句笉鍒拌矾寰勭瓑寰呬笅涓�娆�
}
- assignCommand.setCommands(commands);
+// assignCommand.setCommands(commands);
//鍒嗛厤鐩爣搴撲綅
shuttleProtocol.setLocNo(wrkMast.getLocNo());
//鐩爣搴撲綅
@@ -804,7 +811,7 @@
shuttleProtocol.setLocNo(liftSiteLocNo);
//鐩爣搴撲綅
assignCommand.setLocNo(liftSiteLocNo);
- assignCommand.setCommands(commands);
+// assignCommand.setCommands(commands);
wrkMast.setWrkSts(5L);//灏忚溅杩佺Щ鐘舵��
}
} else if (wrkMast.getWrkSts() == 8) {
@@ -825,7 +832,7 @@
ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1600, runDirection, null, null, 500);
commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
- assignCommand.setCommands(commands);
+// assignCommand.setCommands(commands);
//鍒嗛厤鐩爣搴撲綅
shuttleProtocol.setLocNo(wrkMast.getLocNo());
//鐩爣搴撲綅
@@ -902,12 +909,12 @@
//鑾峰彇灏忚溅绉诲姩閫熷害
BasShuttle basShuttle = basShuttleService.selectById(assignCommand.getShuttleNo());
Integer runSpeed = 1000;
- if (basShuttle != null) {
- Integer runSpeed1 = basShuttle.getRunSpeed();
- if (runSpeed1 != null) {
- runSpeed = runSpeed1;
- }
- }
+// if (basShuttle != null) {
+// Integer runSpeed1 = basShuttle.getRunSpeed();
+// if (runSpeed1 != null) {
+// runSpeed = runSpeed1;
+// }
+// }
//璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护
List<NavigateNode> calc = NavigateUtils.calc(startLocNo, locNo, mapType, Utils.getShuttlePoints(shuttleThread.getSlave().getId(), Utils.getLev(startLocNo)));
@@ -938,13 +945,13 @@
middlePath = nodes.get(nodes.size() - 3);
//閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+ middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
} else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
//涓棿璺緞
middlePath = nodes.get(nodes.size() - 2);
//閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+ middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
}
//鐩爣璺緞
@@ -972,12 +979,12 @@
//鑾峰彇灏忚溅绉诲姩閫熷害
BasShuttle basShuttle = basShuttleService.selectById(assignCommand.getShuttleNo());
Integer runSpeed = 1000;
- if (basShuttle != null) {
- Integer runSpeed1 = basShuttle.getRunSpeed();
- if (runSpeed1 != null) {
- runSpeed = runSpeed1;
- }
- }
+// if (basShuttle != null) {
+// Integer runSpeed1 = basShuttle.getRunSpeed();
+// if (runSpeed1 != null) {
+// runSpeed = runSpeed1;
+// }
+// }
List<NavigateNode> allNode = new ArrayList<>();
@@ -1008,13 +1015,13 @@
middlePath = nodes.get(nodes.size() - 3);
//閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+ middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
} else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
//涓棿璺緞
middlePath = nodes.get(nodes.size() - 2);
//閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+ middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
}
//鐩爣璺緞
@@ -1060,13 +1067,13 @@
middlePath = nodes.get(nodes.size() - 3);
//閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+ middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
} else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
//涓棿璺緞
middlePath = nodes.get(nodes.size() - 2);
//閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+ middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
}
//鐩爣璺緞
@@ -1233,7 +1240,7 @@
shuttleProtocol.setSourceLocNo(currentLocNo);
//鐩爣搴撲綅
assignCommand.setLocNo(wrkMast.getSourceLocNo());
- assignCommand.setCommands(commands);
+// assignCommand.setCommands(commands);
wrkMast.setWrkSts(26L);//灏忚溅鎼繍涓�
if (wrkMastMapper.updateById(wrkMast) > 0) {
@@ -1267,7 +1274,7 @@
//鐩爣搴撲綅
assignCommand.setLocNo(liftSiteLocNo);
- assignCommand.setCommands(commands);
+// assignCommand.setCommands(commands);
wrkMast.setWrkSts(22L);//灏忚溅杩佺Щ鐘舵��
if (wrkMastMapper.updateById(wrkMast) > 0) {
@@ -1314,7 +1321,7 @@
shuttleProtocol.setSourceLocNo(liftSiteLocNo);
//鐩爣搴撲綅
assignCommand.setLocNo(wrkMast.getSourceLocNo());
- assignCommand.setCommands(commands);
+// assignCommand.setCommands(commands);
wrkMast.setWrkSts(26L);//灏忚溅鎼繍涓�
if (wrkMastMapper.updateById(wrkMast) > 0) {
@@ -1343,12 +1350,15 @@
//鍒ゆ柇鍏朵粬绌洪棽绌挎杞︽槸鍚︾浠诲姟鏈�杩�
String distLocNo = null;//鐩爣鍦扮偣锛屽叆搴�=銆嬫彁鍗囨満鍙o紝鍑哄簱=銆嬭揣鐗╁簱浣嶅彿
- if (wrkMast.getIoType() < 101) {
+ if (wrkMast.getIoType() < 101 && wrkMast.getIoType() != 11) {
//鍏ュ簱
distLocNo = Utils.levToOutInStaLocNo(lev);
- }else {
+ }else if(wrkMast.getIoType() >= 101){
//鍑哄簱
distLocNo = locNo;
+ } else if (wrkMast.getIoType() == 11) {
+ //搴撲綅绉昏浆
+ distLocNo = wrkMast.getSourceLocNo();
}
//鍒ゆ柇褰撳墠浠诲姟鎵�鍦ㄦゼ灞傛槸鍚︽湁鍏朵粬浠诲姟宸茬粡鍒嗛厤浜嗗皬杞︼紝濡傛湁鍒欑洿鎺ョ敤璇ュ皬杞�(涓�灞傛ゼ浠呭垎閰嶄竴鍙拌溅)
@@ -1862,7 +1872,7 @@
//鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣�
LiftAssignCommand assignCommand = new LiftAssignCommand();
- assignCommand.setCommands(commands);
+// assignCommand.setCommands(commands);
assignCommand.setLiftNo(liftProtocol.getLiftNo());
assignCommand.setTaskNo(liftProtocol.getTaskNo());
if (wrkMastMapper.updateById(wrkMast) > 0) {
@@ -2010,6 +2020,232 @@
}
}
+ }
+
+ /**
+ * 搴撲綅绉昏浆
+ */
+ public synchronized void locToLocExecute() {
+ //鑾峰彇鍑哄叆搴撳伐浣滄。
+ List<WrkMast> wrkMasts = wrkMastMapper.selectInOutWrkMast();
+ if (wrkMasts.size() > 0) {
+ //鏈夊嚭鍏ュ簱浠诲姟锛屽繀椤荤瓑寰呬换鍔℃墽琛屽畬姣曞啀鎵ц搴撲綅绉昏浆
+ return;
+ }
+
+ //鏌ヨ搴撲綅绉昏浆宸ヤ綔妗�
+ List<WrkMast> wrkMasts1 = wrkMastMapper.selectLocToLocWrkMast();
+ for (WrkMast wrkMast : wrkMasts1) {
+
+ boolean step1 = this.locToLocExecuteStep1(wrkMast);//缁戝畾灏忚溅
+ if (!step1) {
+ continue;
+ }
+
+ boolean step2 = this.locToLocExecuteStep2(wrkMast);//璋冨害灏忚溅鍒扮洰鏍囨ゼ灞�
+ if (!step2) {
+ continue;
+ }
+
+ boolean step3 = this.locToLocExecuteStep3(wrkMast);//鍚屾ゼ灞傚簱浣嶇Щ杞�
+ if (!step3) {
+ continue;
+ }
+
+ }
+ }
+
+ /**
+ * 缁戝畾灏忚溅骞惰皟搴﹁溅
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean locToLocExecuteStep1(WrkMast wrkMast) {
+ if (wrkMast.getShuttleNo() == null) {//缁欏簱浣嶇Щ杞粦瀹氱┛姊溅鍙�
+ //瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅
+ HashMap<String,Object> searchIdleShuttle = this.searchIdleShuttle(wrkMast);
+ ShuttleThread shuttleThread = (ShuttleThread) searchIdleShuttle.get("result");
+ if (shuttleThread == null) {
+ //娌℃湁鎵惧埌绌洪棽绌挎杞�
+ return false;
+ }
+ wrkMast.setShuttleNo(shuttleThread.getSlave().getId());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿
+ wrkMastMapper.updateById(wrkMast);
+ }
+ return true;
+ }
+
+ /**
+ * 璋冨害灏忚溅鍒扮洰鏍囨ゼ灞�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean locToLocExecuteStep2(WrkMast wrkMast) {
+ if (wrkMast.getWrkSts() == 1 && wrkMast.getShuttleNo() != null) {
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (!shuttleProtocol.isIdle(wrkMast.getWrkNo().shortValue())) {
+ return false;//灏忚溅澶勪簬涓嶇┖闂茬姸鎬�
+ }
+
+ String currentLocNo = shuttleProtocol.getCurrentLocNo();//灏忚溅褰撳墠搴撲綅鍙�
+ int shuttleLev = Utils.getLev(currentLocNo);//灏忚溅鎵�鍦ㄦゼ灞�
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
+ LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+
+ //鍒ゆ柇灏忚溅鏄惁鍐嶇洰鏍囨ゼ灞�
+ if (shuttleLev != Utils.getLev(wrkMast.getLocNo())) {
+ //灏忚溅鍜岀洰鏍囦笉鍦ㄥ悓涓�妤煎眰
+
+ //鎻愬崌鏈哄彛绔欑偣搴撲綅鍙�
+ String liftSiteLocNo = Utils.levToOutInStaLocNo(shuttleLev);
+
+ //鍒涘缓鍒嗛厤鍛戒护
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
+ assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());//鍏ュ嚭搴撴ā寮�
+ assignCommand.setSourceLocNo(currentLocNo);//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
+
+ //灏忚溅绉诲姩鍒版彁鍗囨満鍙o紝璁$畻璺緞
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(shuttleProtocol.getLocNo(), liftSiteLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread);
+ if (commands == null) {
+ return false;//鏈壘鍒拌矾寰�
+ }
+
+ //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅
+ BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
+ Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
+
+ //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护
+ ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1600, ShuttleRunDirection.TOP.id, null, null, 500);
+ commands.add(moveCommand);
+
+ //鍒嗛厤鐩爣搴撲綅
+ shuttleProtocol.setLocNo(liftSiteLocNo);
+ //鐩爣搴撲綅
+ assignCommand.setLocNo(liftSiteLocNo);
+// assignCommand.setCommands(commands);
+ wrkMast.setWrkSts(5L);//灏忚溅杩佺Щ鐘舵��
+
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * 鍚屾ゼ灞傚簱浣嶇Щ杞�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean locToLocExecuteStep3(WrkMast wrkMast) {
+ if (wrkMast.getShuttleNo() == null) {
+ return false;
+ }
+
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (!shuttleProtocol.isIdle(wrkMast.getWrkNo().shortValue())) {
+ return false;//灏忚溅澶勪簬涓嶇┖闂茬姸鎬�
+ }
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
+ LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+
+ DevpThread devpThread = null;
+ for (DevpSlave devp : slaveProperties.getDevp()){
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ }
+
+ //鍒ゆ柇灏忚溅鏄惁鍦ㄥ伐浣滄。浠诲姟鐩爣妤煎眰
+ String currentLocNo = shuttleProtocol.getCurrentLocNo();//灏忚溅褰撳墠搴撲綅鍙�
+ int shuttleLev = Utils.getLev(currentLocNo);//灏忚溅鎵�鍦ㄦゼ灞�
+ if (shuttleLev != Utils.getLev(wrkMast.getLocNo())) {
+ return false;//涓嶅湪鍚屼竴妤煎眰
+ }
+
+ if (wrkMast.getWrkSts() == 1 || wrkMast.getWrkSts() == 8) {
+ //璋冨害灏忚溅鎵ц鍚屾ゼ灞傜Щ搴撲换鍔�
+
+ //鍒涘缓鍒嗛厤鍛戒护
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
+ assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());//鍏ュ嚭搴撴ā寮�
+ assignCommand.setSourceLocNo(currentLocNo);//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
+
+ List<ShuttleCommand> commands = new ArrayList<>();
+
+ if (wrkMast.getWrkSts() == 8) {//8.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴愶紝闇�瑕佸皢灏忚溅绉诲嚭鎻愬崌鏈�
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+ if (!liftProtocol.isIdleNoTask()) {
+ return false;//鎻愬崌鏈哄繖
+ }
+ //鍒ゆ柇鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙锋槸鍚︿竴鑷�
+ if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌浣嶏紝鍒ゆ柇绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙�
+ String locNo = wrkMast.getLocNo();
+ int lev = Utils.getLev(locNo);//鐩爣浜岀淮鐮佹墍鍦ㄦゼ灞�
+ int liftLev = liftProtocol.getLev().intValue();//鎻愬崌鏈烘墍鍦ㄦゼ灞�
+ if (liftLev != lev) {
+ return false;//鎻愬崌鏈轰笉鍦ㄧ洰鏍囨ゼ灞傝烦杩�
+ }
+
+ Integer staNo = Utils.levToOutInStaNo(lev >= 2 ? lev + 1 : lev);
+ //鑾峰彇鐩爣绔欎俊鎭�
+ StaProtocol staProtocol1 = devpThread.getStation().get(staNo);
+ if (staProtocol1 == null) {
+ return false;//绔欑偣淇℃伅涓嶅瓨鍦�
+ }
+ if (!staProtocol1.isLiftArrival()) {
+ return false;//绔欑偣鎻愬崌鏈哄埌浣嶄俊鍙穎alse
+ }
+
+ 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, 1600, runDirection, null, null, 500);
+ commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
+
+ currentLocNo = basDevp.getLocNo();//浣跨敤杈撻�佺珯鐐瑰彛浣滀负璧风偣鍧愭爣
+ }
+
+ //鐩存帴璁$畻杞﹀埌婧愬簱浣嶅埌鐩爣搴撲綅璺緞
+ List<ShuttleCommand> commands1 = this.shuttleAssignCommand(currentLocNo, wrkMast.getSourceLocNo(), wrkMast.getLocNo(), assignCommand, shuttleThread);
+ if (commands1 == null) {
+ return false;//鎵句笉鍒拌矾寰勭瓑寰呬笅涓�娆�
+ }
+ commands.addAll(commands1);
+
+ //鍒嗛厤浠诲姟鍙�
+ shuttleProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());
+ //鍒嗛厤婧愬簱浣�
+ shuttleProtocol.setSourceLocNo(wrkMast.getSourceLocNo());
+
+// assignCommand.setCommands(commands);
+ //鍒嗛厤鐩爣搴撲綅
+ shuttleProtocol.setLocNo(wrkMast.getLocNo());
+ //鐩爣搴撲綅
+ assignCommand.setLocNo(wrkMast.getLocNo());
+ wrkMast.setWrkSts(9L);//灏忚溅鍏ュ簱涓�
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ }
+ }
+
+ return true;
}
/**
@@ -2515,7 +2751,7 @@
commands.add(command);
//鎸囦护闆嗗垎閰�
- assignCommand.setCommands(commands);
+// assignCommand.setCommands(commands);
wrkCharge.setWrkSts(56L);//鍏呯數涓姸鎬�
if (wrkChargeMapper.updateById(wrkCharge) > 0) {
@@ -2557,7 +2793,7 @@
assignCommand.setLocNo(chargeLocNo);
//婧愬簱浣�
assignCommand.setSourceLocNo(currentLocNo);
- assignCommand.setCommands(commands);
+// assignCommand.setCommands(commands);
wrkCharge.setWrkSts(52L);//灏忚溅杩佺Щ鐘舵��
if (wrkChargeMapper.updateById(wrkCharge) > 0) {
//涓嬪彂浠诲姟
@@ -2595,7 +2831,7 @@
wrkCharge.setWrkSts(54L);//鎻愬崌鏈烘惉杩愪腑
//鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣�
LiftAssignCommand assignCommand = new LiftAssignCommand();
- assignCommand.setCommands(commands);
+// assignCommand.setCommands(commands);
assignCommand.setLiftNo(liftProtocol.getLiftNo());
assignCommand.setTaskNo(liftProtocol.getTaskNo());
if (wrkChargeMapper.updateById(wrkCharge) > 0) {
@@ -2650,7 +2886,7 @@
commands.add(command);
//鎸囦护闆嗗垎閰�
- assignCommand.setCommands(commands);
+// assignCommand.setCommands(commands);
wrkCharge.setWrkSts(56L);//鍏呯數涓姸鎬�
if (wrkChargeMapper.updateById(wrkCharge) > 0) {
--
Gitblit v1.9.1