From eb26f811410d5afbca2d02253507389e47daaa4b Mon Sep 17 00:00:00 2001
From: lsh <1>
Date: 星期五, 05 一月 2024 12:44:28 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1971 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 1,703 insertions(+), 268 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 12aca3a..f81702f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -8,11 +8,9 @@
import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
-import com.zy.asrs.mapper.BasCrnErrorMapper;
-import com.zy.asrs.mapper.BasRgvErrMapper;
-import com.zy.asrs.mapper.WaitPakinMapper;
-import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
+import com.zy.asrs.utils.RouteUtils;
import com.zy.asrs.utils.Utils;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.model.LocTypeDto;
@@ -22,6 +20,8 @@
import com.zy.common.service.CommonService;
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;
@@ -69,6 +69,8 @@
@Autowired
private WrkDetlService wrkDetlService;
@Autowired
+ private WaitPakinMapper waitPakinMapper;
+ @Autowired
private LocMastService locMastService;
@Autowired
private StaDescService staDescService;
@@ -88,6 +90,14 @@
private BasRgvErrMapper basRgvErrMapper;
@Autowired
private BasRgvErrLogService basRgvErrLogService;
+ @Autowired
+ private BasRgvPathService basRgvPathService;
+ @Autowired
+ private RedisUtil redisUtil;
+ @Autowired
+ private WrkMastStaMapper wrkMastStaMapper;
+ @Autowired
+ private BasRgvMapMapper basRgvMapMapper;
@Value("${wms.url}")
private String wmsUrl;
@@ -187,12 +197,12 @@
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
barcodeThread.setBarcode("");
- staProtocol.setWorkNo(dto.getWorkNo().shortValue());
+ staProtocol.setWorkNo(dto.getWorkNo());
if(Cools.isEmpty(dto.getRgvNo()) || dto.getRgvNo() <= 0) {
- staProtocol.setStaNo(dto.getStaNo().shortValue());
+ staProtocol.setStaNo(dto.getStaNo());
} else {//濡傛灉瀛樺湪RGV缂栧彿锛岃鏄庨渶瑕丷GV鎺ラ┏锛屽厛涓嬪彂浠诲姟鍒癛GV婧愮珯
- staProtocol.setStaNo(dto.getRgvSstaNo().shortValue());
+ staProtocol.setStaNo(dto.getRgvSstaNo());
}
devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -253,8 +263,8 @@
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
- staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
if (result) {
@@ -383,8 +393,8 @@
}
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
- staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
if (!result) {
@@ -438,8 +448,8 @@
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 涓嬪彂绔欑偣淇℃伅
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
- staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo());
if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
continue;
}
@@ -465,57 +475,273 @@
* 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
*/
public synchronized void crnIoExecute() {
- 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;
- }
+ try{
+ 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
- && crnProtocol.getLoaded() == 0
- && crnProtocol.getForkPos() == 0) {
- // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
- if (crnProtocol.getLastIo().equals("I")) {
- if (basCrnp.getInEnable().equals("Y")) {
- this.crnStnToLoc1(crn, crnProtocol); // 鍏ュ簱
- crnProtocol.setLastIo("O");
- } else if (basCrnp.getOutEnable().equals("Y")) {
- this.locToCrnStn1(crn, crnProtocol); // 鍑哄簱
- crnProtocol.setLastIo("I");
+ // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
+ if (crnProtocol.getStatusType() == CrnStatusType.IDLE
+ && crnProtocol.getTaskNo() == 0
+ && crnProtocol.getModeType() == CrnModeType.AUTO
+ && crnProtocol.getLoaded() == 0
+ && crnProtocol.getForkPos() == 0) {
+ // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
+ if (crnProtocol.getLastIo().equals("I")) {
+ if (basCrnp.getInEnable().equals("Y")) {
+ this.crnStnToLoc1(crn, crnProtocol); // 鍏ュ簱
+ crnProtocol.setLastIo("O");
+ } else if (basCrnp.getOutEnable().equals("Y")) {
+ this.locToCrnStn1(crn, crnProtocol); // 鍑哄簱
+ crnProtocol.setLastIo("I");
+ }
+ }
+ // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+ else if (crnProtocol.getLastIo().equals("O")) {
+ if (basCrnp.getOutEnable().equals("Y")) {
+ this.locToCrnStn1(crn, crnProtocol); // 鍑哄簱
+ crnProtocol.setLastIo("I");
+ } else if (basCrnp.getInEnable().equals("Y")) {
+ this.crnStnToLoc1(crn, crnProtocol); // 鍏ュ簱
+ crnProtocol.setLastIo("O");
+ }
}
}
- // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
- else if (crnProtocol.getLastIo().equals("O")) {
- if (basCrnp.getOutEnable().equals("Y")) {
- this.locToCrnStn1(crn, crnProtocol); // 鍑哄簱
- crnProtocol.setLastIo("I");
- } else if (basCrnp.getInEnable().equals("Y")) {
- this.crnStnToLoc1(crn, crnProtocol); // 鍏ュ簱
- crnProtocol.setLastIo("O");
- }
- }
- }
- // 搴撲綅绉昏浆
- this.locToLoc(crn, crnProtocol);
+ // 搴撲綅绉昏浆
+ this.locToLoc(crn, crnProtocol);
// this.crnRebackHp(crnProtocol, crnThread);
+ }
+ }catch (Exception e){
+ log.error("鍫嗗灈鏈哄嚭鍏ュ簱涓嬪彂鎶ラ敊"+e);
+ }
+ }
+
+ /**
+ * 鎼滅储RGV杞︺�傞�氳繃鐩爣绔欐悳绱㈠摢鍙拌溅鍙敤
+ */
+ public synchronized Integer searchRgvNo(Integer staNo) {
+ try{
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ return null;//鐩爣绔欎笉瀛樺湪
+ }
+ //璺緞鍊�
+ int path = basDevp.getLocType3().intValue();
+
+ ArrayList<RgvThread> list = new ArrayList<>();
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ // 鑾峰彇RGV淇℃伅
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgv.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgv.getId());
+ continue;
+ }
+
+ list.add(rgvThread);
+ }
+
+ if (list.size() > 1) {
+ //瓒呰繃涓ゅ彴杞︼紝鎸夌収閰嶇疆鐨勮鍒欒繘琛屽垎閰�
+ for (RgvThread rgvThread : list) {
+ //鑾峰彇杞﹁締閰嶇疆鐨勮矾寰勮鍒�
+ BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(rgvThread.getSlave().getId());
+ if (basRgvPath == null) {
+ continue;
+ }
+ //鐩爣绔欐槸鍚﹀寘鍚綋鍓嶈矾寰勪腑
+ List<Integer> rgvPath = JSON.parseArray(basRgvPath.getPath(), Integer.class);
+ if (rgvPath.contains(path)) {
+ //褰撳墠璺緞涓寘鍚洰鏍囩珯锛屽垯閫夊畾杩欏彴杞�
+ return rgvThread.getSlave().getId();
+ }
+ }
+ }else {
+ //灏忎簬鎴栫瓑浜�1鍙拌溅锛屽垎閰嶅叏璺緞
+ BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(0);//鑾峰彇榛樿璺緞
+ if (basRgvPath == null) {
+ return null;
+ }
+ List<Integer> rgvPath = JSON.parseArray(basRgvPath.getPath(), Integer.class);
+ if (rgvPath.contains(path)) {
+ //褰撳墠璺緞涓寘鍚洰鏍囩珯锛屽垯閫夊畾杩欏彴杞�
+ return list.get(0).getSlave().getId();
+ }
+ }
+
+ return null;
+ }catch (Exception e){
+ log.error("鎼滅储RGV杞︺�傞�氳繃鐩爣绔欐悳绱㈠摢鍙拌溅鍙敤"+e);
+ return null;
+ }
+ }
+
+// /**
+// * 缁戝畾灏忚溅鏂规硶
+// */
+// public synchronized void rgvBindSte() {
+// //鑾峰彇绛夊緟缁戝畾RGV鐨勪换鍔�
+// List<WrkMast> wrkMasts = wrkMastMapper.selectWaitBindRGV();
+// for (WrkMast wrkMast : wrkMasts) {
+// //鐩爣绔�
+// Integer staNo = wrkMast.getStaNo();
+// //婧愮珯
+// Integer sourceStaNo = wrkMast.getSourceStaNo();
+// //閫氳繃鐩爣绔欐悳绱gv鍙�
+// Integer rgvNo=0;
+// if (wrkMast.getCrnNo()==1){
+// rgvNo=1;
+// }else if (wrkMast.getCrnNo()==6){
+// rgvNo=2;
+// }else {
+// rgvNo = this.searchRgvNo(staNo);
+// }
+// if (rgvNo == null || rgvNo==0) {//鏈壘鍒板彲鐢ㄧ殑rgv
+// continue;
+// }
+//
+// wrkMast.setRgvNo(rgvNo);//缁戝畾rgv鍙�
+// wrkMast.setRgvDstaNo(wrkMast.getSourceStaNo());//璁剧疆RGV鍓嶅線宸ヤ綔妗f簮绔欏彇璐�
+// if (wrkMastMapper.updateById(wrkMast)==0){
+// log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+// }
+// }
+// }
+
+ /**
+ * 缁戝畾灏忚溅鏂规硶
+ */
+ public synchronized void rgvBindSte() {
+ try {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ if (devp.getId()==2){
+ continue;
+ }
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ //鍏ュ簱缁戝皬杞�
+ for (DevpSlave.Sta Sta : devp.getInRgvSta()) {
+ StaProtocol staProtocol = devpThread.getStation().get(Sta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() < 9990){
+ List<WrkMast> wrkMasts = wrkMastMapper.selectList(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getWorkNo()).eq("wrk_sts", 2L));
+ if (Cools.isEmpty(wrkMasts) || wrkMasts.size()!=1){
+ continue;
+ }
+ WrkMast wrkMast = wrkMasts.get(0);
+ //鐩爣绔�
+ Integer staNo = wrkMast.getStaNo();
+ //閫氳繃鐩爣绔欐悳绱gv鍙�
+ Integer rgvNo=0;
+ if (wrkMast.getCrnNo()==1){
+ rgvNo=1;
+ }else if (wrkMast.getCrnNo()==6){
+ rgvNo=2;
+ }else {
+ rgvNo = this.searchRgvNo(staNo);
+ }
+ if (rgvNo == null || rgvNo==0) {//鏈壘鍒板彲鐢ㄧ殑rgv
+ continue;
+ }
+ wrkMast.setRgvNo(rgvNo);//缁戝畾rgv鍙�
+ if (wrkMastMapper.updateById(wrkMast)==0){
+ log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+ }
+ }
+ }
+ //鍑哄簱缁戝皬杞�
+ for (DevpSlave.Sta Sta : devp.getOutRgvSta()) {
+ StaProtocol staProtocol = devpThread.getStation().get(Sta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() < 9990){
+ List<WrkMast> wrkMasts = wrkMastMapper.selectList(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getWorkNo()).eq("wrk_sts", 14L));
+ if (Cools.isEmpty(wrkMasts) || wrkMasts.size()!=1){
+ continue;
+ }
+ WrkMast wrkMast = wrkMasts.get(0);
+ //鐩爣绔�
+ Integer staNo = wrkMast.getStaNo();
+ //閫氳繃鐩爣绔欐悳绱gv鍙�
+ Integer rgvNo=0;
+ if (wrkMast.getCrnNo()==1){
+ rgvNo=1;
+ }else if (wrkMast.getCrnNo()==6){
+ rgvNo=2;
+ }else {
+ rgvNo = this.searchRgvNo(staNo);
+ }
+ if (rgvNo == null || rgvNo==0) {//鏈壘鍒板彲鐢ㄧ殑rgv
+ continue;
+ }
+ wrkMast.setRgvNo(rgvNo);//缁戝畾rgv鍙�
+ if (wrkMastMapper.updateById(wrkMast)==0){
+ log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+ }
+ }
+ }
+ }
+ }catch (Exception e){
+ log.error("缁戝畾灏忚溅寮傚父锛歿}", e.getMessage());
+ }
+ }
+
+ /**
+ * 缁戝畾灏忚溅鏂规硶
+ */
+ public synchronized void rgvBindSte2() {
+ try{
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ List<WrkMast> wrkMasts = wrkMastMapper.selectWaitBindRGVRgvNo(rgv.getId());
+ if (!Cools.isEmpty(wrkMasts) && wrkMasts.size()!=0){
+ continue;
+ }
+ List<WrkMast> wrkMasts2 = wrkMastMapper.selectWaitBindRgvNo2(rgv.getId());
+ for (WrkMast wrkMast : wrkMasts2) {
+ if (wrkMastMapper.selectWaitBindRgvNoOneWrkNo(wrkMast.getWrkNo())!=null){
+ continue;
+ }
+ //鐩爣绔�
+ BasDevp basDevp = basDevpService.selectById(wrkMast.getRgvDstaNo());
+ if (Cools.isEmpty(basDevp) || !basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("N") || basDevp.getWrkNo()!=0){
+ continue;
+ }
+ wrkMastMapper.insertRgvMast(wrkMast.getWrkNo());
+ wrkMastMapper.updateRgvMast(wrkMast.getWrkNo());
+ break;
+ }
+ }
+ }catch (Exception e){
+ log.error("灏忚溅鎼繍浠诲姟寮傚父锛歿}", e.getMessage());
}
}
/**
* 鍏ュ嚭搴� ===>> RGV鍏ュ嚭搴撲綔涓氫笅鍙�
*/
- public synchronized void rgvIoExecute() {
+ public synchronized void rgvIoExecuteOld() {
for (RgvSlave rgv : slaveProperties.getRgv()) {
// 鑾峰彇RGV淇℃伅
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
@@ -529,34 +755,441 @@
continue;
}
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�, 骞朵笖鏃犱换鍔°�佹棤鐗╂椂鎵嶇户缁墽琛�
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
- && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
- ) {
- // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
- if (rgvProtocol.getLastIo().equals("I")) {
- if (basRgv.getInEnable().equals("Y")) {
- this.rgvInStn(rgv, rgvProtocol); // 鍏ュ簱
- rgvProtocol.setLastIo("O");
- } else if (basRgv.getOutEnable().equals("Y")) {
- this.rgvOutStn(rgv, rgvProtocol); // 鍑哄簱
- rgvProtocol.setLastIo("I");
+// && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
+// && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
+ ) {
+
+ //鏌ユ壘鏄惁瀛樺湪鍏ュ嚭搴撳伐浣滀腑绛夊緟RGV鎼繍鐨勪换鍔�
+ List<WrkMast> wrkMasts = wrkMastMapper.selectIoRgvNo(rgv.getId());
+ for (WrkMast wrkMast : wrkMasts) {
+ if (wrkMast.getWrkSts() == 2) {//2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓�
+ if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣
+ continue;
+ }
+
+ //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ Integer staNo = wrkMast.getSourceStaNo();
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ continue;//鐩爣绔欎笉瀛樺湪
+ }
+ //璧峰璺緞
+ int startPath = rgvProtocol.getRgvPos().intValue();
+ //鐩爣璺緞鍊�
+ int endPath = basDevp.getLocType3().intValue();
+// boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣
+ rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(3L);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+ } else if (wrkMast.getWrkSts() == 14) {//4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� 14鍑哄簱瀹屾垚
+ if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷�
+ continue;
+ }
+ if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿
+ continue;
+ }
+
+ //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ Integer staNo = wrkMast.getStaNo();
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ continue;//鐩爣绔欎笉瀛樺湪
+ }
+ //璧峰璺緞
+ int startPath = rgvProtocol.getRgvPos().intValue();
+ //鐩爣璺緞鍊�
+ int endPath = basDevp.getLocType3().intValue();
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
+ rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(5L);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+ } else if (wrkMast.getWrkSts() == 23) {//23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓�
+ if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣
+ continue;
+ }
+
+ //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ Integer staNo = wrkMast.getSourceStaNo();
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ continue;//鐩爣绔欎笉瀛樺湪
+ }
+ //璧峰璺緞
+ int startPath = rgvProtocol.getRgvPos().intValue();
+ //鐩爣璺緞鍊�
+ int endPath = basDevp.getLocType3().intValue();
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣
+ rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(24L);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+ } else if (wrkMast.getWrkSts() == 25) {//25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓�
+ if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷�
+ continue;
+ }
+ if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿
+ continue;
+ }
+
+ //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ Integer staNo = wrkMast.getStaNo();
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ continue;//鐩爣绔欎笉瀛樺湪
+ }
+ //璧峰璺緞
+ int startPath = rgvProtocol.getRgvPos().intValue();
+ //鐩爣璺緞鍊�
+ int endPath = basDevp.getLocType3().intValue();
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
+ rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(26L);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
}
}
- // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
- else if (rgvProtocol.getLastIo().equals("O")) {
- if (basRgv.getOutEnable().equals("Y")) {
- this.rgvOutStn(rgv, rgvProtocol); // 鍑哄簱
- rgvProtocol.setLastIo("I");
- } else if (basRgv.getInEnable().equals("Y")) {
- this.rgvInStn(rgv, rgvProtocol); // 鍏ュ簱
- rgvProtocol.setLastIo("O");
- }
- }
+
}
}
+ }
+
+ /**
+ * 鍏ュ嚭搴� ===>> RGV鍏ュ嚭搴撲綔涓氫笅鍙�
+ */
+ public synchronized void rgvIoExecute() {
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ RgvSlave rgvSlave=null;
+ if (rgv.getId()==1){
+ rgvSlave = slaveProperties.getRgv().get(1);
+ }else {
+ rgvSlave = slaveProperties.getRgv().get(0);
+ }
+
+ // 鑾峰彇RGV淇℃伅
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+
+ RgvThread rgvThreadSlave = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ RgvProtocol rgvProtocolSlave = rgvThreadSlave.getRgvProtocol();
+ BasRgv basRgvSlave = null;
+ if (rgvProtocolSlave == null) {
+ rgvSlave=null;
+ }else {
+ basRgvSlave = basRgvService.selectById(rgv.getId());
+ if (basRgvSlave == null) {
+ rgvSlave=null;
+ }
+ }
+
+ BasRgv basRgv = basRgvService.selectById(rgv.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgv.getId());
+ continue;
+ }
+
+ boolean signSlave=false;//姝ゅ鍒ゆ柇RgvSlave鏄惁宸茬粡瑙勯伩
+ boolean signSlaveState=false;//姝ゅ鍒ゆ柇RgvSlave鏄惁绌洪棽
+ Integer staSlave = 0;//姝ゅ璁板綍RgvSlave褰撳墠浣嶇疆
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+// && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
+// && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
+ ) {
+
+ //鏌ユ壘鏄惁瀛樺湪鍏ュ嚭搴撳伐浣滀腑绛夊緟RGV鎼繍鐨勪换鍔�
+ List<WrkMast> wrkMasts = wrkMastMapper.selectIoRgvNo(rgv.getId());
+ for (WrkMast wrkMast : wrkMasts) {
+ if (wrkMast.getWrkSts() == 2) {//2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓�
+ if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣
+ continue;
+ }
+
+ //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ Integer staNo = wrkMast.getSourceStaNo();
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ continue;//鐩爣绔欎笉瀛樺湪
+ }
+ //璧峰璺緞
+ int startPath = rgvProtocol.getRgvPos().intValue();
+ //鐩爣璺緞鍊�
+ int endPath = basDevp.getLocType3().intValue();
+// boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣
+ rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(3L);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+ } else if (wrkMast.getWrkSts() == 14) {//4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� 14鍑哄簱瀹屾垚
+ if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷�
+ continue;
+ }
+ if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿
+ continue;
+ }
+
+ //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ Integer staNo = wrkMast.getStaNo();
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ continue;//鐩爣绔欎笉瀛樺湪
+ }
+ //璧峰璺緞
+ int startPath = rgvProtocol.getRgvPos().intValue();
+ //鐩爣璺緞鍊�
+ int endPath = basDevp.getLocType3().intValue();
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
+ rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(5L);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+ } else if (wrkMast.getWrkSts() == 23) {//23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓�
+ if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣
+ continue;
+ }
+
+ //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ Integer staNo = wrkMast.getSourceStaNo();
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ continue;//鐩爣绔欎笉瀛樺湪
+ }
+ //璧峰璺緞
+ int startPath = rgvProtocol.getRgvPos().intValue();
+ //鐩爣璺緞鍊�
+ int endPath = basDevp.getLocType3().intValue();
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣
+ rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(24L);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+ } else if (wrkMast.getWrkSts() == 25) {//25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓�
+ if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷�
+ continue;
+ }
+ if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿
+ continue;
+ }
+
+ //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ Integer staNo = wrkMast.getStaNo();
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ continue;//鐩爣绔欎笉瀛樺湪
+ }
+ //璧峰璺緞
+ int startPath = rgvProtocol.getRgvPos().intValue();
+ //鐩爣璺緞鍊�
+ int endPath = basDevp.getLocType3().intValue();
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
+ rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(26L);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+ }
+ }
+
+ }
+ }
+ }
+
+ private boolean rgvIoExecuteWrk2To3() {
+ return false;
}
/**
@@ -1243,6 +1876,9 @@
* 鍏ュ簱 ===>> RGV鍏ュ簱绔欏埌绔�
*/
public synchronized void rgvInStn(RgvSlave slave, RgvProtocol rgvProtocol) {
+ WrkMast wrkMast = wrkMastMapper.selectRgvInSteNo(slave.getId());
+
+
//鏌ユ壘宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級,涓擱GV鍏ュ簱鎺ラ┏绔欑鍚堢殑鐨勫叆搴撳伐浣滄。锛屾彁鍙栧嚭鏈�澶�2绗�
List<WrkMast> wrkMastTask = getRgvInTask(slave);
if(wrkMastTask.size() <= 0){
@@ -1506,6 +2142,7 @@
* 鏍规嵁RGV瀹屾垚淇″彿锛屾墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屽拰RGV鐨勪换鍔′笅鍙�
*/
public synchronized void rgvFinished() {
+ Date now = new Date();
for (RgvSlave rgv : slaveProperties.getRgv()) {
// 鑾峰彇RGV淇℃伅
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
@@ -1513,133 +2150,176 @@
if (rgvProtocol == null) {
continue;
}
- // 宸ヤ綅1鐘舵�侊細鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖 浠诲姟瀹屾垚浣� = 1
- if (rgvProtocol.statusType1 == RgvStatusType.FETCHWAITING && rgvProtocol.getTaskNo1() != 0) {
- //宸ヤ綅1鍙栬揣瀹屾垚鍚庯紝宸ヤ綅2鏄棤璐х┖闂茬姸鎬佹椂锛屽噯澶囩粰宸ヤ綅2鍙戜换鍔★紝纭鏄惁鏈夊緟鎵цRGV浠诲姟
- if (rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() == 0
- && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() == 0
- && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
- ) {
- WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
- if (wrkMast1 == null) {
- log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1());
- continue;
- }
- List<WrkMast> wrkMastTask = new ArrayList<>();
- List<WrkMast> list = new ArrayList<>();
- Integer type = 0;//1鍏ュ簱锛�2鍑哄簱
- if(wrkMast1.getWrkSts()==6L){
- wrkMastTask = getRgvInTask(rgv);
- list = wrkMastMapper.selectRgvInWorking(rgv.getId());
- type = 1;
- } else if(wrkMast1.getWrkSts()==16L){
- wrkMastTask = getRgvOutTask(rgv);
- list = wrkMastMapper.selectRgvOutWorking(rgv.getId());
- type = 2;
- }
- if(wrkMastTask.size() > 0){//鏈夌户缁墽琛屼换鍔★紝涓嬪彂鍙栬揣浠诲姟缁欏伐浣�2
- // 宸茬粡瀛樺湪RGV鎵ц浠诲姟鏃讹紝鍒欒繃婊�
- if (list.size() > 1) {
- continue;
- }
- WrkMast wrkMast2 = wrkMastTask.get(0);
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
- rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
- rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栬揣
- rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue()); //宸ヤ綅2婧愮珯鐐�
- rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue()); //宸ヤ綅2鐩爣绔欑偣
- rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭
- if (!MessageQueue.offer(SlaveType.Crn, wrkMast2.getRgvNo(), new Task(5, rgvCommand))) {
- //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
- } else {
- // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
- Date now = new Date();
- wrkMast2.setWrkSts(type==1 ? 6L : 16L);
- wrkMast2.setCrnStrTime(now);
- wrkMast2.setModiTime(now);
- if (wrkMastMapper.updateById(wrkMast2) == 0) {
- log.error("宸ヤ綅2淇敼宸ヤ綔妗g姸鎬� 2/14.璁惧涓婅蛋 => 6/16.RGV鍏ュ簱鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
- }
- }
- } else {//娌℃湁缁х画鎵ц浠诲姟锛屼笅鍙戞斁璐т换鍔$粰宸ヤ綅1
- if(type == 1 && wrkMast1.getWrkSts() != 6L){//RGV鍏ュ簱鍙栬揣涓�
- continue;
- }
- if(type == 2 && wrkMast1.getWrkSts() != 16L){//RGV鍑哄簱鍙栬揣涓�
- continue;
- }
-
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
- rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue()); //宸ヤ綅1婧愮珯鐐�
- rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
- rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭
- if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(4, rgvCommand))) {
- //step=2,宸ヤ綅1銆�2浠诲姟纭锛� step=4锛屽伐浣�1纭锛� step=5锛屽伐浣�2浠诲姟纭
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
- } else {
- // 淇敼宸ヤ綔妗g姸鎬� 6.RGV鍏ュ簱鍙栬揣涓� => 7.RGV鍏ュ簱鏀捐揣涓�
- Date now = new Date();
- wrkMast1.setWrkSts(type==1 ? 7L : 17L);
- wrkMast1.setCrnEndTime(now);
- wrkMast1.setModiTime(now);
- if (wrkMastMapper.updateById(wrkMast1) == 0) {
- log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
- }
- log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
- }
- }
- } else if (rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() > 0
- && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() > 0
- && rgvProtocol.statusType2 == RgvStatusType.FETCHWAITING){
- // 宸ヤ綅2鐘舵�侊細涔熸槸鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖 浠诲姟瀹屾垚浣� = 1, 宸ヤ綅1銆�2鍚屾椂涓嬪彂鏀捐揣浠诲姟
- WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
- WrkMast wrkMast2 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo2().intValue());
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
- rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue()); //宸ヤ綅1婧愮珯鐐�
- rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
- rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
- rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣
- rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue()); //宸ヤ綅2婧愮珯鐐�
- rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue()); //宸ヤ綅2鐩爣绔欑偣
- rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭
- if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(2, rgvCommand))) {
- //step=2,宸ヤ綅1銆�2浠诲姟纭锛� step=4锛屽伐浣�1纭锛� step=5锛屽伐浣�2浠诲姟纭
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
- } else {
- // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
- Date now = new Date();
- wrkMast1.setWrkSts(wrkMast1.getWrkSts()==6L ? 7L : 17L);
- wrkMast1.setCrnStrTime(now);
- wrkMast1.setModiTime(now);
- if (wrkMastMapper.updateById(wrkMast1) == 0) {
- log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
- }
-
- wrkMast2.setWrkSts(wrkMast2.getWrkSts()==6L ? 7L : 17L);
- wrkMast2.setCrnStrTime(now);
- wrkMast2.setModiTime(now);
- if (wrkMastMapper.updateById(wrkMast2) == 0) {
- log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
- }
- }
+ //鍒ゆ柇RGV鏄惁绌洪棽锛屽伐浣�1鏄惁绌洪棽锛屽伐浣�1鏄惁鏈夌墿锛屾槸鍚︿负鐢佃剳妯″紡锛屽伐浣�1鏄惁鏈夊伐浣滃彿
+ if (rgvProtocol.statusType1 == RgvStatusType.FETCHWAITING
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getTaskNo1() != 0
+ && rgvProtocol.getStatus() != 0
+ && rgvProtocol.getStatus1() != 0
+ ) {
+ WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+ if (wrkMast1 == null) {
+ log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1());
+ continue;
}
+
+ if (wrkMast1.getWrkSts() == 3) {//3.RGV鍙栬揣涓� => 4.RGV鍙栬揣瀹屾垚
+ wrkMast1.setWrkSts(4L);
+ }else if(wrkMast1.getWrkSts() == 5){//5.RGV鏀捐揣涓� => 6.RGV鏀捐揣瀹屾垚
+ rgvProtocol.setTaskNo1((short) 0);//鍏ュ簱浠诲姟瀹屾垚锛屾竻绌轰换鍔″彿
+ wrkMast1.setWrkSts(6L);
+ } else if (wrkMast1.getWrkSts() == 24) {//24.RGV鍙栬揣涓� => 25.RGV鍙栬揣瀹屾垚
+ wrkMast1.setWrkSts(25L);//
+ } else if (wrkMast1.getWrkSts() == 26) {//26.RGV鏀捐揣涓� => 27.RGV鏀捐揣瀹屾垚
+ rgvProtocol.setTaskNo1((short) 0);//鍑哄簱浠诲姟瀹屾垚锛屾竻绌轰换鍔″彿
+ wrkMast1.setWrkSts(27L);//27.RGV鏀捐揣瀹屾垚
+ }
+
+ //瑙i攣璺緞
+ RgvUtils.unLockPath(wrkMast1.getRgvNo());
+
+ wrkMast1.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast1) == 0) {
+ log.error("宸ヤ綅1淇敼宸ヤ綔妗g姸鎬佸け璐ワ紒锛侊紝宸ヤ綔鍙�={}", wrkMast1.getWrkNo());
+ }
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 1); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.NONE); // 宸ヤ綅1浠诲姟妯″紡: 鏃�
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2浠诲姟纭锛� step=4锛屽伐浣�1纭锛� step=5锛屽伐浣�2浠诲姟纭
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+ }
+
+// //宸ヤ綅1鍙栬揣瀹屾垚鍚庯紝宸ヤ綅2鏄棤璐х┖闂茬姸鎬佹椂锛屽噯澶囩粰宸ヤ綅2鍙戜换鍔★紝纭鏄惁鏈夊緟鎵цRGV浠诲姟
+// if (rgvProtocol.getModeType() == RgvModeType.AUTO
+// && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() == 0
+// && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() == 0
+// && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
+// ) {
+// WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+// if (wrkMast1 == null) {
+// log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1());
+// continue;
+// }
+// List<WrkMast> wrkMastTask = new ArrayList<>();
+// List<WrkMast> list = new ArrayList<>();
+// Integer type = 0;//1鍏ュ簱锛�2鍑哄簱
+// if(wrkMast1.getWrkSts()==6L){
+// wrkMastTask = getRgvInTask(rgv);
+// list = wrkMastMapper.selectRgvInWorking(rgv.getId());
+// type = 1;
+// } else if(wrkMast1.getWrkSts()==16L){
+// wrkMastTask = getRgvOutTask(rgv);
+// list = wrkMastMapper.selectRgvOutWorking(rgv.getId());
+// type = 2;
+// }
+// if(wrkMastTask.size() > 0){//鏈夌户缁墽琛屼换鍔★紝涓嬪彂鍙栬揣浠诲姟缁欏伐浣�2
+// // 宸茬粡瀛樺湪RGV鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+// if (list.size() > 1) {
+// continue;
+// }
+// WrkMast wrkMast2 = wrkMastTask.get(0);
+// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+// RgvCommand rgvCommand = new RgvCommand();
+// rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
+// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+// rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
+// rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栬揣
+// rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue()); //宸ヤ綅2婧愮珯鐐�
+// rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue()); //宸ヤ綅2鐩爣绔欑偣
+// rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭
+// if (!MessageQueue.offer(SlaveType.Crn, wrkMast2.getRgvNo(), new Task(5, rgvCommand))) {
+// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+// } else {
+// // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
+// Date now = new Date();
+// wrkMast2.setWrkSts(type==1 ? 6L : 16L);
+// wrkMast2.setCrnStrTime(now);
+// wrkMast2.setModiTime(now);
+// if (wrkMastMapper.updateById(wrkMast2) == 0) {
+// log.error("宸ヤ綅2淇敼宸ヤ綔妗g姸鎬� 2/14.璁惧涓婅蛋 => 6/16.RGV鍏ュ簱鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
+// }
+// }
+// } else {//娌℃湁缁х画鎵ц浠诲姟锛屼笅鍙戞斁璐т换鍔$粰宸ヤ綅1
+// if(type == 1 && wrkMast1.getWrkSts() != 6L){//RGV鍏ュ簱鍙栬揣涓�
+// continue;
+// }
+// if(type == 2 && wrkMast1.getWrkSts() != 16L){//RGV鍑哄簱鍙栬揣涓�
+// continue;
+// }
+//
+// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+// RgvCommand rgvCommand = new RgvCommand();
+// rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
+// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+// rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+// rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
+// rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue()); //宸ヤ綅1婧愮珯鐐�
+// rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+// rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭
+// if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(4, rgvCommand))) {
+// //step=2,宸ヤ綅1銆�2浠诲姟纭锛� step=4锛屽伐浣�1纭锛� step=5锛屽伐浣�2浠诲姟纭
+// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+// } else {
+// // 淇敼宸ヤ綔妗g姸鎬� 6.RGV鍏ュ簱鍙栬揣涓� => 7.RGV鍏ュ簱鏀捐揣涓�
+// Date now = new Date();
+// wrkMast1.setWrkSts(type==1 ? 7L : 17L);
+// wrkMast1.setCrnEndTime(now);
+// wrkMast1.setModiTime(now);
+// if (wrkMastMapper.updateById(wrkMast1) == 0) {
+// log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
+// }
+// log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+// }
+// }
+// } else if (rgvProtocol.getModeType() == RgvModeType.AUTO
+// && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() > 0
+// && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() > 0
+// && rgvProtocol.statusType2 == RgvStatusType.FETCHWAITING){
+// // 宸ヤ綅2鐘舵�侊細涔熸槸鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖 浠诲姟瀹屾垚浣� = 1, 宸ヤ綅1銆�2鍚屾椂涓嬪彂鏀捐揣浠诲姟
+// WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+// WrkMast wrkMast2 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo2().intValue());
+// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+// RgvCommand rgvCommand = new RgvCommand();
+// rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
+// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+// rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+// rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
+// rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue()); //宸ヤ綅1婧愮珯鐐�
+// rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+// rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
+// rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣
+// rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue()); //宸ヤ綅2婧愮珯鐐�
+// rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue()); //宸ヤ綅2鐩爣绔欑偣
+// rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭
+// if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(2, rgvCommand))) {
+// //step=2,宸ヤ綅1銆�2浠诲姟纭锛� step=4锛屽伐浣�1纭锛� step=5锛屽伐浣�2浠诲姟纭
+// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+// } else {
+// // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
+// Date now = new Date();
+// wrkMast1.setWrkSts(wrkMast1.getWrkSts()==6L ? 7L : 17L);
+// wrkMast1.setCrnStrTime(now);
+// wrkMast1.setModiTime(now);
+// if (wrkMastMapper.updateById(wrkMast1) == 0) {
+// log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
+// }
+//
+// wrkMast2.setWrkSts(wrkMast2.getWrkSts()==6L ? 7L : 17L);
+// wrkMast2.setCrnStrTime(now);
+// wrkMast2.setModiTime(now);
+// if (wrkMastMapper.updateById(wrkMast2) == 0) {
+// log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
+// }
+// }
+// }
}
}
@@ -1679,8 +2359,8 @@
&& rgvProtocol.statusType1 == RgvStatusType.WAITING) {
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 涓嬪彂绔欑偣淇℃伅
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
- staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo());
if (!MessageQueue.offer(SlaveType.Devp, rgvStn.getDevpPlcId(), new Task(2, staProtocol))) {
continue;
}
@@ -1700,8 +2380,8 @@
&& rgvProtocol.statusType2 == RgvStatusType.WAITING) {
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 涓嬪彂绔欑偣淇℃伅
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
- staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo());
if (!MessageQueue.offer(SlaveType.Devp, rgvStn.getDevpPlcId(), new Task(2, staProtocol))) {
continue;
}
@@ -1755,8 +2435,8 @@
&& rgvProtocol.statusType1 == RgvStatusType.WAITING) {
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 涓嬪彂绔欑偣淇℃伅
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
- staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo());
if (!MessageQueue.offer(SlaveType.Devp, rgvStn.getDevpPlcId(), new Task(2, staProtocol))) {
continue;
}
@@ -1776,8 +2456,8 @@
&& rgvProtocol.statusType2 == RgvStatusType.WAITING) {
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 涓嬪彂绔欑偣淇℃伅
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
- staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo());
if (!MessageQueue.offer(SlaveType.Devp, rgvStn.getDevpPlcId(), new Task(2, staProtocol))) {
continue;
}
@@ -2200,8 +2880,8 @@
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
- staProtocol.setWorkNo(dto.getWorkNo().shortValue());
- staProtocol.setStaNo(dto.getStaNo().shortValue());
+ staProtocol.setWorkNo(dto.getWorkNo());
+ staProtocol.setStaNo(dto.getStaNo());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
if (!result) {
@@ -2214,64 +2894,7 @@
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
-
-
-// // 妫�绱㈠簱浣�
-// LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-// StartupDto startupDto = commonService.getLocNo(1, 10, emptyInSta.getStaNo(), null, locTypeDto, 0);
-// // 宸ヤ綔鍙�
-// int workNo = startupDto.getWorkNo();
-//
-// try {
-// // 鎻掑叆宸ヤ綔涓绘。
-// WrkMast wrkMast = new WrkMast();
-// wrkMast.setWrkNo(workNo);
-// wrkMast.setIoTime(new Date());
-// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋
-// wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
-// wrkMast.setIoPri(10D); // 浼樺厛绾э細10
-// wrkMast.setCrnNo(startupDto.getCrnNo());
-// wrkMast.setSourceStaNo(startupDto.getSourceStaNo());
-// wrkMast.setStaNo(startupDto.getStaNo());
-// wrkMast.setLocNo(startupDto.getLocNo());
-// wrkMast.setFullPlt("N"); // 婊℃澘
-// wrkMast.setPicking("N"); // 鎷f枡
-// wrkMast.setExitMk("N"); // 閫�鍑�
-// wrkMast.setEmptyMk("Y"); // 绌烘澘
-// wrkMast.setLinkMis("N");
-//// wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
-// // 鎿嶄綔浜哄憳鏁版嵁
-// wrkMast.setAppeTime(new Date());
-// wrkMast.setModiTime(new Date());
-// Integer insert = wrkMastMapper.insert(wrkMast);
-// if (insert == 0) {
-// throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-// }
-// // 鏇存柊鐩爣搴撲綅鐘舵��
-// LocMast locMast = locMastService.selectById(startupDto.getLocNo());
-// locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
-// locMast.setModiTime(new Date());
-// if (!locMastService.updateById(locMast)){
-// throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
-// }
-// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//
-// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-// staProtocol.setWorkNo((short) workNo);
-// staProtocol.setStaNo(startupDto.getStaNo().shortValue());
-// devpThread.setPakMk(staProtocol.getSiteId(), false);
-// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-// if (!result) {
-// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-// }
-// } catch (Exception e) {
-// e.printStackTrace();
-// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-// }
-
}
-
-
}
}
}
@@ -2630,6 +3253,27 @@
}
/**
+ * 鍒濆鍖朢GV鍦板浘
+ */
+ public synchronized void initRgvMap() {
+ Object data = redisUtil.get("rgv_map");
+ if (data == null) {
+ //閲嶆柊鑾峰彇鍏ㄨ矾寰勫湴鍥�
+ BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(0);//鑾峰彇榛樿璺緞
+ if (basRgvPath != null) {
+ ArrayList<RgvNode> rgvNodes = new ArrayList<>();
+ List<Integer> rgvPath = JSON.parseArray(basRgvPath.getPath(), Integer.class);
+ for (Integer integer : rgvPath) {
+ RgvNode rgvNode = new RgvNode(integer);
+ rgvNodes.add(rgvNode);
+ }
+ //灏嗘暟鎹簱鍦板浘鏁版嵁瀛樺叆redis
+ redisUtil.set("rgv_map", JSON.toJSONString(rgvNodes));
+ }
+ }
+ }
+
+ /**
* 鍫嗗灈鏈烘紨绀� ===>> 搴撲綅绉昏浆
*/
public synchronized void crnDemoOfLocMove1() {
@@ -2933,4 +3577,795 @@
}
}
}
+
+// /**
+// * 鍏朵粬 ===>> 鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩�
+// */
+// public synchronized void dischargingMachineOutputTray() {
+// try {
+// List<WrkMast> wrkMasts = wrkMastMapper.selectDischargingMachineOutputTray();
+// if (Cools.isEmpty(wrkMasts) || wrkMasts.size()>3){
+// return;
+// }
+//
+// // 鑾峰彇鍏ュ簱绔欎俊鎭�
+// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+// StaProtocol staProtocol = devpThread.getStation().get(213);
+// if (staProtocol == null) {
+// log.error("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐规煡璇㈠け璐�");
+// return;
+// } else {
+// staProtocol = staProtocol.clone();
+// }
+//
+// if (!staProtocol.isLoading()){
+// log.info("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐规棤鐗╋紝姝e湪鑷姩璋冨嚭绌烘澘锛�");
+// int i = wrkMastMapper.selectConfigCount10468N();
+// if (i==1){
+// wrkMastMapper.updateConfig10468Y();
+// }
+// return;
+// }else {
+// int i = wrkMastMapper.selectConfigCount10468N();
+// if (i==0){
+// return;
+// }
+// }
+// StaProtocol staProtocol214 = devpThread.getStation().get(214);
+// // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+// if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk() && staProtocol214.getWorkNo()==0) {
+// staProtocol.setWorkNo((short)9999);
+// staProtocol.setStaNo((short)214);
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
+// if (!result) {
+// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紒");
+// }
+// log.info("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂鎴愬姛锛氬伐浣滃彿9999銆佺洰鏍囩珯214锛�");
+// }else {
+// log.error("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐圭姸鎬佷笉绗﹀悎锛�");
+// }
+// }catch (Exception e){
+// e.printStackTrace();
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+// }
+// }
+
+// /**
+// * 鍏朵粬 ===>> 鎷嗙洏鏈哄绌烘澘鎵爜锛岄┍鍔ㄦ墭鐩樺悜鐮佸灈浣嶏紝涓嶅叆搴�
+// */
+// public synchronized void scanBarcodeEmptyBoard() {
+// try {
+//
+// }catch (Exception e){
+// e.printStackTrace();
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+// }
+// }
+
+ /**
+ * 鍏朵粬 ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝ワ紙鍏ュ簱鍓嶆壂鐮侊級
+ */
+ public synchronized void stackingCompletionDriveTray() {
+ try {
+ int[] staNos=new int[]{216,220,123};//(3涓叆搴撶珯鐐癸紝1妤�1涓��璐х爜鍨涚珯锛�2妤间袱涓叆搴撶爜鍨涚珯)
+ for (int staNo : staNos){
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp.getWrkNo()!=9992 || Cools.isEmpty(basDevp.getBarcode())){
+ continue;
+ }
+ Integer zpallet = waitPakinMapper.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", basDevp.getBarcode()).eq("status","N"));
+ if (zpallet<=0){
+ continue;
+ }
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ // 鍏ュ嚭搴撴ā寮忓垽鏂�
+// if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
+// if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
+// continue;
+// }
+
+ if (!staProtocol.isLoading()){
+ log.info("{}绔欑偣鏃犵墿锛屾鍦ㄨ嚜鍔ㄨ皟鍑虹┖鏉匡紒",staNo);
+ continue;
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (staProtocol.isAutoing()
+ && staProtocol.isLoading()
+ && staProtocol.isInEnable()
+ && !staProtocol.isEmptyMk()
+ && staProtocol.getWorkNo() == 9992
+ ) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
+
+ staProtocol.setWorkNo(9999);
+ staProtocol.setStaNo(staNo + 1);
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
+ if (!result) {
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>椹卞姩鐮佸灈浣嶆墭鐩樺墠杩涘け璐ワ紒");
+ }
+
+ }
+ }
+ }catch (Exception e){
+// e.printStackTrace();
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ log.error("鍏朵粬 ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝ワ紙鍏ュ簱鍓嶆壂鐮侊級"+e);
+ }
+ }
+ /**
+ * 鍏朵粬 ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�
+ */
+ public synchronized void stackingCompletionDriveTray2() {
+ try {
+ int[] staNos=new int[]{133,135};//(2涓叆搴撶珯鐐癸紝1妤�2涓嚭搴撶爜鍨涚珯,鏍规嵁鐜板満淇敼)
+ for (int staNo : staNos){
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp.getWrkNo()<9990){
+ continue;
+ }
+ WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne202(staNo);
+ if (Cools.isEmpty(wrkMast)){
+ continue;
+ }
+ // 鑾峰彇绔欑偣淇℃伅
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ // 鍏ュ嚭搴撴ā寮忓垽鏂�
+// if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
+// if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
+// continue;
+// }
+
+ if (!staProtocol.isLoading()){
+ log.info("{}绔欑偣鏃犵墿锛屽紓甯革紒",staNo);
+ continue;
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (staProtocol.isAutoing()
+ && staProtocol.isLoading()
+ && staProtocol.getWorkNo() >= 9990
+ ) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
+
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
+ if (!result) {
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>椹卞姩鐮佸灈浣嶆墭鐩樺墠杩涘け璐ワ紒");
+ }
+ wrkMast.setWrkSts(52L);
+ wrkMastMapper.updateById(wrkMast);
+
+ }
+ }
+ }catch (Exception e){
+// e.printStackTrace();
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ log.error("鍏朵粬 ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�"+e);
+ }
+ }
+ /**
+ * 鍏朵粬 ===>> 璐存爣瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�
+ */
+ public synchronized void stackingCompletionDriveTray3() {
+ try {
+ int[] staNos=new int[]{144};//(1妤�1涓创鏍囦綅,鏍规嵁鐜板満淇敼)
+ for (int staNo : staNos){
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp.getWrkNo()<9990){
+ continue;
+ }
+ WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne202(staNo);
+ if (Cools.isEmpty(wrkMast)){
+ continue;
+ }
+ // 鑾峰彇绔欑偣淇℃伅
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ // 鍏ュ嚭搴撴ā寮忓垽鏂�
+// if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
+// if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
+// continue;
+// }
+
+ if (!staProtocol.isLoading()){
+ log.info("{}绔欑偣鏃犵墿锛屽紓甯革紒",staNo);
+ continue;
+ }
+ if (!staProtocol.getWorkNo().equals(wrkMast.getWrkNo().shortValue())){
+ log.info("绔欑偣宸ヤ綔鍙�={} 涓庤创鏍囧伐浣滃彿={} 涓嶄竴鑷达紝寮傚父锛�",staProtocol.getWorkNo(),wrkMast.getWrkNo().shortValue());
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (staProtocol.isAutoing()
+ && staProtocol.isLoading()
+ ) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
+
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
+ if (!result) {
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>椹卞姩鐮佸灈浣嶆墭鐩樺墠杩涘け璐ワ紒");
+ }
+ wrkMast.setWrkSts(55L);
+ wrkMastMapper.updateById(wrkMast);
+
+ }
+ }
+ }catch (Exception e){
+// e.printStackTrace();
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ log.error("鍏朵粬 ===>> 璐存爣瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�"+e);
+ }
+ }
+
+ /**
+ * 瀹屾垚灏忚溅浠诲姟
+ */
+ public synchronized void rgvCompleteWrkMastSta() {
+ try{
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ continue;
+ }
+
+ // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
+ if (rgvProtocol.getStatusType() == RgvStatusType.WAITING
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ ) {
+ log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
+ if (rgvProtocol.getTaskNo1()!=0){
+ if (rgvProtocol.getTaskNo1()==9999){
+ 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());
+ break;
+ }
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+ if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=1 || wrkMastSta.getWrkSts()!=1){
+ log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
+ continue;
+ }
+ boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+ break;
+ }
+ wrkMastSta.setWrkSts(3);
+ wrkMastStaMapper.updateById(wrkMastSta);
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ }else if (rgvProtocol.getTaskNo2()!=0){
+ if (rgvProtocol.getTaskNo2()==9999){
+ 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());
+ break;
+ }
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2().intValue());
+ if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=2){
+ log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
+ continue;
+ }
+ boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+ break;
+ }
+ wrkMastSta.setWrkSts(3);
+ wrkMastStaMapper.updateById(wrkMastSta);
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ }else {
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
+ }
+ }
+ }
+ }catch (Exception e){
+ log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
+ }
+ }
+ /**
+ * 鎵ц灏忚溅鎼繍浠诲姟
+ */
+ public synchronized void rgvRunWrkMastFullSta() {
+ try{
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ continue;
+ }
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getLoaded1()==0
+ ) {
+ 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()!=1 || wrkMastSta.getWrkType()!=3){//1:婊$増 3锛氬彇鏀�
+ continue;
+ }
+ boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta);
+ if (sign){
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
+ if (signMap){
+ wrkMastSta.setWrkSts(1);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ return;
+ }else {
+ log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ }
+ }else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+ break;
+ }
+ }
+ }
+ }catch (Exception e){
+ log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
+ log.error("3875琛�"+e);
+ }
+ }
+ /**
+ * 鎵ц灏忚溅鎼繍浠诲姟
+ */
+ public synchronized void rgvRunWrkMastEmptyStaPut() {//鏀�
+ try{
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ continue;
+ }
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getLoaded2()==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());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ continue;
+ }
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getLoaded2()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+ ) {
+ 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()!=2 || wrkMastSta.getWrkType()!=1){// 2:绌烘澘 1:鍙�
+ continue;
+ }
+ boolean sign = false;
+ if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//鍙�
+ sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);
+ }else {
+ continue;
+ }
+ 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());
+ }
+ }else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+ break;
+ }
+ }
+ }
+ }catch (Exception e){
+ log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
+ log.error("3989琛�"+e);
+ }
+ }
+
+ /*
+ * 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃�
+ * */
+ public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
+ try{
+ Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
+ if (integer==0){
+ return;
+ }
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ continue;
+ }
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+ && rgvProtocol.getTaskNo1()==0
+ && rgvProtocol.getTaskNo2()==0
+ ) {
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
+ continue;
+ }
+ rgvAvoidanceXY(rgvProtocol.getRgvNo());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ }
+ }
+ }catch (Exception e){
+ log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
+ log.error("4109琛�"+e);
+ }
+ }
+
+ /*
+ * 鍒锋柊鍦板浘鏁版嵁
+ * */
+ public synchronized void refreshRgvMap() {
+ try{
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ continue;
+ }
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+ && (rgvProtocol.getTaskNo1()==0 || rgvProtocol.getTaskNo1()==9999)
+ && (rgvProtocol.getTaskNo2()==0 || rgvProtocol.getTaskNo2()==9999)
+ ) {
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ }
+ }
+ }catch (Exception e){
+ log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
+ log.error("4109琛�"+e);
+ }
+ }
+
+ /*
+ * 灏忚溅XY绉诲姩 閬胯
+ * */
+ public synchronized boolean rgvAvoidanceXY(Integer rgvId){
+ try{
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1((short)9999); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.GO_ORIGIN); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐�
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(9, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }catch (Exception e){
+ return false;
+
+ }
+ }
+
+
+ /*
+ * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
+ * */
+ public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){
+ try{
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ 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.Crn, 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 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.Crn, 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 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.Crn, 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 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;
+ }
+ }
+
+ /*
+ * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟
+ * */
+ 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;
+ }
+ }
+
+ /*
+ * 灏忚溅澶嶄綅
+ * */
+ public synchronized boolean rgvComplete(Integer rgvId){
+ try{
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(3, new RgvCommand()))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId);
+ return false;
+ } else {
+ log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId);
+ return true;
+ }
+ }catch (Exception e){
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId);
+ return false;
+ }
+ }
+
+ /*
+ * 灏忚溅鍦板浘鏇存柊 鏇存柊閿�
+ * */
+ public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){
+
+// List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
+ //鏇存柊褰撳墠灏忚溅閿�
+ try{
+ Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
+ Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤�
+ basRgvMapCurrent.setLockEndRoute(fallMerge);
+ basRgvMapMapper.updateById(basRgvMapCurrent);
+
+ //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
+ Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther();
+ BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
+ List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
+ Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
+ basRgvMapOther.setStartRoute(lockEndRoute);
+ basRgvMapMapper.updateById(basRgvMapOther);
+ return true;
+ }catch (Exception e){
+ log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�");
+ return false;
+ }
+ }
+
}
--
Gitblit v1.9.1