From d957e8b917d64f118ef82e6a569e5df233967363 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 22 八月 2025 09:06:48 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1922 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 1,666 insertions(+), 256 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 64f28bb..138e4e3 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -96,6 +96,8 @@
@Value("${wms.url}")
private String wmsUrl;
+ @Value("${inventory.number}")
+ private Integer inventoryNumber;
public Integer wrkNo = 10000;
@@ -111,6 +113,7 @@
for (DevpSlave.Sta inSta : devp.getInSta()) {
// 鑾峰彇鏉$爜鎵弿浠俊鎭�
BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
+ BarcodeThread barcodeThreadMat = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcodeMat());
LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
@@ -123,7 +126,14 @@
if (barcodeThread == null) {
continue;
}
+
+ if (barcodeThreadMat == null) {
+ continue;
+ }
+
String barcode = barcodeThread.getBarcode();
+
+ String barcodeMat = barcodeThreadMat.getBarcode();
// 灏哄妫�娴嬪紓甯�
boolean back = false;
String errMsg = "";
@@ -153,6 +163,7 @@
}
if (!back && staProtocol.isBarcodeErr()) {
errMsg = "鎵爜澶辫触";
+ log.error("鐗╂枡鐮佹壂鐮佸け璐�");
back = true;
}
// 閫�鍥�
@@ -165,6 +176,10 @@
}
if (!staProtocol.isPakMk()) {
continue;
+ }
+ // led 寮傚父鏄剧ず
+ if (ledThread != null) {
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
}
staProtocol.setWorkNo(wrkNo);
News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
@@ -183,22 +198,68 @@
&& staProtocol.isPakMk()) {
if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-
+ // led 寮傚父鏄剧ず
+ if (ledThread != null) {
+ String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+ }
+ staProtocol.setWorkNo(wrkNo);
+ News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
+ wrkNo++;
+ staProtocol.setStaNo(inSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+inSta.getBackSta());
continue;
}
+// if (staProtocol.getSiteId()!= 159){
+// if( Cools.isEmpty(barcodeMat) || "NG".endsWith(barcodeMat) || "NoRead".equals(barcodeMat) || "00000000".equals(barcodeMat)) {
+// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcodeMat(), barcodeMat);
+//
+// staProtocol.setWorkNo(wrkNo);
+// News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
+// wrkNo++;
+// staProtocol.setStaNo(inSta.getBackSta().shortValue());
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+inSta.getBackSta());
+// continue;
+// }
+// }
// 鍒ゆ柇閲嶅宸ヤ綔妗�
WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
if (wrkMast != null) {
- News.error(methodName + ":宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
- if (ledThread != null) {
- News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
- MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={" + wrkMast.getWrkNo() + "}, 璇锋墜鍔ㄥ彇娑堝凡瀛樺湪宸ヤ綔妗�"));
+ int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (wrkNo1 != 0){
+ News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
+ if (ledThread != null) {
+ News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�="+ wrkMast.getWrkNo()));
+ }
+ continue;
}
- continue;
+ barcodeThread.setBarcode("");
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(RouteUtils.SouStaEnd(null,wrkMast.getSourceStaNo()));
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.info("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒))锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
+
+ ledThread.errorReset();
+ log.info("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+
+ if (!result) {
+ News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+ log.error("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒)==>鏇存柊plc绔欑偣淇℃伅澶辫触");
+
+// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ continue;
+ }
+
}
WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
.eq("barcode", barcode)
- .in("io_type", 107,103));
+ .in("io_type", 107,103,57));
if (!Cools.isEmpty(checkPick)) {
continue;
}
@@ -225,14 +286,43 @@
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
log.error("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo());
+
+ ledThread.errorReset();
+ log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+
if (!result) {
News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
- }else {
- ledThread.errorReset();
}
- } else {
+ }
+// else if (jsonObject.getInteger("code").equals(700)) {
+// SearchLocParam param2 = new SearchLocParam();
+// param2.setBarcode(barcode);
+// param2.setBarcodeMat(barcodeMat);
+// param2.setSourceStaNo(inSta.getStaNo());
+// param2.setLocType1(locTypeDto.getLocType1());
+// String response2 = new HttpHandler.Builder()
+// .setUri(wmsUrl)
+// .setPath("/rpc/pakin/yk/loc/v33")
+// .setJson(JSON.toJSONString(param2))
+// .build()
+// .doPost();
+// JSONObject jsonObject2 = JSON.parseObject(response2);
+// if (jsonObject2.getInteger("code").equals(200)) {
+// log.info("鑷姩缁勬墭鎴愬姛锛侊紒");
+// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "鑷姩缁勬墭鎴愬姛"));
+// } else {
+// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "鑷姩缁勬墭澶辫触锛侊紒锛乥arcodeMat==>"+barcodeMat));
+// News.error(methodName + "==>缁勬墭澶辫触:璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/yk/loc/v33", JSON.toJSONString(param), response2);
+// }
+// try{
+// Thread.sleep(500);
+// } catch (Exception e){
+//
+// }
+// }
+ else {
staProtocol.setWorkNo(wrkNo);
wrkNo++;
staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -470,6 +560,170 @@
// News.infoNoLog(""+mark+" - 0"+" - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 ===銆嬫墽琛屽畬鎴�");
}
+
+ //鐩樼偣鍐嶅叆搴�
+ public synchronized void stnToCrnStnPick2(){
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鎷f枡鍏ュ簱鍙�
+ for (DevpSlave.Sta pickSta : devp.getPickSta()) {
+ // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing()
+ && staProtocol.isLoading()
+ && staProtocol.isInEnable()
+ && !staProtocol.isEmptyMk()
+// && staProtocol.getWorkNo() > 0
+ && staProtocol.isPakMk()){
+
+ // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+ if (barcodeThread == null) {
+ continue;
+ }
+ String barcode = barcodeThread.getBarcode();
+ if(!Cools.isEmpty(barcode)) {
+// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+ if("00000000".equals(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+ staProtocol.setWorkNo(wrkNo++);
+ staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+ 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());
+ if (ledThread != null) {
+ String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+ MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+ }
+ continue;
+ }
+ } else {
+ staProtocol.setWorkNo(wrkNo++);
+ staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+ 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());
+ if (ledThread != null) {
+ String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+ MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+ }
+ continue;
+ }
+
+ WrkMast wrkMast = wrkMastMapper.selectPickStep2(barcode);
+ if (wrkMast == null) {
+ // 鏃犵洏鐐规暟鎹�
+ continue;
+ }
+
+ // 鍑哄簱纭淇″彿浣�
+// if ((Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) && wrkMast.getIoType() != 107) {
+// continue;
+// }
+// if ( wrkMast.getIoType() != 107 || Cools.isEmpty(wrkMast.getStaNo())
+// || Cools.isEmpty(wrkMast.getSourceStaNo())) {
+// continue;
+// }
+
+ // 鑾峰彇搴撲綅鍙�
+ try {
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+ LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+ SearchLocParam param = new SearchLocParam();
+ param.setBarcode(barcode);
+ param.setIoType(107);
+ param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
+ if (!Cools.isEmpty(locMast)){
+ param.setLocType1(locMast.getLocType1());
+ }else {
+ param.setLocType1(locTypeDto.getLocType1());
+ }
+
+ String response = "";
+ log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/pakin2/loc/v1")
+ .setJson(JSON.toJSONString(param))
+// .setTimeout(15, TimeUnit.SECONDS)
+ .build()
+ .doPost();
+ } catch(Exception e){
+ log.error("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+ log.error("stnToCrnStnPick2===>>鐩樼偣鏌ュ簱浣嶅叆搴撴帴鍙eけ璐�", e);
+ e.printStackTrace();
+ continue;
+ }
+ log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+ log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"涓嬪彂鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS杩斿洖缁撴灉===>>" + response);
+ if(response.equals("")) {
+ continue;
+ }
+ JSONObject jsonObject = JSON.parseObject(response);
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+ Integer code = jsonObject.getInteger("code");
+ if (code == 200) {
+ StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+ if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getStaNo())) {
+ log.error("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶅け璐�===>>" + jsonObject.toJSONString());
+ } else {
+ log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString());
+ try {
+ // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+ staProtocol.setWorkNo(dto.getWorkNo());
+ staProtocol.setStaNo((short)161);
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ if (!result) {
+ log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+ }
+ log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
+
+ ledThread.errorReset();
+ log.error("鐩樼偣鍚巐ed閿欒鍒犻櫎");
+
+ } catch (Exception e) {
+ log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ }
+ } else {
+ staProtocol.setWorkNo(wrkNo++);
+ staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ if (ledThread != null) {
+ String errorMsg = jsonObject.getString("msg");
+ if (!Cools.isEmpty(errorMsg)) {
+ MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+ }
+ }
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response);
+ }
+ } catch (Exception e) {
+ log.error("stnToCrnStnPick2===>>fail", e);
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+
+ }
+
+ }
+
+ }
+ }
+
/**
* 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
*/
@@ -493,7 +747,7 @@
continue;
}
// 鍒ゆ柇宸ヤ綔妗f潯浠�
- if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
+ if ((wrkMast.getIoType() != 12 && wrkMast.getIoType() < 100) || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
continue;
}
// 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
@@ -507,7 +761,7 @@
if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
&& crnProtocol.statusType == CrnStatusType.WAITING
&& crnProtocol.forkPosType == CrnForkPosType.HOME) {
- News.error("鍫嗗灈鏈哄嚭搴撳畬鎴� - 寮�濮嬫墽琛�");
+ log.info("鍫嗗灈鏈哄嚭搴撳畬鎴� - 寮�濮嬫墽琛�");
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
@@ -515,7 +769,10 @@
staProtocol.setWorkNo(wrkMast.getWrkNo());
staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo()));
if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+ log.info(staProtocol.getWorkNo()+","+staProtocol.getStaNo()+"杈撻�佺嚎鍑哄簱鍛戒护涓嬪彂澶辫触");
continue;
+ }else {
+ log.info(staProtocol.getWorkNo()+","+staProtocol.getStaNo()+"杈撻�佺嚎鍑哄簱鍛戒护涓嬪彂鎴愬姛");
}
// 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
@@ -523,7 +780,7 @@
wrkMast.setCrnEndTime(new Date());
if (wrkMastMapper.updateById(wrkMast) != 0) {
// 澶嶄綅鍫嗗灈鏈�
- News.error("鍑哄簱浠诲姟瀹屾垚涓嬪彂鍫嗗灈鏈哄浣�", wrkMast.getWrkNo());
+ log.error("鍑哄簱浠诲姟瀹屾垚涓嬪彂鍫嗗灈鏈哄浣�,{}", wrkMast.getWrkNo());
crnThread.setResetFlag(true);
} else {
News.error(""+mark+" - 1"+" - 鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
@@ -544,8 +801,100 @@
}
/**
- * 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
+ * 鍫嗗灈鏈轰换鍔¤鎺ヤ换鍔$敓鎴�
*/
+ public synchronized void connectWrk(Integer mark) {
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocolIn = devpThread.getStation().get(4001);
+ if (staProtocolIn == null) {
+ continue;
+ } else {
+ staProtocolIn = staProtocolIn.clone();
+ }
+ StaProtocol staProtocolOut = devpThread.getStation().get(1015);
+ if (staProtocolOut == null) {
+ continue;
+ } else {
+ staProtocolOut = staProtocolOut.clone();
+ }
+ if(staProtocolOut.getWorkNo() != null &&staProtocolOut.getStaNo() == 4006){
+ WrkMast wrkMastOut = wrkMastMapper.selectByWrkNo(staProtocolOut.getWorkNo());
+ WrkMast wrkMast = wrkMastMapper.selectByWrkNo(9997);
+ if(wrkMast == null){
+ continue;
+ }
+ try {
+ TransplantWork param = new TransplantWork();
+ param.setWorkNo(wrkMastOut.getWrkNo());
+ param.setBarcode(wrkMastOut.getBarcode());
+ param.setSourceStaNo(1015);
+ param.setStaNo(wrkMastOut.getStaNo());
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/auto/TransplantingIn/v1")
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ staProtocolOut.setWorkNo(9997);
+ devpThread.setPakMk(staProtocolOut.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolOut));
+
+ if (!result) {
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ }
+
+ if(staProtocolIn.getWorkNo() != null &&staProtocolIn.getStaNo() != 4001){
+ WrkMast wrkMastIn = wrkMastMapper.selectByWrkNo(staProtocolIn.getWorkNo());
+ WrkMast wrkMast = wrkMastMapper.selectByWrkNo(9996);
+ if(wrkMast == null){
+ continue;
+ }
+ try {
+ TransplantWork param = new TransplantWork();
+ param.setWorkNo(wrkMastIn.getWrkNo());
+ param.setBarcode(wrkMastIn.getBarcode());
+ param.setSourceStaNo(4001);
+ param.setStaNo(wrkMastIn.getStaNo());
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/auto/TransplantingOut/v1")
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ staProtocolIn.setWorkNo(9996);
+ devpThread.setPakMk(staProtocolIn.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolIn));
+
+ if (!result) {
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ }
+ }
+
+ }
+
+
+ /**
+ * 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
+ */
public synchronized void crnIoExecute(Integer mark) {
for (CrnSlave crn : slaveProperties.getCrn()) {
@@ -596,7 +945,8 @@
// 搴撲綅绉昏浆
//mark - 3 - ....
this.locToLoc(crn, crnProtocol,mark);
-// this.crnRebackHp(crnProtocol, crnThread);
+ //棰勮皟搴�
+ this.crnRebackHp(crnProtocol, crnThread);
}
// News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
@@ -606,21 +956,17 @@
* 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
*/
public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
-// for (CrnSlave crn : slaveProperties.getCrn()) {
-// // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-// CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-// CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-// if (crnProtocol == null) {
-// continue;
-// }
-// BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
-// if (basCrnp == null) {
-// log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
-// continue;
-// }
if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
- if (crnProtocol.getBay() == 1 && crnProtocol.getLevel() == 1) {
+ if (crnProtocol.getBay() == 1) {
return;
+ }
+ int x=1;
+ switch (crnProtocol.getCrnNo()){
+ case 1: x =1; break;
+ case 2: x =3; break;
+ case 3: x =5; break;
+ case 4: x =7; break;
+ case 5: x =9; break;
}
// 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
@@ -634,7 +980,7 @@
}
//杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
- if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
+ if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) != null) {
return;
}
News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
@@ -643,10 +989,10 @@
crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡: 鍥炲師鐐�
- crnCommand.setSourcePosX((short) 0); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY((short) 0); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰
+ crnCommand.setTaskMode(CrnTaskModeType.X_MOVE); // 浠诲姟妯″紡: 鍥炲師鐐�
+ crnCommand.setSourcePosX((short) x); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY((short) 1); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰
crnCommand.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺�
crnCommand.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞�
@@ -655,6 +1001,7 @@
}
crnThread.setBackHpFlag(true);
}
+
// }
}
@@ -673,6 +1020,61 @@
continue;
} else {
staProtocol = staProtocol.clone();
+ }
+ if (slave.getId() == 3) {
+ SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ StaProtocol staProtocol2 = devpThread1.getStation().get(4001);
+ if (staProtocol2 == null) {
+ News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2);
+ break;
+ } else {
+ staProtocol2 = staProtocol2.clone();
+ }
+ WrkMast wrkMast9999 = wrkMastMapper.selectByWrkNo(9996);
+ BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+ if (staDetl == null) {
+ News.error(""+mark+" - 2"+" - 5"+" - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+ break;
+// continue;
+ }
+ if(wrkMast9999 != null && staProtocol2.isAutoing() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")){
+ // 鍫嗗灈鏈烘帶鍒惰繃婊�
+ if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+// continue;
+ break;
+ }
+ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+ if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+ break;
+// return;
+ }
+ // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo((short) 9996); // 宸ヤ綔鍙�
+// crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+ crnCommand.setSourcePosX((short) 5); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY((short) 1); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ((short) 4); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX((short) 6); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY((short) 1); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞�
+// crnCommand.setTraySize(sourceSta.getLocType1() == 2); //搴撲綅绫诲瀷
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast9999.getCrnNo(), new Task(2, crnCommand))) {
+ News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast9999.getCrnNo(), JSON.toJSON(crnCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+ Date now = new Date();
+ wrkMast9999.setWrkSts(3L);
+ wrkMast9999.setCrnStrTime(now);
+ wrkMast9999.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast9999) == 0) {
+ News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast9999.getWrkNo());
+ }
+ break;
+ }
+ }
}
// 鏌ヨ绔欑偣璇︾粏淇℃伅
BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
@@ -818,9 +1220,70 @@
// 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
// WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
+ if (slave.getId() == 3) {
+ SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ StaProtocol staProtocol2 = devpThread1.getStation().get(1015);
+ if (staProtocol2 == null) {
+ News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2);
+ break;
+ } else {
+ staProtocol2 = staProtocol2.clone();
+ }
+ WrkMast wrkMast9999 = wrkMastMapper.selectByWrkNo(9997);
+ BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+ if (staDetl == null) {
+ News.error(""+mark+" - 2"+" - 5"+" - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+ break;
+// continue;
+ }
+ if(wrkMast9999 != null && staProtocol2.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")){
+ // 鍫嗗灈鏈烘帶鍒惰繃婊�
+ if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+// continue;
+ break;
+ }
+ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+ if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+ break;
+// return;
+ }
+ // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo((short) 9997); // 宸ヤ綔鍙�
+// crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+ crnCommand.setSourcePosX((short) 5); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY((short) 1); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX((short) 6); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY((short) 1); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ((short) 4); // 鐩爣搴撲綅灞�
+// crnCommand.setTraySize(sourceSta.getLocType1() == 2); //搴撲綅绫诲瀷
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast9999.getCrnNo(), new Task(2, crnCommand))) {
+ News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast9999.getCrnNo(), JSON.toJSON(crnCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+ Date now = new Date();
+ wrkMast9999.setWrkSts(12L);
+ wrkMast9999.setCrnStrTime(now);
+ wrkMast9999.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast9999) == 0) {
+ News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast9999.getWrkNo());
+ }
+ break;
+ }
+ }
+ }
for (WrkMast wrkMast : wrkMasts) {
if (wrkMast == null) {
continue;
+ }
+ if (wrkMast.getIoType() == 107){
+ int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", wrkMast.getIoType()).eq("wrk_sts", 14));
+ if (count >= inventoryNumber) {
+ continue;
+ }
}
// 宸ヤ綔妗g姸鎬佸垽鏂�
if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
@@ -859,8 +1322,16 @@
// continue;
}
// 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
- if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
- && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+// if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
+// && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+
+ if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
+ ) {
+// if (slave.getId() == 1 || slave.getId() == 2){
+// if (staProtocol.isLoading() || staProtocol.getWorkNo() != 0 || !staProtocol.isOutEnable()){
+// continue;
+// }
+// }
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1168,17 +1639,50 @@
if (crnProtocol == null) {
continue;
}
- // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
- if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
- News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔");
- if (crnProtocol.getTaskNo() == 9999) {
+ if(crnProtocol.getTaskNo() == 9999){
+ // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
+ if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
+ News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屼换鍔″彿:" + crnProtocol.getTaskNo());
+
+
+
// 鍫嗗灈鏈哄浣�
+ News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo());
crnThread.setResetFlag(true);
- } else {
+ }
+ } else if (crnProtocol.getTaskNo() == 9996) {//鐩樼偣鍏ュ簱琛旀帴
+ // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
+ if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
+ News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屼换鍔″彿:" + crnProtocol.getTaskNo());
+
// 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
- if (wrkMast == null) {
- News.error(""+mark+" - 1"+" - 鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+ // 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚
+ if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
+ wrkMast.setWrkSts(4L);
+ } else {
+ continue;
+ }
+ Date now = new Date();
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ // 鍫嗗灈鏈哄浣�
+ log.error(wrkMast.getWrkNo() + "浠诲姟淇敼鐘舵��4鎴愬姛锛屽浣嶅爢鍨涙満={}", crnThread.getCrnProtocol().getCrnNo());
+ News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo());
+ crnThread.setResetFlag(true);
+ }
+ }
+ }else{
+ // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
+ if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
+ News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屼换鍔″彿:" + crnProtocol.getTaskNo());
+
+ // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
+ if (wrkMast == null ) {
+ News.error("" + mark + " - 1" + " - 鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
continue;
}
// 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚
@@ -1193,15 +1697,19 @@
// 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
if (wrkMastMapper.updateById(wrkMast) > 0) {
// 鍫嗗灈鏈哄浣�
- News.warnNoLog(""+mark+" - 2"+" - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}",crnThread.getCrnProtocol().getCrnNo());
+ log.error(wrkMast.getWrkNo() + "浠诲姟淇敼鐘舵��4鎴愬姛锛屽浣嶅爢鍨涙満={}", crnThread.getCrnProtocol().getCrnNo());
+ News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo());
crnThread.setResetFlag(true);
}
}
-
}
+
+
+
}
// News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
}
+
/**
* 鍫嗗灈鏈哄紓甯镐俊鎭褰�
@@ -1460,7 +1968,7 @@
}
// 鑾峰彇宸ヤ綔妗f暟鎹�
WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
- if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
+ if (null == wrkMast) { continue; }
wrkMasts.add(wrkMast);
// 缁勮鍛戒护
LedCommand ledCommand = new LedCommand();
@@ -1468,6 +1976,12 @@
ledCommand.setIoType(wrkMast.getIoType());
// 鍑哄簱妯″紡
switch (wrkMast.getIoType()) {
+ case 1:
+ ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+ break;
+ case 10:
+ ledCommand.setTitle("绌烘澘鍏ュ簱");
+ break;
case 101:
ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
break;
@@ -1491,7 +2005,7 @@
ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
ledCommand.setStaNo(wrkMast.getStaNo());
ledCommand.setBarcode(wrkMast.getBarcode());
- if (wrkMast.getIoType() != 110) {
+ if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
wrkDetls.forEach(wrkDetl -> {
@@ -1503,7 +2017,7 @@
} else {
total = locDetl.getAnfme();
}
- if (wrkMast.getIoType() == 101) {
+ if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
}
if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
@@ -1526,7 +2040,7 @@
// 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
if (!commands.isEmpty()) {
if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
- News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ News.error("{}鍙稬ED鏄剧ず鍐呭鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
continue;
}
}
@@ -1565,21 +2079,20 @@
// 鑾峰彇鍙夎溅绔欑偣
StaProtocol staProtocol = devpThread.getStation().get(staNo);
if (staProtocol == null) { continue; }
- if (staProtocol.getWorkNo() != 0) {
+ if (staProtocol.getWorkNo() != 0 || staProtocol.isErr()) {
reset = false;
break;
}
}
// 鑾峰彇led绾跨▼
- LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
// led鏄剧ず榛樿鍐呭
if (reset) {
if (ledThread == null) {
continue;
}
- ledThread.errorReset();
if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
- News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ News.error("{}鍙稬ED鏄剧ず榛樿鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
}
}
}
@@ -1726,7 +2239,7 @@
wrkMast.setCrnNo(crn.getId());
wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
- wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
+ wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘
wrkMast.setPicking("N"); // 鎷f枡
wrkMast.setExitMk("N"); // 閫�鍑�
wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
@@ -2022,16 +2535,20 @@
public synchronized void autoEmptyOut() {
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
List<Integer> list = new ArrayList<>();
- list.add(101);list.add(112);
- Map<Integer,Integer> map = new HashMap<>();
- map.put(101,102);map.put(112,111);
+ list.add(1108);list.add(2031);
for (Integer site:list){
- WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", map.get(site)));
- if (!Cools.isEmpty(wrkMast)){
+ Integer emptyCount = wrkMastMapper.countPakOutEmpty(site);
+ StaProtocol staProtocol = null;
+ if(emptyCount >= 2 && site == 1108){
+ continue;
+ }else if(emptyCount == 1 && site == 2031){
continue;
}
//濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
- StaProtocol staProtocol = devpThread.getStation().get(site);
+ switch (site){
+ case 1108:staProtocol = devpThread.getStation().get(site - 2);break;
+ case 2031:staProtocol = devpThread.getStation().get(site);break;
+ }
if (staProtocol == null) {
return;
} else {
@@ -2042,14 +2559,7 @@
&& staProtocol.isOutEnable() //鍙嚭淇″彿
&& staProtocol.getWorkNo() == 0
) {
- WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(site);
- if (null != pakoutEmpty) {
- return;
- }
Short loctype1 = 1;
- if (site == 101){
- loctype1 = 2;
- }
LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
locTypeDto.setSiteId(site);
try {
@@ -2078,7 +2588,7 @@
public synchronized void autoEmptyIn() {
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
List<Integer> list = new ArrayList<>();
- list.add(153);list.add(157);
+ list.add(1038);
for (Integer site:list){
StaProtocol staProtocol = devpThread.getStation().get(site);
if (staProtocol == null) {
@@ -2095,9 +2605,6 @@
try {
Short loctype1 = 1;
- if (site == 153){
- loctype1 = 2;
- }
LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
locTypeDto.setSiteId(site);
@@ -2130,32 +2637,40 @@
/*
* 灏忚溅鍦板浘鏇存柊 鏇存柊閿�
* */
- public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){
+ public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,String sign){
+// log.info("灏忚溅鍦板浘鏇存柊锛乕鏍囪锛歿}];[BasRgvMap锛歿}];[staStart锛歿}];[staEnd锛歿}];",sign,JSON.toJSONString(basRgvMapCurrent),staStart,staEnd);
// List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
//鏇存柊褰撳墠灏忚溅閿�
try{
Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
+// log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栨渶杩滅珯鐐�;[farCurrentStaNo锛歿}]",farCurrentStaNo);
Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤�
+// log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栧悎骞跺共娑夐」;[fallMerge锛歿}]",fallMerge);
basRgvMapCurrent.setLockEndRoute(fallMerge);
Integer i = basRgvMapMapper.updateById(basRgvMapCurrent);
// if (i>0){
-// log.error("{}鍙疯溅鏇存柊缁撴潫閿�,{}",basRgvMapCurrent.getRgvNo(),JSON.toJSONString(basRgvMapCurrent));
+// log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫閿�,{}",sign,new Date(),basRgvMapCurrent.getRgvNo(),JSON.toJSONString(basRgvMapCurrent));
// }
//鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo());
+// log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彿;[rgvNoOther锛歿}]",rgvNoOther);
+
BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
+// log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞�;[basRgvMapOther锛歿}]",JSON.toJSONString(basRgvMapOther));
+
List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
+// log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�;[lockEndRoute锛歿}]",lockEndRoute);
basRgvMapOther.setEndRoute(lockEndRoute);
Integer i1 = basRgvMapMapper.updateById(basRgvMapOther);
// if (i1>0){
-// log.error("{}鍙疯溅鏇存柊缁撴潫浣嶇疆,{}",basRgvMapOther.getRgvNo(),JSON.toJSONString(basRgvMapOther));
+// log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫浣嶇疆,{}",sign,new Date(),basRgvMapOther.getRgvNo(),JSON.toJSONString(basRgvMapOther));
// }
return true;
}catch (Exception e){
- log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�");
+ log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛佸紓甯稿師鍥狅細"+e);
return false;
}
}
@@ -2181,16 +2696,41 @@
}
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
- if (
- rgvProtocol.getStatusType() == RgvStatusType.IDLE &&
- rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
- && (rgvProtocol.getTaskNo1()==0 || rgvProtocol.getTaskNo1()==9999)
-
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE &&
+ rgvProtocol.getModeType() == RgvModeType.AUTO
+ && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+ && (rgvProtocol.getTaskNo1()==0)
+ &&rgvThread.isPakMk()
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+
+ Integer rgvNoOther = basRgvMap.getRgvNoOther((int) rgvProtocol.getRgvNo());
+ RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther);
+ RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol();
+ if (rgvProtocolOther == null) {
+ continue;
+ }else {
+ rgvProtocolOther = rgvProtocolOther.clone();
+ }
+ if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocolOther.getModeType() == RgvModeType.AUTO
+ && !rgvProtocolOther.isLoaded1ing()
+ && (rgvProtocolOther.getTaskNo1()==0)
+ &&rgvThreadOther.isPakMk()
+ ){
+ //瀵瑰伐浣滄。杩涜鍒ゆ柇
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ if (rgvProtocol.getTaskNo1() >0 && rgvProtocol.getTaskNo1()<=9000){
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+ rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2366");
+ }else if (rgvProtocol.getTaskNo1() == 0){
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2366");
+ }
+
+ }
+
+
+
}
}
}catch (Exception e){
@@ -2198,6 +2738,26 @@
log.error("4109琛�"+e);
}
}
+
+ /**
+ * 鑷姩鐢熸垚RGV鎺ラ┏浠诲姟锛堟绱㈠嚭鍏ュ彛浠诲姟锛岀敓鎴愬搴擱GV浠诲姟锛屾绱�4妤间换鍔★紝闈�3鍙峰爢鍨涙満锛屽垯鐢熸垚瀵瑰簲鎺ラ┏浠诲姟锛�
+ */
+// public synchronized void rgvCreateWrkMastSta(){
+// try{
+// for (DevpSlave devp : slaveProperties.getDevp()) {
+// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+// StaProtocol staProtocol = devpThread.getStation().get(1105);
+// if (staProtocol == null) {
+// continue;
+// } else {
+// staProtocol = staProtocol.clone();
+// }
+// if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
+// continue;
+// }
+// }
+// }
+// }
/**
@@ -2207,38 +2767,73 @@
try{
for (DevpSlave devp : slaveProperties.getDevp()) {
List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
- for (BasRgvMap rgvSlave:basRgvMaps) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
if (rgvProtocol == null) {
continue;
}else {
rgvProtocol = rgvProtocol.clone();
}
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+ BasRgv basRgv = basRgvService.selectById(rgv.getId());
if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgvSlave.getRgvNo());
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgv.getId());
continue;
}
- // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
+ // 鍙湁褰揜GV宸ヤ綅1绛夊緟WCS纭銆佽嚜鍔�
if ((rgvProtocol.getStatusType1() == RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING)
&& rgvProtocol.getModeType() == RgvModeType.AUTO
&& (rgvProtocol.getStatusType() == RgvStatusType.WORKING1)
){
log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
- if (rgvProtocol.getTaskNo1()!=0){
- if (rgvProtocol.getTaskNo1()==32222){
- boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+ if(rgvProtocol.getTaskNo1() == 9999){ // 棰勮皟搴︿换鍔$‘璁�
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ Integer staNo = basRgvMap.getNowRoute();
+ switch (staNo){
+ case 1004: staNo = 1042; break;
+ case 1007: staNo = 1105; break;
+ }
+
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ boolean rgvComplete = false;
+
+// long now = System.currentTimeMillis();
+// if (staProtocol.isLoading()) {
+// rgvProtocol.setLoadingStartTime(null); // 宸插埌浣嶏紝娓呯┖鏃堕棿鎴�
+// } else {
+// if (rgvProtocol.getLoadingStartTime() == null) {
+// rgvProtocol.setLoadingStartTime(now);
+// }
+// }
+
+ if (staProtocol.isLoading()) {
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3);
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�", rgvProtocol.getRgvNo());
+ }
+ }
+ }
+ if (rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo1()!=9999){
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
+ if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭
+ wrkMastSta.setWrkSts(2);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ boolean rgvComplete = false;
+
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
if (!rgvComplete){
log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+ break;
}
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
break;
}
- WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
continue;
@@ -2267,36 +2862,114 @@
if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
continue;
}
- }else {
- log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护,浣嗘湭鏌ヨ鍒板伐浣滄。");
- // 涓嬪彂绔欑偣淇℃伅
- Map<Integer,Integer> map = new HashMap<>();
- map.put(101,102);map.put(112,111);
- map.put(100,100);
- staProtocol.setWorkNo(rgvProtocol.getTaskNo1().intValue());
- staProtocol.setStaNo(map.get(rgvProtocol.getRgvPosI()).shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
-// log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
- if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
- continue;
- }
}
- boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-// boolean rgvComplete = true;
+ boolean rgvComplete = false;
+
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3);
if (!rgvComplete){
log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
break;
}
+ WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1());
+ wrkMast1.setPdcType("Y");
+
+ wrkMastService.updateById(wrkMast1);
+
wrkMastSta.setWrkSts(3);
wrkMastStaMapper.updateById(wrkMastSta);
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
}
else {
log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
}
+ }
+ // 鍙湁褰揜GV宸ヤ綅2绛夊緟WCS纭銆佽嚜鍔�
+ if ((rgvProtocol.getStatusType2() == RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING)
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1)
+ ){
+ log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
+ if (rgvProtocol.getTaskNo2() !=0 ){
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
+ if(wrkMastSta.getWrkSts() == 1){//缂鸿揣纭
+ wrkMastSta.setWrkSts(2);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ boolean rgvComplete = false;
+
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+ break;
+ }
+ break;
+ }
+ if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
+ log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
+ continue;
+ }
+
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
+ continue;
+ }
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
+ if (!Cools.isEmpty(wrkMast)){
+ if (!staProtocol.isPakMk()){
+ continue;
+ }
+ // 涓嬪彂绔欑偣淇℃伅
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
+ if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
+ continue;
+ }
+ }
+ int sourceSta = wrkMast.getSourceStaNo();
+ boolean rgvComplete = false;
+
+ //鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6);
+
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+ break;
+ }
+ WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1());
+ wrkMast1.setPdcType("Y");
+
+ wrkMastService.updateById(wrkMast1);
+
+ wrkMastSta.setWrkSts(3);
+ wrkMastStaMapper.updateById(wrkMastSta);
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
+ }
+ else {
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
+ }
+ }
+ //褰撳皬杞︽棤浠诲姟鏃跺彇娑堥攣瀹�
+ if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0){
+ rgvThread.setPakMk(true);
+ rgvThread.setPakIn(true);
+ rgvThread.setPakOut(true);
}
}
}
@@ -2304,11 +2977,560 @@
log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
}
}
+
+ /**
+ * rgv鏀捐揣浠诲姟涓嬪彂
+ */
+ public synchronized void rgvOutExecute() {
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ // 鑾峰彇RGV淇℃伅
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgv.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId());
+ continue;
+ }
+ //灏忚溅鏃犱换鍔℃椂璺宠繃
+ if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0){
+ continue;
+ }
+ //鍏ュ簱鏀捐揣
+ if(rgvThread.isPakIn()){
+ for(RgvSlave.RgvStn rgvStn : rgv.getRgvInPStn()){//鍏ュ簱鏀捐揣绔欑偣
+ boolean flag = false;
+
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
+ if (staProtocol == null) {
+ News.infoNoLog( " - 1" + " - 1" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
+ if (staDetl == null) {
+ News.error( " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv鏀捐揣绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+ && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+ flag = true;
+ }
+ if (!flag) {
+ News.errorNoLog( " - 1" + " - 3" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+ + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+ + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable()
+ + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
+ continue;
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ Integer wrkNo = 0;
+ if(rgvProtocol.getTaskNo2() != 0){
+ wrkNo = rgvProtocol.getTaskNo2();
+ }else{
+ wrkNo = rgvProtocol.getTaskNo1();
+ }
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ if( null == wrkMastSta ) {
+ News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂
+ if (sign){
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+ if (!signMap){
+ log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+ }
+ }
+ //鍑哄簱鏀捐揣
+ if( rgvThread.isPakOut()){
+ for(RgvSlave.RgvStn rgvStn : rgv.getRgvOutPStn()){//鍏ュ簱鏀捐揣绔欑偣
+ boolean flag = false;
+
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
+ if (staProtocol == null) {
+ News.infoNoLog( " - 1" + " - 1" + " - Rgv鍑哄簱鏀捐揣绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
+ if (staDetl == null) {
+ News.error( " - 1" + " - 2" + " - 鍑哄簱 ===>>Rgv鏀捐揣绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isOutEnable()
+ && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
+ flag = true;
+ }
+ if (!flag) {
+ News.errorNoLog( " - 1" + " - 3" + " - Rgv鍑哄簱鏀捐揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+ + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+ + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable()
+ + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting());
+ continue;
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ Integer wrkNo = 0;
+ if(rgvProtocol.getTaskNo1() != 0){
+ wrkNo = rgvProtocol.getTaskNo1();
+ }else{
+ wrkNo = rgvProtocol.getTaskNo2();
+ }
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ if( null == wrkMastSta ) {
+ News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍑哄簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ wrkMastSta.setWrkSts(2);
+ boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂
+ if (sign){
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+ if (!signMap){
+ log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+ }
+ }
+ rgvThread.setPakRgv(true);//浼樺厛鏀捐揣瀹屾垚锛屽紑鍚璋冨害
+ }
+ }
+
+
+
+ /**
+ * rgv鍑哄叆搴撲换鍔′笅鍙�
+ */
+ public synchronized void rgvIoExecute(Integer mark) {
+ List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
+
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgv.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId());
+ continue;
+ }
+
+ // 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
+ if ((rgvProtocol.getStatusType1() == RgvStatusType.IDLE || rgvProtocol.getStatusType2() == RgvStatusType.IDLE)
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvThread.isPakMk()) {
+ News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�");
+ // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
+ if (rgvProtocol.getLastIo().equals("I")) {
+ if (basRgv.getInEnable().equals("Y") && rgvThread.isPakIn()) {
+ //mark - 1 - ....
+ this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 鍏ュ簱
+ rgvProtocol.setLastIo("O");
+ } else if (basRgv.getOutEnable().equals("Y") && rgvThread.isPakOut()) {
+ //mark - 2 - ....
+ this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱
+ rgvProtocol.setLastIo("I");
+ }
+ }
+ // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+ else if (rgvProtocol.getLastIo().equals("O")) {
+ if (basRgv.getOutEnable().equals("Y") && rgvThread.isPakOut()) {
+ this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱
+ rgvProtocol.setLastIo("I");
+ } else if (basRgv.getInEnable().equals("Y") && rgvThread.isPakIn()) {
+ this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 鍏ュ簱
+ rgvProtocol.setLastIo("O");
+ }
+ }
+ WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo());
+ WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo());
+ if(wrkMastSta1 != null && wrkMastSta2 != null){
+ rgvThread.setPakMk(false); //灏忚溅鍙屽伐浣嶉攣瀹�
+ }
+ }
+ if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){
+ rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
+ }
+
+ if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO) {
+ //灏忚溅鎵ц鏀捐揣浠诲姟
+ rgvOutExecute();
+
+ }
+ }
+ }
+ /**
+ * 灏忚溅鍏ュ簱浠诲姟鍙栬揣涓嬪彂
+ */
+ public synchronized void rgvRunWrkMastIn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark) {
+ for (RgvSlave.RgvStn rgvStn : slave.getRgvInTStn()) {//rgv鍏ュ簱鍙栬揣绔欑偣
+ boolean flag = false;
+ boolean ds = false;
+ //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
+ StaProtocol staProtocol2 = null;
+
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
+ if(rgvStn.getStaNo2()!= null ){
+ staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2());
+ if (staProtocol2 == null) {
+ News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol2 = staProtocol2.clone();
+ }
+ BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2());
+ if (staDetl2 == null) {
+ News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+ }
+ if (staProtocol == null) {
+ News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
+ if (staDetl == null) {
+ News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+ && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+ flag = true;
+ }
+ if (!flag) {
+ News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv鍏ュ簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+ + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+ + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable()
+ + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
+ continue;
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+
+ if( null == wrkMastSta ) {
+ News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo());
+ boolean result = false;
+ if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
+ result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
+ }
+ if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
+ rgvThread.setPakRgv(false);
+ continue;
+ }
+ wrkMastSta.setWorkSta(wrkMastSta2 != null ? 1 : 2);
+ wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
+ Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃�
+ boolean sign = false;
+ //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠�
+ if(wrkMastSta.getWorkSta() == 2 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0){
+ WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ wrkMastSta3.setWorkSta(1);
+ wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo());
+ sign = rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3);
+ }else{
+ sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂
+ }
+ if (sign){
+ wrkMastSta.setWrkSts(1);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁�
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+ if (!signMap){
+ log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+
+ }
+ }
+ /**
+ * 灏忚溅鍑哄簱浠诲姟鍙栬揣涓嬪彂
+ */
+ public synchronized void rgvRunWrkMastOut(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark){
+ for (RgvSlave.RgvStn rgvStn : slave.getRgvOutTStn()) {//rgv鍑哄簱鍙栬揣绔欑偣
+ boolean flag = false;
+ //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
+ StaProtocol staProtocol2 = null;
+ if(rgvStn.getStaNo2()!= null ){
+ staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2());
+ if (staProtocol2 == null) {
+ News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol2 = staProtocol2.clone();
+ }
+ BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2());
+ if (staDetl2 == null) {
+ News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+ }
+ if (staProtocol == null) {
+ News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
+ if (staDetl == null) {
+ News.error("" + mark + " - 1" + " - 2" + " - 鍑哄簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isOutEnable()
+ && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
+ flag = true;
+ }
+ if (!flag) {
+ News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv鍑哄簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+ + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+ + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable()
+ + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting());
+ continue;
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ if( null == wrkMastSta ) {
+ News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo());
+ boolean result = false;
+ if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
+ result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
+ }
+ if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
+ rgvThread.setPakRgv(false);
+ continue;
+ }
+ WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo());
+ wrkMastSta.setWorkSta(wrkMastSta1 != null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
+ wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
+ boolean sign = false;
+ Short direction = 1;//宸ヤ綅1鏂瑰悜
+ //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠�
+ if(wrkMastSta.getWorkSta() == 1 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0){
+ WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ wrkMastSta3.setWorkSta(2);
+ wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo());
+ sign = rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3);
+ }else{
+ sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂
+ }
+ if (sign){
+ wrkMastSta.setWrkSts(1);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁�
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+ if (!signMap){
+ log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+
+ }
+ }
/**
* 鎵ц灏忚溅鎼繍浠诲姟
+ *
+ * @return
*/
- public synchronized void rgvRunWrkMastFullSta() {
- boolean wrkEnable = false;
+// public synchronized boolean rgvRunWrkMastFullSta() {
+// boolean wrkEnable = false;
+// try{
+// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
+// for (BasRgvMap rgvSlave:basRgvMaps) {
+// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+// if (rgvProtocol == null) {
+// continue;
+// }else {
+// rgvProtocol = rgvProtocol.clone();
+// }
+// BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+// if (basRgv == null) {
+// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
+// continue;
+// }
+//
+// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍏ュ簱鍙栬揣
+// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+// && rgvProtocol.getModeType() == RgvModeType.AUTO
+// && !rgvProtocol.isLoaded1ing()
+// && rgvProtocol.getTaskNo1() == 0
+// && rgvThread.isPakMk()
+// && rgvThread.isPakIn()
+// ) {
+// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+// if (basRgvMap == null) {
+// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
+// continue;
+// }
+// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
+// for (WrkMastSta wrkMastSta : wrkMastStaList){
+// List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙�
+// if (!staNos.contains(wrkMastSta.getStaStart())) {
+// continue;
+// }
+// boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+// wrkEnable = true;
+// if (sign){
+// wrkMastSta.setWrkSts(1);
+// try{
+// wrkMastStaMapper.updateById(wrkMastSta);
+// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+// }catch (Exception e){
+// log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+// }
+// rgvThread.setPakMk(false);
+// rgvThread.setPakOut(false);
+// boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+// if (signMap){
+// return wrkEnable;
+//// break;
+// }else {
+// log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+// Thread.sleep(500);
+// }
+// } else {
+// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+// Thread.sleep(500);
+// }
+// break;
+// }
+// }
+//
+// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍑哄簱鍙栬揣
+// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+// && rgvProtocol.getModeType() == RgvModeType.AUTO
+// && !rgvProtocol.isLoaded2ing()
+// && rgvProtocol.getTaskNo2() == 0
+// && rgvThread.isPakMk()
+// && rgvThread.isPakOut()
+// ){
+// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+// if (basRgvMap == null) {
+// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
+// continue;
+// }
+// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
+// for (WrkMastSta wrkMastSta : wrkMastStaList){
+// List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙�
+// if (staNos.contains(wrkMastSta.getStaStart())) {//闈炲叆搴撳彛锛堝嚭搴撳彛锛夐檺鍒�
+// continue;
+// }
+// boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+// wrkEnable = true;
+// if (sign){
+// wrkMastSta.setWrkSts(1);
+// try{
+// wrkMastStaMapper.updateById(wrkMastSta);
+// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+// }catch (Exception e){
+// log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+// }
+// rgvThread.setPakMk(false);
+// rgvThread.setPakOut(false);
+// boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+// if (signMap){
+// return wrkEnable;
+//// break;
+// }else {
+// log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+// Thread.sleep(500);
+// }
+// } else {
+// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+// Thread.sleep(500);
+// }
+// break;
+// }
+//
+// }
+//
+// }
+// }catch (Exception e){
+// log.error("鎵ц灏忚溅鎼繍浠诲姟涓嬪彂澶辫触");
+// }
+// return wrkEnable;
+// }
+ /**
+ * 灏忚溅棰勮皟搴�
+ */
+ public synchronized void rgvPreScheduling(){
try{
List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
for (BasRgvMap rgvSlave:basRgvMaps) {
@@ -2325,11 +3547,14 @@
continue;
}
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鎵嶈繘琛岄璋冨害
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1()==0
+ && !rgvProtocol.isLoaded1ing()
&& rgvProtocol.getTaskNo1() == 0
+ && !rgvProtocol.isLoaded2ing()
+ && rgvProtocol.getTaskNo2() == 0
+ && rgvThread.isPakMk()
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (basRgvMap == null) {
@@ -2338,42 +3563,43 @@
}
List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
- List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
- for (WrkMastSta wrkMastSta : wrkMastStaList){
- if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3){//1:婊$増 3锛氬彇鏀�
- continue;
- }
- boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
- wrkEnable = true;
- if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
- if (signMap){
- Thread.sleep(300);
- wrkMastSta.setWrkSts(1);
- try{
- wrkMastStaMapper.updateById(wrkMastSta);
- return;
- }catch (Exception e){
- log.error("鏇存柊灏忚溅浠诲姟澶辫触");
- }
- break;
- }else {
- log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
- }
- } else {
- log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
- }
- break;
- }
- }
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鍏ュ簱鍙� 鍏ュ簱棰勮皟搴�
+ List<Integer> staNos = Arrays.asList( 1043, 1104,1037);
+ for (Integer staNo : staNos) {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if(staProtocol.isLoading()){
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo((int) rgvProtocol.getRgvNo()); // RGV缂栧彿
+ rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(9999); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 绉诲姩
+ rgvCommand.setEndStaNo1(0); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ switch (staNo){
+ case 1043: rgvCommand.setTargetPosition1(1042);break; //宸ヤ綅1鐩爣绔欑偣
+ case 1104: rgvCommand.setTargetPosition1(1105);break;
+ case 1037: rgvCommand.setTargetPosition1(1036);break;
- }
- if (!wrkEnable){
- rgvRunWrkMastEmptyStaAvoidance();
+ }
+ if(Objects.equals(basRgvMap.getNowRoute(), staNo)){
+ continue;
+ }
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Rgv, (int) rgvProtocol.getRgvNo(), new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", (int) rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ }
+ }
+ }
+
+ }
+
+ }
}
}catch (Exception e){
- log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
- log.error("3875琛�"+e);
+ log.error("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触");
}
}
/**
@@ -2508,129 +3734,282 @@
/*
* 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃�
* */
- public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
- try{
- Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
- if (integer==0){
- return;
- }
- List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
- for (BasRgvMap rgvSlave:basRgvMaps) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- continue;
- }else {
- rgvProtocol = rgvProtocol.clone();
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo());
- continue;
- }
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
- && rgvProtocol.getTaskNo1()==0
- && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-// && rgvProtocol.getTaskNo2()==0
- ) {
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
- continue;
- }
-// if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){
-// continue;
-// } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157) ){
+// public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
+// try{
+// Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
+// if (integer==0){
+// return;
+// }
+// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
+// for (BasRgvMap rgvSlave:basRgvMaps) {
+// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+// if (rgvProtocol == null) {
+// continue;
+// }else {
+// rgvProtocol = rgvProtocol.clone();
+// }
+// BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+// if (basRgv == null) {
+// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo());
+// continue;
+// }
+//
+// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+// && rgvProtocol.getModeType() == RgvModeType.AUTO
+// && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+// && rgvProtocol.getTaskNo1()==0
+// && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+// && rgvThread.isPakMk()
+//// && rgvProtocol.getTaskNo2()==0
+// ){
+// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
// continue;
// }
- rgvAvoidanceXY(rgvProtocol.getRgvNo());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
- }
- }
- }catch (Exception e){
- log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
- log.error("4109琛�"+e);
- }
- }
+//// if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){
+//// continue;
+//// } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157) ){
+//// continue;
+//// }
+// rgvAvoidanceXY((int) rgvProtocol.getRgvNo());
+// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727");
+// }
+// }
+// }catch (Exception e){
+// log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
+// log.error("4109琛�"+e);
+// }
+// }
/*
* 灏忚溅XY绉诲姩 閬胯
* */
- public synchronized boolean rgvAvoidanceXY(Integer rgvId){
- BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId);
- if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){
- try{
-
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐�
- //basRgvMap.getLockStartRoute().shortValue()
- rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
- rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
- if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
- //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
- return false;
- } else {
- return true;
- }
- }catch (Exception e){
- return false;
-
- }
- }else {
- try{
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐�
- //basRgvMap.getLockStartRoute().shortValue()
- rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
- rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
- if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
- //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
- return false;
- } else {
- return true;
- }
- }catch (Exception e){
- return false;
-
- }
- }
- }
+// public synchronized boolean rgvAvoidanceXY(Integer rgvId){
+// BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId);
+// if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){
+// try{
+//
+// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+// RgvCommand rgvCommand = new RgvCommand();
+// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+// rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
+// rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐�
+// //basRgvMap.getLockStartRoute().shortValue()
+// rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
+// rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
+// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+// return false;
+// } else {
+// return true;
+// }
+// }catch (Exception e){
+// return false;
+//
+// }
+// }else {
+// try{
+// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+// RgvCommand rgvCommand = new RgvCommand();
+// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+// rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
+// rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐�
+// //basRgvMap.getLockStartRoute().shortValue()
+// rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
+// rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
+// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+// return false;
+// } else {
+// return true;
+// }
+// }catch (Exception e){
+// return false;
+//
+// }
+// }
+// }
/*
* 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
* */
- public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){
+ public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta,Short direction){
try{
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
+ boolean pakIn1 = true;
+ boolean pakIn2 = true;
rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
- rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅1璧风偣
- rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅1鐩爣绔欑偣
- rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
- if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
- //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
- return false;
- } else {
- return true;
+ if(wrkMastSta.getWrkSts() == 0){//鍙栬揣
+ if(wrkMastSta.getWorkSta() == 2){//鍑哄簱RGV鍙栬揣
+ rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
+ rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣
+ rgvCommand.setDirection2(direction);
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ pakIn1 = false;
+ }else{ //鍏ュ簱RGV鍙栬揣
+ rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setDirection1(direction);
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ }
+ if(!pakIn1){
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }else{
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }
}
+ if(wrkMastSta.getWrkSts() == 2) {//鏀捐揣
+ if((wrkMastSta.getWorkSta() == 2)){ //宸ヤ綅2浠诲姟鏀捐揣
+ rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
+ rgvCommand.setTaskStatus2(RgvTaskStatusType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣
+ rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition2(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ pakIn2 = false;
+ }else{ //宸ヤ綅1浠诲姟鏀捐揣
+ rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskStatus1(RgvTaskStatusType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
+ rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ }
+ if(!pakIn2){
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }else{
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }
+ }
+ return true;
+ }catch (Exception e){
+ return false;
+ }
+ }
+
+
+ /*
+ * 灏忚溅鍙栬揣鑷冲弻宸ヤ綅浠诲姟
+ * */
+ public synchronized boolean rgvTakeFullAll2(Integer rgvId,WrkMastSta wrkMastSta,WrkMastSta wrkMastSta2){
+ try{
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ boolean pakIn1 = true;
+ boolean pakIn2 = true;
+ rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+ if(wrkMastSta.getWrkSts() == 0) {//鍙栬揣
+ if (wrkMastSta.getWorkSta() == 2) {//鍏ュ簱RGV鍙栬揣
+ rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
+ rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta2.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setEndStaNo1(wrkMastSta2.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition1(wrkMastSta2.getStaStart()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ rgvCommand.setWrkTaskPri((short) 2); //浼樺厛鎵ц宸ヤ綅2浠诲姟
+ } else { //鍑哄簱RGV鍙栬揣
+ rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
+ rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣
+ rgvCommand.setWrkTaskPri((short) 1); //鍑哄簱鍙栬揣浼樺厛鎵ц宸ヤ綅1浠诲姟
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ }
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(2, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+// if(wrkMastSta.getWrkSts() == 2) {//鏀捐揣
+// if((wrkMastSta.getWorkSta() == 2)){ //宸ヤ綅2浠诲姟鏀捐揣
+// rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+// rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
+// rgvCommand.setTaskStatus2(RgvTaskStatusType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣
+// rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
+// rgvCommand.setTargetPosition2(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣
+// rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+// pakIn2 = false;
+// }else{ //宸ヤ綅1浠诲姟鏀捐揣
+// rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+// rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙�
+// rgvCommand.setTaskStatus1(RgvTaskStatusType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
+// rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
+// rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅1鐩爣绔欑偣
+// rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+// }
+// if(!pakIn2){
+// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+// return false;
+// } else {
+// return true;
+// }
+// }else{
+// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
+// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+// return false;
+// } else {
+// return true;
+// }
+// }
+// }
+ return true;
}catch (Exception e){
return false;
}
@@ -2736,13 +4115,44 @@
// }
// }
+ /**
+ * 鍙栨斁鍙栬矾寰勮绠�
+ */
+ public synchronized boolean rgvCalcDistance(Integer rgvNo, Integer outStn, Integer inStn){
+ try {
+ // 灏忚溅褰撳墠浣嶇疆
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvNo);
+ Integer currPos = basRgvMap.getNowRoute(); // 鎴栬�呯敤 rgvProtocol.getRgvPosI()
+
+ if(currPos == null || outStn == null || inStn == null){
+ return false; // 鏃犳晥鏁版嵁鐩存帴鏀惧純
+ }
+
+ // 璁$畻涓ゆ璺濈
+ List<Integer> routeToOut = RouteUtils.getRouteDis(currPos, outStn);
+ List<Integer> routeToIn = RouteUtils.getRouteDis(currPos, inStn);
+
+ int distOut = (routeToOut != null) ? routeToOut.size() : Integer.MAX_VALUE;
+ int distIn = (routeToIn != null) ? routeToIn.size() : Integer.MAX_VALUE;
+
+ // 璋冭瘯鏃ュ織
+ log.info("RGV璺濈璁$畻: currPos={}, outStn={}, distOut={}, inStn={}, distIn={}",
+ currPos, outStn, distOut, inStn, distIn);
+
+ return distOut < distIn; // 鏀捐揣鐐规洿杩� 鈫� true
+ } catch (Exception e) {
+ log.error("RGV璺緞璺濈璁$畻寮傚父", e);
+ return false;
+ }
+ }
+
/*
* 灏忚溅澶嶄綅
* */
- public synchronized boolean rgvComplete(Integer rgvId){
+ public synchronized boolean rgvComplete(Integer rgvId,Integer step){
try{
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(3, new RgvCommand()))) {
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(step, new RgvCommand()))) {
//step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId);
return false;
--
Gitblit v1.9.1