From f2b29ded44201976e1463de6898e74cc97569de0 Mon Sep 17 00:00:00 2001
From: zc <zc@123>
Date: 星期三, 18 六月 2025 10:03:31 +0800
Subject: [PATCH] 123
---
src/main/java/com/zy/asrs/service/WrkMastService.java | 4 +
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 93 +++++++++++++++++++++++++++++-
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | 45 +++++++++++++++
src/main/java/com/zy/core/enums/RedisKeyType.java | 1
4 files changed, 138 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index ff34a8d..31d2b2b 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -45,4 +45,8 @@
WrkMast selectWorkingPakout(Integer staNo);
WrkMast selectWorkingPakin(Integer staNo);
+
+ boolean checkTransferWrkMast();//妫�娴嬫槸鍚﹀瓨鍦ㄨ皟鎷ㄤ换鍔�
+
+ boolean checkNoTransferWorking();//妫�娴嬫槸鍚﹀瓨鍦ㄩ潪璋冩嫧浠诲姟
}
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..627c8a8 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;
}
@@ -661,6 +690,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 +1093,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 +1276,14 @@
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣锛屼换鍔″彿涓嶄竴鑷�", wrkMast.getWrkNo(), staProtocol.getSiteId());
return false;
}
+
+ //璋冩嫧浠诲姟鎵ц鏃讹紝涓嶅厑璁告湁鍏朵粬鍏ュ嚭搴撲换鍔″伐浣�
+ boolean checkNoTransferWorking = wrkMastService.checkNoTransferWorking();
+ if (checkNoTransferWorking) {
+ News.error("璋冩嫧浠诲姟鎵ц鏃讹紝涓嶅厑璁告湁鍏朵粬鍏ュ嚭搴撲换鍔″伐浣�");
+ return false;
+ }
+
}
//鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
@@ -1353,7 +1417,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 +1463,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";
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index 4bc0d00..0267600 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -155,4 +155,49 @@
public WrkMast selectWorkingPakin(Integer staNo) {
return this.baseMapper.selectWorkingPakin(staNo);
}
+
+ @Override
+ public boolean checkTransferWrkMast() {
+ List<WrkMast> wrkMastListIn = this.selectList(new EntityWrapper<WrkMast>()
+ .eq("io_type", 1)
+ .eq("source_sta_no", 1031)
+ );
+ if (!wrkMastListIn.isEmpty()) {
+ return true;
+ }
+
+ List<WrkMast> wrkMastListOut = this.selectList(new EntityWrapper<WrkMast>()
+ .eq("io_type", 101)
+ .eq("sta_no", 1031)
+ );
+ if (!wrkMastListOut.isEmpty()) {
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean checkNoTransferWorking() {
+ //璋冩嫧浠诲姟鎵ц鏃讹紝涓嶅厑璁告湁鍏朵粬鍏ュ嚭搴撲换鍔″伐浣�
+ List<WrkMast> wrkMastListIn = this.selectList(new EntityWrapper<WrkMast>()
+ .in("io_type", 1)
+ .notIn("source_sta_no", 1031)
+ );
+
+ if (!wrkMastListIn.isEmpty()) {
+ return true;
+ }
+
+ List<WrkMast> wrkMastListOut = this.selectList(new EntityWrapper<WrkMast>()
+ .in("io_type", 101)
+ .notIn("sta_no", 1031)
+ );
+
+ if (!wrkMastListOut.isEmpty()) {
+ return true;
+ }
+
+ return false;
+ }
}
diff --git a/src/main/java/com/zy/core/enums/RedisKeyType.java b/src/main/java/com/zy/core/enums/RedisKeyType.java
index 3800b70..38f0dcd 100644
--- a/src/main/java/com/zy/core/enums/RedisKeyType.java
+++ b/src/main/java/com/zy/core/enums/RedisKeyType.java
@@ -13,6 +13,7 @@
QUEUE_SHUTTLE("queue_shuttle_"),
QUEUE_FORK_LIFT("queue_fork_lift_"),
QUEUE_TASK("queue_task_"),
+ DEVP_ERROR_FLAG("devp_error_flag_"),
;
public String key;
--
Gitblit v1.9.1