From c0da15f6c25210ad17993c8fc829c92ab8113fa1 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期二, 09 九月 2025 13:45:19 +0800 Subject: [PATCH] * --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 381 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 306 insertions(+), 75 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 d4e4613..117747c 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -8,11 +8,15 @@ import com.core.common.DateUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.*; +import com.zy.asrs.entity.param.ArmTaskAssignmentParam; import com.zy.asrs.mapper.*; import com.zy.asrs.service.*; +import com.zy.asrs.utils.PostMesDataUtils; import com.zy.asrs.utils.RouteUtils; import com.zy.asrs.utils.Utils; import com.zy.asrs.utils.VersionUtils; +import com.zy.asrs.utils.core.ReturnT; +import com.zy.common.constant.ArmConstant; import com.zy.common.model.LocTypeDto; import com.zy.common.model.MatDto; import com.zy.common.model.SearchLocParam; @@ -93,6 +97,10 @@ private WrkMastService wrkMastService; @Autowired private BasRgvMapService basRgvMapService; + @Autowired + private BasArmService basArmService; + @Autowired + private BasArmMastService basArmMastService; @Value("${wms.url}") private String wmsUrl; @@ -750,6 +758,7 @@ if ((wrkMast.getIoType() != 12 && wrkMast.getIoType() < 100) || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) { continue; } + // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗� CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); @@ -812,51 +821,63 @@ } else { staProtocolIn = staProtocolIn.clone(); } - StaProtocol staProtocolOut = devpThread.getStation().get(1015); - if (staProtocolOut == null) { - continue; - } else { - staProtocolOut = staProtocolOut.clone(); - } - if(staProtocolOut.getWorkNo() != null &&staProtocolOut.getStaNo() == 4006){ - WrkMast wrkMastOut = wrkMastMapper.selectByWrkNo(staProtocolOut.getWorkNo()); - WrkMast wrkMast = wrkMastMapper.selectByWrkNo(9997); - if(wrkMast == null){ + int[] outStaNos = {1015, 2016}; + for (int outStaNo : outStaNos) { + StaProtocol staProtocolOut = devpThread.getStation().get(outStaNo);// 鐩樼偣鍑哄簱琛旀帴绔欑偣锛堝彲鑳芥槸 1015锛屼篃鍙兘鏄� 2016锛� + if (staProtocolOut == null) { continue; + } else { + staProtocolOut = staProtocolOut.clone(); } - try { - TransplantWork param = new TransplantWork(); - param.setWorkNo(wrkMastOut.getWrkNo()); - param.setBarcode(wrkMastOut.getBarcode()); - param.setSourceStaNo(1015); - param.setStaNo(wrkMastOut.getStaNo()); - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/auto/TransplantingIn/v1") - .setJson(JSON.toJSONString(param)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); - if (jsonObject.getInteger("code").equals(200)) { - staProtocolOut.setWorkNo(9997); - devpThread.setPakMk(staProtocolOut.getSiteId(), false); - boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolOut)); - if (!result) { - throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); - } + if (staProtocolOut.getWorkNo() != null && staProtocolOut.getStaNo() == 4006) { + WrkMast wrkMastOut = wrkMastMapper.selectByWrkNo(staProtocolOut.getWorkNo()); + WrkMast wrkMast = wrkMastMapper.selectByWrkNo(9997); + if (wrkMastOut == null) { + continue; } + if (wrkMast != null) { + News.info("宸插瓨鍦ㄦ枩琛椾换鍔★紝绛夊緟浠诲姟瀹屾垚"); + continue; + } + try { + TransplantWork param = new TransplantWork(); + param.setWorkNo(wrkMastOut.getWrkNo()); + param.setBarcode(wrkMastOut.getBarcode()); + param.setSourceStaNo(outStaNo); + param.setStaNo(wrkMastOut.getStaNo()); - } catch (Exception e) { - e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/auto/TransplantingOut/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + staProtocolOut.setWorkNo(9997); + devpThread.setPakMk(staProtocolOut.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolOut)); + + if (!result) { + throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); + } + } + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } } } - if(staProtocolIn.getWorkNo() != null &&staProtocolIn.getStaNo() != 4001){ WrkMast wrkMastIn = wrkMastMapper.selectByWrkNo(staProtocolIn.getWorkNo()); WrkMast wrkMast = wrkMastMapper.selectByWrkNo(9996); - if(wrkMast == null){ + if(wrkMastIn == null){ + continue; + } + if(wrkMast != null){ + News.info("宸插瓨鍦ㄦ枩琛椾换鍔★紝绛夊緟浠诲姟瀹屾垚"); continue; } try { @@ -867,7 +888,7 @@ param.setStaNo(wrkMastIn.getStaNo()); String response = new HttpHandler.Builder() .setUri(wmsUrl) - .setPath("/rpc/auto/TransplantingOut/v1") + .setPath("/rpc/auto/TransplantingIn/v1") .setJson(JSON.toJSONString(param)) .build() .doPost(); @@ -2535,16 +2556,20 @@ public synchronized void autoEmptyOut() { SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); List<Integer> list = new ArrayList<>(); - list.add(1108);list.add(112); - Map<Integer,Integer> map = new HashMap<>(); - map.put(101,102);map.put(112,111); + list.add(1108);list.add(2031); for (Integer site:list){ - WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", map.get(site))); - if (!Cools.isEmpty(wrkMast)){ + Integer emptyCount = wrkMastMapper.countPakOutEmpty(site); + StaProtocol staProtocol = null; + if(emptyCount >= 2 && site == 1108){ + continue; + }else if(emptyCount == 1 && site == 2031){ continue; } //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔� - StaProtocol staProtocol = devpThread.getStation().get(site); + switch (site){ + case 1108:staProtocol = devpThread.getStation().get(site - 2);break; + case 2031:staProtocol = devpThread.getStation().get(site);break; + } if (staProtocol == null) { return; } else { @@ -2555,10 +2580,6 @@ && staProtocol.isOutEnable() //鍙嚭淇″彿 && staProtocol.getWorkNo() == 0 ) { - WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(site); - if (null != pakoutEmpty) { - return; - } Short loctype1 = 1; LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1); locTypeDto.setSiteId(site); @@ -2699,7 +2720,9 @@ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 - && (rgvProtocol.getTaskNo1()==0) + && rgvProtocol.getTaskNo1()==0 + && !rgvProtocol.isLoaded2ing() + && rgvProtocol.getTaskNo2()==0 &&rgvThread.isPakMk() ) { BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); @@ -2715,7 +2738,9 @@ if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE && rgvProtocolOther.getModeType() == RgvModeType.AUTO && !rgvProtocolOther.isLoaded1ing() - && (rgvProtocolOther.getTaskNo1()==0) + && rgvProtocolOther.getTaskNo1()==0 + && !rgvProtocolOther.isLoaded2ing() + && rgvProtocolOther.getTaskNo2()==0 &&rgvThreadOther.isPakMk() ){ //瀵瑰伐浣滄。杩涜鍒ゆ柇 @@ -2799,17 +2824,16 @@ StaProtocol staProtocol = devpThread.getStation().get(staNo); boolean rgvComplete = false; - long now = System.currentTimeMillis(); - if (staProtocol.isLoading()) { - rgvProtocol.setLoadingStartTime(null); // 宸插埌浣嶏紝娓呯┖鏃堕棿鎴� - } else { - if (rgvProtocol.getLoadingStartTime() == null) { - rgvProtocol.setLoadingStartTime(now); - } - } +// long now = System.currentTimeMillis(); +// if (staProtocol.isLoading()) { +// rgvProtocol.setLoadingStartTime(null); // 宸插埌浣嶏紝娓呯┖鏃堕棿鎴� +// } else { +// if (rgvProtocol.getLoadingStartTime() == null) { +// rgvProtocol.setLoadingStartTime(now); +// } +// } - if (staProtocol.isLoading() || - (rgvProtocol.getLoadingStartTime() != null && now - rgvProtocol.getLoadingStartTime() > 10000)) { + if (staProtocol.isLoading()) { rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3); if (!rgvComplete){ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�", rgvProtocol.getRgvNo()); @@ -3062,7 +3086,7 @@ } } - //鍏ュ簱鏀捐揣 + //鍑哄簱鏀捐揣 if( rgvThread.isPakOut()){ for(RgvSlave.RgvStn rgvStn : rgv.getRgvOutPStn()){//鍏ュ簱鏀捐揣绔欑偣 boolean flag = false; @@ -3070,7 +3094,7 @@ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); if (staProtocol == null) { - News.infoNoLog( " - 1" + " - 1" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); + News.infoNoLog( " - 1" + " - 1" + " - Rgv鍑哄簱鏀捐揣绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); continue; } else { staProtocol = staProtocol.clone(); @@ -3078,7 +3102,7 @@ // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo()); if (staDetl == null) { - News.error( " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv鏀捐揣绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); + News.error( " - 1" + " - 2" + " - 鍑哄簱 ===>>Rgv鏀捐揣绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); continue; } @@ -3087,7 +3111,7 @@ flag = true; } if (!flag) { - News.errorNoLog( " - 1" + " - 3" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):" + News.errorNoLog( " - 1" + " - 3" + " - Rgv鍑哄簱鏀捐揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):" + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading() + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable() + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting()); @@ -3104,7 +3128,7 @@ } WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 if( null == wrkMastSta ) { - News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); + News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍑哄簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } wrkMastSta.setWrkSts(2); @@ -3202,17 +3226,34 @@ public synchronized void rgvRunWrkMastIn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark) { for (RgvSlave.RgvStn rgvStn : slave.getRgvInTStn()) {//rgv鍏ュ簱鍙栬揣绔欑偣 boolean flag = false; + boolean ds = false; //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); + StaProtocol staProtocol2 = null; + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); + if(rgvStn.getStaNo2()!= null ){ + staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2()); + if (staProtocol2 == null) { + News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); + continue; + } else { + staProtocol2 = staProtocol2.clone(); + } + BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2()); + if (staDetl2 == null) { + News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); + continue; + } + } if (staProtocol == null) { News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); continue; } else { staProtocol = staProtocol.clone(); } + // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo()); if (staDetl == null) { @@ -3236,12 +3277,13 @@ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + if( null == wrkMastSta ) { News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo()); - boolean result = true; + boolean result = false; if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠� result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣 } @@ -3252,7 +3294,16 @@ wrkMastSta.setWorkSta(wrkMastSta2 != null ? 1 : 2); wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃� - boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂 + boolean sign = false; + //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠� + if(wrkMastSta.getWorkSta() == 2 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0){ + WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + wrkMastSta3.setWorkSta(1); + wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo()); + sign = rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3); + }else{ + sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂 + } if (sign){ wrkMastSta.setWrkSts(1); try{ @@ -3283,7 +3334,21 @@ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); - + StaProtocol staProtocol2 = null; + if(rgvStn.getStaNo2()!= null ){ + staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2()); + if (staProtocol2 == null) { + News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); + continue; + } else { + staProtocol2 = staProtocol2.clone(); + } + BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2()); + if (staDetl2 == null) { + News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); + continue; + } + } if (staProtocol == null) { News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); continue; @@ -3316,12 +3381,29 @@ News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } + WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo()); + boolean result = false; + if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠� + result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣 + } + if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣 + rgvThread.setPakRgv(false); + continue; + } WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo()); wrkMastSta.setWorkSta(wrkMastSta1 != null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣� wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); - + boolean sign = false; Short direction = 1;//宸ヤ綅1鏂瑰悜 - boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta, direction); //鍛戒护涓嬪彂 + //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠� + if(wrkMastSta.getWorkSta() == 1 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0){ + WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + wrkMastSta3.setWorkSta(2); + wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo()); + sign = rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3); + }else{ + sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂 + } if (sign){ wrkMastSta.setWrkSts(1); try{ @@ -3435,7 +3517,7 @@ // if (staNos.contains(wrkMastSta.getStaStart())) {//闈炲叆搴撳彛锛堝嚭搴撳彛锛夐檺鍒� // continue; // } -// boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 +// boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂 // wrkEnable = true; // if (sign){ // wrkMastSta.setWrkSts(1); @@ -3509,7 +3591,7 @@ // 鏍规嵁杈撻�佺嚎plc閬嶅巻 for (DevpSlave devp : slaveProperties.getDevp()) { // 閬嶅巻鍏ュ簱鍙� 鍏ュ簱棰勮皟搴� - List<Integer> staNos = Arrays.asList(1042, 1043, 1105, 1104); + List<Integer> staNos = Arrays.asList( 1043, 1104,1037); for (Integer staNo : staNos) { SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(staNo); @@ -3520,10 +3602,14 @@ 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鐩爣绔欑偣 + switch (staNo){ + case 1043: rgvCommand.setTargetPosition1(1042);break; //宸ヤ綅1鐩爣绔欑偣 + case 1104: rgvCommand.setTargetPosition1(1105);break; + case 1037: rgvCommand.setTargetPosition1(1036);break; + + } + if(Objects.equals(basRgvMap.getNowRoute(), staNo)){ + continue; } rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 if (!MessageQueue.offer(SlaveType.Rgv, (int) rgvProtocol.getRgvNo(), new Task(4, rgvCommand))) { @@ -3864,6 +3950,96 @@ } } + + /* + * 灏忚溅鍙栬揣鑷冲弻宸ヤ綅浠诲姟 + * */ + public synchronized boolean rgvTakeFullAll2(Integer rgvId,WrkMastSta wrkMastSta,WrkMastSta wrkMastSta2){ + try{ + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + RgvCommand rgvCommand = new RgvCommand(); + boolean pakIn1 = true; + boolean pakIn2 = true; + rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 + if(wrkMastSta.getWrkSts() == 0) {//鍙栬揣 + if (wrkMastSta.getWorkSta() == 2) {//鍏ュ簱RGV鍙栬揣 + rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� + rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta2.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo1(wrkMastSta2.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition1(wrkMastSta2.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + rgvCommand.setWrkTaskPri((short) 2); //浼樺厛鎵ц宸ヤ綅2浠诲姟 + } else { //鍑哄簱RGV鍙栬揣 + rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� + rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 + rgvCommand.setWrkTaskPri((short) 1); //鍑哄簱鍙栬揣浼樺厛鎵ц宸ヤ綅1浠诲姟 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + } + if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(2, 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((wrkMastSta.getWorkSta() == 2)){ //宸ヤ綅2浠诲姟鏀捐揣 +// rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� +// rgvCommand.setTaskStatus2(RgvTaskStatusType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣 +// rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 +// rgvCommand.setTargetPosition2(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣 +// rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 +// pakIn2 = false; +// }else{ //宸ヤ綅1浠诲姟鏀捐揣 +// rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� +// rgvCommand.setTaskStatus1(RgvTaskStatusType.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; + } + } + /* * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔� * */ @@ -4015,4 +4191,59 @@ } } + + + + /* + * arm浠诲姟涓嬪彂 + * */ + public synchronized void armTaskAssignment() { + try{ + List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<>()); + for (BasArm basArm : basArmList) { + if (basArm.getStatus()!=1){ + continue; + } + try{ + List<BasArmMast> basArmMastListRuning = basArmMastService.selectList( + new EntityWrapper<BasArmMast>() + .eq("arm_no", basArm.getArmNo()) + .eq("sorting_line", basArm.getSortingLine()) + .eq("status", 1) + ); + if (basArmMastListRuning.isEmpty()){ + List<BasArmMast> basArmMastList = basArmMastService.selectList( + new EntityWrapper<BasArmMast>() + .eq("arm_no", basArm.getArmNo()) + .eq("sorting_line", basArm.getSortingLine()) + .eq("status", 0) + ); + if (basArmMastList.isEmpty()){ + continue; + } + if (basArmMastList.size()>1){ + log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫媶鐮佸灈浠诲姟寮傚父绂佹涓嬪彂锛侊紒锛佷换鍔″緟鎵ц鏁伴噺澶т簬1锛侊紒锛�"); + continue; + } + for (BasArmMast basArmMast:basArmMastList) { + ArmTaskAssignmentParam armTaskAssignmentParam = new ArmTaskAssignmentParam(basArmMast.getSortingLine()); + //璁剧疆宸ヤ綔绌洪棿灏辩华 + ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栦换鍔�",ArmConstant.ARM_URL, ArmConstant.ARM_WORKSPACE, armTaskAssignmentParam); + if (result.getCode()==200){ + basArmMast.setStatus(1); + basArmMastService.updateById(basArmMast); + } else { + log.error("鏈烘鑷傛姄鍙栦换鍔★細"+JSON.toJSON(basArmMast)+"===銆嬩换鍔′俊鎭笅鍙戝け璐�"); + } + } + } + } catch (Exception e){ + log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫媶鐮佸灈浠诲姟涓嬪彂澶辫触"+e.getMessage()); + } + } + }catch (Exception e){ + log.error("arm浠诲姟涓嬪彂澶辫触"+e.getMessage()); + } + } + } -- Gitblit v1.9.1