From d9248408fbaf28f25dfcf8e5ec3a5372e7a7c5a3 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 14 七月 2023 10:48:55 +0800
Subject: [PATCH] RGV路径解锁
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 651 +++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 435 insertions(+), 216 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 cd92354..05d2f26 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,7 +10,6 @@
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.service.*;
import com.zy.asrs.utils.Utils;
@@ -22,6 +21,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;
@@ -88,6 +89,10 @@
private BasRgvErrMapper basRgvErrMapper;
@Autowired
private BasRgvErrLogService basRgvErrLogService;
+ @Autowired
+ private BasRgvPathService basRgvPathService;
+ @Autowired
+ private RedisUtil redisUtil;
@Value("${wms.url}")
private String wmsUrl;
@@ -513,9 +518,17 @@
}
/**
- * 缁戝畾灏忚溅鏂规硶
+ * 鎼滅储RGV杞︺�傞�氳繃鐩爣绔欐悳绱㈠摢鍙拌溅鍙敤
*/
- public synchronized void rgvBindSte() {
+ public synchronized Integer searchRgvNo(Integer staNo) {
+ 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());
@@ -529,78 +542,63 @@
continue;
}
- // 鍙湁褰揜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.rgvBindSteIn(rgv, rgvProtocol); // 鍏ュ簱
- rgvProtocol.setLastIo("O");
- } else if (basRgv.getOutEnable().equals("Y")) {
- this.rgvBindSteOut(rgv, rgvProtocol); // 鍑哄簱
- rgvProtocol.setLastIo("I");
- }
+ list.add(rgvThread);
+ }
+
+ if (list.size() > 1) {
+ //瓒呰繃涓ゅ彴杞︼紝鎸夌収閰嶇疆鐨勮鍒欒繘琛屽垎閰�
+ for (RgvThread rgvThread : list) {
+ //鑾峰彇杞﹁締閰嶇疆鐨勮矾寰勮鍒�
+ BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(rgvThread.getSlave().getId());
+ if (basRgvPath == null) {
+ continue;
}
- // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
- else if (rgvProtocol.getLastIo().equals("O")) {
- if (basRgv.getOutEnable().equals("Y")) {
- this.rgvBindSteOut(rgv, rgvProtocol); // 鍑哄簱
- rgvProtocol.setLastIo("I");
- } else if (basRgv.getInEnable().equals("Y")) {
- this.rgvBindSteIn(rgv, rgvProtocol); // 鍏ュ簱
- rgvProtocol.setLastIo("O");
- }
+ //鐩爣绔欐槸鍚﹀寘鍚綋鍓嶈矾寰勪腑
+ 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;
+ }
+
+ /**
+ * 缁戝畾灏忚溅鏂规硶
+ */
+ public synchronized void rgvBindSte() {
+ //鑾峰彇绛夊緟缁戝畾RGV鐨勪换鍔�
+ List<WrkMast> wrkMasts = wrkMastMapper.selectWaitBindRGV();
+ for (WrkMast wrkMast : wrkMasts) {
+ //鐩爣绔�
+ Integer staNo = wrkMast.getStaNo();
+ //閫氳繃鐩爣绔欐悳绱gv鍙�
+ Integer rgvNo = this.searchRgvNo(staNo);
+ if (rgvNo == null) {//鏈壘鍒板彲鐢ㄧ殑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 rgvBindSteIn(RgvSlave slave, RgvProtocol rgvProtocol) {
- for (RgvSlave.RgvStn rgvStn: slave.getRgvInSStn()){
- Integer staNo = rgvStn.getStaNo();
- BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
- if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
- continue;
- }else {
- WrkMast wrkMast = wrkMastMapper.selectRgvInSteWrkNo(basDevp.getWrkNo());
- if (!Cools.isEmpty(wrkMast)){
- wrkMast.setRgvNo(wrkMast.getCrnNo()>3 ? 2 : 1);
- wrkMast.setAppeTime(new Date());
- if (wrkMastMapper.updateById(wrkMast)==0){
- log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
- }
- }
- }
- }
- }
-
- /**
- * 缁戝畾灏忚溅鍑哄簱鏂规硶
- */
- public synchronized void rgvBindSteOut(RgvSlave slave, RgvProtocol rgvProtocol) {
- for (RgvSlave.RgvStn rgvStn: slave.getRgvOutSStn()){
- BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
- if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
- continue;
- }else {
- WrkMast wrkMast = wrkMastMapper.selectRgvOutSteWrkNo(basDevp.getWrkNo());
- if (!Cools.isEmpty(wrkMast)){
- wrkMast.setRgvNo(rgvStn.getStaNo());
- wrkMast.setAppeTime(new Date());
- if (wrkMastMapper.updateById(wrkMast)==0){
- log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
- }
- }
- }
- }
- }
/**
* 鍏ュ嚭搴� ===>> RGV鍏ュ嚭搴撲綔涓氫笅鍙�
*/
@@ -618,32 +616,197 @@
continue;
}
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�, 骞朵笖鏃犱换鍔°�佹棤鐗╂椂鎵嶇户缁墽琛�
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
- && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
+// && 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");
+
+ //鏌ユ壘鏄惁瀛樺湪鍏ュ嚭搴撳伐浣滀腑绛夊緟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);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), 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() == 4) {//4.RGV鍙栬揣瀹屾垚 => 5.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(), 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(), 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(), 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");
- }
- }
+
}
}
}
@@ -1332,6 +1495,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){
@@ -1595,6 +1761,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());
@@ -1602,133 +1769,164 @@
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());
+ }
+
+// //宸ヤ綅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());
+// }
+// }
+// }
}
}
@@ -2719,6 +2917,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() {
--
Gitblit v1.9.1