From c30e856b9ae160b84e3deb519e320feb09793283 Mon Sep 17 00:00:00 2001
From: whycq <123456>
Date: 星期二, 27 五月 2025 20:40:47 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 170 ++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 127 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 b28f535..992fb0f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -40,14 +40,17 @@
import com.zy.core.thread.LedThread;
import com.zy.core.thread.SiemensDevpThread;
import lombok.extern.slf4j.Slf4j;
-import net.bytebuddy.asm.Advice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -118,6 +121,7 @@
if (barcodeThread == null) {
continue;
}
+
String barcode = barcodeThread.getBarcode();
// 灏哄妫�娴嬪紓甯�
boolean back = false;
@@ -150,10 +154,15 @@
errMsg = "鎵爜澶辫触";
back = true;
}
+
+
+
// 閫�鍥�
if (back) {
// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
- MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+ if(!staProtocol.isOutEnable()){
+ continue;
+ }
if (!staProtocol.isLoading()){
continue;
@@ -167,28 +176,43 @@
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
}
-
+ //鎷f枡銆佺洏鐐逛换鍔★紝涓嶈繘鍏ユ柊鏉垮叆搴撴柟娉曪紝鐩存帴璺冲嚭
+ if(staProtocol.getWorkNo()>=3001 && staProtocol.getWorkNo()<=6000){
+ continue;
+ }
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing()
&& staProtocol.isLoading()
&& staProtocol.isInEnable()
&& !staProtocol.isEmptyMk()
- && staProtocol.isPakMk()) {// && !Cools.isEmpty(barcode)) {
+ && staProtocol.isPakMk() && !back) {// && !Cools.isEmpty(barcode)) {
if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
//鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
-// staProtocol.setWorkNo((short)9999);
-// staProtocol.setStaNo((short)172);
-// devpThread.setPakMk(staProtocol.getSiteId(), false);
-// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-// if (!result) {
-// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-// }
+ staProtocol.setWorkNo(wrkNo);
+ staProtocol.setStaNo(inSta.getBackSta().shortValue());
+ wrkNo++;
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ if (!result) {
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ }
continue;
}
-
+// //鍒ゆ柇101鍜�104鏄惁鏄嫞鏂欍�佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 璁惧鏆備笉鏀寔101銆�104绔欑洏鐐�/鎷f枡鍏ュ簱
+// WrkMast wrkMast1=wrkMastMapper.selectpj(inSta.getStaNo(),barcode);
+// if(!Cools.isEmpty(wrkMast1)){
+// if (wrkMast1.getIoType()!=1){
+// continue;
+// }
+// }
+// if( !Cools.isEmpty(barcode)&&!Cools.isEmpty(wrkMast1)){
+// log.error("101鎴�104鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱", wrkMast1.getWrkNo());
+// continue;
+// }
// 鍒ゆ柇閲嶅宸ヤ綔妗�
WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
if (wrkMast != null) {
@@ -202,10 +226,18 @@
WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
.eq("barcode", barcode)
- .in("io_type", 107,103));
+ .in("io_type", 107,103,104,57,53));
if (!Cools.isEmpty(checkPick)) {
continue;
+ } else {
+ News.info("鏂版澘鍏ュ簱鏉$爜===>>" + barcode);
}
+// WrkMast checkPick2 = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+// .eq("barcode", barcode)
+// .in("io_type", 57,53));
+// if (!Cools.isEmpty(checkPick2)) {
+// continue;
+// }
try {
@@ -218,6 +250,7 @@
param.setLocType1(locTypeDto.getLocType1());
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
+ .setTimeout(30, TimeUnit.SECONDS)
.setPath("/rpc/pakin/loc/v1")
.setJson(JSON.toJSONString(param))
.build()
@@ -235,6 +268,8 @@
News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ }else {
+ ledThread.errorReset();
}
@@ -413,33 +448,46 @@
}
String barcode = barcodeThread.getBarcode();
- if (!Cools.isEmpty(barcode)) {
+ WrkMast wrkMast1 = wrkMastMapper.selectPickStep1(staProtocol.getWorkNo().intValue());
+
+ //浠诲姟鍙峰鏋滃湪宸ヤ綔妗d腑瀛樺湪锛屽氨涓嶇敤鍘诲垽鏂潯鐮�
+ if(Cools.isEmpty(wrkMast1)) {
+// WrkMast mast = wrkMastMapper.selectPickStep(barcode);
+// if (Cools.isEmpty(mast)) {
+// break;
+// }
+
+ if (!Cools.isEmpty(barcode)) {
+
+
// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
- if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
- if (!staProtocol.isLoading()) {
+ if ("NG".endsWith(barcode) || "NoRead".equals(barcode) && staProtocol.isPakMk()) {
+ if (!staProtocol.isLoading()) {
+ continue;
+ }
+ if (!staProtocol.isPakMk()) {
+ continue;
+ }
+ if (staProtocol.getWorkNo() != 0) {
+ continue;
+ }
+
+ staProtocol.setWorkNo(wrkNo);
+ wrkNo++;
+ staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ // led 寮傚父鏄剧ず
+ if (ledThread != null) {
+ String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+ News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
+ MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+ }
continue;
}
- if (!staProtocol.isPakMk()) {
- continue;
- }
- if(staProtocol.getWorkNo() != 0) {
- continue;
- }
- staProtocol.setWorkNo(wrkNo);
- wrkNo++;
- staProtocol.setStaNo(pickSta.getBackSta().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- // led 寮傚父鏄剧ず
- if (ledThread != null) {
- String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
- News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
- MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
- }
+ } else {
continue;
}
- } else {
- continue;
}
@@ -453,7 +501,12 @@
// && (staProtocol.getWorkNo() == 9999 || staProtocol.getWorkNo() == 9997 || staProtocol.getWorkNo() == 9995)
&& staProtocol.isPakMk()) {
- WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
+ WrkMast wrkMast = null;
+ //浼樺厛鏌ヨ浠诲姟鍙峰搴旂殑宸ヤ綔妗f湁娌℃湁锛屽鏋滄湁鐨勮瘽灏变笉鐢ㄦ煡鏉$爜鍙�
+ wrkMast = wrkMastMapper.selectPickStep1(staProtocol.getWorkNo().intValue());
+ if(Cools.isEmpty(wrkMast)) {
+ wrkMast = wrkMastMapper.selectPickStep(barcode);
+ }
// WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
if (wrkMast == null) {
// 鏃犳嫞鏂欐暟鎹�
@@ -463,6 +516,9 @@
|| Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
continue;
}
+ LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+
+
// 鎷c�佺洏銆佸苟 浣滀笟绔欒浆鎹�
// int stnNo = 0;
@@ -532,12 +588,16 @@
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
continue;
}
-
+ if (ledThread != null) {
+ ledThread.errorReset();
+ }
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+
if (!result) {
News.error(methodName + ":鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
@@ -604,6 +664,7 @@
wrkMast.setCrnEndTime(new Date());
if (wrkMastMapper.updateById(wrkMast) != 0) {
// 澶嶄綅鍫嗗灈鏈�
+ News.info("crnStnToOutStn鍫嗗灈鏈哄浣嶆椂宸ヤ綔鍙�===>>" + crnProtocol.getTaskNo());
crnThread.setResetFlag(true);
} else {
News.error(methodName + ":鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
@@ -780,6 +841,12 @@
// 鍫嗗灈鏈烘帶鍒惰繃婊�
if (!crnProtocolNow.getStatusType().equals(CrnStatusType.IDLE) || crnProtocolNow.getTaskNo() != 0) {
continue;
+ }
+
+ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+ if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+ break;
+// return;
}
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
@@ -1144,6 +1211,7 @@
// continue;
}
// 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
+
if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
&& staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
@@ -1493,6 +1561,7 @@
}
// 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚
if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
+ log.error("鍏ュ簱瀹屾垚鍫嗗灈鏈轰换鍔�=========銆�"+JSON.toJSONString(wrkMast));
wrkMast.setWrkSts(4L);
} else {
continue;
@@ -1503,6 +1572,7 @@
// 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
if (wrkMastMapper.updateById(wrkMast) > 0) {
// 鍫嗗灈鏈哄浣�
+ News.info("storeFinished鍫嗗灈鏈哄浣嶆椂宸ヤ綔鍙�===>>" + crnProtocol.getTaskNo());
crnThread.setResetFlag(true);
}
}
@@ -1668,6 +1738,7 @@
param.setLocType1(locTypeDto.getLocType1());
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
+ .setTimeout(30, TimeUnit.SECONDS)
.setPath("/rpc/pakin/loc/v1")
.setJson(JSON.toJSONString(param))
.build()
@@ -1814,9 +1885,7 @@
Double total = 0.0;
EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
- if (Cools.isEmpty(locDetl)) {
- total = wrkDetl.getAnfme();
- } else {
+ if (!Cools.isEmpty(locDetl)) {
total = locDetl.getAnfme();
}
if (wrkMast.getIoType() == 101) {
@@ -1844,6 +1913,8 @@
if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
continue;
+ } else {
+// News.info("{}鍙稬ED鍛戒护涓嬪彂鎴愬姛锛侊紒锛乕ip锛歿}] [port锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort(),commands);
}
}
@@ -1880,16 +1951,27 @@
for (Integer staNo : led.getStaArr()) {
// 鑾峰彇鍙夎溅绔欑偣
StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ StaProtocol staProtocol1 = devpThread.getStation().get(staNo+1);
if (staProtocol == null) { continue; }
- if (staProtocol.getWorkNo() != 0) {
+ if (staProtocol1 == null) { continue; }
+ if (staProtocol.getWorkNo() != 0 || staProtocol.isLoading()) {
reset = false;
break;
}
+ if (staProtocol1.isLoading() || staProtocol1.getWorkNo() != 0) {
+ reset = false;
+ break;
+ }
+ if (!staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && !staProtocol1.isLoading() && staProtocol1.getWorkNo() == 0){
+// News.error("{}鍙稬ED鍏ュ簱鍙�2涓珯鐐归兘娌℃湁鏁版嵁,鍑嗗reset澶嶄綅鏄剧ず鍣紒锛侊紒[ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ }
}
// 鑾峰彇led绾跨▼
- LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
// led鏄剧ず榛樿鍐呭
if (reset) {
+ //News.info("{}鍙稬ED鍛戒护閲嶇疆锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
if (ledThread == null) {
continue;
}
@@ -2356,6 +2438,7 @@
try {
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
+ .setTimeout(30, TimeUnit.SECONDS)
.setPath("/rpc/auto/emptyOut/v1")
.build()
.doPost();
@@ -2394,6 +2477,7 @@
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
+ .setTimeout(30, TimeUnit.SECONDS)
.setPath("/rpc/auto/emptyIn/v1")
.setJson(JSON.toJSONString(locTypeDto))
.build()
--
Gitblit v1.9.1