From 844381b5feeb874c4a6f51bf0521611b3f097993 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 08 一月 2025 17:00:29 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 823 ++++++++++++++++++++++++++++++----------------------------
1 files changed, 428 insertions(+), 395 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 360ff12..b1aafc8 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -55,6 +55,8 @@
@Autowired
private BasShuttleErrService basShuttleErrService;
@Autowired
+ private BasLiftErrService basLiftErrService;
+ @Autowired
private CommonService commonService;
@Autowired
private BasMapService basMapService;
@@ -1293,221 +1295,162 @@
}
}
-// /**
-// * 寮傚父淇℃伅璁板綍
-// */
-// public void recErr() {
-// try {
-// this.recShuttleErr();
-// this.recLiftErr();
-// } catch (Exception e) {
-// News.error("recErr fail", e);
-// }
-// }
+ /**
+ * 寮傚父淇℃伅璁板綍
+ */
+ public void recErr() {
+ try {
+ this.recShuttleErr();
+ this.recLiftErr();
+ } catch (Exception e) {
+ News.error("recErr fail", e);
+ }
+ }
-// /**
-// * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰�
-// */
-// private void recShuttleErr() {
-// Date now = new Date();
-// for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) {
-// // 鑾峰彇鍥涘悜绌挎杞︿俊鎭�
-// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId());
-// if (shuttleThread == null) {
-// continue;
-// }
-// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-// if (shuttleProtocol == null) {
-// continue;
-// }
-//
-// if (shuttleProtocol.getTaskNo() != 0) {
-// //鏈変换鍔�
-// BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo());
-// // 鏈夊紓甯�
-// if (latest == null) {
-// if (shuttleProtocol.getErrState() != null && shuttleProtocol.getErrState() == 1) {
-// WrkMast wrkMast = wrkMastMapper.selectById(shuttleProtocol.getTaskNo());
-// if (wrkMast == null) {
-// continue;
-// }
-// BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getErrCode());
-// 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(), // 鏉$爜
-// shuttleProtocol.getErrCode(), // 寮傚父鐮�
-// errName, // 寮傚父
-// 1, // 寮傚父鎯呭喌
-// now, // 娣诲姞鏃堕棿
-// null, // 娣诲姞浜哄憳
-// now, // 淇敼鏃堕棿
-// null, // 淇敼浜哄憳
-// "浠诲姟涓紓甯�", // 澶囨敞
-// JSON.toJSONString(shuttleProtocol) // 绯荤粺鐘舵�佹暟鎹�
-// );
-// if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
-// News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName);
-// }
-// }
-// } else {
-// // 寮傚父淇
-// if (shuttleProtocol.getErrState() == null || shuttleProtocol.getErrState() == 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());
-//// }
-//// }
-//// }
-// }
-// }
-// }
-//
-// /**
-// * 鎻愬崌鏈哄紓甯镐俊鎭褰�
-// */
-// private void recLiftErr() {
-// Date now = new Date();
-// for (LiftSlave liftSlave : slaveProperties.getLift()) {
-// // 鑾峰彇鎻愬崌鏈轰俊鎭�
-// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId());
-// if (liftThread == null) {
-// continue;
-// }
-// LiftProtocol liftProtocol = liftThread.getLiftProtocol();
-// if (liftProtocol == null) {
-// continue;
-// }
-//
-// if (liftProtocol.getTaskNo() != 0) {
-// //鏈変换鍔�
-// BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(liftSlave.getId(), liftProtocol.getTaskNo().intValue());
-// // 鏈夊紓甯�
-// if (latest == null) {
-// if (liftProtocol.getDeviceError() != null && liftProtocol.getDeviceError()) {
-// WrkMast wrkMast = wrkMastMapper.selectById(liftProtocol.getTaskNo());
-// if (wrkMast == null) {
-// continue;
-// }
-//
-// String errName = "";
-// if (liftProtocol.getFrontOverrun()) {
-// errName = "鍓嶈秴闄�";
-// } else if (liftProtocol.getBackOverrun()) {
-// errName = "鍚庤秴闄�";
-// } else if (liftProtocol.getLeftOverrun()) {
-// errName = "宸﹁秴闄�";
-// } else if (liftProtocol.getRightOverrun()) {
-// errName = "鍙宠秴闄�";
-// } else if (liftProtocol.getOverHeight()) {
-// errName = "瓒呴珮";
-// } else if (liftProtocol.getOverWeight()) {
-// errName = "瓒呴噸";
-// }
-//
-// BasLiftErrLog basLiftErrLog = new BasLiftErrLog(
-// null, // 缂栧彿
-// wrkMast.getWrkNo(), // 宸ヤ綔鍙�
-// now, // 鍙戠敓鏃堕棿
-// null, // 缁撴潫鏃堕棿
-// wrkMast.getWrkSts(), // 宸ヤ綔鐘舵��
-// wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨�
-// liftSlave.getId(), // 鎻愬崌鏈�
-// null, // plc
-// wrkMast.getLocNo(), // 鐩爣搴撲綅
-// wrkMast.getStaNo(), // 鐩爣绔�
-// wrkMast.getSourceStaNo(), // 婧愮珯
-// wrkMast.getSourceLocNo(), // 婧愬簱浣�
-// wrkMast.getBarcode(), // 鏉$爜
-// null, // 寮傚父鐮�
-// errName, // 寮傚父
-// 1, // 寮傚父鎯呭喌
-// now, // 娣诲姞鏃堕棿
-// null, // 娣诲姞浜哄憳
-// now, // 淇敼鏃堕棿
-// null, // 淇敼浜哄憳
-// "浠诲姟涓紓甯�", // 澶囨敞
-// JSON.toJSONString(liftProtocol) // 绯荤粺鐘舵�佹暟鎹�
-// );
-// if (!basLiftErrLogService.insert(basLiftErrLog)) {
-// News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", liftSlave.getId(), errName);
-// }
-// }
-// } else {
-// // 寮傚父淇
-// if (liftProtocol.getDeviceError() == null || !liftProtocol.getDeviceError()) {
-// latest.setEndTime(now);
-// latest.setUpdateTime(now);
-// latest.setStatus(2);
-// if (!basLiftErrLogService.updateById(latest)) {
-// News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", liftSlave.getId(), latest.getId());
-// }
-// }
-// }
-// }
-// }
-// }
+ /**
+ * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰�
+ */
+ 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.getStatus();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ if (shuttleProtocol.getTaskNo() != 0) {
+ //鏈変换鍔�
+ BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo());
+ // 鏈夊紓甯�
+ if (latest == null) {
+ if (shuttleProtocol.getErrorCode() != null && Integer.parseInt(shuttleProtocol.getErrorCode()) != 0) {
+ WrkMast wrkMast = wrkMastService.selectByWorkNo(shuttleProtocol.getTaskNo());
+ if (wrkMast == null) {
+ continue;
+ }
+ int errorCode = Integer.parseInt(shuttleProtocol.getErrorCode());
+ BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(errorCode);
+ 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(), // 鏉$爜
+ errorCode, // 寮傚父鐮�
+ errName, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "浠诲姟涓紓甯�", // 澶囨敞
+ JSON.toJSONString(shuttleProtocol) // 绯荤粺鐘舵�佹暟鎹�
+ );
+ if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName);
+ }
+ }
+ } else {
+ // 寮傚父淇
+ if (shuttleProtocol.getErrorCode() == null || Integer.parseInt(shuttleProtocol.getErrorCode()) == 0) {
+ latest.setEndTime(now);
+ latest.setUpdateTime(now);
+ latest.setStatus(2);
+ if (!basShuttleErrLogService.updateById(latest)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId());
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 鎻愬崌鏈哄紓甯镐俊鎭褰�
+ */
+ private void recLiftErr() {
+ Date now = new Date();
+ for (ForkLiftSlave forkLiftSlave : slaveProperties.getForkLift()) {
+ // 鑾峰彇鎻愬崌鏈轰俊鎭�
+ ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, forkLiftSlave.getId());
+ if (forkLiftThread == null) {
+ continue;
+ }
+ ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
+ if (forkLiftProtocol == null) {
+ continue;
+ }
+
+ if (forkLiftProtocol.getTaskNo() != 0) {
+ //鏈変换鍔�
+ BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(forkLiftSlave.getId(), forkLiftProtocol.getTaskNo());
+ // 鏈夊紓甯�
+ if (latest == null) {
+ if (forkLiftProtocol.getErrorCode() != null && forkLiftProtocol.getErrorCode() != 0) {
+ WrkMast wrkMast = wrkMastService.selectByWorkNo(forkLiftProtocol.getWrkNo());
+ if (wrkMast == null) {
+ continue;
+ }
+
+ BasLiftErr basLiftErr = basLiftErrService.queryByCode(forkLiftProtocol.getErrorCode());
+ String errName = basLiftErr==null? "鏈煡寮傚父":basLiftErr.getErrName();
+
+ BasLiftErrLog basLiftErrLog = new BasLiftErrLog(
+ null, // 缂栧彿
+ wrkMast.getWrkNo(), // 宸ヤ綔鍙�
+ now, // 鍙戠敓鏃堕棿
+ null, // 缁撴潫鏃堕棿
+ wrkMast.getWrkSts(), // 宸ヤ綔鐘舵��
+ wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨�
+ forkLiftSlave.getId(), // 鎻愬崌鏈�
+ null, // plc
+ wrkMast.getLocNo(), // 鐩爣搴撲綅
+ wrkMast.getStaNo(), // 鐩爣绔�
+ wrkMast.getSourceStaNo(), // 婧愮珯
+ wrkMast.getSourceLocNo(), // 婧愬簱浣�
+ wrkMast.getBarcode(), // 鏉$爜
+ null, // 寮傚父鐮�
+ errName, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "浠诲姟涓紓甯�", // 澶囨敞
+ JSON.toJSONString(forkLiftProtocol) // 绯荤粺鐘舵�佹暟鎹�
+ );
+ if (!basLiftErrLogService.insert(basLiftErrLog)) {
+ News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", forkLiftSlave.getId(), errName);
+ }
+ }
+ } else {
+ // 寮傚父淇
+ if (forkLiftProtocol.getErrorCode() == null || forkLiftProtocol.getErrorCode() == 0) {
+ latest.setEndTime(now);
+ latest.setUpdateTime(now);
+ latest.setStatus(2);
+ if (!basLiftErrLogService.updateById(latest)) {
+ News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", forkLiftSlave.getId(), latest.getId());
+ }
+ }
+ }
+ }
+ }
+ }
// -------------------------------------------------------------------------------
@@ -1835,58 +1778,59 @@
//灏忚溅鎵�鍦ㄦゼ灞�
int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo());
-// ShuttleChargeType shuttleCharge = null;
-//
-// //鎼滅储灏忚溅鎵�鍦ㄦゼ灞傛湁娌℃湁鍏呯數妗�
-// for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
-// if (lev != Utils.getLev(chargeType.locNo)) {
-// continue;//灏忚溅鍜屽厖鐢垫々涓嶅湪鍚屼竴灞�
-// }
-//
-// //灏忚溅鍜屽厖鐢垫々鍦ㄥ悓涓�灞�
-// if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) {
-// shuttleCharge = chargeType;
-// break;
-// }
-// }
-//
-// if (shuttleCharge == null) {
-// //鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗�
-// //灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔�
-// for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
-// if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) {
-// //鍒ゆ柇褰撳墠鍏呯數妗╂ゼ灞傛槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗�
-// int chargeLev = Utils.getLev(chargeType.locNo);//鍏呯數妗╂ゼ灞�
-// boolean checkLevHasShuttle = Utils.checkLevHasShuttle(chargeLev);//妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞�
-// if (checkLevHasShuttle) {
-// //褰撳墠鍏呯數妗╂ゼ灞傛湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗�
-// continue;
-// }
-//
-// 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); // 51.鍑嗗鍏呯數
-// wrkCharge.setIoPri((double) 10);
-// wrkCharge.setLocNo(chargeLocNo);
-// wrkCharge.setMemo("charge");
-// wrkCharge.setAppeTime(new Date());
-// if (!wrkChargeService.insert(wrkCharge)) {
-// News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId());
-// continue;
-// }
+ ShuttleChargeType shuttleCharge = null;
+
+ //鎼滅储灏忚溅鎵�鍦ㄦゼ灞傛湁娌℃湁鍏呯數妗�
+ for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
+ if (lev != Utils.getLev(chargeType.locNo)) {
+ continue;//灏忚溅鍜屽厖鐢垫々涓嶅湪鍚屼竴灞�
+ }
+
+ //灏忚溅鍜屽厖鐢垫々鍦ㄥ悓涓�灞�
+ if (wrkMastService.selectChargeWorkingByChargeSta(chargeType.id) == null) {
+ shuttleCharge = chargeType;
+ break;
+ }
+ }
+
+ if (shuttleCharge == null) {
+ //鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗�
+ //灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔�
+ for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
+ if (wrkMastService.selectChargeWorkingByChargeSta(chargeType.id) == null) {
+ //鍒ゆ柇褰撳墠鍏呯數妗╂ゼ灞傛槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗�
+ int chargeLev = Utils.getLev(chargeType.locNo);//鍏呯數妗╂ゼ灞�
+ boolean checkLevHasShuttle = Utils.checkLevHasShuttle(chargeLev);//妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞�
+ if (checkLevHasShuttle) {
+ //褰撳墠鍏呯數妗╂ゼ灞傛湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗�
+ continue;
+ }
+
+ shuttleCharge = chargeType;
+ break;
+ }
+ }
+ }
+
+ if (shuttleCharge == null) {
+ continue;
+ }
+
+ String chargeLocNo = shuttleCharge.locNo;
+ wrkMast = new WrkMast();
+ wrkMast.setMk(String.valueOf(shuttleCharge.id));
+ wrkMast.setWrkNo(commonService.getWorkNo(WrkIoType.SHUTTLE_CHARGE.id));
+ wrkMast.setWrkSts(WrkStsType.NEW_CHARGE.sts);
+ wrkMast.setIoType(WrkIoType.SHUTTLE_CHARGE.id);//300.鍏呯數
+ wrkMast.setIoPri((double) 999);
+ wrkMast.setLocNo(chargeLocNo);
+ wrkMast.setShuttleNo(shuttle.getId());
+ wrkMast.setMemo("charge");
+ wrkMast.setAppeTime(new Date());
+ if (!wrkMastService.insert(wrkMast)) {
+ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId());
+ continue;
+ }
News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId());
}
@@ -1895,135 +1839,224 @@
}
}
-// /**
-// * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔�
-// */
-// public synchronized void executeShuttleCharge() {
-// try {
-// for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
-// WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttle.getId());
-// if (wrkCharge == null) {
-// continue;
-// }
-//
-// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo());
-// if (shuttleThread == null) {
-// continue;
-// }
-// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-// if (shuttleProtocol == null) {
-// continue;
-// }
-//
-// if (wrkCharge.getWrkSts() == 51) {
-// if (!shuttleProtocol.isIdleNoCharge()) {
-// continue;
-// }
-//
-// if (shuttleProtocol.getSuspendState() == 1) {
-// continue;//绠″埗涓�
-// }
-//
-// if (!shuttleProtocol.getCurrentLocNo().equals(wrkCharge.getLocNo())) {
-// //灏忚溅涓嶅湪鍏呯數妗╀綅缃�
-// shuttleDispatchUtils.dispatchShuttle(wrkCharge.getWrkNo(), wrkCharge.getLocNo(), shuttle.getId());//璋冨害灏忚溅鍘诲厖鐢垫々
-// continue;
-// }
-//
-// //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝厖鐢靛懡浠�
-// NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), true);
-// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>();
-// commands.add(chargeCommand);
-// //鍒涘缓鍒嗛厤鍛戒护
-// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
-// assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙�
-// assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡
-// assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-// assignCommand.setCommands(commands);//杩愯鍛戒护
-//
-// wrkCharge.setWrkSts(52L);//51.鐢熸垚鍏呯數浠诲姟 => 52.灏忚溅鍘诲厖鐢典腑
-// wrkCharge.setModiTime(new Date());
-// if (wrkChargeMapper.updateById(wrkCharge) > 0) {
-// //涓嬪彂浠诲姟
-// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
-// }
-// } else if (wrkCharge.getWrkSts() == 52) {
-// //妫�娴嬪皬杞︽槸鍚︽弧鐢�
-//
-// //鑾峰彇婊$數闃堝��
-// int maxPower = 95;
-// EntityWrapper<Config> wrapper = new EntityWrapper<>();
-// wrapper.eq("code", "chargeMaxValue");
-// Config config = configService.selectOne(wrapper);
-// if (config != null) {
-// maxPower = Integer.parseInt(config.getValue());
-// }
-//
-// if (shuttleProtocol.getPowerPercent() < maxPower) {
-// continue;
-// }
-//
-// //***************鍒ゆ柇鏄惁婊″厖鏍″噯***************
-// EntityWrapper<Config> wrapper1 = new EntityWrapper<>();
-// wrapper.eq("code", "shuttleMaxPowerVerify");
-// Config config1 = configService.selectOne(wrapper1);
-// if (config1 != null) {
-// if (config1.getValue().equals("true")) {
-// if (shuttleProtocol.getVoltage() < 5630) {
-// continue;//鐢靛帇涓嶅缁х画鍏呯數
-// }
-// }
-// }
-// //***************鍒ゆ柇鏄惁婊″厖鏍″噯***************
-//
-// //灏忚溅婊$數锛岀粨鏉熷厖鐢典换鍔�
-// NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), false);
-// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>();
-// commands.add(chargeCommand);
-// //鍒涘缓鍒嗛厤鍛戒护
-// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
-// assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙�
-// assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡
-// assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-// assignCommand.setCommands(commands);//杩愯鍛戒护
-//
-// //涓嬪彂浠诲姟
-// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
-// try {
-// Thread.sleep(3000);
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-//
-// wrkCharge.setWrkSts(53L);//52.灏忚溅鍘诲厖鐢典腑 => 53.灏忚溅鍏呯數瀹屾垚
-// wrkCharge.setModiTime(new Date());
-// if (wrkChargeMapper.updateById(wrkCharge) > 0) {
-// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE.id);
-// shuttleProtocol.setTaskNo(0);
-// shuttleProtocol.setPakMk(false);
-// }
-// } else if (wrkCharge.getWrkSts() == 53) {
-// if (shuttleProtocol.getChargState() == 0) {//灏忚溅澶勪簬鏈厖鐢电姸鎬�
-// boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkCharge.getLocNo()), shuttleThread.getSlave().getId(), shuttleThread);
-// if (!result) {
-// continue;
-// }
-//
-// wrkCharge.setWrkSts(60L);//53.灏忚溅鍏呯數瀹屾垚 => 60.鍏呯數浠诲姟瀹屾垚
-// wrkCharge.setModiTime(new Date());
-// if (wrkChargeMapper.updateById(wrkCharge) > 0) {
-//
-// }
-// }
-// }
-//
-// }
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
+ /**
+ * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔�
+ */
+ public synchronized void executeShuttleCharge() {
+ try {
+ //鏌ヨ灏忚溅绉诲簱浠诲姟
+ for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
+ WrkMast wrkMast = wrkMastService.selectChargeWorking(shuttle.getId());
+ if(wrkMast == null) {
+ continue;
+ }
+
+ boolean result1 = this.executeShuttleChargeStepGoToChargeSta(wrkMast);//灏忚溅绛夊緟鍏呯數妗�
+ if (!result1) {
+ continue;
+ }
+
+ boolean result2 = this.executeShuttleChargeStepArrivalChargeSta(wrkMast);//灏忚溅鍒拌揪鍏呯數妗�
+ if (!result2) {
+ continue;
+ }
+
+ boolean result3 = this.executeShuttleChargeStepStartCharge(wrkMast);//灏忚溅寮�濮嬪厖鐢�
+ if (!result3) {
+ continue;
+ }
+
+ boolean result4 = this.executeShuttleChargeStepStopCharge(wrkMast);//灏忚溅鍋滄鍏呯數
+ if (!result4) {
+ continue;
+ }
+
+ boolean result5 = this.executeShuttleChargeStepLeaveCharge(wrkMast);//灏忚溅绂诲紑鍏呯數妗�
+ if (!result5) {
+ continue;
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 灏忚溅鍓嶅線鍏呯數妗�
+ */
+ private synchronized boolean executeShuttleChargeStepGoToChargeSta(WrkMast wrkMast) {
+ if (wrkMast.getWrkSts() == WrkStsType.NEW_CHARGE.sts) {
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
+ //灏忚溅鍦ㄥ厖鐢垫々浣嶇疆
+ wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts);
+ wrkMast.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ return false;
+ }
+
+ //璋冨害灏忚溅鍘诲厖鐢垫々
+ boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getLocNo(), wrkMast.getShuttleNo());
+ if (!dispatched) {
+ return false;
+ }
+
+ wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN.sts);//灏忚溅鍓嶅線鍏呯數妗�
+ wrkMast.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * 灏忚溅鍒拌揪鍏呯數妗�
+ */
+ private synchronized boolean executeShuttleChargeStepArrivalChargeSta(WrkMast wrkMast) {
+ if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_RUN.sts) {
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ //鍒ゆ柇鏄惁瀛樺湪鏈畬鎴愮殑绉诲姩浠诲姟
+ WrkMast moveWrk = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
+ if(moveWrk != null) {
+ return false;
+ }
+
+ if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
+ return false;
+ }
+
+ //灏忚溅鍦ㄥ厖鐢垫々浣嶇疆
+ wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts);//灏忚溅鍒拌揪鍏呯數妗�
+ wrkMast.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast);
+
+ return false;
+ }
+ return true;
+ }
+
+ //灏忚溅寮�濮嬪厖鐢�
+ private synchronized boolean executeShuttleChargeStepStartCharge(WrkMast wrkMast) {
+ if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts) {
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝厖鐢靛懡浠�
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id);//鍑哄簱妯″紡
+ assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
+
+ List<ShuttleCommand> commands = shuttleOperaUtils.shuttleChargeCommand(assignCommand, shuttleThread, true);
+ assignCommand.setCommands(commands);//杩愯鍛戒护
+
+ wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_WORKING.sts);
+ wrkMast.setModiTime(new Date());
+ if (!wrkMastService.updateById(wrkMast)) {
+ return false;
+ }
+
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ return false;
+ }
+ return true;
+ }
+
+ //灏忚溅鍋滄鍏呯數
+ private synchronized boolean executeShuttleChargeStepStopCharge(WrkMast wrkMast) {
+ if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_WORKING.sts) {
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ if (!shuttleThread.isChargingCompleted()) {
+ return false;
+ }
+
+ //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝仠姝㈠厖鐢靛懡浠�
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id);//鍑哄簱妯″紡
+ assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
+
+ List<ShuttleCommand> commands = shuttleOperaUtils.shuttleChargeCommand(assignCommand, shuttleThread, false);
+ assignCommand.setCommands(commands);//杩愯鍛戒护
+
+ wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_COMPLETE.sts);
+ wrkMast.setModiTime(new Date());
+ if (!wrkMastService.updateById(wrkMast)) {
+ return false;
+ }
+
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ return false;
+ }
+ return true;
+ }
+
+ //灏忚溅绂诲紑鍏呯數妗�
+ private synchronized boolean executeShuttleChargeStepLeaveCharge(WrkMast wrkMast) {
+ if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_COMPLETE.sts) {
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ ShuttleChargeType chargeType = ShuttleChargeType.get(wrkMast.getMk());
+ if(chargeType == null) {
+ return false;
+ }
+
+ wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_COMPLETE.sts);
+ wrkMast.setModiTime(new Date());
+ if (wrkMastService.updateById(wrkMast)) {
+ //璋冨害灏忚溅鍘诲緟鏈轰綅
+ boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), chargeType.waitLocNo, wrkMast.getShuttleNo());
+ if (!dispatched) {
+ return false;
+ }
+ return false;
+ }
+
+ return false;
+ }
+ return true;
+ }
/**
* 鎵ц灏忚溅绉诲簱浠诲姟
--
Gitblit v1.9.1