From 39a7c54ceffb921258ac0148f58ccea60da0c87e Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 06 四月 2023 14:03:42 +0800
Subject: [PATCH] 充电逻辑
---
src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java | 21 ++
src/main/java/com/zy/core/thread/LiftThread.java | 9 +
src/main/java/com/zy/core/enums/ShuttleChargeType.java | 45 +++++
src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java | 6
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 344 ++++++++++++++++++++++++++++++++++++++++++
src/main/java/com/zy/core/thread/ShuttleThread.java | 8
src/main/java/com/zy/asrs/entity/WrkCharge.java | 7
src/main/resources/mapper/WrkChargeMapper.xml | 13 +
src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java | 6
src/main/java/com/zy/core/MainProcess.java | 3
src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java | 2
src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java | 3
12 files changed, 455 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/WrkCharge.java b/src/main/java/com/zy/asrs/entity/WrkCharge.java
index d105668..d4ff300 100644
--- a/src/main/java/com/zy/asrs/entity/WrkCharge.java
+++ b/src/main/java/com/zy/asrs/entity/WrkCharge.java
@@ -60,6 +60,13 @@
private Integer crnNo;
/**
+ * 鍥涘悜绌挎杞�
+ */
+ @ApiModelProperty(value= "鍥涘悜绌挎杞�")
+ @TableField("shuttle_no")
+ private Integer shuttleNo;
+
+ /**
* 绌挎杞�
*/
@ApiModelProperty(value= "绌挎杞�")
diff --git a/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java b/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java
index 82f9f59..fdc699b 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java
@@ -10,8 +10,9 @@
@Repository
public interface WrkChargeMapper extends BaseMapper<WrkCharge> {
- WrkCharge selectWorkingOfCharge(@Param("steNo") Integer steNo, @Param("charge") Integer charge);
+ WrkCharge selectWorkingOfCharge(@Param("shuttleNo") Integer shuttleNo, @Param("charge") Integer charge);
WrkCharge selectWorkingOfReset(@Param("steNo") Integer steNo);
+ WrkCharge selectByWorkNo(@Param("workNo") Integer workNo);
}
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 be5c779..aad864d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1163,7 +1163,8 @@
}
//鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭
- if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id && shuttleProtocol.getTaskNo() != 0) {
+ if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id //浠诲姟瀹屾垚绛夊緟纭
+ && shuttleProtocol.getTaskNo() != 0) {
//灏嗕换鍔℃。鏍囪涓哄畬鎴�
WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo().intValue());
if (wrkMast != null) {
@@ -1203,6 +1204,48 @@
}
}
+
+ //鍥涘悜绌挎杞︾姸鎬佷负鍏呯數鐘舵��
+ if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id //鍏呯數鏍囪瘑
+ && shuttleProtocol.getTaskNo() != 0) {
+ //鏌ヨ鏄惁鏈夊厖鐢典换鍔�
+ WrkCharge wrkCharge = wrkChargeMapper.selectByWorkNo(shuttleProtocol.getTaskNo().intValue());
+ if (wrkCharge != null) {
+ switch (wrkCharge.getWrkSts().intValue()) {
+ case 52://鍥涘悜绌挎杞﹁縼绉诲埌鎻愬崌鏈哄彛
+ wrkCharge.setWrkSts(53L);//杩佺Щ瀹屾垚
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
+ break;
+ case 56:
+ if (shuttleProtocol.getBatteryPower() == 1000) {
+ wrkCharge.setWrkSts(60L);//鍏呯數瀹屾垚
+ }
+ break;
+ default:
+ }
+
+ if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+ if (wrkCharge.getWrkSts() == 60) {
+ //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
+ }
+ //浠诲姟鍙锋竻闆�
+ shuttleProtocol.setTaskNo((short) 0);
+ //婧愬簱浣嶆竻闆�
+ shuttleProtocol.setSourceLocNo(null);
+ //鐩爣搴撲綅娓呴浂
+ shuttleProtocol.setLocNo(null);
+ //鏍囪澶嶄綅
+ shuttleProtocol.setPakMk(true);
+ //浠诲姟鎸囦护娓呴浂
+ shuttleProtocol.setAssignCommand(null);
+ News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
+ } else {
+ News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
+ }
+ }
+ }
+
}
}
@@ -1283,7 +1326,7 @@
commands.add(command2);//灏嗗懡浠ゆ坊鍔犺繘list
- //鎻愬崌鏈烘惉杩愬洓鍚戠┛姊溅
+ //鎻愬崌鏈哄墠寰�鐩爣妤煎眰
LiftCommand command3 = new LiftCommand();
command3.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
command3.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
@@ -1294,7 +1337,7 @@
commands.add(command3);//灏嗗懡浠ゆ坊鍔犺繘list
//鎻愬崌鏈哄埌杈炬寚瀹氭ゼ灞傦紝杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲嚭鍘�
- //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩杩涙潵
+ //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩鍑哄幓
LiftCommand command4 = new LiftCommand();
command4.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
command4.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
@@ -1350,6 +1393,33 @@
}
if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵��
+ liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
+ //浠诲姟鍙锋竻闆�
+ liftProtocol.setTaskNo((short) 0);
+ //鏍囪澶嶄綅
+ liftProtocol.setPakMk(true);
+ //浠诲姟鎸囦护娓呴浂
+ liftProtocol.setAssignCommand(null);
+ //鎻愬崌鏈鸿В閿�
+ liftProtocol.setLiftLock(false);
+ News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo());
+ } else {
+ News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo());
+ }
+ }
+
+ //鏌ヨ鏄惁鏈夊厖鐢典换鍔�
+ WrkCharge wrkCharge = wrkChargeMapper.selectByWorkNo(liftProtocol.getTaskNo().intValue());
+ if (wrkCharge != null) {
+ switch (wrkCharge.getWrkSts().intValue()) {
+ case 54://鎻愬崌鏈烘惉杩愪腑
+ wrkCharge.setWrkSts(55L);//鎻愬崌鏈烘惉杩愬畬鎴�
+ break;
+ default:
+ }
+
+ if (wrkChargeMapper.updateById(wrkCharge) > 0) {
//璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵��
liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
//浠诲姟鍙锋竻闆�
@@ -3339,6 +3409,274 @@
}
/**
+ * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數
+ */
+ 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;
+ String locNo;
+ for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
+ switch (chargeType.id) {
+ case 1:
+ if (devpThread.charge0 == false) {
+ ShuttleChargeType first = ShuttleChargeType.FIRST;
+ locNo = first.locNo;
+ if (wrkChargeService.selectWorkingOfCharge(first.id) == null) {
+ shuttleCharge = first;
+ }
+ }
+ break;
+ default:
+ }
+ }
+
+ 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;
+ }
+
+
+ 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 = Integer.parseInt(currentLocNo.substring(currentLocNo.length() - 2, currentLocNo.length()));
+ //鑾峰彇鎻愬崌鏈�
+ LiftSlave liftSlave = slaveProperties.getLift().get(0);
+ //鎻愬崌鏈哄簱浣嶅彿
+ String liftLocNo = liftSlave.getLiftLocNo(currentLev);
+ //鍏呯數搴撲綅鍙�
+ String chargeLocNo = wrkCharge.getLocNo();
+ //鍏呯數搴撲綅灞傞珮
+ Integer chargeLocNoLev = Integer.parseInt(chargeLocNo.substring(chargeLocNo.length() - 2, chargeLocNo.length()));
+
+ if (wrkCharge.getWrkSts() == 51 || wrkCharge.getWrkSts() == 55) {
+ if (currentLev == chargeLocNoLev) {
+ //鍚屼竴灞傛棤闇�缁忚繃鎻愬崌鏈�
+ //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅
+ //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠�
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, ShuttleTaskModeType.PAK_IN.id);
+ //杩涜鍏呯數涓�
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
+ assignCommand.setTaskMode((short) 9);//鍏呯數
+ assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
+ assignCommand.setCharge(true);//鍏呯數浠诲姟
+
+ //鍒涘缓鍏呯數鎸囦护
+ ShuttleCommand command = new ShuttleCommand();
+ command.setCommandWord((short) 5);//鍏呯數
+ command.setShuttleNo(shuttleProtocol.getShuttleNo());
+ command.setChargeSwitch((short) 1);//寮�濮嬪厖鐢�
+ command.setCommandEnd((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 {
+ //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿
+
+ //灏忚溅绉诲姩鍒版彁鍗囨満鍙o紝璁$畻璺緞
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, ShuttleTaskModeType.PAK_IN.id);
+ //鍒嗛厤鐩爣搴撲綅
+ shuttleProtocol.setLocNo(liftLocNo);
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
+ assignCommand.setTaskMode((short) 9);//鍏呯數
+ assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
+ assignCommand.setCharge(true);//鍏呯數浠诲姟
+ //鐩爣搴撲綅
+ assignCommand.setLocNo(liftLocNo);
+ //婧愬簱浣�
+ 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){
+ //灏忚溅宸茬粡杈惧埌鎻愬崌鏈哄彛
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId());
+ if (liftThread == null) {
+ return;
+ }
+ LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+ if (liftProtocol == null) {
+ return;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬�
+ if (!liftProtocol.isIdle()) {
+ return;
+ }
+
+ //缁欐彁鍗囨満鍒嗛厤浠诲姟
+ liftProtocol.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+ liftProtocol.setTaskNo(wrkCharge.getWrkNo().shortValue());//璁剧疆浠诲姟鍙�
+ liftProtocol.setShuttleNo(wrkCharge.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
+ liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓�
+
+ //鍛戒护list
+ ArrayList<LiftCommand> commands = new ArrayList<>();
+
+ //鎻愬崌鏈哄綋鍓嶆ゼ灞�
+ int liftLev = liftProtocol.getLev().intValue();
+ if (liftLev != currentLev) {
+ //绌挎杞﹀拰鎻愬崌鏈哄浜庝笉鍚屾ゼ灞�
+ LiftCommand command1 = new LiftCommand();
+ command1.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command1.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command1.setRun((short) 1);//鍗囬檷
+ command1.setDistPosition(currentLev.shortValue());//鐩爣妤煎眰(绌挎杞︽墍鍦ㄦゼ灞�)
+ command1.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+ commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
+ }
+
+ //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩杩涙潵
+ LiftCommand command2 = new LiftCommand();
+ command2.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command2.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command2.setRun((short) 6);//杈撻�佺嚎杩愪綔
+ command2.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+
+ commands.add(command2);//灏嗗懡浠ゆ坊鍔犺繘list
+
+ //鎻愬崌鏈哄墠寰�鐩爣妤煎眰
+ LiftCommand command3 = new LiftCommand();
+ command3.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command3.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command3.setRun((short) 1);//鍗囬檷
+ command3.setDistPosition(chargeLocNoLev.shortValue());//鍏呯數搴撲綅鐩爣妤煎眰
+ command3.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+
+ commands.add(command3);//灏嗗懡浠ゆ坊鍔犺繘list
+
+ //鎻愬崌鏈哄埌杈炬寚瀹氭ゼ灞傦紝杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲嚭鍘�
+ //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩鍑哄幓
+ LiftCommand command4 = new LiftCommand();
+ command4.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command4.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command4.setRun((short) 3);//杈撻�佺嚎杩愪綔
+ command4.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+
+ commands.add(command4);//灏嗗懡浠ゆ坊鍔犺繘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() == 56) {
+ //鍏呯數涓�
+ //鍒ゆ柇灏忚溅鏄惁鍏呮弧鐢甸噺
+ if (shuttleProtocol.getBatteryPower() == 1000) {
+ //鍏呮弧锛屾柇寮�鍏呯數
+ 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 = new ShuttleCommand();
+ command.setCommandWord((short) 5);//鍏呯數
+ command.setShuttleNo(shuttleProtocol.getShuttleNo());
+ command.setChargeSwitch((short) 2);//鏂紑鍏呯數
+ command.setCommandEnd((short) 1);
+ 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);
+ }
+ }
+
+ }
+
+ /**
* 灏忚溅鐢甸噺妫�娴� ===>> 鍙戣捣鍏呯數
*/
@SuppressWarnings("serial")
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java
index b56ed1b..d817b38 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java
@@ -11,12 +11,12 @@
public class WrkChargeServiceImpl extends ServiceImpl<WrkChargeMapper, WrkCharge> implements WrkChargeService {
@Override
- public WrkCharge selectWorking(Integer steNo, WrkChargeType type) {
+ public WrkCharge selectWorking(Integer shuttleNo, WrkChargeType type) {
switch (type) {
case charge:
- return this.baseMapper.selectWorkingOfCharge(steNo, null);
+ return this.baseMapper.selectWorkingOfCharge(shuttleNo, null);
case reset:
- return this.baseMapper.selectWorkingOfReset(steNo);
+ return this.baseMapper.selectWorkingOfReset(shuttleNo);
}
return null;
}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 1be2192..4c2189a 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -80,6 +80,9 @@
// 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
mainService.ledReset();
// 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢�
+ mainService.loopShuttleCharge();
+ mainService.executeShuttleCharge();
+ // 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢�
mainService.loopSteCharge();
mainService.executeSteCharge();
//鍑哄叆搴撴ā寮�
diff --git a/src/main/java/com/zy/core/enums/ShuttleChargeType.java b/src/main/java/com/zy/core/enums/ShuttleChargeType.java
new file mode 100644
index 0000000..6e71885
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/ShuttleChargeType.java
@@ -0,0 +1,45 @@
+package com.zy.core.enums;
+
+import com.core.common.Cools;
+
+public enum ShuttleChargeType {
+
+ FIRST(1, "1800102"),
+ ;
+
+ ShuttleChargeType(int id, String locNo) {
+ this.id = id;
+ this.locNo = locNo;
+ }
+
+ public int id;
+
+ public String locNo;
+
+ public static ShuttleChargeType get(String locNo) {
+ if (Cools.isEmpty(locNo)) {
+ return null;
+ }
+ ShuttleChargeType[] values = ShuttleChargeType.values();
+ for (ShuttleChargeType value : values) {
+ if (value.locNo.equals(locNo)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ public static ShuttleChargeType get(int id) {
+ if (Cools.isEmpty(id)) {
+ return null;
+ }
+ ShuttleChargeType[] values = ShuttleChargeType.values();
+ for (ShuttleChargeType value : values) {
+ if (value.id == id) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java b/src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java
index c8e374f..570559d 100644
--- a/src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java
+++ b/src/main/java/com/zy/core/enums/ShuttleProtocolStatusType.java
@@ -8,6 +8,8 @@
IDLE(1, "绌洪棽"),
WORKING(2, "浣滀笟涓�"),
WAITING(3, "绛夊緟纭"),
+ CHARGING(5, "鍏呯數涓�"),
+ CHARGING_WAITING(6, "鍏呯數浠诲姟绛夊緟纭"),
;
public Integer id;
diff --git a/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java b/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java
index 623a7e3..d4fd07e 100644
--- a/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java
+++ b/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java
@@ -28,6 +28,7 @@
* 6锛� 鍙崇Щ
* 7锛� 鍓嶇Щ
* 8锛� 鍚庣Щ
+ * 9: 鍏呯數
*/
private Short taskMode = 0;
@@ -51,4 +52,9 @@
*/
private Boolean auto = true;
+ /**
+ * 鏄惁涓哄厖鐢典换鍔°�倀rue锛氭槸锛宖alse锛氬惁
+ */
+ private Boolean charge = false;
+
}
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 e29ec7d..302507e 100644
--- a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
@@ -251,6 +251,27 @@
}
}
+ // 鏄惁婊¤冻鍏呯數鐘舵��
+ public Boolean isRequireCharge() {
+ boolean res = this.busyStatusType.equals(ShuttleStatusType.IDLE)
+ && this.pakMk.equals(true)
+ && this.errorCodeType.equals(ShuttleErrorCodeType.NORMAL)
+ && this.taskNo == 0
+ ;
+ if (!res) {
+ return res;
+ } else {
+ // 鐢甸噺
+ try {
+ Integer chargeLine = SpringUtils.getBean(BasShuttleService.class).selectById(this.shuttleNo).getChargeLine();
+ return this.getBatteryPower$() < chargeLine;
+ } catch (Exception e) {
+ News.error("fail", e);
+ return false;
+ }
+ }
+ }
+
//閫氳繃褰撳墠浜岀淮鐮佽幏鍙栧綋鍓嶅簱浣嶅彿
public String getCurrentLocNo() {
LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
index d6e574d..fc9225e 100644
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -416,6 +416,15 @@
News.info("鎻愬崌鏈烘墜鍔ㄤ换鍔℃墽琛屽畬鎴愶紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
}
+ //涓嬪彂涓�鏉℃彁鍗囨満瑙i攣鍛戒护
+ LiftCommand liftCommand = new LiftCommand();
+ liftCommand.setRun((short) 0);
+ liftCommand.setLiftNo(command.getLiftNo());
+ liftCommand.setLiftLock(false);
+ if (write(liftCommand)) {
+ News.info("鎻愬崌鏈虹姸鎬佸凡瑙i攣锛屾彁鍗囨満鍙�={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
+ }
+
}
}
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index 7f4a6fa..b273267 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -528,8 +528,12 @@
}
News.info("鍥涘悜绌挎杞︽墜鍔ㄤ换鍔℃墽琛屽畬鎴愶紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
}else {
- //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
- shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
+ if (!assignCommand.getCharge()) {
+ //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
+ }else {
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
+ }
News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屽畬鎴愮瓑寰呯‘璁や腑锛岀┛姊溅鍙�={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
}
diff --git a/src/main/resources/mapper/WrkChargeMapper.xml b/src/main/resources/mapper/WrkChargeMapper.xml
index 5ce83e6..373a6a0 100644
--- a/src/main/resources/mapper/WrkChargeMapper.xml
+++ b/src/main/resources/mapper/WrkChargeMapper.xml
@@ -27,6 +27,7 @@
<result column="appe_time" property="appeTime" />
<result column="memo" property="memo" />
<result column="barcode" property="barcode" />
+ <result column="shuttle_no" property="shuttleNo" />
</resultMap>
@@ -34,13 +35,13 @@
select top 1 *
from asr_wrk_charge
where 1=1
- <if test="steNo != null">
- and ste_no = #{steNo}
+ <if test="shuttleNo != null">
+ and shuttle_no = #{shuttleNo}
</if>
<if test="charge != null">
and charge = #{charge}
</if>
- and wrk_sts < 30
+ and wrk_sts < 60
and memo = 'charge'
order by appe_time, io_pri desc
</select>
@@ -57,4 +58,10 @@
order by appe_time, io_pri desc
</select>
+ <select id="selectByWorkNo" resultMap="BaseResultMap">
+ select top 1 * from asr_wrk_charge
+ where wrk_no=#{workNo}
+ order by appe_time, io_pri desc
+ </select>
+
</mapper>
--
Gitblit v1.9.1