From 1291837c2bd406b605f454922bf61a9dd9ecda9b Mon Sep 17 00:00:00 2001 From: yxFwq <1> Date: 星期一, 06 一月 2025 22:21:33 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 277 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 226 insertions(+), 51 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 e06f2a1..ec47558 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -105,6 +105,9 @@ @Value("${wms.url}") private String wmsUrl; + @Value("${wms.rgvOpen}") + private boolean rgvOpen; + /** * 缁勬墭 * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 @@ -427,9 +430,10 @@ // // 鍏ュ嚭搴撴ā寮忓垽鏂� // if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) { + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && staProtocol.getWorkNo()!=0) { // WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode); - WrkMast wrkMast = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"7"); +// WrkMast wrkMast = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"7"); + WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo()); if (wrkMast == null) { // 鏃犳嫞鏂欐暟鎹� continue; @@ -482,7 +486,7 @@ staProtocol.setStaNo(dto.getStaNo()); devpThread.setPakMk(staProtocol.getSiteId(), false); // ledThread.errorReset(); - boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(5, staProtocol)); if (!result) { log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); } @@ -2318,6 +2322,7 @@ param.setIoType(10); param.setSourceStaNo(122); param.setLocType1((short)1); + param.setRgvNo(rgvProtocol.getRgvNo()); String response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath("/rpc/pakin/empty/loc/v1") @@ -2363,7 +2368,8 @@ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId()); // 鍛戒护闆嗗悎 List<LedCommand> commands = new ArrayList<>(); - // 宸ヤ綔妗i泦鍚� + String orderNo = null; + // 宸ヤ綔妗i泦鍚� List<WrkMast> wrkMasts = new ArrayList<>(); for (Integer staNo : led.getStaArr()) { // 鑾峰彇鍙夎溅绔欑偣 @@ -2423,7 +2429,13 @@ // ledCommand.setSourceStaNo(wrkMast.getSourceStaNo()); if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) { List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); - wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl))); + if (Cools.isEmpty(wrkDetls)){ + continue; + } + Integer count1 = wrkDetlService.count1(); + Integer count2 = wrkDetlService.count2(wrkDetls.get(0).getOrderNo()); + Integer count3 = wrkDetlService.count3(); + wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl,count1,count2,count3))); } commands.add(ledCommand); } @@ -3344,6 +3356,14 @@ if (basDevp135.getReportSign()!=0){ continue; } + BasDevp basDevp121 = basDevpService.selectById(121); + if (basDevp121.getReportSign()!=0){ + continue; + } + BasDevp basDevp120 = basDevpService.selectById(120); + if (basDevp120.getReportSign()!=0){ + continue; + } WrkMast wrkMast131 = wrkMastMapper.selectWrkMastUnstackingOne202Two(131); if (Cools.isEmpty(wrkMast131)){ continue; @@ -3368,6 +3388,26 @@ } if (!staProtocol.isLoading()){ + continue; + } + StaProtocol staProtocol120 = devpThread.getStation().get(120); + if (staProtocol120 == null) { + continue; + } else { + staProtocol120 = staProtocol120.clone(); + } + + if (staProtocol120.isLoading()){ + continue; + } + StaProtocol staProtocol121 = devpThread.getStation().get(121); + if (staProtocol121 == null) { + continue; + } else { + staProtocol121 = staProtocol121.clone(); + } + + if (staProtocol121.isLoading()){ continue; } // if (!staProtocol.getWorkNo().equals(wrkMast131.getWrkNo())){ @@ -3707,6 +3747,40 @@ } } Date date = new Date(); + + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); + if (staProtocol == null) { + log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta); + continue; + } + if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){ + continue; + } + if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){ + if (staProtocol.isLoadingSuper()){ + continue; + } + } + if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){ + if (!staProtocol.isEmptyMk()){ + continue; + } + } + BasDevp basDevpS = basDevpService.selectById(wrkMastSta.getStaStart()); + if (!basDevpS.getAutoing().equals("Y") || !basDevpS.getLoading().equals("Y") || basDevpS.getWrkNo()!=wrkMastSta.getWrkNo().intValue()){ + continue; + } + StaProtocol staProtocols = devpThread.getStation().get(basDevpS.getDevNo()); + if (staProtocols == null) { + log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta); + continue; + } + if (!staProtocols.isAutoing() || !staProtocols.isLoading() || staProtocols.getWorkNo() != wrkMastSta.getWrkNo().intValue()){ + continue; + } + + log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta); log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp); boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); @@ -3790,6 +3864,27 @@ } } Date date = new Date(); + + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); + if (staProtocol == null) { + log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta); + continue; + } + if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){ + continue; + } + if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){ + if (staProtocol.isLoadingSuper()){ + continue; + } + } + if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){ + if (!staProtocol.isEmptyMk()){ + continue; + } + } + log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta); log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp); sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鎷嗙洏 @@ -3877,6 +3972,27 @@ } } Date date = new Date(); + + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); + if (staProtocol == null) { + log.info(date+"婊℃斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta); + continue; + } + if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){ + continue; + } + if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){ + if (staProtocol.isLoadingSuper()){ + continue; + } + } + if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){ + if (!staProtocol.isEmptyMk()){ + continue; + } + } + log.info(date+"婊℃斁浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta); log.info(date+"婊℃斁浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp); sign = rgvPutEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta); @@ -3956,6 +4072,22 @@ } } Date date = new Date(); + + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); + if (staProtocol == null) { + log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta); + continue; + } + if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ + continue; + } + if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){ + if (!staProtocol.isEmptyMk()){ + continue; + } + } + log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta); log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp); sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鍙犵洏 @@ -4037,6 +4169,17 @@ continue; } Date date = new Date(); + + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); + if (staProtocol == null) { + log.info(date+"婊″彇浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta); + continue; + } + if (!staProtocol.isAutoing() || staProtocol.isLoading()){ + continue; + } + log.info(date+"婊″彇浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta); log.info(date+"婊″彇浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp); sign = rgvTakeEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta); @@ -4107,57 +4250,85 @@ && rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getStatusType2() == RgvStatusType.IDLE ) { - BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){ -// if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),RouteUtils.RouteIndexFarMas(rgvProtocol.getRgvNo(),rgvRunSta[rgvProtocol.getRgvNo()-1]),rgvProtocol.getRgvNo())){ -// if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),rgvRunSta[rgvProtocol.getRgvNo()-1],rgvProtocol.getRgvNo())){ - if (rgvProtocol.getRgvNo()==1){ - signRgv1 = false; - }else { - signRgv2 = false; + if (rgvProtocol.getRgvNo()!=1){ + if (!rgvProtocol.getRgvPosI().equals(120) && !rgvProtocol.getRgvPosI().equals(110)){ + continue; } - } - if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){ - signRgv1 = false; - continue; - } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){ - signRgv2 = false; + rgvAvoidanceXY(rgvProtocol.getRgvNo()); +// return; continue; } + if (!rgvProtocol.getRgvPosI().equals(108) && !rgvProtocol.getRgvPosI().equals(119)){ + continue; + } + Integer count108Y = wrkMastStaMapper.selectAllWrkCount108Y(); + if (count108Y==0){ + continue; + } + Integer count108 = wrkMastStaMapper.selectAllWrkCount108(); + if (count108==0){ + continue; + } + rgvAvoidanceXY(rgvProtocol.getRgvNo()); + continue; +// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); +// Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMap.getRgvNo(), basRgvMap.getEndRoute()); //鑾峰彇鍚堝苟骞叉秹椤� +// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(),fallMerge); +// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route ,route); +// if (!wrkMastStaList.isEmpty()){ +// log.info("灏忚溅瀛樺湪鍙墽琛屼换鍔★紝璺宠繃閬胯锛侊紒4214"); +// return; +// } +// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){ +//// if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),RouteUtils.RouteIndexFarMas(rgvProtocol.getRgvNo(),rgvRunSta[rgvProtocol.getRgvNo()-1]),rgvProtocol.getRgvNo())){ +//// if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),rgvRunSta[rgvProtocol.getRgvNo()-1],rgvProtocol.getRgvNo())){ +// if (rgvProtocol.getRgvNo()==1){ +// signRgv1 = false; +// }else { +// signRgv2 = false; +// } +// } +// if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){ +// signRgv1 = false; +// continue; +// } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){ +// signRgv2 = false; +// continue; +// } }else { signRgv = false; break; } } - if (signRgv && (signRgv1 || signRgv2)){ - for (RgvSlave rgvSlave:slaveProperties.getRgv()) { - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); - RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); - if (rgvProtocol == null) { - continue; - } - - // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 - if (rgvProtocol.getStatusType() == RgvStatusType.IDLE - && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 - && rgvProtocol.getTaskNo1()==0 - && rgvProtocol.getTaskNo2()==0 - && rgvProtocol.getStatusType1() == RgvStatusType.IDLE - && rgvProtocol.getStatusType2() == RgvStatusType.IDLE - ) { - if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){ - continue; - } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){ - continue; - } - BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - rgvAvoidanceXY(rgvProtocol.getRgvNo()); - rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); - - } - } - } +// if (signRgv && (signRgv1 || signRgv2)){ +// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { +// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); +// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); +// if (rgvProtocol == null) { +// continue; +// } +// +// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 +// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE +// && rgvProtocol.getModeType() == RgvModeType.AUTO +// && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 +// && rgvProtocol.getTaskNo1()==0 +// && rgvProtocol.getTaskNo2()==0 +// && rgvProtocol.getStatusType1() == RgvStatusType.IDLE +// && rgvProtocol.getStatusType2() == RgvStatusType.IDLE +// ) { +// if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){ +// continue; +// } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){ +// continue; +// } +// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); +// rgvAvoidanceXY(rgvProtocol.getRgvNo()); +// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); +// +// } +// } +// } }catch (Exception e){ log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触"); log.error("4109琛�"+e); @@ -4213,7 +4384,7 @@ rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� //basRgvMap.getLockStartRoute().shortValue() - rgvCommand.setSourceStaNo1( (short)101); + rgvCommand.setSourceStaNo1( (short)107); 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浠诲姟鍙� @@ -4235,7 +4406,7 @@ rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� rgvCommand.setTaskNo2((short)32222); // 宸ヤ綅2宸ヤ綔鍙� rgvCommand.setTaskMode2(RgvTaskModeType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡: 鍥炲師鐐� - rgvCommand.setSourceStaNo2((short)117); + rgvCommand.setSourceStaNo2((short)113); rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭 if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) { //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙� @@ -4452,6 +4623,9 @@ * 灏忚溅鍦板浘鏇存柊 鏇存柊閿� * */ public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){ + if (rgvOpen){ + return true; + } // List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute()); //鏇存柊褰撳墠灏忚溅閿� @@ -4467,7 +4641,8 @@ BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther); List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute()); Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃� - basRgvMapOther.setEndRoute(lockEndRoute); + Integer lockEndRouteL = RouteUtils.RouteIndexFarMasL(rgvNoOther, lockEndRoute);//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃� + basRgvMapOther.setEndRoute(lockEndRouteL); basRgvMapMapper.updateById(basRgvMapOther); return true; }catch (Exception e){ -- Gitblit v1.9.1