From 4403382cccf10ad69d540bb9f79bd8edc2c9bba7 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 20 十月 2025 16:10:00 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 2446 ++++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 1,893 insertions(+), 553 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 85c7aa0..47e4f08 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -6,13 +6,21 @@
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
+import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.ArmOrderAssignmentParam;
+import com.zy.asrs.entity.param.ArmTaskAssignmentParam;
+import com.zy.asrs.entity.param.CombParam;
+import com.zy.asrs.entity.result.OrderDetlValueResultUtil;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
+import com.zy.asrs.utils.PostMesDataUtils;
import com.zy.asrs.utils.RouteUtils;
import com.zy.asrs.utils.Utils;
import com.zy.asrs.utils.VersionUtils;
+import com.zy.asrs.utils.core.ReturnT;
+import com.zy.common.constant.ArmConstant;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.MatDto;
import com.zy.common.model.SearchLocParam;
@@ -46,7 +54,6 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.*;
-import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -93,13 +100,26 @@
@Autowired
private WrkMastService wrkMastService;
@Autowired
+ private WrkMastStaService wrkMastStaService;
+ @Autowired
private BasRgvMapService basRgvMapService;
+ @Autowired
+ private BasArmService basArmService;
+ @Autowired
+ private BasArmMastService basArmMastService;
+ @Autowired
+ private ApiLogService apiLogService;
@Value("${wms.url}")
private String wmsUrl;
- public Integer wrkNo = 10000;
+ @Value("${wms.comb}")
+ private String wmsComb;
+ @Value("${inventory.number}")
+ private Integer inventoryNumber;
+ public Integer wrkNo = 10001;
+ public static final List<Integer> LEFT_POSITION = Arrays.asList(1018,2018);
/**
* 缁勬墭
* 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
@@ -120,11 +140,17 @@
} else {
staProtocol = staProtocol.clone();
}
+ if(!staProtocol.isLoading()){
+ continue;
+ }
if (barcodeThread == null) {
continue;
}
+
+
String barcode = barcodeThread.getBarcode();
+
// 灏哄妫�娴嬪紓甯�
boolean back = false;
String errMsg = "";
@@ -154,11 +180,12 @@
}
if (!back && staProtocol.isBarcodeErr()) {
errMsg = "鎵爜澶辫触";
+ log.error("鐗╂枡鐮佹壂鐮佸け璐�");
back = true;
}
// 閫�鍥�
if (back) {
-// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+ News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
if (!staProtocol.isLoading()){
@@ -167,12 +194,19 @@
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);
+ News.info("寮傚父鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
wrkNo++;
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
+ staProtocol.setBarcode(barcode);
+ staProtocol.setPakMk(false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ System.out.println(staProtocol);
log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+inSta.getBackSta());
}
@@ -181,25 +215,54 @@
&& staProtocol.isLoading()
&& staProtocol.isInEnable()
&& !staProtocol.isEmptyMk()
- && staProtocol.isPakMk()) {
- if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
+ && staProtocol.isPakMk()
+ && staProtocol.getWorkNo() == 0
+ ) {
+ if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+// News.error(JSON.toJSONString(staProtocol));
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);
+ News.info("鏉$爜鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
wrkNo++;
staProtocol.setStaNo(inSta.getBackSta().shortValue());
+ staProtocol.setBarcode(barcode);
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) {
int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo()));
if (wrkNo1 != 0){
News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
+ StaProtocol staProtocolNew = new StaProtocol();
+ staProtocolNew.setWorkNo(wrkMast.getWrkNo());
+ staProtocolNew.setStaNo(RouteUtils.SouStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo()));
+ staProtocolNew.setSiteId(staProtocol.getSiteId());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ staProtocolNew.setBarcode(barcode);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolNew));
if (ledThread != null) {
News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�="+ wrkMast.getWrkNo()));
@@ -209,6 +272,8 @@
barcodeThread.setBarcode("");
staProtocol.setWorkNo(wrkMast.getWrkNo());
staProtocol.setStaNo(RouteUtils.SouStaEnd(null,wrkMast.getSourceStaNo()));
+ staProtocol.setBarcode(barcode);
+
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
log.info("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒))锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
@@ -219,10 +284,9 @@
if (!result) {
News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
log.error("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒)==>鏇存柊plc绔欑偣淇℃伅澶辫触");
-
-// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
continue;
}
+ continue;
}
WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
@@ -264,12 +328,13 @@
throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
}
} else {
+ News.error(JSON.toJSONString(staProtocol));
staProtocol.setWorkNo(wrkNo);
- wrkNo++;
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//
+ News.info("浠诲姟涓嬪彂鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛岄敊璇紪鍙穥},浠诲姟鍙凤細{}", inSta.getStaNo(), errMsg,jsonObject.getInteger("code"),wrkNo);
+ wrkNo++;
// if (ledThread != null) {
String errorMsg = jsonObject.getString("msg");
if (!Cools.isEmpty(errorMsg)) {
@@ -530,7 +595,7 @@
String barcode = barcodeThread.getBarcode();
if(!Cools.isEmpty(barcode)) {
// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
- if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(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);
@@ -620,7 +685,7 @@
log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString());
try {
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
- staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setWorkNo(dto.getWorkNo());
staProtocol.setStaNo((short)161);
devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -688,9 +753,10 @@
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涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
CrnProtocol crnProtocol = crnThread.getCrnProtocol();
@@ -721,7 +787,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());
@@ -742,8 +808,112 @@
}
/**
- * 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
+ * 鍫嗗灈鏈轰换鍔¤鎺ヤ换鍔$敓鎴�
*/
+ 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();
+ }
+ int[] outStaNos = {1015, 2016}; //琛旀帴鍏ュ簱鐐�
+ for (int outStaNo : outStaNos) {
+ StaProtocol staProtocolOut = devpThread.getStation().get(outStaNo);// 鐩樼偣鍑哄簱琛旀帴绔欑偣锛堝彲鑳芥槸 1015锛屼篃鍙兘鏄� 2016锛�
+ 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 (wrkMastOut == null) {
+ continue;
+ }
+ if (wrkMast != null) {
+ News.info("宸插瓨鍦ㄦ枩琛椾换鍔★紝绛夊緟浠诲姟瀹屾垚");
+ continue;
+ }
+ try {
+ TransplantWork param = new TransplantWork();
+ param.setWorkNo(wrkMastOut.getWrkNo());
+ param.setBarcode(wrkMastOut.getBarcode());
+ param.setSourceStaNo(outStaNo);
+ param.setStaNo(wrkMastOut.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)) {
+ 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(wrkMastIn == null){
+ continue;
+ }
+ if(wrkMast != null){
+ News.info("宸插瓨鍦ㄦ枩琛椾换鍔★紝绛夊緟浠诲姟瀹屾垚");
+ 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/TransplantingIn/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()) {
@@ -794,6 +964,7 @@
// 搴撲綅绉昏浆
//mark - 3 - ....
this.locToLoc(crn, crnProtocol,mark);
+ //棰勮皟搴�
// this.crnRebackHp(crnProtocol, crnThread);
}
@@ -804,21 +975,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
@@ -832,7 +999,7 @@
}
//杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
- if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
+ if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) != null) {
return;
}
News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
@@ -841,10 +1008,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); // 鐩爣搴撲綅灞�
@@ -853,6 +1020,7 @@
}
crnThread.setBackHpFlag(true);
}
+
// }
}
@@ -872,13 +1040,68 @@
} 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());
if (staDetl == null) {
News.error(""+mark+" - 1"+" - 2"+" - 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
continue;
}
- if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0
&& staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
flag = true;
}
@@ -1016,9 +1239,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) {
@@ -1057,8 +1341,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") && !staProtocol.isLoading()
+ ) {
+// if (slave.getId() == 1 || slave.getId() == 2){
+// if (staProtocol.isLoading() || staProtocol.getWorkNo() != 0 || !staProtocol.isOutEnable()){
+// continue;
+// }
+// }
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1366,14 +1658,50 @@
if (crnProtocol == null) {
continue;
}
- // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
- if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
- News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔");
+ 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 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.鍏ュ簱瀹屾垚
@@ -1388,16 +1716,19 @@
// 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
if (wrkMastMapper.updateById(wrkMast) > 0) {
// 鍫嗗灈鏈哄浣�
- log.error(wrkMast.getWrkNo()+"浠诲姟淇敼鐘舵��4鎴愬姛锛屽浣嶅爢鍨涙満={}",crnThread.getCrnProtocol().getCrnNo());
- 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"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
}
+
/**
* 鍫嗗灈鏈哄紓甯镐俊鎭褰�
@@ -1767,13 +2098,13 @@
// 鑾峰彇鍙夎溅绔欑偣
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) {
@@ -1927,7 +2258,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"); // 绌烘澘
@@ -2223,16 +2554,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 >= 1 && 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 {
@@ -2240,17 +2575,10 @@
}
if (staProtocol.isAutoing() //鑷姩
&& !staProtocol.isLoading() //鏃犵墿
- && staProtocol.isOutEnable() //鍙嚭淇″彿
+// && 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 {
@@ -2277,11 +2605,12 @@
}
public synchronized void autoEmptyIn() {
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ 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);
+ StaProtocol staProtocol1 = devpThread.getStation().get(1040);
if (staProtocol == null) {
return;
} else {
@@ -2291,14 +2620,13 @@
&& staProtocol.isLoading() //鏈夌墿
&& staProtocol.isInEnable() //鍙叆淇″彿
&& staProtocol.isPakMk()
- && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛�
+ && staProtocol1.isFull() //鍙犳弧淇″彿
+ && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990 ) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛�
) {
+ System.out.println(staProtocol);
try {
Short loctype1 = 1;
- if (site == 153){
- loctype1 = 2;
- }
LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
locTypeDto.setSiteId(site);
@@ -2332,12 +2660,15 @@
* 灏忚溅鍦板浘鏇存柊 鏇存柊閿�
* */
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){
@@ -2346,9 +2677,14 @@
//鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
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){
@@ -2356,7 +2692,7 @@
// }
return true;
}catch (Exception e){
- log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�");
+ log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛佸紓甯稿師鍥狅細"+e);
return false;
}
}
@@ -2384,13 +2720,15 @@
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE &&
rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
- && (rgvProtocol.getTaskNo1()==0)
+ && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+ && rgvProtocol.getTaskNo1()==0
+ && !rgvProtocol.isLoaded2ing()
+ && rgvProtocol.getTaskNo2()==0
&&rgvThread.isPakMk()
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- Integer rgvNoOther = basRgvMap.getRgvNoOther(rgvProtocol.getRgvNo());
+ Integer rgvNoOther = basRgvMap.getRgvNoOther((int) rgvProtocol.getRgvNo());
RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther);
RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol();
if (rgvProtocolOther == null) {
@@ -2400,8 +2738,10 @@
}
if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE
&& rgvProtocolOther.getModeType() == RgvModeType.AUTO
- && rgvProtocolOther.getLoaded1()==0
- && (rgvProtocolOther.getTaskNo1()==0)
+ && !rgvProtocolOther.isLoaded1ing()
+ && rgvProtocolOther.getTaskNo1()==0
+ && !rgvProtocolOther.isLoaded2ing()
+ && rgvProtocolOther.getTaskNo2()==0
&&rgvThreadOther.isPakMk()
){
//瀵瑰伐浣滄。杩涜鍒ゆ柇
@@ -2425,276 +2765,999 @@
}
}
-
/**
- * 瀹屾垚灏忚溅浠诲姟
+ * 鑷姩鐢熸垚RGV鎺ラ┏浠诲姟锛堟绱㈠嚭鍏ュ彛浠诲姟锛岀敓鎴愬搴擱GV浠诲姟锛屾绱�4妤间换鍔★紝闈�3鍙峰爢鍨涙満锛屽垯鐢熸垚瀵瑰簲鎺ラ┏浠诲姟锛�
*/
- public synchronized void rgvCompleteWrkMastSta() {
- 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());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- continue;
- }else {
- rgvProtocol = rgvProtocol.clone();
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgvSlave.getRgvNo());
- continue;
- }
-
- // 鍙湁褰揜GV绛夊緟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 (!rgvComplete){
- log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
- }
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415");
- rgvThread.setPakMk(true);
- break;
- }
- WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
- 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;
- }
- }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;
- if (!rgvComplete){
- log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
- break;
- }
- WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
- 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");
- rgvThread.setPakMk(true);
- }
-
- else {
- log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
- }
- }
- }
- }
- }catch (Exception e){
- log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
- }
- }
- /**
- * 鎵ц灏忚溅鎼繍浠诲姟
- */
- public synchronized void 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.getLoaded1()==0
- && rgvProtocol.getTaskNo1() == 0
- && rgvThread.isPakMk()
- ) {
- 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){
- if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3){//1:婊$増 3锛氬彇鏀�
- continue;
- }
- boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
- wrkEnable = true;
- if (sign){
- rgvThread.setPakMk(false);
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
- 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;
- }
- }
-
- }
- if (!wrkEnable){
- rgvRunWrkMastEmptyStaAvoidance();
- }
- }catch (Exception e){
- log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
- log.error("3875琛�"+e);
- }
- }
- /**
- * 鎵ц灏忚溅鎼繍浠诲姟
- */
-// public synchronized void rgvRunWrkMastEmptyStaPut() {//鏀�
+// public synchronized void rgvCreateWrkMastSta(){
// try{
-// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-// if (rgvProtocol == null) {
+// 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();
// }
-// BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-// if (basRgv == null) {
-// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�5", rgvSlave.getId());
+// if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
// continue;
-// }
-//
-// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
-// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-// && rgvProtocol.getModeType() == RgvModeType.AUTO
-// && rgvProtocol.getLoaded1()==1 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-// ) {
-// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-// if (basRgvMap == null) {
-// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-// continue;
-// }
-// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
-// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
-// for (WrkMastSta wrkMastSta : wrkMastStaList){
-// if (wrkMastSta.getType()!=2 || (wrkMastSta.getWrkType()!=2 && wrkMastSta.getWrkType()!=4)){// 2:绌烘澘 2:鏀� 4锛氭媶鐩�
-// continue;
-// }
-// boolean sign = false;
-// if (wrkMastSta.getStaStart()==0 && wrkMastSta.getStaEnd()!=0){//鏀�
-// sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);
-// }else {
-// continue;
-// }
-// if (sign){
-// boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
-// if (signMap){
-// wrkMastSta.setWrkSts(2);
-// try{
-// wrkMastStaMapper.updateById(wrkMastSta);
-// }catch (Exception e){
-// log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-// }
-// return;
-// }else {
-// log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-// }
-// }else {
-// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-// }
-// break;
-// }
// }
// }
-// }catch (Exception e){
-// log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
-// log.error("3933琛�"+e);
// }
// }
-// public synchronized void rgvRunWrkMastEmptyStaTake() {//鍙�
-// try{
-// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ /**
+ * 灏忚溅涓婂伐浣嶅乏鍙崇Щ鍔�
+ *
+ */
+// public synchronized boolean rgvStaMove(Long workNo) {
+// try {
+// 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.getId());
+// if (rgvProtocol.isLoaded2ing() && rgvProtocol.isLoaded1ing()) {
+// continue;
+// }
+// if (rgvProtocol.isLoaded1ing() && !rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo1() != 0) {
+// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
+// Short moveSta = 0;
+//
+// if (wrkMastSta.getStaEnd() < 1036 || (2000 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd() < 2031)) {
+// moveSta = 2;
+// boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(), 7, wrkMastSta.getWrkNo(), moveSta);
+// if (!rgvComplete) {
+// log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
+// break;
+// }
+// }
+// }
+// if (!rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo2() != 0) {
+// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());
+// Short moveSta = 0;
+//
+// if (wrkMastSta.getStaEnd() > 2030 || (1036 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd() < 2000)) {
+// moveSta = 1;
+// boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(), 8, wrkMastSta.getWrkNo(), moveSta);
+// if (!rgvComplete) {
+// log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
+// break;
+// }
+// }
+// }
+//
+//
+// }
+// } catch (Exception e) {
+// log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�" + e);
+// }
+// }
+ /**
+ * 瀹屾垚灏忚溅浠诲姟
+ */
+// public synchronized void rgvCompleteWrkMastSta() {
+// try{
+// for (DevpSlave devp : slaveProperties.getDevp()) {
+// 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;
+// }else {
+// rgvProtocol = rgvProtocol.clone();
+// }
+// BasRgv basRgv = basRgvService.selectById(rgv.getId());
// if (basRgv == null) {
-// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�6", rgvSlave.getId());
+// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgv.getId());
+// continue;
+// }
+// //鏀捐揣纭
+// if(rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){
+// boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3);
+// if (!rgvComplete){
+// log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
+// }
+// }
+// if(rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){
+// boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 6);
+// if (!rgvComplete){
+// log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
+// }
+// }
+//
+// // 鍙湁褰揜GV宸ヤ綅1绛夊緟WCS纭銆佽嚜鍔�
+// if (rgvProtocol.getStatusType1() == RgvStatusType.WAITING
+// && rgvProtocol.getModeType() == RgvModeType.AUTO
+// ){
+//
+// log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType1(),rgvProtocol);
+// 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()!=9999 && rgvProtocol.getTaskNo1() != 0){
+// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
+// if(null == wrkMastSta){
+// log.error("灏忚溅鏃犱换鍔�");
+// continue;
+// }
+// if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭
+//// if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){
+//// continue;
+//// }
+// boolean rgvComplete = false;
+// rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),7,wrkMastSta.getWrkNo(),(short)2);
+// if (!rgvComplete){
+// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+// break;
+// }
+// wrkMastSta.setUpdateTime(new Date());
+// wrkMastSta.setWrkSts(2);
+// try{
+// wrkMastStaMapper.updateById(wrkMastSta);
+// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+// }catch (Exception e){
+// log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+// }
+// break;
+// }
+// }
+//
+// else {
+// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
+// }
+// }
+// // 鍙湁褰揜GV宸ヤ綅2绛夊緟WCS纭銆佽嚜鍔�
+// if (rgvProtocol.getStatusType2() == RgvStatusType.WAITING
+// && rgvProtocol.getModeType() == RgvModeType.AUTO
+// ){
+// log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType2(),rgvProtocol);
+// if (rgvProtocol.getTaskNo2() !=0 ){
+// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());
+// if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭
+// boolean rgvComplete = false;
+// rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),8,wrkMastSta.getWrkNo(),(short)1);
+// if (!rgvComplete){
+// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+// break;
+// }
+// wrkMastSta.setWrkSts(2);
+// try{
+// wrkMastStaMapper.updateById(wrkMastSta);
+// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+// }catch (Exception e){
+// log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+// }
+// break;
+// }
+// if(wrkMastSta.getWrkSts() == 4){//琛岃蛋鍚庣‘璁�
+// 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());
+//
+// 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);
+// }
+// }
+// }
+// }catch (Exception e){
+// 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.getStatusType1() != RgvStatusType.IDLE && rgvProtocol.getModeType() != RgvModeType.AUTO) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgv.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId());
+ continue;
+ }
+ if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){
+ rgvThread.setPaking(true);
+ continue;
+ }
+ //灏忚溅鏃犱换鍔℃椂璺宠繃
+ if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0 ){
+ continue;
+ }
+ if(!rgvThread.isPaking()){
+ continue;
+
+ }
+ if(!basRgv.getPakAll().equals("1")){
+ continue;
+ }
+ if(basRgv.getPakIn().equals("1")){
+ 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() && 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());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ Integer workNo = 0;
+ if(rgvProtocol.getTaskNo2() > 9999|| rgvProtocol.getTaskNo1() > 9999){
+ workNo = rgvProtocol.getTaskNo1() !=0 ? rgvProtocol.getTaskNo1() : rgvProtocol.getTaskNo2();
+ }else{
+ workNo = rgvProtocol.getTaskNo2() !=0 ? rgvProtocol.getTaskNo2() : rgvProtocol.getTaskNo1();
+ }
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNoPut(workNo);
+ WrkMast wrkMast = wrkMastMapper.selectByWrkNo(workNo);
+ if( null == wrkMastSta ) {
+ News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+ if (sign){
+ try{
+ rgvThread.setPaking(false);
+ if(wrkMast != null){
+ wrkMast.setSheetNo("2");
+ wrkMastMapper.updateById(wrkMast);
+ }
+ wrkMastSta.setWrkSts(2);
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触"+ e);
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+ }
+ basRgv.setPakRgv("1");
+ basRgvService.updateById(basRgv);
+ }
+ //鍑哄簱鏀捐揣
+ if( basRgv.getPakOut().equals("1")){
+ 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() && 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());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ Integer workNo = 0;
+ if(basRgv.getPakToCrn().equals("1")){
+ workNo = rgvProtocol.getTaskNo1() !=0 ? rgvProtocol.getTaskNo1():rgvProtocol.getTaskNo2(); //姝e父鎯呭喌鍑哄簱鏀捐揣浼樺厛宸ヤ綅1鏀�
+ }else{
+ workNo = rgvProtocol.getTaskNo2() !=0 ? rgvProtocol.getTaskNo2():rgvProtocol.getTaskNo1(); //鎺ラ┏鎯呭喌浼樺厛宸ヤ綅2鏀�
+ }
+
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNoPut(workNo);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ WrkMast wrkMast = wrkMastMapper.selectByWrkNo(workNo);
+
+ if( null == wrkMastSta ) {
+ News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍑哄簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+ if (sign){
+ try{
+ rgvThread.setPaking(false);
+ if(wrkMast != null){
+ wrkMast.setSheetNo("2");
+ wrkMastMapper.updateById(wrkMast);
+ }
+ wrkMastSta.setWrkSts(2);
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+ }
+ basRgv.setPakRgv("1");
+ basRgvService.updateById(basRgv);
+ }
+ }
+ }
+ /**
+ * rgv浠诲姟瀹屾垚
+ */
+ public synchronized void rgvTaskComplete(){
+ 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;
+ }
+ Long taskNo1 = Long.valueOf(rgvProtocol.getTaskNo1());
+ Long taskNo2 = Long.valueOf(rgvProtocol.getTaskNo2());
+ List<WrkMastSta> wrkMastStaList = wrkMastStaService.selectList(
+ new EntityWrapper<WrkMastSta>()
+ .eq("wrk_sts" ,2)
+ .eq("rgv_no", rgvProtocol.getRgvNo())
+ );
+ for(WrkMastSta wrkMastSta : wrkMastStaList){
+ if(!Objects.equals(wrkMastSta.getWrkNo(), taskNo1) && !Objects.equals(wrkMastSta.getWrkNo(), taskNo2)){
+ try{
+ wrkMastSta.setWrkSts(3);
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.info("鏇存柊灏忚溅宸ヤ綔妗h嚦瀹屾垚鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅宸ヤ綔妗h嚦瀹屾垚澶辫触");
+ }
+ }
+ }
+ if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
+ && !rgvProtocol.isLoaded1ing()
+ && !rgvProtocol.isLoaded2ing()){
+ List<WrkMastSta> wrkMastStaLock = wrkMastStaService.selectLockWrk();
+ List<WrkMastSta> wrkMastStaLockT = wrkMastStaService.selectLockWrkT();
+
+ if(wrkMastStaLock.size() > 0 && rgvProtocol.getRgvNo() == 1){
+ continue ;
+ }
+ if(wrkMastStaLockT.size() > 0 && rgvProtocol.getRgvNo() == 2){
+ continue ;
+ }
+ basRgv.setPakRgv("1");
+ basRgv.setPakToCrn("1");
+ basRgv.setPakIn("1");
+ basRgv.setPakOut("1");
+ basRgv.setPakAll("1");
+ basRgvService.updateById(basRgv);
+ rgvThread.setPakMk(true);
+ }
+
+ }
+ }
+
+
+ /**
+ * rgv鍑哄叆搴撲换鍔′笅鍙�
+ */
+ public synchronized void rgvIoExecute(Integer mark) {
+ 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;
+ }
+ if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){
+ rgvThread.setPaking(true);
+ }
+ if(rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing()){
+ basRgv.setPakAll("1");
+ basRgvService.updateById(basRgv);
+ }
+ // 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
+ if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE &&
+ rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk()
+ && basRgv.getPakToCrn().equals("1") && rgvThread.isPaking()) {
+ News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�");
+ // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
+// rgvRunWrkMastInTest();
+
+ if (rgvProtocol.getLastIo().equals("I")) {
+ if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) {
+ //mark - 1 - ....
+ if (rgvProtocol.getTaskNo1()==0){
+ this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 鍏ュ簱
+ }
+ rgvProtocol.setLastIo("O");
+ } else if (basRgv.getOutEnable().equals("1") && basRgv.getPakOut().equals("1")) {
+ //mark - 2 - ....
+ if (rgvProtocol.getTaskNo2()==0){
+ this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱
+ }
+ rgvProtocol.setLastIo("I");
+ }
+ }
+ // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+ else if (rgvProtocol.getLastIo().equals("O")) {
+ if (basRgv.getOutEnable().equals("1") && basRgv.getPakOut().equals("1")) {
+ if (rgvProtocol.getTaskNo2()==0){
+ this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱
+ }
+ rgvProtocol.setLastIo("I");
+ } else if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) {
+ if (rgvProtocol.getTaskNo1()==0){
+ 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(!rgvThread.isPakToCrn()){
+// rgvRunWrkToCrn(rgv, rgvProtocol,mark); //鑻ュ皬杞﹀彇鍒颁竴涓帴椹充换鍔★紝绗簩涓伐浣嶅彧鑳藉彇鎺ラ┏浠诲姟
+// }
+// if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){
+// rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
+// }
+
+
+// if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO) {
+// //灏忚溅鎵ц鏀捐揣浠诲姟
+// rgvOutExecute();
+//
+// }
+ }
+ }
+ public synchronized void rgvRunWrkMastInTest(){
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(1);
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(1021); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(342);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+
+// WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, 1);
+ 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(1);
+ wrkMastSta.setRgvNo(1);
+ wrkMastSta.setStaStart(1035);
+ Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃�
+ boolean sign = false;
+// 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 rgvRunWrkMastIn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark) {
+ for (RgvSlave.RgvStn rgvStn : slave.getRgvInTStn()) {//rgv鍏ュ簱鍙栬揣绔欑偣
+ boolean flag = false;
+ BasRgv basRgv = basRgvService.selectById(slave.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId());
+ continue;
+ }
+ //閬嶅巻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());
+ WrkMastSta wrkMastSta3 = 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.getWorkNo()>9999 && staProtocol2.getWorkNo()>9999) || (staProtocol.getWorkNo()<10000 && staProtocol2.getWorkNo()<10000)){
+ //褰撹繛缁彇璐х珯鐐逛负鐩稿悓绫诲瀷鏃舵墠鑳借繛缁彇
+ wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
+ }
+
+ }
+ if(rgvProtocol.getTaskNo2() > 9999 && staProtocol.getWorkNo() < 10000){
+ 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
+ && 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() + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
+ continue;
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ List<Integer> route = new ArrayList<>();
+ switch (rgvProtocol.getRgvNo()){
+ case 1: route = RouteUtils.getRouteOne();break;
+ case 2: route = RouteUtils.getRouteTwo();break;
+ }
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ basRgvMapService.updateById(basRgvMap);
+ 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 = null;
+ if(rgvProtocol.getTaskNo2() != null){
+ wrkMastSta2 = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());
+ }
+ 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浼樺厛鍙栬揣
+ basRgv.setPakRgv("0");
+ basRgvService.updateById(basRgv);
+
+// rgvThread.setPakRgv(false);
+ continue;
+ }
+ wrkMastSta.setWorkSta(wrkMastSta2 !=null ? 1 : 2);
+ wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
+ boolean sign = false;
+ sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+ if (sign){
+
+ if(wrkMastSta3 != null ){
+ List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
+ if(wrkMastStaPaking.size() < 1){//宸叉湁鏍囪涓嶅啀鏍囪
+ wrkMastSta3.setMk(1);
+ basRgv.setPakAll("0");
+ basRgvService.updateById(basRgv);
+
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta3);
+ log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
+ }catch (Exception e){
+ log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
+ }
+ }
+ }
+ basRgv.setPakOut("0");//鍑哄簱涓嶅厑璁�
+ basRgvService.updateById(basRgv);
+ rgvThread.setPaking(false);//浠诲姟涓嬪彂閿佸畾
+
+ try{
+ wrkMastSta.setWrkSts(1);
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ } 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());
+ BasRgv basRgv = basRgvService.selectById(slave.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId());
+ continue;
+ }
+ StaProtocol staProtocol2 = null;
+ WrkMastSta wrkMastSta3 = 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;
+ }
+ wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
+
+ }
+ 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
+ && 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 = new ArrayList<>();
+ switch (rgvProtocol.getRgvNo()){
+ case 1: route = RouteUtils.getRouteOne();break;
+ case 2: route = RouteUtils.getRouteTwo();break;
+ }
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ basRgvMapService.updateById(basRgvMap);
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ if( null == wrkMastSta ) {
+ News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1());
+ boolean result = false;
+ if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
+ result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
+ }
+ if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
+ basRgv.setPakRgv("0");
+ basRgvService.updateById(basRgv);
+
+// rgvThread.setPakRgv(false);
+ continue;
+ }
+ wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
+ wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
+ boolean sign = false;
+ sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+ if (sign){
+ if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
+ basRgv.setPakToCrn("0");
+ basRgvService.updateById(basRgv);
+
+// rgvThread.setPakToCrn(false); //閿佸畾灏忚溅鍙兘鎺ユ帴椹充换鍔�
+ }
+
+ if(wrkMastSta3 != null ){
+ List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
+ if(wrkMastStaPaking.size() < 1){
+ wrkMastSta3.setMk(1);
+ basRgv.setPakAll("0");
+ basRgvService.updateById(basRgv);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta3);
+ log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
+ }catch (Exception e){
+ log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
+ }
+ }
+ }
+ basRgv.setPakIn("0");
+ basRgvService.updateById(basRgv);
+
+ rgvThread.setPaking(false);
+// rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁�
+ try{
+ wrkMastSta.setWrkSts(1);
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+
+ }
+ }
+
+ /**
+ * 灏忚溅鍑哄簱鎺ラ┏浠诲姟鍙栬揣涓嬪彂
+ */
+// public synchronized void rgvRunWrkToCrn(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
+// && 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 = new ArrayList<>();
+// switch (rgvProtocol.getRgvNo()){
+// case 1: route = RouteUtils.getRouteOne();break;
+// case 2: route = RouteUtils.getRouteTwo();break;
+// }
+// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+// WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfereToCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+// if( null == wrkMastSta ) {
+// News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+// continue;
+// }
+// WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1());
+// boolean result = false;
+// if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
+// result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
+// }
+// if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
+// rgvThread.setPakRgv(false);
+// continue;
+// }
+// wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
+// wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
+// boolean sign = false;
+// sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+// if (sign){
+// rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁�
+// try{
+// wrkMastSta.setWrkSts(1);
+// wrkMastStaMapper.updateById(wrkMastSta);
+// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+// }catch (Exception e){
+// log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+// }
+// } else {
+// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+// }
+//
+//
+// }
+// }
+ /**
+ * 鎵ц灏忚溅鎼繍浠诲姟
+ *
+ * @return
+ */
+// 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鍙敤
+// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍏ュ簱鍙栬揣
// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
// && rgvProtocol.getModeType() == RgvModeType.AUTO
-// && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+// && !rgvProtocol.isLoaded1ing()
+// && rgvProtocol.getTaskNo1() == 0
+// && rgvThread.isPakMk()
+// && rgvThread.isPakIn()
// ) {
// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
// if (basRgvMap == null) {
@@ -2705,145 +3768,169 @@
// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
// for (WrkMastSta wrkMastSta : wrkMastStaList){
-// if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=1){// 2:绌烘澘 1:鍙�
+// List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙�
+// if (!staNos.contains(wrkMastSta.getStaStart())) {
// continue;
// }
-// boolean sign = false;
-// if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//鍙�
-// sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);
-// } else {
-// continue;
-// }
+// boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+// wrkEnable = true;
// if (sign){
-// boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
-// if (signMap){
-// wrkMastSta.setWrkSts(1);
-// try{
-// wrkMastStaMapper.updateById(wrkMastSta);
-// }catch (Exception e){
-// log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-// }
-// return;
-// }else {
-// log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+// wrkMastSta.setWrkSts(1);
+// try{
+// wrkMastStaMapper.updateById(wrkMastSta);
+// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+// }catch (Exception e){
+// log.error("鏇存柊灏忚溅浠诲姟澶辫触");
// }
-// }else {
+// 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,null); //鍛戒护涓嬪彂
+// 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("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
-// log.error("3989琛�"+e);
+// log.error("鎵ц灏忚溅鎼繍浠诲姟涓嬪彂澶辫触");
+// }
+// return wrkEnable;
+// }
+ /**
+ * 灏忚溅棰勮皟搴�
+ */
+// public synchronized void rgvPreScheduling(){
+// 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
+// && !rgvProtocol.isLoaded2ing()
+// && rgvProtocol.getTaskNo2() == 0
+// && rgvThread.isPakMk()
+// ) {
+// 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()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+// // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+// for (DevpSlave devp : slaveProperties.getDevp()) {
+// // 閬嶅巻鍏ュ簱鍙� 鍏ュ簱棰勮皟搴�
+// List<Integer> staNos = Arrays.asList( 1043, 1104, 1029, 1022, 1019, 1008, 1005);
+// 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.setTaskNo(9999); // 宸ヤ綅1宸ヤ綔鍙�
+// rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 绉诲姩
+// switch (staNo){
+// case 1043: rgvCommand.setTargetPosition1(1042);break; //宸ヤ綅1鐩爣绔欑偣
+// case 1104: rgvCommand.setTargetPosition1(1105);break;
+// case 1037: rgvCommand.setTargetPosition1(1036);break;
+//
+// }
+// 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("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触");
// }
// }
- /*
- * 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃�
- * */
- 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
- && rgvThread.isPakMk()
-// && 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) ){
-// continue;
-// }
- rgvAvoidanceXY(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;
-
- }
- }
- }
/*
@@ -2854,131 +3941,71 @@
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
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))) {
+ RgvTaskStatusType type;
+ Integer targetPosition = 0;
+ if(wrkMastSta.getWrkSts() == 0){
+ type = RgvTaskStatusType.FETCH; //鍙栬揣
+ targetPosition = wrkMastSta.getStaStart();
+ }else{
+ type = RgvTaskStatusType.PUT; //鏀捐揣
+ targetPosition = wrkMastSta.getStaEnd();
+ }
+ rgvCommand.setTaskNo(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅宸ヤ綔鍙�
+ rgvCommand.setTaskStatus(type); // 宸ヤ綅浠诲姟妯″紡: 鍙栬揣
+ rgvCommand.setTargetPosition(targetPosition); //宸ヤ綅鐩爣绔欑偣
+ rgvCommand.setWrkTaskPri(wrkMastSta.getWorkSta());
+ 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;
}
+
}catch (Exception e){
return false;
}
}
- /*
- * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
- * */
-// public synchronized boolean rgvTakeFull(Integer rgvId,WrkMastSta wrkMastSta){
-// try{
-// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-// RgvCommand rgvCommand = new RgvCommand();
-// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-// rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-// rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣
-// rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().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;
-// }
-// }catch (Exception e){
-// return false;
-// }
-// }
+ /**
+ * 鍙栨斁鍙栬矾寰勮绠�
+ */
+ public synchronized boolean rgvCalcDistance(Integer rgvNo, Integer outStn, Integer inStn){
+ try {
+ // 灏忚溅褰撳墠浣嶇疆
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvNo);
+ Integer currPos = basRgvMap.getNowRoute(); // 鎴栬�呯敤 rgvProtocol.getRgvPosI()
- /*
- * 灏忚溅鏀捐揣鑷宠緭閫佺嚎浠诲姟
- * */
-// public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){
-// try{
-// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-// RgvCommand rgvCommand = new RgvCommand();
-// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-// rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-// rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅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;
-// }
-// }catch (Exception e){
-// return false;
-// }
-// }
+ if(currPos == null || outStn == null || inStn == null){
+ return false; // 鏃犳晥鏁版嵁鐩存帴鏀惧純
+ }
- /*
- * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟
- * */
-// public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){
-// try{
-// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-// RgvCommand rgvCommand = new RgvCommand();
-// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-// rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-// rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栬揣
-// rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅2璧风偣
-// rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭
-// if (!MessageQueue.offer(SlaveType.Crn, 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;
-// }
-// }catch (Exception e){
-// return false;
-// }
-// }
+ // 璁$畻涓ゆ璺濈
+ List<Integer> routeToOut = RouteUtils.getRouteDis(currPos, outStn);
+ List<Integer> routeToIn = RouteUtils.getRouteDis(currPos, inStn);
- /*
- * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟
- * */
-// public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){
-// try{
-// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-// RgvCommand rgvCommand = new RgvCommand();
-// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-// rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-// rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣
-// rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅2鐩爣绔欑偣
-// rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭
-// if (!MessageQueue.offer(SlaveType.Crn, 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;
-// }
-// }catch (Exception e){
-// return false;
-// }
-// }
+ 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;
@@ -2992,4 +4019,317 @@
}
}
+
+
+ /*
+ * arm浠诲姟瀹屾垚鑷姩缁勬墭
+ * */
+ public synchronized void armMissionAccomplished() {
+ try{
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鎷f枡鍏ュ簱鍙�
+ for (DevpSlave.Sta armSta : devp.getArmSta()) {
+
+ // 鑾峰彇绔欑偣淇℃伅
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(armSta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+// String barcode = staProtocol.getBarcode();
+// if(!Cools.isEmpty(barcode)) {
+// if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+// armTaskAssignmentCallApiLogSave(staProtocol, "鎵樼洏鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
+// continue;
+// }
+// } else {
+// armTaskAssignmentCallApiLogSave(staProtocol, "鎵樼洏鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
+// continue;
+// }
+ List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>()
+ .eq("arm_no", armSta.getArmNo())
+ .eq("sta_no_sou", armSta.getStaNo())
+ .eq("status", 1));
+ for (BasArm basArm : basArmList) {
+ if (basArm.getStatus()!=1){
+ continue;
+ }
+ try{
+ List<BasArmMast> basArmMastList = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("arm_no", basArm.getArmNo())
+ .eq("sorting_line", basArm.getSortingLineSou())
+ .eq("status", 3)
+ );
+ if (basArmMastList.isEmpty()){
+ continue;
+ }
+ CombParam combParam = new CombParam(basArmMastList);
+ //arm浠诲姟瀹屾垚鑷姩缁勬墭
+ ReturnT<String> result = new PostMesDataUtils().postMesData("arm浠诲姟瀹屾垚鑷姩缁勬墭",wmsUrl, wmsComb, combParam);
+ if (result.getCode()==200){
+ basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLineSou(),3,4);
+ } else {
+ armTaskAssignmentCallApiLogSave(staProtocol, "鑷姩缁勬墭澶辫触", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯", false);
+// log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愶細"+JSON.toJSON(basArmMastList)+"===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯");
+ }
+ } catch (Exception e){
+ armTaskAssignmentCallApiLogSave(staProtocol, "鏈烘鑷傛姄鍙栦换鍔″畬鎴愬紓甯�", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯", false);
+// log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫満姊拌噦鎶撳彇浠诲姟瀹屾垚"+e.getMessage());
+ }
+ break;
+ }
+ }
+ }
+ } catch (Exception e){
+ log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愮粍鎵樺け璐�"+e.getMessage());
+ }
+ }
+ public synchronized void armMissionAccomplishedScanToCheckIn() {
+ try{
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鎷f枡鍏ュ簱鍙�
+ for (DevpSlave.Sta armSta : devp.getArmSta()) {
+
+ List<BasArmMast> basArmMastList = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("arm_no", armSta.getArmNo())
+ .eq("sta_no", armSta.getStaNo())
+ .eq("status", 4)
+ );
+
+ if (basArmMastList.isEmpty()){
+ continue;
+ }
+ // 鑾峰彇绔欑偣淇℃伅
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(armSta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+// if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
+// int workNo = commonService.getWorkNo(6);//寰呭畬鍠�
+// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+// staProtocol.setWorkNo(workNo);
+// staProtocol.setStaNo(armSta.getStaNoEnd().shortValue());
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// log.error("杈撻�佺嚎涓嬪彂5锛�"+workNo+","+armSta.getStaNoEnd());
+// if (!result) {
+// News.error(""+" - 3"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+// }
+ basArmMastService.updateArmMastStatus(basArmMastList.get(0).getArmNo(),basArmMastList.get(0).getSortingLine(),4,5);
+// }
+ }
+ }
+ } catch (Exception e){
+ log.error("缁勬墭瀹屾垚椹卞姩鎵樼洏鎵爜鍏ュ簱澶辫触"+e.getMessage());
+ }
+ }
+
+ /*
+ * arm浠诲姟涓嬪彂
+ * */
+ public synchronized void armTaskAssignment() {
+ try{
+ List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<>());
+ for (BasArm basArm : basArmList) {
+ if (basArm.getStatus()!=1){
+ continue;
+ }
+ try{
+ // 鑾峰彇绔欑偣淇℃伅
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, basArm.getDevpId());
+ StaProtocol staProtocol = devpThread.getStation().get(basArm.getStaNoSou());
+ if (staProtocol == null || !staProtocol.isLoading()) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ String barcode = staProtocol.getBarcode();
+ if(!Cools.isEmpty(barcode)) {
+ if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+ armTaskAssignmentCallApiLogSave(staProtocol, "鎵樼洏鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
+// log.error(staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�");
+ continue;
+ }
+ } else {
+ armTaskAssignmentCallApiLogSave(staProtocol, "鎵樼洏鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
+
+// log.error(staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�");
+ continue;
+ }
+
+ if(barcode.length()!=6){
+ armTaskAssignmentCallApiLogSave(staProtocol, "鏉$爜闀垮害涓嶆槸6浣�", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮侀暱搴︿笉鏄�6浣�===>>" + barcode, false);
+// log.error(staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮侀暱搴︿笉鏄�6浣�===>>" + barcode);
+ continue;
+// throw new CoolException(staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮侀暱搴︿笉鏄�6浣�===>>" + barcode);
+ }
+
+ int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",barcode));
+ int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",barcode));
+ int countwait = waitPakinMapper.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",barcode));
+ if (countLoc > 0 || countWrk > 0 || countwait > 0) {
+// throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + barcode);
+ armTaskAssignmentCallApiLogSave(staProtocol, "鏉$爜鏁版嵁宸插瓨鍦�", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛岀粍鎵樻。/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + barcode, false);
+
+// log.error(staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛岀粍鎵樻。/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + barcode);
+ continue;
+ }
+
+ List<BasArmMast> basArmMastListRuningBarCode = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("barcode", barcode)
+ .eq("status", 3)
+ );
+ if (!basArmMastListRuningBarCode.isEmpty()){
+ armTaskAssignmentCallApiLogSave(staProtocol, "鏉$爜鏁版嵁宸插瓨鍦�,姝e湪鑷姩缁勬墭锛侊紒锛�", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮佹暟鎹鍦ㄨ嚜鍔ㄧ粍鎵�===>>" + barcode, false);
+ continue;
+ }
+ List<BasArmMast> basArmMastListError = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("arm_no", basArm.getArmNo())
+ .eq("sorting_line", basArm.getSortingLineSou())
+ .eq("status", 9)
+ );
+ if (!basArmMastListError.isEmpty()){
+ armTaskAssignmentCallApiLogSave(staProtocol, "瀛樺湪寮傚父鏈烘鑷備换鍔�", basArm.getArmNo()+"鍙锋満姊拌噦瀛樺湪寮傚父鏁版嵁闇�瑕佺淮鎶わ紒锛侊紒", false);
+
+// log.error(basArm.getArmNo()+"鍙锋満姊拌噦瀛樺湪寮傚父鏁版嵁闇�瑕佺淮鎶わ紒锛侊紒");
+ continue;
+ }
+ List<BasArmMast> basArmMastListRuning = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("arm_no", basArm.getArmNo())
+ .eq("sorting_line", basArm.getSortingLineSou())
+ .eq("status", 1)
+ );
+ List<BasArmMast> basArmMastListRuning3 = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("arm_no", basArm.getArmNo())
+ .eq(
+
+ "sorting_line", basArm.getSortingLineSou())
+ .eq("status", 3)
+ );
+ if (basArmMastListRuning.isEmpty() && basArmMastListRuning3.isEmpty()){
+ List<BasArmMast> basArmMastList = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("arm_no", basArm.getArmNo())
+ .eq("sorting_line", basArm.getSortingLineSou())
+ .eq("status", 0)
+ );
+ if (basArmMastList.isEmpty()){
+ continue;
+ }
+ if (basArmMastList.size()>1){
+ armTaskAssignmentCallApiLogSave(staProtocol, "浠诲姟寰呮墽琛屾暟閲忓ぇ浜�1,鏃犳硶鍒嗚鲸寰呮墽琛屼换鍔�", "arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫媶鐮佸灈浠诲姟寮傚父绂佹涓嬪彂锛侊紒锛佷换鍔″緟鎵ц鏁伴噺澶т簬1锛侊紒锛�", false);
+
+// log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫媶鐮佸灈浠诲姟寮傚父绂佹涓嬪彂锛侊紒锛佷换鍔″緟鎵ц鏁伴噺澶т簬1锛侊紒锛�");
+ continue;
+ }
+ BasArmMast basArmMast = basArmMastList.get(0);
+ List<BasArmMast> basArmMastListOrder = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("arm_no", basArm.getArmNo())
+ .eq("sorting_line", basArm.getSortingLineSou())
+ .eq("sku", basArmMast.getSku())
+ .eq("order_no", basArmMast.getOrderNo())
+ .eq("binding_tags", basArmMast.getBindingTags())
+ );
+ if (basArmMastListOrder.size()==1){
+ Thread.sleep(100);
+
+
+ List<BasArmMast> basArmMastListRuningBarCode2 = basArmMastService.selectList(
+ new EntityWrapper<BasArmMast>()
+ .eq("barcode", barcode)
+ );
+ if (!basArmMastListRuningBarCode2.isEmpty()){
+ int binding_tags = basArmMastService.selectCount(
+ new EntityWrapper<BasArmMast>()
+ .eq("status", 2)
+ .eq("binding_tags", basArmMast.getBindingTags())
+ );
+ if (binding_tags<2){
+ armTaskAssignmentCallApiLogSave(staProtocol, "鏉$爜鏁版嵁宸插瓨鍦紒锛侊紒", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮佹暟鎹鍦ㄨ嚜鍔ㄧ粍鎵�===>>" + barcode, false);
+ continue;
+ }
+ }
+ OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getSku());
+
+ if (Cools.isEmpty(orderDetlValueResultUtil)){
+ continue;
+ }
+ Double anfmeSign = basArmMastService.selectBasArmMastSignValue(basArmMast.getOrderNo(), basArmMast.getSku(),basArmMast.getBindingTags());
+ orderDetlValueResultUtil.setAnfme(anfmeSign);
+ //璁㈠崟涓嬪彂
+ try{
+ ArmOrderAssignmentParam armOrderAssignmentParam = new ArmOrderAssignmentParam(basArmMast,orderDetlValueResultUtil);
+// 璁㈠崟涓嬪彂(SKU+璁㈠崟)
+ ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙戯細",ArmConstant.getArmUrl(basArmMast.getArmNo()), ArmConstant.ARM_ADAPTOR, armOrderAssignmentParam);
+ if (result.getCode()==200){
+// basArmMast.setStatus(1);
+// basArmMast.setBarcode(barcode);
+// basArmMastService.updateById(basArmMast);
+ } else {
+ armTaskAssignmentCallApiLogSave(staProtocol, "鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙�", "arm缂栧彿锛�"+basArm.getArmNo()+"璁㈠崟涓嬪彂璁㈠崟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
+
+// log.error("arm缂栧彿锛�"+basArm.getArmNo()+"鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙戯細"+JSON.toJSON(basArmMast)+"===銆嬭鍗曚俊鎭笅鍙戝け璐�");
+ }
+ } catch (Exception e){
+ armTaskAssignmentCallApiLogSave(staProtocol, "鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙�", "arm缂栧彿锛�"+basArm.getArmNo()+"璁㈠崟涓嬪彂璁㈠崟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
+// log.error("arm缂栧彿锛�"+basArm.getArmNo()+"鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙戯細"+JSON.toJSON(basArmMast)+"===銆嬭鍗曚笅鍙戣鍗曚俊鎭笅鍙戝け璐�");
+ continue;
+ }
+ }
+ ArmTaskAssignmentParam armTaskAssignmentParam = new ArmTaskAssignmentParam(basArm.getSortingLine());
+ //璁剧疆宸ヤ綔绌洪棿灏辩华
+ ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栦换鍔′笅鍙戯細閫氱煡宸ヤ綔绌洪棿宸插氨缁�",ArmConstant.getArmUrl(basArmMast.getArmNo()), ArmConstant.ARM_WORKSPACE, armTaskAssignmentParam);
+ if (result.getCode()==200){
+ basArmMast.setStatus(1);
+ basArmMast.setBarcode(barcode);
+ basArmMastService.updateById(basArmMast);
+ } else {
+ armTaskAssignmentCallApiLogSave(staProtocol, "鏈烘鑷傛姄鍙栦换鍔′俊鎭笅鍙戝け璐�", "arm缂栧彿锛�"+basArm.getArmNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
+// log.error("鏈烘鑷傛姄鍙栦换鍔★細"+JSON.toJSON(basArmMast)+"===銆嬩换鍔′俊鎭笅鍙戝け璐�");
+ }
+ }
+ } catch (Exception e){
+ log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫媶鐮佸灈浠诲姟涓嬪彂澶辫触"+e.getMessage());
+ }
+ }
+ }catch (Exception e){
+ log.error("arm浠诲姟涓嬪彂澶辫触"+e.getMessage());
+ }
+ }
+
+ public void armTaskAssignmentCallApiLogSave(StaProtocol staProtocol ,String tableName, String response, Boolean bool) {
+ ApiLog apiLog = apiLogService.selectOne(new EntityWrapper<ApiLog>()
+ .eq("namespace", "鏈烘鑷備换鍔$浉鍏�")
+ .eq("request", "绔欑偣鍙�:" + staProtocol.getSiteId())
+ .eq("response", response)
+ .eq("url", tableName)
+ .eq("client_ip", staProtocol.getBarcode())
+ .eq("result", 0)
+ .orderBy("create_time", false)
+ );
+
+ if (!Cools.isEmpty(apiLog)){
+ long parseLong = Long.parseLong(apiLog.getTimestamp());
+ if (new Date().getTime()-parseLong<5*1000*60){
+ return;
+ }
+ }
+ apiLogService.save("鏈烘鑷備换鍔$浉鍏�", tableName, "null", staProtocol.getBarcode(),
+ "绔欑偣鍙�:" + staProtocol.getSiteId() ,
+ response, bool);
+ }
+
}
--
Gitblit v1.9.1