From e2aa3f9c79ae688a56ea3bb5bc96ba1600f215de Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期一, 15 十二月 2025 13:35:10 +0800
Subject: [PATCH] 初始化
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 178 +++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 147 insertions(+), 31 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 0d945f2..a6160c5 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -29,6 +29,7 @@
import com.zy.core.enums.*;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
+import com.zy.core.model.LedSlave;
import com.zy.core.model.Task;
import com.zy.core.model.command.CommandPackage;
import com.zy.core.model.command.CrnCommand;
@@ -36,6 +37,8 @@
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.BarcodeThread;
+import com.zy.core.thread.LedThread;
+import com.zy.core.thread.ScaleThread;
import com.zy.core.thread.SiemensDevpThread;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
@@ -304,6 +307,8 @@
}
Short workNo = staProtocol.getWorkNo();
Short stano = staProtocol.getStaNo();
+ //led
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
// 灏哄妫�娴嬪紓甯�
boolean back = false;
@@ -336,6 +341,7 @@
errMsg = "鎵爜澶辫触";
back = true;
}
+
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading()
&& staProtocol.isInEnable()
@@ -343,32 +349,48 @@
&& staProtocol.isPakMk()) {
// 鑾峰彇鏉$爜鎵弿浠俊鎭�
BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
- if (barcodeThread == null) {
- continue;
- }
- String BoxNo = barcodeThread.getBarcode();
- TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
- if (!Cools.isEmpty(taskWrk1)) {
- log.info("鎵樼洏鐮侊細" + BoxNo + "浠诲姟妗e瓨鍦�");
- if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
- StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
- .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
- if (Cools.isEmpty(staDesc)) {
- return;
- } else {
- continue;
+ String BoxNo = "";
+ if (barcodeThread != null) {
+ BoxNo = barcodeThread.getBarcode();
+ TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
+ if (!Cools.isEmpty(taskWrk1)) {
+ log.info("鎵樼洏鐮侊細" + BoxNo + "浠诲姟妗e瓨鍦�");
+ if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
+ StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+ .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+ if (Cools.isEmpty(staDesc)) {
+ return;
+ } else {
+ continue;
+ }
+ }
+ }
+ if (back) {
+ storageEscalationParam.setWCSStatus(1);
+ storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
+ // led 寮傚父鏄剧ず
+ if (ledThread != null) {
+ String errorMsg = errMsg;
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
}
}
}
- if (back) {
- storageEscalationParam.setWCSStatus(1);
- storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
+
+ ScaleThread scaleThread = (ScaleThread) SlaveConnection.get(SlaveType.Scale, inSta.getBarcode());
+ if(scaleThread != null) {
+ storageEscalationParam.setWeight(scaleThread.getScale());
}
+
storageEscalationParam.setBoxNo(BoxNo);
//鏄惁婊℃澘 1婊℃澘 0绌烘澘
storageEscalationParam.setStaType(staProtocol.isEmptyMk() ? 0 : 1);
- //搴撲綅绫诲瀷 1楂樺簱浣� 0浣庡簱浣�
- storageEscalationParam.setLocType(staProtocol.isHigh() ? 1 : 0);
+ //搴撲綅绫诲瀷 2涓簱浣� 1楂樺簱浣� 0浣庡簱浣�
+ if(staProtocol.isHigh()){
+ storageEscalationParam.setLocType(1);
+ }else if(staProtocol.isLow()){
+ storageEscalationParam.setLocType(0);
+ }
+
storageEscalationParam.setTerminalNo(staProtocol.getSiteId());
log.info("缁勬墭鍏ュ簱={}", storageEscalationParam);
String response = "";
@@ -432,17 +454,31 @@
}
}
} else {
+ // led 寮傚父鏄剧ず
+ if (ledThread != null) {
+ String errorMsg = "宸叉湁鍏ュ簱浠诲姟锛侊紒锛�";
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
+ }
staProtocol.setWorkNo((short) 9991);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.error("宸叉湁鍏ュ簱浠诲姟,wms--->浠诲姟鍙�:{}",result.getTaskNo());
}
} else {
+
+ // led 寮傚父鏄剧ず
+ if (ledThread != null) {
+ String errorMsg = jsonObject.getString("ErrorMessage");
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
+ }
+
staProtocol.setWorkNo((short) 9991);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.error("鍏ュ簱寮傚父,wms杩斿洖鍊间笉绗﹀悎鏉′欢,wms--->{}",response);
}
}
} catch (Exception e) {
@@ -498,19 +534,28 @@
staProtocol = staProtocol.clone();
}
Short workNo = staProtocol.getWorkNo();
+ //led
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading()
&& staProtocol.isInEnable()
&& staProtocol.isPakMk()) {
// 鑾峰彇鏉$爜鎵弿浠俊鎭�
String BoxNo = "";
+ //绔欑偣鎷f枡鍥炲簱浠诲姟鏄細鏈変竴鏉�
+ TaskWrk taskWrkk =taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("start_point",staProtocol.getSiteId()));
+ if (!Cools.isEmpty(taskWrkk)) {
+ continue;
+ }
if(!staProtocol.isEmptyMk()&&staProtocol.getWorkNo()<9990){
- TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("task_no", workNo));
+
+ TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no", workNo));
if (!Cools.isEmpty(taskWrk1)) {
BoxNo = taskWrk1.getBarcode();
} else {
- TaskWrkLog taskWrkLog = taskWrkLogService.selectOne(new EntityWrapper<TaskWrkLog>().eq("task_no", workNo).orderBy("modi_time", false));
+ TaskWrkLog taskWrkLog = taskWrkLogService.selectOne(new EntityWrapper<TaskWrkLog>().eq("wrk_no", workNo).orderBy("modi_time", false));
if (taskWrkLog != null) {
BoxNo = taskWrkLog.getBarcode();
}
@@ -536,6 +581,7 @@
if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("ReturnStatus")) && jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) {
Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
+
// 鍒涙柊涓�涓叆搴撳伐浣滄。
TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
if (Cools.isEmpty(taskWrk)) {
@@ -579,17 +625,29 @@
}
}
} else {
+ // led 寮傚父鏄剧ず
+ if (ledThread != null) {
+ String errorMsg = "浠诲姟宸插瓨鍦紒锛侊紒锛�";
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
+ }
staProtocol.setWorkNo((short) 9991);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.error("浠诲姟宸插瓨鍦�,wms--->浠诲姟鍙�:{}",result.getTaskNo());
}
} else {
+ // led 寮傚父鏄剧ず
+ if (ledThread != null) {
+ String errorMsg = jsonObject.getString("ErrorMessage");
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
+ }
staProtocol.setWorkNo((short) 9991);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.error("璇锋眰鎺ュ彛寮傚父,wms--->{}",response);
}
} catch (Exception e) {
@@ -932,7 +990,7 @@
staProtocol.setStaNo(staDesc.getStnNo().shortValue());
boolean offer = false;
try {
- offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+ offer = MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol));
} catch (Exception e) {
log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e);
log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer);
@@ -1075,7 +1133,7 @@
crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞�
crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺�
- crnCommand.setCommand((short) 1);
+ crnCommand.setCommand((short) 0);
log.info("鍫嗗灈鏈哄叆搴撲换鍔′笅鍙�={}", crnCommand);
if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand), false)) {
log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
@@ -1118,9 +1176,19 @@
LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
//鍒ゆ柇鍏跺簱浣嶆槸鍚︿负娣卞簱浣嶏紝濡傛灉涓烘繁搴撲綅鎵惧叾娴呭簱浣嶆槸閮芥湁璐�
- if (locMast.getRow1() == 8 || locMast.getRow1() == 5) {
+ if (locMast.getRow1() == 5) {
LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
.eq("row1", (locMast.getRow1() + 1))
+ .eq("bay1", locMast.getBay1())
+ .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
+ if (!Cools.isEmpty(locMast1)) {
+ log.info(locMast.getLocNo() + "鍑烘繁搴撲綅锛屾祬搴撲綅鏈夎揣");
+ continue;
+ }
+ }
+ if (locMast.getRow1() == 8) {
+ LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("row1", (locMast.getRow1() - 1 ))
.eq("bay1", locMast.getBay1())
.eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
if (!Cools.isEmpty(locMast1)) {
@@ -1154,11 +1222,13 @@
if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
break;
}
-// int storeCount = basDevpService.getStoreCount();
-// if (storeCount >= maxCount) {
-// log.error("杈撻�佺嚎鏆傚瓨鏁拌揪鍒颁笂闄恵}", storeCount);
-// break;
-// }
+
+ //杈撻�佺嚎鍙厑璁稿瓨鍦ㄤ竴涓墭鐩�
+ int storeCount = basDevpService.getStoreCount();
+ if (storeCount >= maxCount) {
+ log.error("杈撻�佺嚎鏆傚瓨鏁拌揪鍒颁笂闄�,褰撳墠杈撻�佺嚎鎵樼洏鏁伴噺:{},鏈�澶ф殏瀛樻暟閲�:{}", storeCount,maxCount);
+ break;
+ }
// 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
@@ -1176,7 +1246,7 @@
command.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺�
command.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒�
command.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
- command.setCommand((short) 1);
+ command.setCommand((short) 0);
if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command), false)) {
log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(command));
@@ -1779,7 +1849,7 @@
taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹
taskWrk.setCreateTime(now);
taskWrk.setIoType(1);//浠诲姟绫诲瀷 鍏ュ簱
- taskWrk.setIoPri(13);//浼樺厛绾�
+ taskWrk.setIoPri(10);//浼樺厛绾�
taskWrk.setBarcode(barcode);//鏉$爜
taskWrk.setTargetPoint(locNo);
taskWrk.setStartPoint(staNo+"");
@@ -1836,4 +1906,50 @@
return taskWrk;
}
+ //----------------------------------------------------------鐢佃鏈烘樉绀哄鐞�----------------------------------------
+ /**
+ * 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
+ */
+ public synchronized void ledReset(Integer mark) {
+
+// log.info(""+mark+" - 0"+" - 寮�濮嬫墽琛�:鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅");
+ for (LedSlave led : slaveProperties.getLed()) {
+
+ // 鑾峰彇杈撻�佺嚎plc绾跨▼
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
+ // 鍛戒护闆嗗悎
+ boolean reset = true;
+ for (Integer staNo : led.getStaArr()) {
+ // 鑾峰彇鍙夎溅绔欑偣
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if (staProtocol == null) {
+ continue;
+ }
+ if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) {
+ reset = false;
+ break;
+ }
+ }
+ // 鑾峰彇led绾跨▼
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+ // led鏄剧ず榛樿鍐呭
+ if (reset) {
+ ledThread.setLedMk(true);
+ if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+ log.error(""+mark+" - 1"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ } else {
+
+ }
+ }
+// if (reset) {
+// if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+// log.error(""+mark+" - 1"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+// } else {
+//
+// }
+// }
+ }
+// log.info(""+mark+" - 0"+" - 鎵ц瀹屾垚锛氬叾浠� ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅");
+ }
+
}
--
Gitblit v1.9.1