From 136717ef591afb69723440be32b99cbdc6a48407 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期二, 25 七月 2023 18:03:01 +0800 Subject: [PATCH] #码垛位自动补充空板:码垛完成下一步执行实装 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 844 ++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 570 insertions(+), 274 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 a0aefbe..0fd8d37 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,14 +518,23 @@ } /** - * 缁戝畾灏忚溅鏂规硶 + * 鎼滅储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()); RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); if (rgvProtocol == null) { + continue; } BasRgv basRgv = basRgvService.selectById(rgv.getId()); @@ -529,78 +543,65 @@ 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(); + //婧愮珯 + Integer sourceStaNo = wrkMast.getSourceStaNo(); + //閫氳繃鐩爣绔欐悳绱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,34 +619,203 @@ 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(), 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() == 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(), 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"); - } - } + } } + } + + private boolean rgvIoExecuteWrk2To3() { + return false; } /** @@ -1598,6 +1768,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()); @@ -1605,133 +1776,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()); +// } +// } +// } } } @@ -2278,7 +2492,12 @@ LocTypeDto locTypeDto = new LocTypeDto(staProtocol); SearchLocParam param = new SearchLocParam(); - param.setIoType(10); + if (emptyInSta.getStaNo().equals(214)){ + //鎷嗙洏鏈哄绌烘澘鎵爜锛岄┍鍔ㄦ墭鐩樺悜鐮佸灈浣嶏紝涓嶅叆搴� + param.setIoType(201); + }else { + param.setIoType(10); + } param.setSourceStaNo(emptyInSta.getStaNo()); param.setLocType1(locTypeDto.getLocType1()); String response = new HttpHandler.Builder() @@ -2306,64 +2525,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(); -// } - } - - } } } @@ -2722,6 +2884,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() { @@ -3025,4 +3208,117 @@ } } } + + /** + * 鍏朵粬 ===>> 鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩� + */ + 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 { + List<WrkMast> wrkMasts = wrkMastMapper.selectStackingCompletionDriveTray(); + if (Cools.isEmpty(wrkMasts) || wrkMasts.size()==0){ + return; + } + + for (WrkMast wrkMast : wrkMasts){ + wrkMast.setWrkSts(44L); + // 鑾峰彇鍏ュ簱绔欎俊鎭� + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); + StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getStaNo()); + if (staProtocol == null) { + log.error("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐规煡璇㈠け璐�"); + return; + } else { + staProtocol = staProtocol.clone(); + } + + if (!staProtocol.isLoading()){ + log.info("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐规棤鐗╋紝姝e湪鑷姩璋冨嚭绌烘澘锛�"); + return; + } + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() && staProtocol.getWorkNo().equals(wrkMast.getWrkNo().shortValue()) && staProtocol.isPakMk()) { + staProtocol.setWorkNo((short)9999); + int staNo = wrkMast.getStaNo() + 1; + staProtocol.setStaNo((short)staNo); + 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锛�"); + wrkMastMapper.updateStackingCompletionDriveTray(wrkMast.getWrkNo()); + }else { + log.error("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐圭姸鎬佷笉绗﹀悎锛�"); + } + } + }catch (Exception e){ + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } } -- Gitblit v1.9.1