From a3460ef70c67b64cc4bd28feb957df03b19325ad Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 20 六月 2023 16:31:09 +0800
Subject: [PATCH] 充电逻辑
---
src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java | 1
src/main/java/com/zy/core/enums/ShuttleChargeType.java | 2
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 480 ++++++++++++++++++++++++++--------------------------
src/main/java/com/zy/core/thread/ShuttleThread.java | 4
4 files changed, 245 insertions(+), 242 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 0a5f651..5ac7089 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1364,10 +1364,8 @@
wrkCharge.setWrkSts(53L);//杩佺Щ瀹屾垚
shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
break;
- case 56:
- if (shuttleProtocol.getBatteryPower() == 1000) {
- wrkCharge.setWrkSts(60L);//鍏呯數瀹屾垚
- }
+ case 56://灏忚溅鍘诲厖鐢垫々涓�
+ wrkCharge.setWrkSts(57L);//鍒拌揪鍏呯數妗�
break;
default:
}
@@ -2394,109 +2392,243 @@
* 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數
*/
public synchronized void loopShuttleCharge() {
- for (DevpSlave devpSlave : slaveProperties.getDevp()) {
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId());
- for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
- ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
- if (shuttleProtocol == null) {
- continue;
- }
-
- //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹�
- if (!shuttleProtocol.isRequireCharge()) {
- continue;
- }
-
- WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge);
- if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟
- continue;
- }
-
- ShuttleChargeType shuttleCharge = null;
- for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
- if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) {
- shuttleCharge = chargeType;
- break;
- }
- }
-
- if (shuttleCharge == null) {
- continue;
- }
-
- String chargeLocNo = shuttleCharge.locNo;
- wrkCharge = new WrkCharge();
- wrkCharge.setShuttleNo(shuttle.getId());
- wrkCharge.setCharge(shuttleCharge.id);
- wrkCharge.setWrkNo(commonService.getChargeWorkNo(4));
- wrkCharge.setWrkSts(51L); // 21.鍑嗗鍏呯數
- wrkCharge.setIoPri((double) 10);
- wrkCharge.setLocNo(chargeLocNo);
- wrkCharge.setMemo("charge");
- wrkCharge.setAppeTime(new Date());
- if (!wrkChargeService.insert(wrkCharge)) {
- News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId());
- continue;
- }
-
- shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);//鍏呯數涓�
- News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId());
+ for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
}
+
+ //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹�
+ if (!shuttleProtocol.isRequireCharge()) {
+ continue;
+ }
+
+ WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttleProtocol.getShuttleNo().intValue(), WrkChargeType.charge);
+ if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟
+ continue;
+ }
+
+ ShuttleChargeType shuttleCharge = null;
+ for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
+ if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) {
+ shuttleCharge = chargeType;
+ break;
+ }
+ }
+
+ if (shuttleCharge == null) {
+ continue;
+ }
+
+ String chargeLocNo = shuttleCharge.locNo;
+ wrkCharge = new WrkCharge();
+ wrkCharge.setShuttleNo(shuttle.getId());
+ wrkCharge.setCharge(shuttleCharge.id);
+ wrkCharge.setWrkNo(commonService.getChargeWorkNo(4));
+ wrkCharge.setWrkSts(51L); // 21.鍑嗗鍏呯數
+ wrkCharge.setIoPri((double) 10);
+ wrkCharge.setLocNo(chargeLocNo);
+ wrkCharge.setMemo("charge");
+ wrkCharge.setAppeTime(new Date());
+ if (!wrkChargeService.insert(wrkCharge)) {
+ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId());
+ continue;
+ }
+
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);//鍏呯數涓�
+ News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId());
}
-
-
}
/**
* 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔�
*/
public synchronized void executeShuttleCharge() {
- WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge);
- if (wrkCharge == null) {
- return;
- }
+ for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
+ WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge);
+ if (wrkCharge == null) {
+ return;
+ }
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo());
- if (shuttleThread == null) {
- return;
- }
- ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
- if (shuttleProtocol == null) {
- return;
- }
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo());
+ if (shuttleThread == null) {
+ return;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ return;
+ }
- //褰撳墠绌挎杞﹀簱浣嶅彿
- String currentLocNo = shuttleProtocol.getCurrentLocNo();
- //灏忚溅褰撳墠灞傞珮
- Integer currentLev = currentLocNo == null ? 0 : Utils.getLev(currentLocNo);
- //鑾峰彇鎻愬崌鏈�
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
- if (liftThread == null) {
- return;
- }
- LiftProtocol liftProtocol = liftThread.getLiftProtocol();
- if (liftProtocol == null) {
- return;
- }
- //鍏呯數搴撲綅鍙�
- String chargeLocNo = wrkCharge.getLocNo();
- //鍏呯數搴撲綅灞傞珮
- Integer chargeLocNoLev = Utils.getLev(chargeLocNo);
+ //褰撳墠绌挎杞﹀簱浣嶅彿
+ String currentLocNo = shuttleProtocol.getCurrentLocNo();
+ if (currentLocNo == null) {
+ return;
+ }
+ //灏忚溅褰撳墠灞傞珮
+ Integer currentLev = Utils.getLev(currentLocNo);
+ //鑾峰彇鎻愬崌鏈�
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
+ if (liftThread == null) {
+ return;
+ }
+ LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+ if (liftProtocol == null) {
+ return;
+ }
+ //鍏呯數搴撲綅鍙�
+ String chargeLocNo = wrkCharge.getLocNo();
+ //鍏呯數搴撲綅灞傞珮
+ Integer chargeLocNoLev = Utils.getLev(chargeLocNo);
- if (wrkCharge.getWrkSts() == 51) {
- if (currentLev == chargeLocNoLev) {
- //鍚屼竴灞傛棤闇�缁忚繃鎻愬崌鏈�
+ if (wrkCharge.getWrkSts() == 51) {
+ if (currentLev == chargeLocNoLev) {
+ //鍚屼竴灞傛棤闇�缁忚繃鎻愬崌鏈�
+ //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+
+ //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠�
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread);
+ if (commands == null) {
+ return;//鏈壘鍒拌矾寰�
+ }
+ //杩涜鍏呯數涓�
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
+
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
+ assignCommand.setTaskMode((short) 9);//鍏呯數
+ assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
+ assignCommand.setCharge(true);//鍏呯數浠诲姟
+
+ //鍒涘缓鍏呯數鎸囦护
+ ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 1);//寮�濮嬪厖鐢�
+ commands.add(command);
+
+ //鎸囦护闆嗗垎閰�
+ assignCommand.setCommands(commands);
+
+ wrkCharge.setWrkSts(56L);//鍏呯數涓姸鎬�
+ if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ }
+ }else {
+ //涓嶅悓灞傦紝璋冨害灏忚溅鍒板厖鐢垫々鐩爣灞�
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+
+ //鑾峰彇灏忚溅褰撳墠妤煎眰鐨勭珯鐐瑰彿
+ String liftSiteLocNo = Utils.levToOutInStaLocNo(currentLev);
+
+ //灏忚溅绉诲姩鍒版彁鍗囨満鍙g珯鐐癸紝璁$畻璺緞
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread);
+ if (commands == null) {
+ return;//鏈壘鍒拌矾寰�
+ }
+
+ //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅
+ BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
+ if (basDevp == null) {
+ return;//鎵句笉鍒扮珯鐐逛俊鎭�
+ }
+ Short basDevpQrCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
+
+ //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护
+ ShuttleCommand moveCommand = shuttleThread.getMoveCommand(basDevpQrCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, basDevpQrCode, 1400, 500);
+ commands.add(moveCommand);
+
+ //鍒嗛厤鐩爣搴撲綅
+ shuttleProtocol.setLocNo(chargeLocNo);
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
+ assignCommand.setTaskMode((short) 9);//鍏呯數
+ assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
+ assignCommand.setCharge(true);//鍏呯數浠诲姟
+ //鐩爣搴撲綅
+ assignCommand.setLocNo(chargeLocNo);
+ //婧愬簱浣�
+ assignCommand.setSourceLocNo(currentLocNo);
+ assignCommand.setCommands(commands);
+ wrkCharge.setWrkSts(52L);//灏忚溅杩佺Щ鐘舵��
+ if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ }
+ }
+
+ }else if(wrkCharge.getWrkSts() == 53){
+ //灏忚溅宸茬粡杈惧埌鎻愬崌鏈哄唴
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬�
+ if (!liftProtocol.isIdle()) {
+ return;
+ }
+
+ //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐�
+ if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) {
+ //灏忚溅涓嶅湪鎻愬崌鏈哄唴
+ return;
+ }
+
+ //缁欐彁鍗囨満鍒嗛厤浠诲姟
+ liftProtocol.setTaskNo(wrkCharge.getWrkNo().shortValue());//璁剧疆浠诲姟鍙�
+ liftProtocol.setShuttleNo(wrkCharge.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
+ liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓�
+
+ //鍛戒护list
+ ArrayList<LiftCommand> commands = new ArrayList<>();
+
+ //鎻愬崌鏈哄墠寰�鐩爣妤煎眰
+ //鑾峰彇鍏呯數搴撲綅鐩爣妤煎眰鍛戒护
+ LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), chargeLocNoLev >= 2 ? chargeLocNoLev + 1 : chargeLocNoLev);
+ commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
+
+ wrkCharge.setWrkSts(54L);//鎻愬崌鏈烘惉杩愪腑
+ //鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣�
+ LiftAssignCommand assignCommand = new LiftAssignCommand();
+ assignCommand.setCommands(commands);
+ assignCommand.setLiftNo(liftProtocol.getLiftNo());
+ assignCommand.setTaskNo(liftProtocol.getTaskNo());
+ if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand));
+ }
+
+ }else if(wrkCharge.getWrkSts() == 55){//55.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴�
//鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅
ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+
+ Short liftLev = liftProtocol.getLev();
+ if (liftLev == null) {
+ return;
+ }
+ //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌杈剧洰鏍囨ゼ灞�
+ if (liftLev.intValue() != chargeLocNoLev) {
+ return;//娌℃湁鍒拌揪鐩爣妤煎眰
+ }
+
+ //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
+ Integer staNo = Utils.levToOutInStaNo(liftLev >= 2 ? liftLev + 1 : liftLev);//绔欑偣鍙�
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ return;//绔欑偣涓嶅瓨鍦�
+ }
//鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠�
List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread);
if (commands == null) {
return;//鏈壘鍒拌矾寰�
}
+
+ short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
+ Short distCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄彛绔欑偣浜岀淮鐮�
+ Short runDirection = ShuttleRunDirection.BOTTOM.id;//杩愯鏂瑰悜
+ //鑾峰彇鍛戒护
+ ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, runDirection, startCode, 1400, 500);
+ commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
+
//杩涜鍏呯數涓�
shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
@@ -2517,167 +2649,33 @@
//涓嬪彂浠诲姟
MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
}
- }else {
- //涓嶅悓灞傦紝璋冨害灏忚溅鍒板厖鐢垫々鐩爣灞�
+ }else if (wrkCharge.getWrkSts() == 57) {//57.灏忚溅鍒拌揪鍏呯數妗�
+ //鍏呯數涓�
+ //鍒ゆ柇灏忚溅鏄惁鍏呮弧鐢甸噺锛屾弧鐢�1000鎴栫數鍘�54V浠ヤ笂
+ if (shuttleProtocol.getBatteryPower() >= 1000 && shuttleProtocol.getCurrentVoltage() >= 54000) {
+ //鍏呮弧锛屾柇寮�鍏呯數
+ List<ShuttleCommand> commands = new ArrayList<>();
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
+ assignCommand.setTaskMode((short) 0);
+ assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
+ assignCommand.setCharge(true);
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ //鍒涘缓鍏呯數鎸囦护
+ ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 2);//鏂紑鍏呯數
+ commands.add(command);
- //鑾峰彇灏忚溅褰撳墠妤煎眰鐨勭珯鐐瑰彿
- String liftSiteLocNo = Utils.levToOutInStaLocNo(currentLev);
+ //鎸囦护闆嗗垎閰�
+ assignCommand.setCommands(commands);
- //灏忚溅绉诲姩鍒版彁鍗囨満鍙g珯鐐癸紝璁$畻璺緞
- List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread);
- if (commands == null) {
- return;//鏈壘鍒拌矾寰�
- }
-
- //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅
- BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
- if (basDevp == null) {
- return;//鎵句笉鍒扮珯鐐逛俊鎭�
- }
- Short basDevpQrCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
-
- //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护
- ShuttleCommand moveCommand = shuttleThread.getMoveCommand(basDevpQrCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, basDevpQrCode, 1400, 500);
- commands.add(moveCommand);
-
- //鍒嗛厤鐩爣搴撲綅
- shuttleProtocol.setLocNo(chargeLocNo);
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
- assignCommand.setTaskMode((short) 9);//鍏呯數
- assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
- assignCommand.setCharge(true);//鍏呯數浠诲姟
- //鐩爣搴撲綅
- assignCommand.setLocNo(chargeLocNo);
- //婧愬簱浣�
- assignCommand.setSourceLocNo(currentLocNo);
- assignCommand.setCommands(commands);
- wrkCharge.setWrkSts(52L);//灏忚溅杩佺Щ鐘舵��
- if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
//涓嬪彂浠诲姟
MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
}
- }
- }else if(wrkCharge.getWrkSts() == 53){
- //灏忚溅宸茬粡杈惧埌鎻愬崌鏈哄唴
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬�
- if (!liftProtocol.isIdle()) {
- return;
- }
-
- //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐�
- if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) {
- //灏忚溅涓嶅湪鎻愬崌鏈哄唴
- return;
- }
-
- //缁欐彁鍗囨満鍒嗛厤浠诲姟
- liftProtocol.setTaskNo(wrkCharge.getWrkNo().shortValue());//璁剧疆浠诲姟鍙�
- liftProtocol.setShuttleNo(wrkCharge.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
- liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓�
-
- //鍛戒护list
- ArrayList<LiftCommand> commands = new ArrayList<>();
-
- //鎻愬崌鏈哄墠寰�鐩爣妤煎眰
- //鑾峰彇鍏呯數搴撲綅鐩爣妤煎眰鍛戒护
- LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), chargeLocNoLev >= 2 ? chargeLocNoLev + 1 : chargeLocNoLev);
- commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
-
- wrkCharge.setWrkSts(54L);//鎻愬崌鏈烘惉杩愪腑
- //鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣�
- LiftAssignCommand assignCommand = new LiftAssignCommand();
- assignCommand.setCommands(commands);
- assignCommand.setLiftNo(liftProtocol.getLiftNo());
- assignCommand.setTaskNo(liftProtocol.getTaskNo());
- if (wrkChargeMapper.updateById(wrkCharge) > 0) {
- //涓嬪彂浠诲姟
- MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand));
- }
-
- }else if(wrkCharge.getWrkSts() == 55){//55.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴�
- //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-
- Short liftLev = liftProtocol.getLev();
- if (liftLev == null) {
- return;
- }
- //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌杈剧洰鏍囨ゼ灞�
- if (liftLev.intValue() != chargeLocNoLev) {
- return;//娌℃湁鍒拌揪鐩爣妤煎眰
- }
-
- //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
- Integer staNo = Utils.levToOutInStaNo(liftLev >= 2 ? liftLev + 1 : liftLev);//绔欑偣鍙�
- BasDevp basDevp = basDevpService.selectById(staNo);
- if (basDevp == null) {
- return;//绔欑偣涓嶅瓨鍦�
- }
-
- //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠�
- List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread);
- if (commands == null) {
- return;//鏈壘鍒拌矾寰�
- }
-
- short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
- Short distCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄彛绔欑偣浜岀淮鐮�
- Short runDirection = ShuttleRunDirection.BOTTOM.id;//杩愯鏂瑰悜
- //鑾峰彇鍛戒护
- ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, runDirection, startCode, 1400, 500);
- commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
-
- //杩涜鍏呯數涓�
- shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
-
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
- assignCommand.setTaskMode((short) 9);//鍏呯數
- assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
- assignCommand.setCharge(true);//鍏呯數浠诲姟
-
- //鍒涘缓鍏呯數鎸囦护
- ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 1);//寮�濮嬪厖鐢�
- commands.add(command);
-
- //鎸囦护闆嗗垎閰�
- assignCommand.setCommands(commands);
-
- wrkCharge.setWrkSts(56L);//鍏呯數涓姸鎬�
- if (wrkChargeMapper.updateById(wrkCharge) > 0) {
- //涓嬪彂浠诲姟
- MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
- }
- }else if (wrkCharge.getWrkSts() == 56) {
- //鍏呯數涓�
- //鍒ゆ柇灏忚溅鏄惁鍏呮弧鐢甸噺锛屾弧鐢�1000鎴栫數鍘�54V浠ヤ笂
- if (shuttleProtocol.getBatteryPower() >= 1000 || shuttleProtocol.getCurrentVoltage() >= 54000) {
- //鍏呮弧锛屾柇寮�鍏呯數
- List<ShuttleCommand> commands = new ArrayList<>();
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
- assignCommand.setTaskMode((short) 0);
- assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
- assignCommand.setCharge(true);
-
- //鍒涘缓鍏呯數鎸囦护
- ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 2);//鏂紑鍏呯數
- commands.add(command);
-
- //鎸囦护闆嗗垎閰�
- assignCommand.setCommands(commands);
-
- shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
- //涓嬪彂浠诲姟
- MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
- }
-
- if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) {
- shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
+ if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) {
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
+ }
}
}
diff --git a/src/main/java/com/zy/core/enums/ShuttleChargeType.java b/src/main/java/com/zy/core/enums/ShuttleChargeType.java
index 7a99275..13e94cd 100644
--- a/src/main/java/com/zy/core/enums/ShuttleChargeType.java
+++ b/src/main/java/com/zy/core/enums/ShuttleChargeType.java
@@ -4,7 +4,7 @@
public enum ShuttleChargeType {
- FIRST(1, "1800102"),
+ FIRST(1, "1800101"),
SECOND(2, "1800103"),
;
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 eb577c1..438ff4a 100644
--- a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
@@ -240,6 +240,7 @@
&& this.pakMk.equals(true)
&& this.errorCodeType.equals(ShuttleErrorCodeType.NORMAL)
&& this.taskNo == 0
+ && this.protocolStatus.intValue() == ShuttleProtocolStatusType.IDLE.id
;
if (!res) {
return res;
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index e05f7e2..7aeff9c 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -923,6 +923,10 @@
command = commands.get(i);
for (Short qrCodeValue : qrCodeValues) {
//鐩爣浣嶇疆鏄彁鍗囨満鍙o紝鎴栬捣鐐逛綅缃槸鎻愬崌鏈哄彛涓旂洰鏍囨槸鍘绘彁鍗囨満鍐�
+ if (command.getDistCodeNum() == null || command.getStartCodeNum() == null) {
+ continue;
+ }
+
if (qrCodeValue.intValue() == command.getDistCodeNum().intValue() || (qrCodeValue.intValue() == command.getStartCodeNum().intValue() && command.getDistCodeNum().intValue() == liftProtocol.getBarcode().intValue())) {
//瀛樺湪
step = i + 1;
--
Gitblit v1.9.1