From 453289eef46cf688fafe2e4488d5e187c58debc5 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 12 八月 2024 13:33:19 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 586 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 447 insertions(+), 139 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 db7b609..46e5cee 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
@@ -21,7 +20,6 @@
import com.zy.common.utils.CollectionUtils;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.RedisUtil;
-import com.zy.common.utils.RgvUtils;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.cache.MessageQueue;
@@ -138,6 +136,47 @@
continue;
} else {
staProtocol = staProtocol.clone();
+ }
+
+ // 灏哄妫�娴嬪紓甯�
+ boolean back = false;
+ String errMsg = "寮傚父锛�";
+ if (staProtocol.isFrontErr()) {
+ errMsg = errMsg+"鍓嶈秴闄愶紱";
+ back = true;
+ }
+ if (staProtocol.isBackErr()) {
+ errMsg = errMsg+"鍚庤秴闄�";
+ back = true;
+ }
+ if (staProtocol.isHighErr()) {
+ errMsg = errMsg+"楂樿秴闄�";
+ back = true;
+ }
+ if (staProtocol.isLeftErr()) {
+ errMsg = errMsg+"宸﹁秴闄�";
+ back = true;
+ }
+ if (staProtocol.isRightErr()) {
+ errMsg = errMsg+"鍙宠秴闄�";
+ back = true;
+ }
+ if (staProtocol.isWeightErr()) {
+ errMsg = errMsg+"瓒呴噸";
+ back = true;
+ }
+ if (staProtocol.isBarcodeErr()) {
+ errMsg = errMsg+"鎵爜澶辫触";
+ back = true;
+ }
+ // 閫�鍥�
+ if (back) {
+ // led 寮傚父鏄剧ず
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+ if (ledThread != null) {
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errMsg));
+ }
+ continue;
}
// 鍏ュ嚭搴撴ā寮忓垽鏂�
@@ -840,6 +879,48 @@
}
}
}
+ /**
+ * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
+ */
+ public synchronized void crnStnToOutStn1() {
+ for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+ // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
+ for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
+ // 鏌ヨ宸ヤ綔妗�
+ WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(crnStn.getStaNo());
+ if (wrkMast == null) {
+ continue;
+ }
+ // 鍒ゆ柇宸ヤ綔妗f潯浠�
+ if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
+ continue;
+ }
+ // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
+ // 绉诲姩涓�
+ continue;
+ }
+ // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+ if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
+ && crnProtocol.statusType == CrnStatusType.WAITING
+ && crnProtocol.forkPosType == CrnForkPosType.HOME) {
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ // 鏇存柊宸ヤ綔妗g姸鎬佷负14
+ wrkMast.setWrkSts(13L);
+ wrkMast.setCrnEndTime(new Date());
+ if (wrkMastMapper.updateById(wrkMast) != 0) {
+ // 澶嶄綅鍫嗗灈鏈�
+ crnThread.setResetFlag(true);
+ } else {
+ log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
+ }
+ }
+ }
+ }
+ }
/**
* 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
@@ -1234,28 +1315,28 @@
continue;
}
- boolean flag = false;
+ boolean flag = true;
// 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
- DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
- StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
- if (staProtocol == null) {
- continue;
- } else {
- staProtocol = staProtocol.clone();
- }
- // 鏌ヨ绔欑偣璇︾粏淇℃伅
- BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
- if (staDetl == null) {
- log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
- continue;
- }
- if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
- && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
- flag = true;
- }
- if (!flag) {
- continue;
- }
+// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+// StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+// if (staProtocol == null) {
+// continue;
+// } else {
+// staProtocol = staProtocol.clone();
+// }
+// // 鏌ヨ绔欑偣璇︾粏淇℃伅
+// BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+// if (staDetl == null) {
+// log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+// continue;
+// }
+// if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+// && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+// flag = true;
+// }
+// if (!flag) {
+// continue;
+// }
// 鑾峰彇搴撲綅淇℃伅
LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
@@ -1316,18 +1397,19 @@
}
}
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ // 鍏ュ簱鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
CrnCommand crnCommand = new CrnCommand();
crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
- crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰
+ //crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓
+ //crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪
+ //crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰
crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺�
crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞�
+ crnCommand.setSourceStaNo(crnStn.getPlatNo().shortValue()); // 婧愬簱浣嶆帓
if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
} else {
@@ -1489,6 +1571,11 @@
public synchronized void locToCrnStn1(CrnSlave slave, CrnProtocol crnProtocol) {
List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep12(slave.getId());
for (WrkMast wrkMast : wrkMasts) {
+ // 鍒ゆ柇鍫嗗灈鏈虹珯鐐规槸鍚﹀彲鐢�
+ if (!crnEnabled(wrkMast)){
+ continue;
+ }
+
if (wrkMast == null) {
continue;
}
@@ -1509,13 +1596,6 @@
log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
continue;
}
- //閫�搴撴ā寮忚烦杩�118銆�119鍑哄簱浠诲姟
- if (wrkMast.getStaNo()==118 || wrkMast.getStaNo()==119){
- RgvOneSign rgvOneSign = rgvOneSignMapper.selectOneSign();
- if (Cools.isEmpty(rgvOneSign) || rgvOneSign.getRgvOneSign()==1){
- continue;
- }
- }
// 鑾峰彇婧愬簱浣嶄俊鎭�
LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) {
@@ -1523,20 +1603,20 @@
continue;
}
// 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
- StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
- if (staProtocol == null) {
- break;
-// continue;
- } else {
- staProtocol = staProtocol.clone();
- }
+ //SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ //StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+// if (staProtocol == null) {
+// break;
+//// continue;
+// } else {
+// staProtocol = staProtocol.clone();
+// }
// // 鍏ュ嚭搴撴ā寮忓垽鏂�
// if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
- if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
- continue;
- }
+// if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
+// continue;
+// }
// 鏌ヨ绔欑偣璇︾粏淇℃伅
BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
@@ -1546,8 +1626,9 @@
// 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 (staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1606,7 +1687,7 @@
// return;
}
- // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+ // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� 鍑哄簱鍛戒护
CrnCommand crnCommand = new CrnCommand();
crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
@@ -1615,9 +1696,10 @@
crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓
crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪
crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺�
- crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒�
- crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
+// crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺�
+// crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒�
+// crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
+ crnCommand.setDestinationStaNo(crnStn.getPlatNo().shortValue());
if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
} else {
@@ -1634,6 +1716,72 @@
}
}
+ }
+
+ /**
+ * 纭鍑哄簱鐮佸ご鏄惁鍙敤
+ * @param wrkMast 宸ヤ綔妗�
+ * @return 鏄惁鍙敤
+ */
+ private boolean crnEnabled(WrkMast wrkMast) {
+
+ String url = "http://192.168.14.249:8008";
+ String path = "/api/Task/DockStatus";
+
+ // 鑾峰彇璇锋眰澶�
+ Map<String,Object> headers = new HashMap<>();
+ headers.put("digi-type","sync ");
+ headers.put("digi-protocol","raw");
+ headers.put("digi-datakey"," XCommon.ImportData");
+
+ // 鏋勯�犺姹備綋
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("staNo", wrkMast.getSourceStaNo());
+ jsonObject.put("workNo", wrkMast.getWrkNo());
+ String body = jsonObject.toJSONString();
+
+ boolean success;
+ String response;
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(url)
+ .setPath(path)
+ .setHeaders(headers)
+ .setJson(body)
+ .build()
+ .doPost();
+ if (!Cools.isEmpty(response)) {
+ JSONObject jsonObject1 = JSONObject.parseObject(response);
+ if ((Integer) jsonObject1.get("code") == 200 && (Integer) jsonObject1.get("data") == 1){
+ success = true;
+ }else {
+ success = false;
+ }
+ } else {
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url + path, body, response);
+ throw new CoolException("涓嬪彂鍑哄簱浠诲姟缁橤WCS(浠庡嚭搴撶爜澶村埌鍑哄簱鍙�)澶辫触");
+ }
+ } catch (Exception e) {
+ success = false;
+ log.error("纭鍑哄簱鐮佸ご鏄惁鍙敤寮傚父锛屽伐浣滃彿锛歿}锛寋}", wrkMast.getWrkNo(),e.getMessage());
+ } finally {
+
+// try {
+// // 淇濆瓨鎺ュ彛鏃ュ織
+// apiLogService.save(
+// "浠庡嚭搴撶爜澶村埌鍑哄簱鍙�",
+// MesConstant.URL + MesConstant.PAKIN_URL,
+// null,
+// "127.0.0.1",
+// jsonObject.toJSONString(),
+// response,
+// success
+// );
+// } catch (Exception e) {
+// log.error("鎺ュ彛鏃ュ織淇濆瓨寮傚父", e);
+// }
+ }
+ return success;
}
/**
@@ -2263,7 +2411,8 @@
&& rgvProtocol.getStatusType1() == RgvStatusType.IDLE
&& rgvProtocol.getStatusType2() == RgvStatusType.IDLE
&& rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
- && (rgvProtocol.getLoaded2()==2 || rgvProtocol.getLoaded2()==3 ) ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
+// && (rgvProtocol.getLoaded2()==2 || rgvProtocol.getLoaded2()==3 ) ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
+ && rgvProtocol.getLoaded2()==3 ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
) {
try {
WrkMast wrkMast1 = wrkMastMapper.selectPakOutStep3(122);
@@ -2276,6 +2425,7 @@
param.setIoType(10);
param.setSourceStaNo(122);
param.setLocType1((short)1);
+ param.setRgvNo(rgvProtocol.getRgvNo());
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
.setPath("/rpc/pakin/empty/loc/v1")
@@ -3241,8 +3391,20 @@
staProtocol = staProtocol.clone();
}
+ StaProtocol staProtocol147 = devpThread.getStation().get(147);
+ if (staProtocol147 == null) {
+ continue;
+ } else {
+ staProtocol147 = staProtocol147.clone();
+ }
+
if (!staProtocol.isLoading()){
log.info("{}绔欑偣鏃犵墿锛屽紓甯革紒",staNo);
+ continue;
+ }
+
+ if (staProtocol147.isLoading()){
+ log.info("{}绔欑偣鏈夌墿锛�",staProtocol147.getSiteId());
continue;
}
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
@@ -3250,6 +3412,9 @@
&& staProtocol.isLoading()
&& !staProtocol.isEmptyMk()
) {
+
+ boolean result3 = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol147));
+
staProtocol.setWorkNo(wrkMast.getWrkNo());
staProtocol.setStaNo(wrkMast.getStaNo());
devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -3257,8 +3422,12 @@
if (!result) {
throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>椹卞姩鐮佸灈浣嶆墭鐩樺墠杩涘け璐ワ紒");
}
+
wrkMast.setSheetNo("5");
wrkMastMapper.updateById(wrkMast);
+
+ boolean result4 = MessageQueue.offer(SlaveType.Devp, 1, new Task(4, staProtocol147));
+
}
}
}catch (Exception e){
@@ -3388,10 +3557,15 @@
continue;
}
WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
- if (!Cools.isEmpty(wrkMast)){
+ if (!Cools.isEmpty(wrkMast) && wrkMastSta.getWrkType()!=5){
Thread.sleep(200);
- DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
continue;
}
@@ -3446,7 +3620,7 @@
continue;
}
WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
- if (!Cools.isEmpty(wrkMast)){
+ if (!Cools.isEmpty(wrkMast) && wrkMastSta.getWrkType()!=5){
Thread.sleep(200);
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
@@ -3527,20 +3701,20 @@
switch (sign){
//鎵ц灏忚溅璐х墿鎼繍浠诲姟
case 1:
- signWork = rgvRunWrkMastFullSta();
+ signWork = rgvRunWrkMastFullSta(rgvSlave);
break;
//鎵ц灏忚溅绌烘澘鎼繍浠诲姟
case 2://鏀�//鎷嗙洏
- signWork = rgvRunWrkMastEmptyStaPut();
+ signWork = rgvRunWrkMastEmptyStaPut(rgvSlave);
break;
case 3://婊℃斁
- signWork = rgvRunWrkMastEmptyStaPutFull();
+ signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave);
break;
case 4://鍙栧彔鐩�
- signWork = rgvRunWrkMastEmptyStaTake();
+ signWork = rgvRunWrkMastEmptyStaTake(rgvSlave);
break;
case 5:////婊″彇
- signWork = rgvRunWrkMastEmptyStaTakeFull();
+ signWork = rgvRunWrkMastEmptyStaTakeFull(rgvSlave);
break;
case 6:////鎻愬崌
// signWork = qwe();
@@ -3548,40 +3722,42 @@
default:
break;
}
- }
- for (int signCount = 1;!signWork && signCount<7;signCount++){
- switch (signCount){
- case 1://鎵ц灏忚溅璐х墿鎼繍浠诲姟
- signWork = rgvRunWrkMastFullSta();
- break;
- case 2://鏀�//鎷嗙洏
- signWork = rgvRunWrkMastEmptyStaPut();
- break;
- case 3://婊℃斁
- signWork = rgvRunWrkMastEmptyStaPutFull();
- break;
- case 4://鍙栧彔鐩�
- signWork = rgvRunWrkMastEmptyStaTake();
- break;
- case 5:////婊″彇
- signWork = rgvRunWrkMastEmptyStaTakeFull();
- break;
- case 6:////鎻愬崌
+ for (int signCount = 1;!signWork && signCount<7;signCount++){
+ switch (signCount){
+ case 1://鎵ц灏忚溅璐х墿鎼繍浠诲姟
+ signWork = rgvRunWrkMastFullSta(rgvSlave);
+ break;
+ case 2://鏀�//鎷嗙洏
+ signWork = rgvRunWrkMastEmptyStaPut(rgvSlave);
+ break;
+ case 3://婊℃斁
+ signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave);
+ break;
+ case 4://鍙栧彔鐩�
+ signWork = rgvRunWrkMastEmptyStaTake(rgvSlave);
+ break;
+ case 5:////婊″彇
+ signWork = rgvRunWrkMastEmptyStaTakeFull(rgvSlave);
+ break;
+ case 6:////鎻愬崌
// signWork = rgvRunWrkMastEmptyStaPut();
- break;
- default:
- break;
+ break;
+ default:
+ break;
+ }
}
+ }else {
+ continue;
}
if (!rgvIoExecuteSign){
rgvIoExecuteSign = signWork;
}
}
- if (!rgvIoExecuteSign){
- if (sign>6){
- rgvRunWrkMastEmptyStaAvoidance();//閬胯
- }
- }
+// if (!rgvIoExecuteSign){
+// if (sign>6){
+//
+// }
+// }
}catch (Exception e){
log.error("RGV灏忚溅浠诲姟涓嬪彂鎶ラ敊"+e);
}
@@ -3590,18 +3766,18 @@
/**
* 鎵ц灏忚溅鎼繍浠诲姟
*/
- public synchronized boolean rgvRunWrkMastFullSta() {
+ public synchronized boolean rgvRunWrkMastFullSta(RgvSlave rgvSlave) {
try{
- for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
if (rgvProtocol == null) {
- continue;
+ return false;
}
BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
if (basRgv == null) {
log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- continue;
+ return false;
}
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
@@ -3615,22 +3791,46 @@
BasRgvMap basRgvMap = basRgvMapMapper.selectById(basRgv.getRgvNo());
if (basRgvMap == null) {
log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
- continue;
+ return false;
}
List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ if (rgvProtocol.getRgvNo()==1){//鍒囨崲杩戣寖鍥�
+ route = routeNear;
+ }
List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
for (WrkMastSta wrkMastSta : wrkMastStaList){
if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=3){//1:婊$増 3锛氬彇鏀�
continue;
}
BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
- if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
+ if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
continue;
}
+ List<Integer> STA_WORK_CU1 = new ArrayList<Integer>() {{
+ add(101);add(102);add(104);add(105);add(107);add(108);add(118);add(119);add(122);
+ }};
+ List<Integer> STA_WORK_CU2 = new ArrayList<Integer>() {{
+ add(110);add(111);add(113);add(114);add(116);add(117);add(120);add(121);add(122);add(123);
+ }};
+ if (basRgv.getRgvNo()==1 && !STA_WORK_CU1.contains(wrkMastSta.getStaStart())){
+ continue;
+ }else if (basRgv.getRgvNo()==2 && !STA_WORK_CU2.contains(wrkMastSta.getStaStart())){
+ continue;
+ }
+
+ if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
+ if (!basDevp.getEmptyMk().equals("Y")){
+ continue;
+ }
+ }
+ Date date = new Date();
+ log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
+ log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta);
if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),rgvProtocol.getRgvNo()==1);
if (signMap){
wrkMastSta.setWrkSts(1);
try{
@@ -3648,7 +3848,7 @@
break;
}
}
- }
+// }
}catch (Exception e){
log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
log.error("3875琛�"+e);
@@ -3658,18 +3858,18 @@
/**
* 鎵ц灏忚溅鎼繍浠诲姟//鎷嗙洏
*/
- public synchronized boolean rgvRunWrkMastEmptyStaPut() {//鎷嗙洏
+ public synchronized boolean rgvRunWrkMastEmptyStaPut(RgvSlave rgvSlave) {//鎷嗙洏
try{
- for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
if (rgvProtocol == null) {
- continue;
+ return false;
}
BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
if (basRgv == null) {
log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- continue;
+ return false;
}
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤//鎷嗙洏
@@ -3683,10 +3883,14 @@
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (basRgvMap == null) {
log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
- continue;
+ return false;
}
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
+ List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
+ if (rgvProtocol.getRgvNo()==2){//鍒囨崲杩戣寖鍥�
+ route = routeNear;
+ }
List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
for (WrkMastSta wrkMastSta : wrkMastStaList){
if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=2){// 2:绌烘澘 || 宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 5锛氭弧鍙� 6锛氭弧鏀�
@@ -3695,15 +3899,23 @@
boolean sign = false;
if ( wrkMastSta.getStaEnd()!=0){//鏀�
BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
- if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
+ if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
continue;
}
+ if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
+ if (!basDevp.getEmptyMk().equals("Y")){
+ continue;
+ }
+ }
+ Date date = new Date();
+ log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
+ log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鎷嗙洏
}else {
continue;
}
if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
+ boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd(),rgvProtocol.getRgvNo()==2);
if (signMap){
wrkMastSta.setWrkSts(2);
try{
@@ -3721,7 +3933,7 @@
break;
}
}
- }
+// }
}catch (Exception e){
log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
log.error("3933琛�"+e);
@@ -3732,18 +3944,18 @@
/**
* 鎵ц灏忚溅鎼繍浠诲姟
*/
- public synchronized boolean rgvRunWrkMastEmptyStaPutFull() {//婊℃斁
+ public synchronized boolean rgvRunWrkMastEmptyStaPutFull(RgvSlave rgvSlave) {//婊℃斁
try{
- for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
if (rgvProtocol == null) {
- continue;
+ return false;
}
BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
if (basRgv == null) {
log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- continue;
+ return false;
}
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
@@ -3757,10 +3969,14 @@
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (basRgvMap == null) {
log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
- continue;
+ return false;
}
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
+ List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
+ if (rgvProtocol.getRgvNo()==2){//鍒囨崲杩戣寖鍥�
+ route = routeNear;
+ }
List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
for (WrkMastSta wrkMastSta : wrkMastStaList){
if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=6){// 2:绌烘澘 || 宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 5锛氭弧鍙� 6锛氭弧鏀� 7:鎻愬崌
@@ -3769,15 +3985,23 @@
boolean sign = false;
if ( wrkMastSta.getStaEnd()!=0){//婊℃斁
BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
- if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
+ if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
continue;
}
+ if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
+ if (!basDevp.getEmptyMk().equals("Y")){
+ continue;
+ }
+ }
+ Date date = new Date();
+ log.info(date+"婊℃斁浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
+ log.info(date+"婊℃斁浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
sign = rgvPutEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta);
}else {
continue;
}
if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
+ boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd(),rgvProtocol.getRgvNo()==2);
if (signMap){
wrkMastSta.setWrkSts(2);
try{
@@ -3795,7 +4019,7 @@
break;
}
}
- }
+// }
}catch (Exception e){
log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
log.error("3933琛�"+e);
@@ -3803,18 +4027,18 @@
return false;
}
- public synchronized boolean rgvRunWrkMastEmptyStaTake() {//鍙犵洏
+ public synchronized boolean rgvRunWrkMastEmptyStaTake(RgvSlave rgvSlave) {//鍙犵洏
try{
- for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
if (rgvProtocol == null) {
- continue;
+ return false;
}
BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
if (basRgv == null) {
log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- continue;
+ return false;
}
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
@@ -3828,9 +4052,13 @@
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (basRgvMap == null) {
log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
- continue;
+ return false;
}
List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
+ if (rgvProtocol.getRgvNo()==2){//鍒囨崲杩戣寖鍥�
+ route = routeNear;
+ }
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
for (WrkMastSta wrkMastSta : wrkMastStaList){
@@ -3843,12 +4071,31 @@
if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){
continue;
}
+ List<Integer> STA_WORK_CU1 = new ArrayList<Integer>() {{
+ add(101);add(102);add(104);add(105);add(107);add(108);add(118);add(119);add(122);
+ }};
+ List<Integer> STA_WORK_CU2 = new ArrayList<Integer>() {{
+ add(110);add(111);add(113);add(114);add(116);add(117);add(120);add(121);add(122);add(123);
+ }};
+ if (basRgv.getRgvNo()==1 && !STA_WORK_CU1.contains(wrkMastSta.getStaStart())){
+ continue;
+ }else if (basRgv.getRgvNo()==2 && !STA_WORK_CU2.contains(wrkMastSta.getStaStart())){
+ continue;
+ }
+ if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
+ if (!basDevp.getEmptyMk().equals("Y")){
+ continue;
+ }
+ }
+ Date date = new Date();
+ log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
+ log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鍙犵洏
}else {
continue;
}
if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute(),rgvProtocol.getRgvNo()==2);
if (signMap){
wrkMastSta.setWrkSts(1);
try{
@@ -3866,7 +4113,7 @@
break;
}
}
- }
+// }
}catch (Exception e){
log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
log.error("3989琛�"+e);
@@ -3874,18 +4121,18 @@
return false;
}
- public synchronized boolean rgvRunWrkMastEmptyStaTakeFull() {//婊″彇
+ public synchronized boolean rgvRunWrkMastEmptyStaTakeFull(RgvSlave rgvSlave) {//婊″彇
try{
- for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
if (rgvProtocol == null) {
- continue;
+ return false;
}
BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
if (basRgv == null) {
log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- continue;
+ return false;
}
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
@@ -3899,11 +4146,22 @@
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (basRgvMap == null) {
log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
- continue;
+ return false;
}
List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
+ if (rgvProtocol.getRgvNo()==2){//鍒囨崲杩戣寖鍥�
+ route = routeNear;
+ }
List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
+ WrkMast wrkMast = wrkMastMapper.selectBy122ManQu(122,110,15L);
+ if (!Cools.isEmpty(wrkMast)){
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(wrkMast.getWrkNo().longValue());
+ if (!Cools.isEmpty(wrkMastSta) && wrkMastSta.getType()==2 && wrkMastSta.getWrkType()==5 ){
+ wrkMastStaList.add(wrkMastSta);
+ }
+ }
for (WrkMastSta wrkMastSta : wrkMastStaList){
if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=5){// 2:绌烘澘 || 宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 5锛氭弧鍙� 6锛氭弧鏀�
continue;
@@ -3914,12 +4172,15 @@
if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){
continue;
}
+ Date date = new Date();
+ log.info(date+"婊″彇浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
+ log.info(date+"婊″彇浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
sign = rgvTakeEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta);
}else {
continue;
}
if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute(),rgvProtocol.getRgvNo()==2);
if (signMap){
wrkMastSta.setWrkSts(1);
try{
@@ -3937,7 +4198,7 @@
break;
}
}
- }
+// }
}catch (Exception e){
log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
log.error("3989琛�"+e);
@@ -3950,10 +4211,18 @@
* */
public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
try{
- Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
- if (integer==0){
+// Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
+// if (integer==0){
+// return;
+// }
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectAllWrkStsCountWrkMastSta(null, 0);
+ if (Cools.isEmpty(wrkMastSta)){
return;
}
+ Integer[] rgvRunSta = RouteUtils.RgvRunSta(wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
+ boolean signRgv = true;
+ boolean signRgv1 = true;
+ boolean signRgv2 = true;
for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
@@ -3975,17 +4244,48 @@
&& rgvProtocol.getStatusType1() == RgvStatusType.IDLE
&& rgvProtocol.getStatusType2() == RgvStatusType.IDLE
) {
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
- continue;
+// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
+// if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),RouteUtils.RouteIndexFarMas(rgvProtocol.getRgvNo(),rgvRunSta[rgvProtocol.getRgvNo()-1]),rgvProtocol.getRgvNo())){
+ if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),rgvRunSta[rgvProtocol.getRgvNo()-1],rgvProtocol.getRgvNo())){
+ if (rgvProtocol.getRgvNo()==1){
+ signRgv1 = false;
+ }else {
+ signRgv2 = false;
+ }
}
if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){
- continue;
+ signRgv = false;
+ break;
} else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){
+ signRgv = false;
+ break;
+ }
+ }else {
+ signRgv = false;
+ break;
+ }
+ }
+ if (signRgv && (signRgv1 || signRgv2)){
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
continue;
}
- rgvAvoidanceXY(rgvProtocol.getRgvNo());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+ && rgvProtocol.getTaskNo1()==0
+ && rgvProtocol.getTaskNo2()==0
+ && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
+ ) {
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ rgvAvoidanceXY(rgvProtocol.getRgvNo(),rgvRunSta);
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ }
}
}
}catch (Exception e){
@@ -4032,10 +4332,10 @@
/*
* 灏忚溅XY绉诲姩 閬胯
* */
- public synchronized boolean rgvAvoidanceXY(Integer rgvId){
- if (rgvId==1){
+ public synchronized boolean rgvAvoidanceXY(Integer rgvId, Integer[] rgvRunSta){
+ if (rgvId==2){
try{
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
+// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
@@ -4043,7 +4343,7 @@
rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐�
//basRgvMap.getLockStartRoute().shortValue()
- rgvCommand.setSourceStaNo1( (short)101);
+ rgvCommand.setSourceStaNo1(rgvRunSta[1].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浠诲姟鍙�
@@ -4058,14 +4358,14 @@
}
}else {
try{
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
+// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
rgvCommand.setTaskNo2((short)32222); // 宸ヤ綅2宸ヤ綔鍙�
rgvCommand.setTaskMode2(RgvTaskModeType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡: 鍥炲師鐐�
- rgvCommand.setSourceStaNo2((short)117);
+ rgvCommand.setSourceStaNo2(rgvRunSta[0].shortValue());
rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭
if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
//step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
@@ -4281,6 +4581,13 @@
/*
* 灏忚溅鍦板浘鏇存柊 鏇存柊閿�
* */
+ public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,boolean sign){
+ if (sign){
+ staStart = RouteUtils.RouteIndexFarMasOtherNearUpMap(basRgvMapCurrent.getRgvNo(),staStart);
+ staEnd = RouteUtils.RouteIndexFarMasOtherNearUpMap(basRgvMapCurrent.getRgvNo(),staEnd);
+ }
+ return rgvMapUpdate(basRgvMapCurrent,staStart,staEnd);
+ }
public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){
// List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
@@ -4297,6 +4604,7 @@
List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
basRgvMapOther.setEndRoute(lockEndRoute);
+ basRgvMapOther.setEndRouteOther(RouteUtils.RouteIndexFarMasOtherNear(rgvNoOther,lockEndRoute));
basRgvMapMapper.updateById(basRgvMapOther);
return true;
}catch (Exception e){
--
Gitblit v1.9.1