From fc86a263ca2ffdb0e701261ff3b1e730b2065542 Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期四, 14 八月 2025 11:18:32 +0800 Subject: [PATCH] #RGV协议修改,rgv预调度,任务下发 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 489 +++++++++++++++++++++++++++++++++++------------------ 1 files changed, 319 insertions(+), 170 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 f091010..5dd7333 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -46,7 +46,6 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.*; -import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -2699,13 +2698,13 @@ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 + && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 && (rgvProtocol.getTaskNo1()==0) &&rgvThread.isPakMk() ) { BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - Integer rgvNoOther = basRgvMap.getRgvNoOther(rgvProtocol.getRgvNo()); + Integer rgvNoOther = basRgvMap.getRgvNoOther((int) rgvProtocol.getRgvNo()); RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther); RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol(); if (rgvProtocolOther == null) { @@ -2715,7 +2714,7 @@ } if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE && rgvProtocolOther.getModeType() == RgvModeType.AUTO - && rgvProtocolOther.getLoaded1()==0 + && !rgvProtocolOther.isLoaded1ing() && (rgvProtocolOther.getTaskNo1()==0) &&rgvThreadOther.isPakMk() ){ @@ -2788,7 +2787,22 @@ && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1) ){ log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); - if (rgvProtocol.getTaskNo1()!=0){ + if(rgvProtocol.getTaskNo1() == 9999){ + List<Integer> staNos = Arrays.asList( 1043, 1104); + for (Integer staNo : staNos) { + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(staNo); + boolean rgvComplete = false; + if(!staProtocol.isLoading()){ + rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3);//宸ヤ綅1澶嶄綅 + } + if (!rgvComplete){ + log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�",rgvProtocol.getRgvNo()); + break; + } + } + } + if (rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo1()!=9999){ // if (rgvProtocol.getTaskNo1()==32222){ // boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); // if (!rgvComplete){ @@ -2849,9 +2863,9 @@ //鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅 if((sourceSta >= 1001 && sourceSta <= 1035) || (sourceSta >= 2001 && sourceSta <= 2030)){ - rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),6); + rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6); }else{ - rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),3); + rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3); } if (!rgvComplete){ @@ -2883,6 +2897,8 @@ } /** * 鎵ц灏忚溅鎼繍浠诲姟 + * + * @return */ public synchronized boolean rgvRunWrkMastFullSta() { boolean wrkEnable = false; @@ -2902,14 +2918,13 @@ continue; } - // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍏ュ簱鍙栬揣 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getLoaded1() == 0 + && !rgvProtocol.isLoaded1ing() && rgvProtocol.getTaskNo1() == 0 - && rgvProtocol.getTaskNo2() == 0 - && rgvProtocol.getLoaded2() == 0 && rgvThread.isPakMk() + && rgvThread.isPakIn() ) { BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); if (basRgvMap == null) { @@ -2920,35 +2935,10 @@ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route); for (WrkMastSta wrkMastSta : wrkMastStaList){ -// if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3 || wrkMastSta.getWrkSts()!=0){//1:婊$増 3锛氬彇鏀� -// continue; -// } - //鍒ゆ柇宸ヤ綔缁撴潫浣嶇疆鐘舵�� -// boolean signDev = false; -// BasDevp devNo = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", wrkMastSta.getStaEnd())); -// if (devNo.getDevNo()==113){ -// BasDevp devNo114 = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 114)); -// if (!Cools.isEmpty(devNo114)){ -// if (devNo114.getOutEnable().equals("Y")){ -// signDev = true; -// } -// } -// } -// if (!Cools.isEmpty(devNo)){ -// if (devNo.getAutoing().equals("Y") && !devNo.getWrkNo().equals(0) && !devNo.getLoading().equals("N")){ -// continue; -// } -// if (!signDev && devNo.getDevNo()==113){ -// if (!devNo.getAutoing().equals("Y") || !devNo.getWrkNo().equals(0) || !devNo.getLoading().equals("N")){ -// wrkEnable = true; -// continue; -// } -// if (!devNo.getOutEnable().equals("Y")){ -// wrkEnable = true; -// continue; -// } -// } -// } + List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙� + if (!staNos.contains(wrkMastSta.getStaStart())) { + continue; + } boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 wrkEnable = true; if (sign){ @@ -2960,12 +2950,13 @@ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } rgvThread.setPakMk(false); + rgvThread.setPakOut(false); boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); if (signMap){ return wrkEnable; // break; }else { - log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); + log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); Thread.sleep(500); } } else { @@ -2976,15 +2967,132 @@ } } + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍑哄簱鍙栬揣 + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && !rgvProtocol.isLoaded2ing() + && rgvProtocol.getTaskNo2() == 0 + && rgvThread.isPakMk() + && rgvThread.isPakOut() + ){ + 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){ + List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙� + if (staNos.contains(wrkMastSta.getStaStart())) { + continue; + } + boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 + wrkEnable = true; + if (sign){ + wrkMastSta.setWrkSts(1); + try{ + wrkMastStaMapper.updateById(wrkMastSta); + log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); + }catch (Exception e){ + log.error("鏇存柊灏忚溅浠诲姟澶辫触"); + } + rgvThread.setPakMk(false); + rgvThread.setPakOut(false); + boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); + if (signMap){ + return wrkEnable; +// break; + }else { + log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); + Thread.sleep(500); + } + } else { + log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); + Thread.sleep(500); + } + break; + } + + } + } -// if (!wrkEnable){ -// rgvRunWrkMastEmptyStaAvoidance(); -// } }catch (Exception e){ - log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�"); - log.error("3875琛�"+e); + log.error("鎵ц灏忚溅鎼繍浠诲姟涓嬪彂澶辫触"); } return wrkEnable; + } + /** + * 灏忚溅棰勮皟搴� + */ + public synchronized void rgvPreScheduling(){ + try{ + List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); + for (BasRgvMap rgvSlave:basRgvMaps) { + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + }else { + rgvProtocol = rgvProtocol.clone(); + } + BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); + if (basRgv == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo()); + continue; + } + + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鎵嶈繘琛岄璋冨害 + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && !rgvProtocol.isLoaded1ing() + && rgvProtocol.getTaskNo1() == 0 + && !rgvProtocol.isLoaded2ing() + && rgvProtocol.getTaskNo2() == 0 + && rgvThread.isPakMk() + ) { + 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()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + // 閬嶅巻鍏ュ簱鍙� 鍏ュ簱棰勮皟搴� + List<Integer> staNos = Arrays.asList(1042, 1043, 1105, 1104); + for (Integer staNo : staNos) { + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(staNo); + if(staProtocol.isLoading()){ + RgvCommand rgvCommand = new RgvCommand(); + rgvCommand.setRgvNo((int) rgvProtocol.getRgvNo()); // RGV缂栧彿 + rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(9999); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo1(0); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 + if(staNo == 1042 || staNo ==1043){ + rgvCommand.setTargetPosition1(1042); //宸ヤ綅1鐩爣绔欑偣 + }else{ + rgvCommand.setTargetPosition1(1105); //宸ヤ綅1鐩爣绔欑偣 + } + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + if (!MessageQueue.offer(SlaveType.Rgv, (int) rgvProtocol.getRgvNo(), new Task(4, rgvCommand))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", (int) rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand)); + } + } + } + + } + + } + } + }catch (Exception e){ + log.error("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触"); + } } /** * 鎵ц灏忚溅鎼繍浠诲姟 @@ -3118,107 +3226,107 @@ /* * 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃� * */ - public synchronized void rgvRunWrkMastEmptyStaAvoidance() { - try{ - Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔� - if (integer==0){ - return; - } - List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); - for (BasRgvMap rgvSlave:basRgvMaps) { - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo()); - RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); - if (rgvProtocol == null) { - continue; - }else { - rgvProtocol = rgvProtocol.clone(); - } - BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); - if (basRgv == null) { - log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo()); - continue; - } - - // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 - if (rgvProtocol.getStatusType() == RgvStatusType.IDLE - && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 - && rgvProtocol.getTaskNo1()==0 - && rgvProtocol.getStatusType1() == RgvStatusType.IDLE - && rgvThread.isPakMk() -// && rgvProtocol.getTaskNo2()==0 - ){ - BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){ - continue; - } -// if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){ -// continue; -// } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157) ){ +// public synchronized void rgvRunWrkMastEmptyStaAvoidance() { +// try{ +// Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔� +// if (integer==0){ +// return; +// } +// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); +// for (BasRgvMap rgvSlave:basRgvMaps) { +// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo()); +// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); +// if (rgvProtocol == null) { +// continue; +// }else { +// rgvProtocol = rgvProtocol.clone(); +// } +// BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); +// if (basRgv == null) { +// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo()); +// continue; +// } +// +// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 +// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE +// && rgvProtocol.getModeType() == RgvModeType.AUTO +// && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 +// && rgvProtocol.getTaskNo1()==0 +// && rgvProtocol.getStatusType1() == RgvStatusType.IDLE +// && rgvThread.isPakMk() +//// && 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(),"2727"); - } - } - }catch (Exception e){ - log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触"); - log.error("4109琛�"+e); - } - } +//// if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){ +//// continue; +//// } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157) ){ +//// continue; +//// } +// rgvAvoidanceXY((int) rgvProtocol.getRgvNo()); +// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727"); +// } +// } +// }catch (Exception e){ +// log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触"); +// log.error("4109琛�"+e); +// } +// } /* * 灏忚溅XY绉诲姩 閬胯 * */ - public synchronized boolean rgvAvoidanceXY(Integer rgvId){ - BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId); - if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){ - try{ - - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 - rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� - //basRgvMap.getLockStartRoute().shortValue() - rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue()); - rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { - //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙� - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); - return false; - } else { - return true; - } - }catch (Exception e){ - return false; - - } - }else { - try{ - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 - rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� - //basRgvMap.getLockStartRoute().shortValue() - rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue()); - rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { - //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙� - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); - return false; - } else { - return true; - } - }catch (Exception e){ - return false; - - } - } - } +// public synchronized boolean rgvAvoidanceXY(Integer rgvId){ +// BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId); +// if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){ +// try{ +// +// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- +// RgvCommand rgvCommand = new RgvCommand(); +// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 +// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� +// rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� +// //basRgvMap.getLockStartRoute().shortValue() +// rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue()); +// rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 +// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { +// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙� +// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); +// return false; +// } else { +// return true; +// } +// }catch (Exception e){ +// return false; +// +// } +// }else { +// try{ +// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- +// RgvCommand rgvCommand = new RgvCommand(); +// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 +// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� +// rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� +// //basRgvMap.getLockStartRoute().shortValue() +// rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue()); +// rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 +// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { +// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙� +// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); +// return false; +// } else { +// return true; +// } +// }catch (Exception e){ +// return false; +// +// } +// } +// } /* @@ -3229,39 +3337,80 @@ int startSta = wrkMastSta.getStaStart(); // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- RgvCommand rgvCommand = new RgvCommand(); + boolean pakIn1 = true; + boolean pakIn2 = true; rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 - if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣 - rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� - rgvCommand.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅2璧风偣 - rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setCommand((short) 2); //宸ヤ綅1浠诲姟纭 - }else{ //鍏ュ簱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(rgvCommand.getCommand() == 1){ - if (!MessageQueue.offer(SlaveType.Rgv, 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; + if(wrkMastSta.getWrkSts() == 1){//鍙栬揣 + if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣 + rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� + rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + pakIn1 = false; + }else{ //鍏ュ簱RGV鍙栬揣 + rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 } - }else{ - if (!MessageQueue.offer(SlaveType.Rgv, 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; + if(!pakIn1){ + if (!MessageQueue.offer(SlaveType.Rgv, 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; + } + }else{ + if (!MessageQueue.offer(SlaveType.Rgv, 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; + } } } + if(wrkMastSta.getWrkSts() == 2) {//鏀捐揣 + if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣 + rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� + rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition2(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + pakIn2 = false; + }else{ //鍏ュ簱RGV鍙栬揣 + rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + } + if(!pakIn2){ + if (!MessageQueue.offer(SlaveType.Rgv, 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; + } + }else{ + if (!MessageQueue.offer(SlaveType.Rgv, 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; + } + } + } + return true; }catch (Exception e){ return false; } -- Gitblit v1.9.1