From f7bcd87b19bf265d0fa157f110632d6b661ec22d Mon Sep 17 00:00:00 2001 From: LSH Date: 星期一, 25 九月 2023 15:25:03 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 392 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 374 insertions(+), 18 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 5cb274b..e3dfe47 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -580,27 +580,145 @@ 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() { - //鑾峰彇绛夊緟缁戝畾RGV鐨勪换鍔� - List<WrkMast> wrkMasts = wrkMastMapper.selectWaitBindRGV(); - for (WrkMast wrkMast : wrkMasts) { - //鐩爣绔� - Integer staNo = wrkMast.getStaNo(); - //婧愮珯 - Integer sourceStaNo = wrkMast.getSourceStaNo(); - //閫氳繃鐩爣绔欐悳绱gv鍙� - Integer rgvNo = this.searchRgvNo(staNo); - if (rgvNo == null) {//鏈壘鍒板彲鐢ㄧ殑rgv + 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() { + for (RgvSlave rgv : slaveProperties.getRgv()) { + List<WrkMast> wrkMasts = wrkMastMapper.selectWaitBindRGVRgvNo(rgv.getId()); + if (!Cools.isEmpty(wrkMasts) && wrkMasts.size()!=0){ continue; } - - wrkMast.setRgvNo(rgvNo);//缁戝畾rgv鍙� - wrkMast.setRgvDstaNo(wrkMast.getSourceStaNo());//璁剧疆RGV鍓嶅線宸ヤ綔妗f簮绔欏彇璐� - if (wrkMastMapper.updateById(wrkMast)==0){ - log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo()); + 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; } } } @@ -608,7 +726,7 @@ /** * 鍏ュ嚭搴� ===>> RGV鍏ュ嚭搴撲綔涓氫笅鍙� */ - public synchronized void rgvIoExecute() { + public synchronized void rgvIoExecuteOld() { for (RgvSlave rgv : slaveProperties.getRgv()) { // 鑾峰彇RGV淇℃伅 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); @@ -627,12 +745,102 @@ && 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; } @@ -667,6 +875,154 @@ //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()); + } + } + } + } + + } + } + } + + /** + * 鍏ュ嚭搴� ===>> 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); @@ -675,7 +1031,7 @@ log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); } } - } else if (wrkMast.getWrkSts() == 4) {//4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� + } else if (wrkMast.getWrkSts() == 14) {//4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� 14鍑哄簱瀹屾垚 if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷� continue; } -- Gitblit v1.9.1