From 1503a5ccffbf2448d15ac662ad949521a189a2c7 Mon Sep 17 00:00:00 2001
From: zc <zc@123>
Date: 星期四, 01 五月 2025 12:10:10 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 219 ++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 176 insertions(+), 43 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 892adf2..27bc4e9 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1,8 +1,10 @@
package com.zy.asrs.service.impl;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
import com.zy.asrs.domain.enums.NotifyMsgType;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
@@ -20,14 +22,8 @@
import com.zy.core.cache.SlaveConnection;
import com.zy.core.dispatcher.ShuttleDispatchUtils;
import com.zy.core.enums.*;
-import com.zy.core.model.DevpSlave;
-import com.zy.core.model.LiftSlave;
-import com.zy.core.model.ShuttleSlave;
-import com.zy.core.model.Task;
-import com.zy.core.model.command.LiftAssignCommand;
-import com.zy.core.model.command.LiftCommand;
-import com.zy.core.model.command.ShuttleAssignCommand;
-import com.zy.core.model.command.ShuttleCommand;
+import com.zy.core.model.*;
+import com.zy.core.model.command.*;
import com.zy.core.model.protocol.ForkLiftStaProtocol;
import com.zy.core.model.protocol.LiftProtocol;
import com.zy.core.model.protocol.ShuttleProtocol;
@@ -38,12 +34,15 @@
import com.zy.core.thread.LiftThread;
import com.zy.core.thread.ShuttleThread;
import com.zy.core.thread.impl.FyDevpThread;
+import com.zy.core.thread.impl.NormalLedThread;
import com.zy.system.service.ConfigService;
+import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import java.io.IOException;
import java.util.*;
/**
@@ -183,32 +182,33 @@
LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
String errMsg = "";
if (!back && staProtocol.isBackErr()) {
- errMsg = "瓒呭寮傚父";
+ errMsg = "鍚庤秴闄�";
back = true;
}
if (!back && staProtocol.isHighErr()) {
errMsg = "瓒呴珮寮傚父";
back = true;
}
- if (!back && staProtocol.isRightErr()) {
- errMsg = "瓒呴暱寮傚父";
+ if (!back && staProtocol.isWeightErr()) {
+ errMsg = "瓒呴噸寮傚父";
back = true;
}
- if (!back && staProtocol.isWeightErr()) {
- errMsg = "瓒呴噸";
+ if (!back && staProtocol.isRightErr()) {
+ errMsg = "鍙宠秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isLeftErr()) {
+ errMsg = "宸﹁秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isBarcodeErr()) {
+ errMsg = "鎵爜寮傚父";
back = true;
}
// 閫�鍥�
if (back) {
- if (!staProtocol.isLoading()) {
- continue;
- }
- if (!staProtocol.isPakMk()) {
- continue;
- }
// led 寮傚父鏄剧ず
if (ledThread != null) {
- MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
ledThread.error(errMsg);
}
}
@@ -216,6 +216,9 @@
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) {
String barcode = staProtocol.getBarcode();
+ if (Cools.isEmpty(barcode) || "?".endsWith(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
+ continue;
+ }
// 鍒ゆ柇閲嶅宸ヤ綔妗�
WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("barcode", barcode));
if (wrkMast != null && wrkMast.getWrkSts() == WrkStsType.NEW_INBOUND.sts) {
@@ -288,6 +291,9 @@
.setJson(JSON.toJSONString(hashMap))
.build()
.doPost();
+// if (!Cools.isEmpty(msg)&&"璇峰厛缁勬墭".equalsIgnoreCase(msg)){
+// ledThread.error(msg);
+// }
News.error("鍏ュ簱鐢宠澶辫触锛屼换鍔℃暟鎹�={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject));
}
} catch (Exception e) {
@@ -303,6 +309,42 @@
} else {
staProtocol = staProtocol.clone();
}
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+ String errMsg = "";
+ boolean back = false;
+ if (!back && staProtocol.isBackErr()) {
+ errMsg = "鍚庤秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isHighErr()) {
+ errMsg = "瓒呴珮寮傚父";
+ back = true;
+ }
+ if (!back && staProtocol.isWeightErr()) {
+ errMsg = "瓒呴噸寮傚父";
+ back = true;
+ }
+ if (!back && staProtocol.isRightErr()) {
+ errMsg = "鍙宠秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isLeftErr()) {
+ errMsg = "宸﹁秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isBarcodeErr()) {
+ errMsg = "鎵爜寮傚父";
+ back = true;
+ }
+ // 閫�鍥�
+ if (back) {
+
+ // led 寮傚父鏄剧ず
+ if (ledThread != null) {
+ ledThread.error(errMsg);
+ }
+ }
+
Short workNo = staProtocol.getWorkNo();
if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) {
String barcode = staProtocol.getBarcode();
@@ -336,6 +378,9 @@
.setJson(JSON.toJSONString(hashMap))
.build()
.doPost();
+// if (!Cools.isEmpty(msg)&&"璇峰厛缁勬墭".equalsIgnoreCase(msg)){
+// ledThread.error(msg);
+// }
News.error("鍏ュ簱鐢宠澶辫触锛屼换鍔℃暟鎹�={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject));
}
} catch (Exception e) {
@@ -382,6 +427,29 @@
if (wrkMast.getStaNo() == 1026) {
locNo = "1200305";
}
+ //鑾峰彇鎻愬崌鏈轰俊鎭�
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
+ if (liftThread == null) {
+ continue;
+ }
+
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ continue;
+ }
+
+ if (!liftThread.isIdle()) {
+ continue;
+ }
+
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+ if (liftProtocol.getHasTray()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ continue;
+ }
+
+
boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleNoLift(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_DEVP");
if (!dispatchShuttle) {
News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo());
@@ -395,6 +463,8 @@
wrkMast.setModiTime(new Date());
if (!wrkMastService.updateById(wrkMast)) {
News.info("{}浠诲姟锛屾洿鏂板伐浣滄。澶辫触", wrkMast.getWrkNo());
+ } else {
+ setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo());
}
}
}
@@ -429,15 +499,19 @@
if (wrkMast.getStaNo() == 1024) {
locNo = "1200305";
}
+
boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleNoLift(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), locNo, "TRANSPORT_DEVP");
if (!dispatchShuttle) {
News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo());
continue;
}
-
+ WrkMast wrkMast2 = wrkMastService.selectByMainWrkNo(wrkMast.getWrkNo());
wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);
wrkMast.setSystemMsg("");//娓呯┖娑堟伅
wrkMast.setModiTime(now);
+ if (wrkMast2 != null) {
+ wrkMast.setShuttleNo(wrkMast2.getShuttleNo());
+ }
if (!wrkMastService.updateById(wrkMast)) {
News.info("{}浠诲姟锛屾洿鏂板伐浣滄。澶辫触", wrkMast.getWrkNo());
} else {
@@ -510,12 +584,39 @@
wrkMast.setModiTime(new Date());
wrkMast.setShuttleNo(null);
wrkMastService.updateById(wrkMast);
+ setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo());
}
}
}
}
}
+
+ private void setLedData(Integer wrkNo, Integer staNo) {
+ try {
+ Map<String, Object> param = new HashMap<>();
+ param.put("taskNo", wrkNo);
+ String response = null;
+ response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/led/getTask2")
+ .setJson(JSON.toJSONString(param))
+ .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("鐢佃鏈烘暟鎹缃紓甯革細{},{}", wrkNo, response);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
/**
* 鍒濆鍖栧疄鏃跺湴鍥�
@@ -851,17 +952,17 @@
for (WrkMast wrkMast : wrkMasts) {
boolean step0 = this.liftInExecuteStep0(wrkMast);//璁惧涓婅蛋
if (!step0) {
- return;
+ continue;
}
boolean step1 = this.liftInExecuteStep1(wrkMast);//鎻愬崌鏈烘惉杩�
if (!step1) {
- return;
+ continue;
}
boolean step2 = this.liftInExecuteStep2(wrkMast);//瑙﹀彂鎼繍浠诲姟
if (!step2) {
- return;
+ continue;
}
}
} catch (Exception e) {
@@ -892,19 +993,27 @@
LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led);
String errMsg = "";
if (!back && staProtocol.isBackErr()) {
- errMsg = "瓒呭寮傚父";
+ errMsg = "鍚庤秴闄�";
back = true;
}
if (!back && staProtocol.isHighErr()) {
errMsg = "瓒呴珮寮傚父";
back = true;
}
- if (!back && staProtocol.isRightErr()) {
- errMsg = "瓒呴暱寮傚父";
+ if (!back && staProtocol.isWeightErr()) {
+ errMsg = "瓒呴噸寮傚父";
back = true;
}
- if (!back && staProtocol.isWeightErr()) {
- errMsg = "瓒呴噸";
+ if (!back && staProtocol.isRightErr()) {
+ errMsg = "鍙宠秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isLeftErr()) {
+ errMsg = "宸﹁秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isBarcodeErr()) {
+ errMsg = "鎵爜寮傚父";
back = true;
}
// 閫�鍥�
@@ -915,16 +1024,21 @@
ledThread.error(errMsg);
}
}
- if (!staProtocol.isAutoing()) {
- News.info("{}浠诲姟锛寋}绔欑偣锛屼笉鍦ㄨ嚜鍔ㄧ姸鎬�", wrkMast.getWrkNo(), staProtocol.getSiteId());
- return false;
- }
+ String barcode = staProtocol.getBarcode();
+
if (!staProtocol.isLoading()) {
News.info("{}浠诲姟锛寋}绔欑偣锛屾棤鎵樼洏", wrkMast.getWrkNo(), staProtocol.getSiteId());
return false;
}
if (wrkMast.getSourceStaNo() != 1031) {
+ if (!staProtocol.isAutoing()) {
+ News.info("{}浠诲姟锛寋}绔欑偣锛屼笉鍦ㄨ嚜鍔ㄧ姸鎬�", wrkMast.getWrkNo(), staProtocol.getSiteId());
+ return false;
+ }
+ if (Cools.isEmpty(barcode) || "?".endsWith(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
+ return false;
+ }
if (!staProtocol.getBarcode().equals(wrkMast.getBarcode())) {
News.info("{}浠诲姟锛寋}绔欑偣锛屾墭鐩樼爜涓嶅尮閰嶏紝绔欑偣鎵樼洏鐮侊細{}锛屼换鍔℃墭鐩樼爜锛歿}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode());
return false;
@@ -956,6 +1070,7 @@
wrkMast.setSystemMsg("");//娓呯┖娑堟伅
wrkMast.setModiTime(now);
if (wrkMastService.updateById(wrkMast)) {
+ setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo());
return false;
}
return false;
@@ -1035,7 +1150,7 @@
return false;
}
} else if (sourceStaNo == 1012) {
- if (staProtocol.getWorkNo().intValue() != wrkMast.getWrkNo()) {
+ if (staProtocol.getFinishWorkNo().intValue() != wrkMast.getWrkNo()) {
News.info("{}浠诲姟锛寋}绔欑偣锛屼换鍔″彿涓嶄竴鑷�", wrkMast.getWrkNo(), staProtocol.getSiteId());
return false;
}
@@ -1052,7 +1167,7 @@
} else if (wrkMast.getSourceStaNo() == 1032) {
locNo = "0200308";
}
- boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_LIFT");
+ boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleNoLift(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_LIFT");
if (!dispatchShuttle) {
News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo());
return false;
@@ -1155,12 +1270,12 @@
for (WrkMast wrkMast : wrkMasts) {
boolean step1 = this.liftOutExecuteStep1(wrkMast);//瑙﹀彂鎼繍浠诲姟
if (!step1) {
- return;
+ continue;
}
boolean step2 = this.liftOutExecuteStep2(wrkMast);//鎻愬崌鏈烘惉杩�
if (!step2) {
- return;
+ continue;
}
}
} catch (Exception e) {
@@ -1281,12 +1396,12 @@
//鑾峰彇鎻愬崌鏈哄懡浠�
List<LiftCommand> liftCommands = liftThread.getPalletOutCommand(wrkMast.getWrkNo(), sourceLev, wrkMast.getStaNo());
LiftCommand liftCommand = liftCommands.get(0);
- if (wrkMast.getStaNo() == 1031) {
- liftCommand.setTaskNo(wrkMast.getWrkNo());
- } else {
- int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
- liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
- }
+// if (wrkMast.getMainWrkNo() != null) {
+ liftCommand.setTaskNo(wrkMast.getWrkNo());
+// } else {
+// int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
+// liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
+// }
ArrayList<LiftCommand> commands = new ArrayList<>();
commands.add(liftCommand);
@@ -1304,6 +1419,7 @@
wrkMast.setModiTime(now);
if (wrkMastService.updateById(wrkMast)) {
+ setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo());
//涓嬪彂浠诲姟
liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
return false;
@@ -1419,6 +1535,11 @@
notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡
} else if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_NO_LIFT_12.sts) {
wrkMast.setWrkSts(WrkStsType.MOVE_OUT_NO_LIFT_13.sts);
+ WrkMast wrkMast1 = wrkMastService.selectByWorkNo(wrkMast.getMainWrkNo());
+ if (wrkMast1 != null) {
+ wrkMast1.setShuttleNo(wrkMast.getShuttleNo());
+ log.info("瀵逛富宸ヤ綔妗h繘琛岀粦瀹氬皬杞︼紝涓轰簡灏忚溅杩涜绉昏溅,{},{}", wrkMast1.getWrkNo(), wrkMast.getShuttleNo());
+ }
shuttleThread.setSyncTaskNo(0);
notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡
} else if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_NO_LIFT_10.sts) {
@@ -1740,6 +1861,14 @@
try {
this.recShuttleErr();
this.recLiftErr();
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, 1);
+ ledThread.errorReset();
+ ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, 2);
+ ledThread.errorReset();
+ ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, 3);
+ ledThread.errorReset();
+ ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, 4);
+ ledThread.errorReset();
} catch (Exception e) {
News.error("recErr fail", e);
}
@@ -2263,6 +2392,10 @@
* 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
*/
public synchronized void ioConvert() {
+ for (LedSlave led : slaveProperties.getLed()) {
+ NormalLedThread ledThread = (NormalLedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+ ledThread.reset();
+ }
try {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
FyDevpThread devpThread = (FyDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
--
Gitblit v1.9.1