From e0d9ab116462f57f5b8e4da7563184c921f9b534 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期四, 12 六月 2025 15:37:32 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 536 ++++++++++++++++++++++++++++++++++-------------------------
1 files changed, 306 insertions(+), 230 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 60130ae..683625a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -27,17 +27,17 @@
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
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.*;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.command.LedCommand;
+import com.zy.core.model.command.RgvCommand;
import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.RgvProtocol;
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.RgvThread;
import com.zy.core.thread.SiemensDevpThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -87,6 +87,10 @@
private BasErrLogService basErrLogService;
@Autowired
private BasCrnErrorMapper basCrnErrorMapper;
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private WrkMastLogService wrkMastLogService;
@Value("${wms.url}")
private String wmsUrl;
@@ -117,51 +121,27 @@
//LED
LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
- // 鍏ュ嚭搴撴ā寮忓垽鏂�
-// if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-// if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
-// continue;
-// }
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (!staProtocol.isLoading()){
continue;
}
- String barcode11 = barcodeThread.getBarcode();
- if (Cools.isEmpty(barcode11)){
- if (staProtocol.isAutoing()&& !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 9999 && staProtocol.isPakMk() && staProtocol.getStamp()==2){
- staProtocol.setStamp(3);
- News.info(""+mark+" - 7"+" - 鎵爜澶辫触2 ===>> {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{},绔欑偣:{}", inSta.getBarcode(), barcode11, inSta.getStaNo());
- staProtocol.setWorkNo((short) 9989);
- staProtocol.setStaNo(inSta.getBackSta().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- // led 寮傚父鏄剧ず
- if (ledThread != null) {
- String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
- MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
- }
- continue;
- }
- }
- if (staProtocol.isAutoing() && staProtocol.isInEnable()
- && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() > 9990
- && staProtocol.getWorkNo()!=9999 && staProtocol.getWorkNo()!=9992 && staProtocol.getWorkNo()!=0
- && staProtocol.isPakMk() && staProtocol.getStamp()>=2 && staProtocol.getStamp()!=3) {// && !Cools.isEmpty(barcode)) {
+
+ if (staProtocol.isAutoing()
+ && staProtocol.isInEnable()
+ && !staProtocol.isEmptyMk()
+ && staProtocol.getWorkNo() == 9999
+ && staProtocol.isPakMk()) {
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
-// try {
-// Thread.sleep(300);
-// }catch (Exception e){}
String barcode = barcodeThread.getBarcode();
if(!Cools.isEmpty(barcode)) {
News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
- staProtocol.setWorkNo((short) 9992);
- staProtocol.setStaNo(inSta.getBackSta().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-
+// staProtocol.setWorkNo((short) 9992);
+// staProtocol.setStaNo(inSta.getBackSta().shortValue());
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
News.info(""+mark+" - 2"+" - 鎵爜澶辫触1 ===>> {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{},绔欑偣:{}", inSta.getBarcode(), barcode, inSta.getStaNo());
// led 寮傚父鏄剧ず
if (ledThread != null) {
@@ -171,10 +151,10 @@
continue;
}
} else {
- staProtocol.setWorkNo((short) 9992);
- staProtocol.setStaNo(inSta.getBackSta().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// staProtocol.setWorkNo((short) 9992);
+// staProtocol.setStaNo(inSta.getBackSta().shortValue());
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
News.info(""+mark+" - 3"+" - 鎵爜澶辫触2 ===>> {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{},绔欑偣:{}", inSta.getBarcode(), barcode, inSta.getStaNo());
// led 寮傚父鏄剧ず
@@ -196,13 +176,13 @@
}
if (wrkMast != null) {
News.error(""+mark+" - 4"+" - 宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
- staProtocol.setWorkNo((short)9992);
- staProtocol.setStaNo(inSta.getBackSta().shortValue());
- 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((short)9992);
+// staProtocol.setStaNo(inSta.getBackSta().shortValue());
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// if (!result) {
+// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+// }
// led 寮傚父鏄剧ず
if (ledThread != null) {
@@ -210,6 +190,18 @@
MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
}
continue;
+ }
+
+ if (inSta.getStaNo() == 1005) {
+ //妫�娴嬫槸鍚︽湁鍑哄簱浠诲姟
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+ .in("io_type", 101, 103, 107)
+ .in("sta_no", 1003, 1007)
+ );
+ if (!wrkMasts.isEmpty()) {
+ News.error(""+mark+" - 4"+" - 1003绔欏叆搴擄紝妫�娴嬪瓨鍦ㄥ嚭搴撲换鍔★紝绛夊緟鍑哄簱浠诲姟鎵ц瀹屾垚,鎵樼洏鐮�={}", barcode);
+ continue;
+ }
}
try {
@@ -230,9 +222,13 @@
if (jsonObject.getInteger("code").equals(200)) {
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("loc_no", dto.getLocNo()));
+
barcodeThread.setBarcode("");
staProtocol.setWorkNo(dto.getWorkNo().shortValue());
staProtocol.setStaNo(dto.getStaNo().shortValue());
+ staProtocol.setPalletSize(locMast.getLocType2());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
if (!result) {
@@ -256,13 +252,13 @@
}
} else {
News.error(""+mark+" - 5"+" - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
- staProtocol.setWorkNo((short)9992);
- staProtocol.setStaNo(inSta.getBackSta().shortValue());
- 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((short)9992);
+// staProtocol.setStaNo(inSta.getBackSta().shortValue());
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// if (!result) {
+// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+// }
// led 寮傚父鏄剧ず
if (ledThread != null) {
@@ -279,7 +275,7 @@
}else {
News.errorNoLog(""+mark+" - 6"+" - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒"+" 鑷姩淇″彿锛�"+staProtocol.isAutoing()+"銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
+"銆佺┖鏉夸俊鍙凤細"+ staProtocol.isEmptyMk()+"銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
- +"銆侀攣瀹氭爣璁�"+ staProtocol.isPakMk()+"銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
+ +"銆侀攣瀹氭爣璁�"+ staProtocol.isPakMk());
}
}
@@ -306,17 +302,15 @@
staProtocol = staProtocol.clone();
}
-// // 鍏ュ嚭搴撴ā寮忓垽鏂�
- if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) {
- continue;
- }
-
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (!staProtocol.isLoading()){
continue;
}
- if (staProtocol.isAutoing() && staProtocol.isInEnable()
- && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999)
+
+ if (staProtocol.isAutoing()
+ && staProtocol.isInEnable()
+ && !staProtocol.isEmptyMk()
+ && staProtocol.getWorkNo() > 0
&& staProtocol.isPakMk()) {
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
// 鍒ゆ柇閲嶅宸ヤ綔妗�
@@ -346,7 +340,7 @@
}else {
News.errorNoLog(""+mark+" - 6"+" - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒"+" 鑷姩淇″彿锛�"+staProtocol.isLoading()+"銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
+"銆佺┖鏉夸俊鍙凤細"+ staProtocol.isEmptyMk()+"銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
- +"銆侀攣瀹氭爣璁�"+ staProtocol.isPakMk()+"銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
+ +"銆侀攣瀹氭爣璁�"+ staProtocol.isPakMk());
}
}
}
@@ -361,21 +355,6 @@
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鎷f枡鍏ュ簱鍙�
for (DevpSlave.Sta pickSta : devp.getPickSta()) {
- // 鑾峰彇鏉$爜鎵弿浠俊鎭�
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
- if (barcodeThread == null) {
- continue;
- }
- String barcode = barcodeThread.getBarcode();
- if(!Cools.isEmpty(barcode)) {
- News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
- if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
- continue;
- }
- } else {
- continue;
- }
-
// 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
@@ -385,13 +364,30 @@
staProtocol = staProtocol.clone();
}
-// // 鍏ュ嚭搴撴ā寮忓垽鏂�
-// if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
-
- if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
+ if (staProtocol.isAutoing()
+ && staProtocol.isLoading()
+ && staProtocol.isInEnable()
+ && staProtocol.getWorkNo() > 0
+ && staProtocol.isPakMk()) {
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
- WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
-// WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
+
+// // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+// if (barcodeThread == null) {
+// continue;
+// }
+// String barcode = barcodeThread.getBarcode();
+// if(!Cools.isEmpty(barcode)) {
+// News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+// if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+// continue;
+// }
+// } else {
+// continue;
+// }
+
+// WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
if (wrkMast == null) {
// 鏃犳嫞鏂欐暟鎹�
continue;
@@ -417,11 +413,11 @@
.eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
StaDesc staDesc = staDescService.selectOne(wrapper);
if (Cools.isEmpty(staDesc)) {
- News.error(""+mark+" - 2"+" - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
- staProtocol.setWorkNo((short) 9989);
- staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1));
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// News.error(""+mark+" - 2"+" - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
+// staProtocol.setWorkNo((short) 9989);
+// staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1));
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
//LED
LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
// led 寮傚父鏄剧ず
@@ -472,9 +468,11 @@
continue;
}
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setPalletSize(locMast.getLocType2());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
if (!result) {
@@ -533,9 +531,13 @@
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("loc_no", wrkMast.getSourceLocNo()));
+
// 涓嬪彂绔欑偣淇℃伅
staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setPalletSize(locMast.getLocType2());
if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
continue;
}
@@ -742,6 +744,17 @@
continue;
}
+ if (crnProtocol.getCrnNo() == 1) {
+ //鍒ゆ柇鍫嗗灈鏈哄拰褰撳墠浠诲姟鏄惁澶勪簬涓�涓贩閬�
+ if (Utils.getLaneByLocNo(wrkMast.getLocNo()) != crnProtocol.getCrnLane()) {
+ //鍒ゆ柇鍫嗗灈鏈烘墍鍦ㄥ贩閬撴槸鍚﹀瓨鍦ㄥ叾浠栦换鍔★紝濡傚瓨鍦ㄥ垯浼樺厛鎵ц
+ List<WrkMast> currentWrkMasts = wrkMastService.selectLaneWrkMast(crnProtocol.getCrnLane(), false);
+ if (!currentWrkMasts.isEmpty()) {
+ continue;//褰撳墠鍫嗗灈鏈烘墍鍦ㄥ贩閬撳瓨鍦ㄤ换鍔�
+ }
+ }
+ }
+
// 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
News.warnNoLog(""+mark+" - 1"+" - 8"+" - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}",wrkMast.getWrkNo());
@@ -870,6 +883,18 @@
staProtocol = staProtocol.clone();
}
+ if (wrkMast.getStaNo() == 1003 || wrkMast.getStaNo() == 1007) {
+ //妫�娴嬫槸鍚︽湁鍏ュ簱浠诲姟
+ List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+ .in("io_type", 1, 53, 57)
+ .in("source_sta_no", 1005)
+ );
+ if (!inWrkMasts.isEmpty()) {
+ News.error("" + mark + " - 2" + " - 妫�娴嬪瓨鍦ㄥ叆搴撲换鍔★紝绛夊緟鍏ュ簱浠诲姟鎵ц瀹屾垚鍐嶅嚭搴擄紝宸ヤ綔鍙�={}" + wrkMast.getWrkNo());
+ continue;
+ }
+ }
+
// // 鍏ュ嚭搴撴ā寮忓垽鏂�
// if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
// if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
@@ -893,6 +918,17 @@
if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
// continue;
break;
+ }
+
+ if (crnProtocol.getCrnNo() == 1) {
+ //鍒ゆ柇鍫嗗灈鏈哄拰褰撳墠浠诲姟鏄惁澶勪簬涓�涓贩閬�
+ if (Utils.getLaneByLocNo(wrkMast.getLocNo()) != crnProtocol.getCrnLane()) {
+ //鍒ゆ柇鍫嗗灈鏈烘墍鍦ㄥ贩閬撴槸鍚﹀瓨鍦ㄥ叾浠栦换鍔★紝濡傚瓨鍦ㄥ垯浼樺厛鎵ц
+ List<WrkMast> currentWrkMasts = wrkMastService.selectLaneWrkMast(crnProtocol.getCrnLane(), false);
+ if (!currentWrkMasts.isEmpty()) {
+ continue;//褰撳墠鍫嗗灈鏈烘墍鍦ㄥ贩閬撳瓨鍦ㄤ换鍔�
+ }
+ }
}
// 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
@@ -1268,7 +1304,6 @@
* 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
*/
public synchronized void storeFinished(Integer mark) {
-
for (CrnSlave crn : slaveProperties.getCrn()) {
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
@@ -1467,7 +1502,7 @@
&& staProtocol.isInEnable()
&& staProtocol.isEmptyMk()
&& (staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <= 9999)
- && staProtocol.isPakMk()&& staProtocol.getStamp()>=2) {
+ && staProtocol.isPakMk()) {
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
try {
@@ -1619,20 +1654,20 @@
// ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
- try{
- if (wrkMast.getIoType()>100){
- for (WrkDetl wrkDetl : wrkDetls){
- LocDetl locDetl = locDetlService.selectMatnrSpecs(wrkDetl.getMatnr(), wrkDetl.getSpecs(), wrkMast.getSourceLocNo());
- wrkDetl.setWeight(locDetl.getAnfme());
- }
- }else {
- for (WrkDetl wrkDetl : wrkDetls){
- wrkDetl.setWeight(wrkDetl.getAnfme());
- }
- }
- }catch (Exception e){
- log.error("宸ヤ綔妗f鏄庣粏杈撳叆鐢佃鏈哄け璐�1锛氬紓甯镐俊鎭�==銆�"+e);
- }
+// try{
+// if (wrkMast.getIoType()>100){
+// for (WrkDetl wrkDetl : wrkDetls){
+// LocDetl locDetl = locDetlService.selectMatnrSpecs(wrkDetl.getMatnr(), wrkDetl.getSpecs(), wrkMast.getSourceLocNo());
+// wrkDetl.setWeight(locDetl.getAnfme());
+// }
+// }else {
+// for (WrkDetl wrkDetl : wrkDetls){
+// wrkDetl.setWeight(wrkDetl.getAnfme());
+// }
+// }
+// }catch (Exception e){
+// log.error("宸ヤ綔妗f鏄庣粏杈撳叆鐢佃鏈哄け璐�1锛氬紓甯镐俊鎭�==銆�"+e);
+// }
wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getWeight(),wrkDetl.getSpecs(),wrkDetl.getSku())));
}
commands.add(ledCommand);
@@ -2103,143 +2138,184 @@
}
}
- /**
- * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
- */
- public synchronized void ioConvert() {
- try {
- // 鏍规嵁杈撻�佺嚎plc閬嶅巻
- for (DevpSlave devp : slaveProperties.getDevp()) {
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ // RGV ===>> 鎵ц瀵筊GV鎿嶄綔
+ public synchronized void rgvExecute(Integer mark) {
+ ArrayList<Integer> list = new ArrayList<Integer>(){{add(1090);add(1091);}};
+ for (Integer staNo : list) {
+ Integer devpId = null;
+ Integer rgvStaNo = null;
+ if (staNo == 1090) {
+ devpId = 1;
+ rgvStaNo = 1091;
+ }else {
+ devpId = 2;
+ rgvStaNo = 1090;
+ }
- for (DevpSlave.Sta inSta : devp.getInSta()) {
- if (inSta.getStaNo() == 2) {
- continue;
- }
- WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getStaNo());
- switch (inSta.getStaNo()) {
- case 101://1F
- if (pakout != null) {
- if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
- // 鍑哄簱鍒囨崲涓�
- devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
- WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
- if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
- && !devpThread.getStation().get(inSta.getStaNo() + 1).isLoading()
- && devpThread.getStation().get(inSta.getStaNo() + 1).getWorkNo() == 0) {
- // 鍑哄簱妯″紡
- devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
- }
- }
- } else {
- // 鍏ュ簱妯″紡
- devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
- }
- break;
- }
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpId);
+ if (devpThread == null) {
+ continue;
+ }
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ if (staProtocol.isAutoing()
+ && staProtocol.isLoading()
+ && staProtocol.isInEnable()
+ && staProtocol.getWorkNo() > 0
+ ) {
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+ .eq("wrk_no", staProtocol.getWorkNo()));
+ if (wrkMast.getWrkSts() == 201) {
+ continue;
}
- }
+ RgvCommand command = new RgvCommand();
+ command.setRgvNo(1); // RGV缂栧彿
+ command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
+ command.setSourceStaNo1(staNo.shortValue()); // 婧愮珯
+ command.setDestinationStaNo1(rgvStaNo.shortValue()); // 鐩爣绔�
+ command.setCommand((short) 0);
- } catch (Exception e) {
- e.printStackTrace();
- }
-
-
- }
-
- public synchronized void outOfDevp(Integer mark) {
-
- List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
- if (wrkMasts.size()!=0){
- News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛宱utOfDevp");
- }
- for (WrkMast wrkMast : wrkMasts) {
- if (basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
- wrkMast.setCtnNo("Y");
- if (wrkMastMapper.updateById(wrkMast) == 0) {
- News.error(""+mark+" - 1"+" - 淇敼{}宸ヤ綔妗eけ璐ワ紝ctn_no", wrkMast.getWrkNo());
+ boolean result = MessageQueue.offer(SlaveType.Rgv, 1, new Task(4, command));
+ if (!result) {
+ throw new CoolException("RGV鎸囦护涓嬪彂澶辫触");
}
+
+ wrkMast.setWrkSts(201L);//201.RGV鎼繍涓�
+ wrkMast.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast);
}
}
- News.infoNoLog(""+mark+" - 0"+" - outOfDevp鎵ц瀹屾垚");
}
-
- public synchronized void autoEmptyOut() {
- DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
- Integer autoOutSite = 12;
- //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
- StaProtocol staProtocol = devpThread.getStation().get(autoOutSite);
- if (staProtocol == null) {
- return;
- } else {
- staProtocol = staProtocol.clone();
- }
- if (staProtocol.isAutoing() //鑷姩
- && !staProtocol.isLoading() //鏃犵墿
- && staProtocol.isOutEnable() //鍙嚭淇″彿
- && staProtocol.getWorkNo() == 0
- ) {
- WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(autoOutSite);
- if (null != pakoutEmpty) {
- return;
+ // RGV ===>> 鎵ц瀵筊GV宸ヤ綔妗g殑瀹屾垚鎿嶄綔
+ public synchronized void rgvFinished(Integer mark) {
+ for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+ // 鑾峰彇RGV淇℃伅
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ if (rgvThread == null) {
+ continue;
}
- try {
- String response = new HttpHandler.Builder()
- .setUri(wmsUrl)
- .setPath("/rpc/auto/emptyOut/v1")
- .build()
- .doPost();
- JSONObject jsonObject = JSON.parseObject(response);
- if (jsonObject.getInteger("code").equals(200)) {
- JSONObject data = (JSONObject) jsonObject.get("data");
- News.info((String) data.get("msg"));
+
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+
+ // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
+ if (rgvProtocol.statusType == RgvStatusType.WAITING && rgvProtocol.getTaskNo1() != 0) {
+ News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽RGV宸ヤ綔妗g殑瀹屾垚鎿嶄綔");
+ // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+ if (wrkMast == null) {
+ News.error(""+mark+" - 1"+" - RGV澶勪簬绛夊緟纭涓斾换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgvSlave.getId(), rgvProtocol.getTaskNo1());
+ continue;
+ }
+
+ if (Cools.isEmpty(wrkMast.getMemo())) {
+ News.error(""+mark+" - 1"+" - RGV澶勪簬绛夊緟纭涓斾换鍔″畬鎴愮姸鎬侊紝浣嗗伐浣滄。鏁版嵁寮傚父銆俁GV鍙�={}锛屽伐浣滃彿={}", rgvSlave.getId(), rgvProtocol.getTaskNo1());
+ continue;
+ }
+
+ Integer devpId = null;
+ Integer devpStaNo = null;
+ String locNo = null;
+ if (wrkMast.getIoType() < 100) {
+ //鍏ュ簱
+ wrkMast.setWrkSts(2L);
+ devpId = 1;
+ devpStaNo = 1090;
+ locNo = wrkMast.getLocNo();
+ }else {
+ //鍑哄簱
+ wrkMast.setWrkSts(15L);
+ devpId = 2;
+ devpStaNo = 1091;
+ locNo = wrkMast.getSourceLocNo();
+ }
+
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpId);
+ StaProtocol staProtocol = devpThread.getStation().get(devpStaNo);
+ if (staProtocol == null) {
+ continue;
} else {
- News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
+ staProtocol = staProtocol.clone();
}
- } catch (Exception e) {
- e.printStackTrace();
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+
+ if (staProtocol.isAutoing()
+ && staProtocol.isLoading()
+ && staProtocol.getWorkNo() == 0
+ ) {
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("loc_no", locNo));
+ staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+ staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setPalletSize(locMast.getLocType2());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devpId, new Task(2, staProtocol));
+ if (!result) {
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ }
+
+ Date now = new Date();
+ wrkMast.setModiTime(now);
+ wrkMastMapper.updateById(wrkMast);
+ }
}
}
+ News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
}
- public synchronized void autoEmptyIn() {
- DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
- Integer autoInSite = 12;
- StaProtocol staProtocol = devpThread.getStation().get(autoInSite);
- if (staProtocol == null) {
- return;
- } else {
- staProtocol = staProtocol.clone();
- }
- if (staProtocol.isAutoing() //鑷姩
- && staProtocol.isLoading() //鏈夌墿
- && staProtocol.isInEnable() //鍙叆淇″彿
- && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛�
- ) {
-
- try {
- LocTypeDto locTypeDto = new LocTypeDto((short) 1, (short) 1, (short) 1);
-
-
- String response = new HttpHandler.Builder()
- .setUri(wmsUrl)
- .setPath("/rpc/auto/emptyIn/v1")
- .setJson(JSON.toJSONString(locTypeDto))
- .build()
- .doPost();
- JSONObject jsonObject = JSON.parseObject(response);
- if (jsonObject.getInteger("code").equals(200)) {
- News.info((String) jsonObject.get("msg"));
- } else {
- News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response);
- }
- } catch (Exception e) {
- e.printStackTrace();
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- }
- }
- }
+// /**
+// * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
+// */
+// public synchronized void ioConvert() {
+// try {
+// // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+// for (DevpSlave devp : slaveProperties.getDevp()) {
+// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+//
+// for (DevpSlave.Sta inSta : devp.getInSta()) {
+// if (inSta.getStaNo() == 2) {
+// continue;
+// }
+// WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getStaNo());
+// switch (inSta.getStaNo()) {
+// case 101://1F
+// if (pakout != null) {
+// if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
+// // 鍑哄簱鍒囨崲涓�
+// devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+// WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+// if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+// && !devpThread.getStation().get(inSta.getStaNo() + 1).isLoading()
+// && devpThread.getStation().get(inSta.getStaNo() + 1).getWorkNo() == 0) {
+// // 鍑哄簱妯″紡
+// devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
+// }
+// }
+// } else {
+// // 鍏ュ簱妯″紡
+// devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
+// }
+// break;
+// }
+// }
+//
+// }
+//
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+//
+//
+// }
}
--
Gitblit v1.9.1