From 24393cdbdcc3f3e921050e733bd6a27208d4ea55 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 09 五月 2023 12:48:54 +0800
Subject: [PATCH] console.html fixed
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 658 ++++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 528 insertions(+), 130 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 be5c779..f2b386c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -68,6 +68,10 @@
@Autowired
private BasSteErrLogService basSteErrLogService;
@Autowired
+ private BasShuttleErrLogService basShuttleErrLogService;
+ @Autowired
+ private BasShuttleErrService basShuttleErrService;
+ @Autowired
private BasCrnErrorMapper basCrnErrorMapper;
@Autowired
private BasSteService basSteService;
@@ -602,115 +606,6 @@
}
}
-// /**
-// * 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙�
-// */
-// public synchronized void shuttleIoInExecute() {
-// // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-// for (DevpSlave devp : slaveProperties.getDevp()) {
-// // 閬嶅巻鍏ュ簱绔�
-// for (DevpSlave.StaRack rackInStn : devp.getRackInStn()) {
-// // 鑾峰彇鍏ュ簱绔欎俊鎭�
-// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-//
-// StaProtocol staProtocol = devpThread.getStation().get(rackInStn.getStaNo());
-// StaProtocol staProtocol105 = devpThread.getStation().get(105);
-// staProtocol105.setWorkNo((short) 752);
-// staProtocol105.setStaNo((short) 100);
-//
-// StaProtocol staProtocol106 = devpThread.getStation().get(106);
-// staProtocol106.setWorkNo((short) 753);
-// staProtocol106.setStaNo((short) 100);
-//
-// if (staProtocol == null) {
-// continue;
-// } else {
-// staProtocol = staProtocol.clone();
-// }
-// Short workNo = staProtocol.getWorkNo();
-//
-// // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-// if (true || staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
-// WrkMast wrkMast = wrkMastMapper.selectRackInStep48(workNo, staProtocol.getSiteId());
-// if (wrkMast != null) {
-// if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 8) {
-// ShuttleThread shuttleThread = null;
-// HashMap<String, Object> searchIdleShuttle = null;
-// if (wrkMast.getWrkSts() == 4) {
-// //瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅
-// searchIdleShuttle = this.searchIdleShuttle(wrkMast);
-// shuttleThread = (ShuttleThread) searchIdleShuttle.get("result");
-// }else {
-// //鐘舵��8锛屽洓鍚戠┛姊溅宸插湪鎻愬崌鏈哄彛锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣�
-// Integer shuttleNo = wrkMast.getShuttleNo();//鍥涘悜绌挎杞﹀彿
-// shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-// }
-//
-// if (shuttleThread == null) {
-// continue;
-// }
-//
-// ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-// if (!shuttleProtocol.isIdle()) {
-// continue;
-// }
-//
-// wrkMast.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿
-//
-// //鍒嗛厤浠诲姟鍙�
-// shuttleProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());
-// //鍒嗛厤婧愬簱浣�
-// shuttleProtocol.setSourceLocNo(wrkMast.getSourceLocNo());
-//
-// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-// //鍥涘悜绌挎杞﹀彿
-// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
-// //浠诲姟鍙�
-// assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-// //鍏ュ嚭搴撴ā寮�
-// assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());
-// //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-// String currentLocNo = shuttleProtocol.getCurrentLocNo();
-// assignCommand.setSourceLocNo(currentLocNo);
-//
-// if (wrkMast.getWrkSts() == 8 || Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) {
-// //鍚屼竴灞�
-// //鍒嗛厤鐩爣搴撲綅
-// shuttleProtocol.setLocNo(wrkMast.getLocNo());
-// //鐩爣搴撲綅
-// assignCommand.setLocNo(wrkMast.getLocNo());
-// wrkMast.setWrkSts(9L);//灏忚溅鍏ュ簱涓�
-//
-// //鑾峰彇浠庡皬杞�
-// }else {
-// //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿
-//
-// //灏忚溅褰撳墠灞傞珮
-// Integer currentLev = Integer.parseInt(currentLocNo.substring(currentLocNo.length() - 2, currentLocNo.length()));
-//
-// //鑾峰彇鎻愬崌鏈�
-// LiftSlave liftSlave = slaveProperties.getLift().get(0);
-// //鎻愬崌鏈哄簱浣嶅彿
-// String liftLocNo = liftSlave.getLiftLocNo(currentLev);
-// shuttleProtocol.setLocNo(liftLocNo);
-// //鐩爣搴撲綅
-// assignCommand.setLocNo(liftLocNo);
-// wrkMast.setWrkSts(5L);//灏忚溅杩佺Щ鐘舵��
-// }
-//
-// if (wrkMastMapper.updateById(wrkMast) > 0) {
-// //涓嬪彂浠诲姟
-// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
-// }
-// }
-//
-// }
-// }
-//
-// }
-// }
-//
-// }
/**
* 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙�
@@ -793,6 +688,19 @@
//鍚屼竴灞傜洿鎺ュ彇璐ф棤闇�缁忚繃鎻愬崌鏈�
//鐩存帴璁$畻杞﹀埌鎻愬崌鏈哄彇璐у啀鍒板簱浣嶈矾寰勬寚浠�
List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, locNo);
+ if (wrkMast.getWrkSts() == 8) {
+ //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
+ BasDevp basDevp = basDevpService.selectById(109);//鑾峰彇鎻愬崌鏈轰俊鎭�
+ ShuttleCommand moveCommand = new ShuttleCommand();
+ moveCommand.setCommandWord((short) 1);
+ moveCommand.setStartCodeNum(Short.parseShort(basDevp.getQrCodeValue()));//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
+ moveCommand.setDistCodeNum(commands.get(0).getStartCodeNum());//鎻愬崌鏈哄彛浜岀淮鐮�
+ moveCommand.setStartToDistDistance(1300);
+ moveCommand.setMiddleToDistDistance(0);
+ moveCommand.setRunDirection(commands.get(0).getRunDirection());
+ moveCommand.setCommandEnd((short) 1);
+ commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
+ }
assignCommand.setCommands(commands);
//鍒嗛厤鐩爣搴撲綅
shuttleProtocol.setLocNo(wrkMast.getLocNo());
@@ -847,17 +755,24 @@
ShuttleCommand command = new ShuttleCommand();
command.setCommandWord((short) 1);
- command.setStartCodeNum(NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY()));
- command.setMiddleCodeNum((short) 0);
- command.setDistCodeNum(NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY()));
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
+ command.setStartCodeNum(startCodeNum);
+
+ command.setMiddleCodeNum((short) 1);
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
+ command.setDistCodeNum(distCodeNum);
+
command.setStartToDistDistance(allDistance);
- command.setMiddleToDistDistance(1000);
+ command.setMiddleToDistDistance(0);
command.setRunDirection(ShuttleRunDirection.get(startPath.getDirection()).id);
command.setPalletLift((short) 1);
- command.setForceMoveDistance(1000);
+ command.setForceMoveDistance(0);
command.setChargeSwitch((short) 2);
command.setIOControl((short) 0);
- command.setRunSpeed((short) 1000);
command.setRadarTmp((short) 0);
command.setCommandEnd((short) 1);
commands.add(command);
@@ -886,17 +801,24 @@
ShuttleCommand command = new ShuttleCommand();
command.setCommandWord((short) 1);
- command.setStartCodeNum(NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY()));
- command.setMiddleCodeNum((short) 0);
- command.setDistCodeNum(NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY()));
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
+ command.setStartCodeNum(startCodeNum);
+
+ command.setMiddleCodeNum((short) 1);
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
+ command.setDistCodeNum(distCodeNum);
+
command.setStartToDistDistance(allDistance);
- command.setMiddleToDistDistance(1000);
+ command.setMiddleToDistDistance(0);
command.setRunDirection(ShuttleRunDirection.get(startPath.getDirection()).id);
command.setPalletLift((short) 1);
- command.setForceMoveDistance(1000);
+ command.setForceMoveDistance(0);
command.setChargeSwitch((short) 2);
command.setIOControl((short) 0);
- command.setRunSpeed((short) 1000);
command.setRadarTmp((short) 0);
command.setCommandEnd((short) 1);
commands.add(command);
@@ -926,17 +848,24 @@
command = new ShuttleCommand();
command.setCommandWord((short) 1);
- command.setStartCodeNum(NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY()));
- command.setMiddleCodeNum((short) 0);
- command.setDistCodeNum(NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY()));
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
+ command.setStartCodeNum(startCodeNum);
+
+ command.setMiddleCodeNum((short) 1);
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
+ command.setDistCodeNum(distCodeNum);
+
command.setStartToDistDistance(allDistance);
- command.setMiddleToDistDistance(1000);
+ command.setMiddleToDistDistance(0);
command.setRunDirection(ShuttleRunDirection.get(startPath.getDirection()).id);
command.setPalletLift((short) 1);
- command.setForceMoveDistance(1000);
+ command.setForceMoveDistance(0);
command.setChargeSwitch((short) 2);
command.setIOControl((short) 0);
- command.setRunSpeed((short) 1000);
command.setRadarTmp((short) 0);
command.setCommandEnd((short) 1);
commands.add(command);
@@ -1052,6 +981,18 @@
}
} else if (wrkMast.getWrkSts() == 25) {
List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, wrkMast.getSourceLocNo(), liftLocNo);
+ //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
+ BasDevp basDevp = basDevpService.selectById(109);//鑾峰彇鎻愬崌鏈轰俊鎭�
+ ShuttleCommand moveCommand = new ShuttleCommand();
+ moveCommand.setCommandWord((short) 1);//灏忚溅绉诲姩鎸囦护瀛�
+ moveCommand.setStartCodeNum(Short.parseShort(basDevp.getQrCodeValue()));//鎻愬崌鏈轰簩缁寸爜
+ moveCommand.setDistCodeNum(commands.get(0).getStartCodeNum());
+ moveCommand.setStartToDistDistance(1300);
+ moveCommand.setMiddleToDistDistance(0);
+ moveCommand.setRunDirection(commands.get(0).getRunDirection());
+ moveCommand.setCommandEnd((short) 1);
+ commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
+
//鍒嗛厤鐩爣搴撲綅
shuttleProtocol.setLocNo(wrkMast.getSourceLocNo());
//鐩爣搴撲綅
@@ -1163,7 +1104,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 +1145,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 +1267,7 @@
commands.add(command2);//灏嗗懡浠ゆ坊鍔犺繘list
- //鎻愬崌鏈烘惉杩愬洓鍚戠┛姊溅
+ //鎻愬崌鏈哄墠寰�鐩爣妤煎眰
LiftCommand command3 = new LiftCommand();
command3.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
command3.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
@@ -1294,7 +1278,7 @@
commands.add(command3);//灏嗗懡浠ゆ坊鍔犺繘list
//鎻愬崌鏈哄埌杈炬寚瀹氭ゼ灞傦紝杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲嚭鍘�
- //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩杩涙潵
+ //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩鍑哄幓
LiftCommand command4 = new LiftCommand();
command4.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
command4.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
@@ -1350,6 +1334,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);
//浠诲姟鍙锋竻闆�
@@ -2848,10 +2859,129 @@
*/
public void recErr() {
try {
+ this.recShuttleErr();
this.recCrnErr();
this.recSteErr();
} catch (Exception e) {
News.error("recErr fail", e);
+ }
+ }
+
+ /**
+ * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰�
+ */
+ private void recShuttleErr() {
+ Date now = new Date();
+ for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) {
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId());
+ if (shuttleThread == null) {
+ continue;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ if (shuttleProtocol.getTaskNo() != 0) {
+ //鏈変换鍔�
+ BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo().intValue());
+ // 鏈夊紓甯�
+ if (latest == null) {
+ if (shuttleProtocol.getStatusErrorCode() != null && shuttleProtocol.getStatusErrorCode() > 0) {
+ WrkMast wrkMast = wrkMastMapper.selectById(shuttleProtocol.getTaskNo());
+ if (wrkMast == null) {
+ continue;
+ }
+ BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getStatusErrorCode().intValue());
+ String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
+ BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
+ null, // 缂栧彿
+ wrkMast.getWrkNo(), // 宸ヤ綔鍙�
+ now, // 鍙戠敓鏃堕棿
+ null, // 缁撴潫鏃堕棿
+ wrkMast.getWrkSts(), // 宸ヤ綔鐘舵��
+ wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨�
+ shuttleSlave.getId(), // 鍥涘悜绌挎杞�
+ null, // plc
+ wrkMast.getLocNo(), // 鐩爣搴撲綅
+ wrkMast.getStaNo(), // 鐩爣绔�
+ wrkMast.getSourceStaNo(), // 婧愮珯
+ wrkMast.getSourceLocNo(), // 婧愬簱浣�
+ wrkMast.getBarcode(), // 鏉$爜
+ (int) shuttleProtocol.getStatusErrorCode(), // 寮傚父鐮�
+ errName, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "浠诲姟涓紓甯�" // 澶囨敞
+ );
+ if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName);
+ }
+ }
+ } else {
+ // 寮傚父淇
+ if (shuttleProtocol.getStatusErrorCode() == null || shuttleProtocol.getStatusErrorCode() == 0) {
+ latest.setEndTime(now);
+ latest.setUpdateTime(now);
+ latest.setStatus(2);
+ if (!basShuttleErrLogService.updateById(latest)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId());
+ }
+ }
+ }
+ }else {
+ //鏃犱换鍔�
+ BasShuttleErrLog latest = basShuttleErrLogService.findLatest(shuttleSlave.getId());
+ // 鏈夊紓甯�
+ if (shuttleProtocol.getStatusErrorCode() != null && shuttleProtocol.getStatusErrorCode() > 0) {
+ // 璁板綍鏂板紓甯�
+ if (latest == null || (latest.getErrCode() != shuttleProtocol.getStatusErrorCode().intValue())) {
+ BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getStatusErrorCode().intValue());
+ String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
+ BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
+ null, // 缂栧彿
+ null, // 宸ヤ綔鍙�
+ now, // 鍙戠敓鏃堕棿
+ null, // 缁撴潫鏃堕棿
+ null, // 宸ヤ綔鐘舵��
+ null, // 鍏ュ嚭搴撶被鍨�
+ shuttleSlave.getId(), // 鍥涘悜绌挎杞�
+ null, // plc
+ null, // 鐩爣搴撲綅
+ null, // 鐩爣绔�
+ null, // 婧愮珯
+ null, // 婧愬簱浣�
+ null, // 鏉$爜
+ (int)shuttleProtocol.getStatusErrorCode(), // 寮傚父鐮�
+ errName, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "鏃犱换鍔″紓甯�" // 澶囨敞
+ );
+ if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName);
+ }
+ }
+ // 鏃犲紓甯�
+ } else {
+ // 寮傚父淇
+ if (latest != null && latest.getStatus() == 1) {
+ latest.setEndTime(now);
+ latest.setUpdateTime(now);
+ latest.setStatus(2);
+ if (!basShuttleErrLogService.updateById(latest)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId());
+ }
+ }
+ }
+ }
}
}
@@ -3339,6 +3469,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) {
+ //鍏呯數涓�
+ //鍒ゆ柇灏忚溅鏄惁鍏呮弧鐢甸噺锛屾弧鐢�1000鎴栫數鍘�54V浠ヤ笂
+ if (shuttleProtocol.getBatteryPower() >= 1000 || shuttleProtocol.getCurrentVoltage() >= 540) {
+ //鍏呮弧锛屾柇寮�鍏呯數
+ 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")
--
Gitblit v1.9.1