From 61eeab28ca6b4c16508953efd7e613ee9dea823b Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期一, 15 九月 2025 16:27:08 +0800
Subject: [PATCH] 1
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 143 +++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 129 insertions(+), 14 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 8904c2d..a9f0dbf 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -163,6 +163,13 @@
*/
public synchronized void generateInboundWrk() {
try {
+// //妫�娴嬫槸鍚﹀瓨鍦ㄨ皟鎷ㄤ换鍔★紝涓嶆墽琛屽叆搴�
+// boolean checkTransferWrkMast = wrkMastService.checkTransferWrkMast();
+// if (checkTransferWrkMast) {
+// News.error("瀛樺湪璋冩嫧浠诲姟锛屼笉鎵ц鍏ュ簱");
+// return;
+// }
+
// 閬嶅巻鍏ュ簱鍙�
for (DevpSlave.Sta inSta : slaveProperties.getDevp().get(0).getInSta()) {
if (inSta.getStaNo() == 1014 || inSta.getStaNo() == 1025) {
@@ -223,7 +230,12 @@
.in("sta_no", 1024, 1013)
.eq("io_type", 101));
if (!wrkMastOutList.isEmpty()) {
- MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId()));
+ Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId());
+ if (o == null) {
+ redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId(), "lock", 15);
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId()));
+ setLedErrorData(staProtocol.getSiteId(), "浠诲姟鍐茬獊");
+ }
News.error("绔欑偣瀛樺湪鍑哄簱浠诲姟,绂佹鍏ュ簱,绔欑偣={}", staProtocol.getSiteId());
continue;
}
@@ -363,7 +375,12 @@
.in("sta_no", 1011, 1021)
.eq("io_type", 101));
if (!wrkMastOutList.isEmpty()) {
- MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId()));
+ Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId());
+ if (o == null) {
+ redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId(), "lock", 15);
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId()));
+ setLedErrorData(staProtocol.getSiteId(), "浠诲姟鍐茬獊");
+ }
News.error("绔欑偣瀛樺湪鍑哄簱浠诲姟,绂佹鍏ュ簱,绔欑偣={}", staProtocol.getSiteId());
continue;
}
@@ -492,6 +509,13 @@
public void outFirst() {
+// //妫�娴嬫槸鍚﹀瓨鍦ㄨ皟鎷ㄤ换鍔★紝瀛樺湪涓嶆墽琛屽嚭搴�
+// boolean checkTransferWrkMast = wrkMastService.checkTransferWrkMast();
+// if (checkTransferWrkMast) {
+// News.error("瀛樺湪璋冩嫧浠诲姟锛屼笉鎵ц鍑哄簱");
+// return;
+// }
+
DevpSlave devpSlave = slaveProperties.getDevp().get(0);
// 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
Date now = new Date();
@@ -515,7 +539,12 @@
.eq("source_sta_no", checkInSourceStaNo)
.eq("io_type", 1));
if (!wrkMastInList.isEmpty()) {
- MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo()));
+ Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo());
+ if (o == null) {
+ redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo(), "lock", 15);
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo()));
+ setLedErrorData(wrkMast.getStaNo(), "浠诲姟鍐茬獊");
+ }
News.error("绔欑偣瀛樺湪鍏ュ簱浠诲姟,绂佹鍑哄簱,绔欑偣={}", wrkMast.getStaNo());
continue;
}
@@ -573,7 +602,7 @@
/**
* 鍑哄簱鍒板嚭搴撳彛
*/
- public synchronized void stnToOutStn() {
+ public synchronized void stnToOutStn(int i) {
ShuttleThread shuttleThread1 = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 1);
ShuttleThread shuttleThread2 = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 2);
ShuttleProtocol status1 = shuttleThread1.getStatus();
@@ -604,19 +633,35 @@
if (wrkMast == null) {
continue;
}
-
String sourceLocNo = "1200305";
- String locNo = "1300105";
- if (wrkMast.getStaNo() == 1013) {
- sourceLocNo = "1200301";
- locNo = "1300101";
- if (loc.contains(locNo)) {
+ String locNo = "1100105";
+ if (wrkMast.getShuttleNo() == 1) {
+ if (wrkMast.getStaNo() == 1013) {
+ sourceLocNo = "1200301";
locNo = "1100101";
+ if (loc.contains(locNo)) {
+ locNo = "1100101";
+ }
+ } else {
+ if (loc.contains(locNo)) {
+ locNo = "1100105";
+ }
}
} else {
- if (loc.contains(locNo)) {
- locNo = "1100105";
+ if (wrkMast.getStaNo() == 1013) {
+ sourceLocNo = "1200301";
+ locNo = "1000101";
+ if (loc.contains(locNo)) {
+ locNo = "1000101";
+ }
+ } else {
+ if (loc.contains(locNo)) {
+ locNo = "1000105";
+ }
}
+ }
+ if (loc.contains(locNo)) {
+ locNo = "0900105";
}
boolean dispatchShuttle = shuttleDispatchUtils.shuttleMoveGenerate(wrkMast.getWrkNo(), sourceLocNo, locNo, wrkMast.getShuttleNo(), null, false);
@@ -661,6 +706,33 @@
log.info("鐢佃鏈烘暟鎹缃細{},{}", staNo, data);
} else {
log.info("鐢佃鏈烘暟鎹缃紓甯革細{},{}", wrkNo, response);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void setLedErrorData(Integer staNo, String msg) {
+ try {
+ HashMap<String, String> hashMap = new HashMap<>();
+ hashMap.put("msg", msg);
+ hashMap.put("sta", String.valueOf(staNo));
+ String response = null;
+ response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/led/getError")
+ .setJson(JSON.toJSONString(hashMap))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ Integer code = jsonObject.getInteger("code");
+ if (code.equals(200)) {
+ String data = jsonObject.getString("data");
+ List<LedCommand> wrkDetls = JSONArray.parseArray(data, LedCommand.class);
+ redisUtil.set("LED_" + staNo, wrkDetls, 30);
+ log.info("鐢佃鏈烘暟鎹缃細{},{}", staNo, data);
+ } else {
+ log.info("鐢佃鏈烘暟鎹缃紓甯革細{},{}", staNo, response);
}
} catch (Exception e) {
e.printStackTrace();
@@ -1037,7 +1109,7 @@
led = 3;
} else if (wrkMast.getSourceStaNo() == 1031) {
//宸ヤ綔鍙蜂竴鑷村垽鏂�
- if (!staProtocol.getFinishWorkNo().equals(wrkMast.getWmsWrkNo2())) {
+ if (!String.valueOf(staProtocol.getFinishWorkNo()).equals(wrkMast.getWmsWrkNo2())) {
News.taskInfo(wrkMast.getWrkNo(), "{}宸ヤ綔鍙�1锛寋}宸ヤ綔鍙�2锛�1135杩囨潵鐨勬墭鐩橈紝涓哄皢宸ヤ綔鍙峰啓鍒拌嚦1031", staProtocol.getFinishWorkNo(), wrkMast.getWmsWrkNo2());
return false;
}
@@ -1220,6 +1292,14 @@
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣锛屼换鍔″彿涓嶄竴鑷�", wrkMast.getWrkNo(), staProtocol.getSiteId());
return false;
}
+
+ //璋冩嫧浠诲姟鎵ц鏃讹紝涓嶅厑璁告湁鍏朵粬鍏ュ嚭搴撲换鍔″伐浣�
+ boolean checkNoTransferWorking = wrkMastService.checkNoTransferWorking();
+ if (checkNoTransferWorking) {
+ News.error("璋冩嫧浠诲姟鎵ц鏃讹紝涓嶅厑璁告湁鍏朵粬鍏ュ嚭搴撲换鍔″伐浣�");
+ return false;
+ }
+
}
//鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
@@ -1353,7 +1433,12 @@
.eq("source_sta_no", checkInSourceStaNo)
.eq("io_type", 1));
if (!wrkMastInList.isEmpty()) {
- MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo()));
+ Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo());
+ if (o == null) {
+ redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo(), "lock", 15);
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo()));
+ setLedErrorData(wrkMast.getStaNo(), "浠诲姟鍐茬獊");
+ }
News.error("绔欑偣瀛樺湪鍏ュ簱浠诲姟,绂佹鍑哄簱,绔欑偣={}", wrkMast.getStaNo());
continue;
}
@@ -1394,11 +1479,25 @@
}
if (wrkMast.getStaNo() == 1031) {
+ //璋冩嫧浠诲姟鎵ц鏃讹紝涓嶅厑璁告湁鍏朵粬鍏ュ嚭搴撲换鍔″伐浣�
+ boolean checkNoTransferWorking = wrkMastService.checkNoTransferWorking();
+ if (checkNoTransferWorking) {
+ News.error("璋冩嫧浠诲姟鎵ц鏃讹紝涓嶅厑璁告湁鍏朵粬鍏ュ嚭搴撲换鍔″伐浣�-鍑哄簱");
+ return false;
+ }
+
} else {
if (!isOutEnable(devpThread, wrkMast.getStaNo())) {
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙�", wrkMast.getWrkNo(), staProtocol.getSiteId());
return false;
}
+
+// //妫�娴嬫槸鍚﹀瓨鍦ㄨ皟鎷ㄤ换鍔★紝瀛樺湪涓嶆墽琛屽嚭搴�
+// boolean checkTransferWrkMast = wrkMastService.checkTransferWrkMast();
+// if (checkTransferWrkMast) {
+// News.error("瀛樺湪璋冩嫧浠诲姟锛屼笉鎵ц鍑哄簱");
+// return false;
+// }
}
String locNo = "0200305";
@@ -2401,6 +2500,22 @@
if (basShuttleCharge == null) {
return false;
}
+ try {
+ ShuttleThread shuttleThread2 = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo() == 1 ? 2 : 1);
+ if (shuttleThread2 == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol2 = shuttleThread2.getStatus();
+ if (shuttleProtocol2 == null) {
+ return false;
+ }
+ if (shuttleProtocol2.getCurrentLocNo().equals(basShuttleCharge.getWaitLocNo())) {
+ String locNo = Utils.getLocNo(Utils.getRow(basShuttleCharge.getWaitLocNo()) + 1, Utils.getBay(basShuttleCharge.getWaitLocNo()), Utils.getLev(basShuttleCharge.getWaitLocNo()));
+ basShuttleCharge.setWaitLocNo(locNo);
+ }
+ } catch (Exception e) {
+ log.error("瀵绘壘鏂扮殑寰呮満浣�,{}", e);
+ }
//璋冨害灏忚溅鍘诲緟鏈轰綅
boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), basShuttleCharge.getWaitLocNo(), wrkMast.getShuttleNo());
--
Gitblit v1.9.1