From 0c3be6d2bce1f9397ed06d745f22e3b479c0b70a Mon Sep 17 00:00:00 2001 From: zjj <zjj123456> Date: 星期六, 04 五月 2024 15:14:12 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 540 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 402 insertions(+), 138 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 6684db3..85c7aa0 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -45,10 +45,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Set; +import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -94,6 +92,8 @@ private BasRgvMapMapper basRgvMapMapper; @Autowired private WrkMastService wrkMastService; + @Autowired + private BasRgvMapService basRgvMapService; @Value("${wms.url}") private String wmsUrl; @@ -185,21 +185,49 @@ if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) { News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); + staProtocol.setWorkNo(wrkNo); + News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo); + wrkNo++; + staProtocol.setStaNo(inSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+inSta.getBackSta()); continue; } // 鍒ゆ柇閲嶅宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); if (wrkMast != null) { - News.error(methodName + ":宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo()); - if (ledThread != null) { - News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯"); - MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={" + wrkMast.getWrkNo() + "}, 璇锋墜鍔ㄥ彇娑堝凡瀛樺湪宸ヤ綔妗�")); + int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())); + if (wrkNo1 != 0){ + News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo()); + if (ledThread != null) { + News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯"); + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�="+ wrkMast.getWrkNo())); + } + continue; } - continue; + barcodeThread.setBarcode(""); + staProtocol.setWorkNo(wrkMast.getWrkNo()); + staProtocol.setStaNo(RouteUtils.SouStaEnd(null,wrkMast.getSourceStaNo())); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + log.info("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒))锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); + + ledThread.errorReset(); + log.info("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎"); + + if (!result) { + News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触"); + log.error("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒)==>鏇存柊plc绔欑偣淇℃伅澶辫触"); + +// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); + continue; + } + } WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>() .eq("barcode", barcode) - .in("io_type", 107,103)); + .in("io_type", 107,103,57)); if (!Cools.isEmpty(checkPick)) { continue; } @@ -222,27 +250,31 @@ StartupDto dto = jsonObject.getObject("data", StartupDto.class); barcodeThread.setBarcode(""); staProtocol.setWorkNo(dto.getWorkNo()); - staProtocol.setStaNo(dto.getStaNo().shortValue()); + staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo())); devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); log.error("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo()); + + ledThread.errorReset(); + log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎"); + if (!result) { News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触"); throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); } } else { -// staProtocol.setWorkNo(wrkNo); -// wrkNo++; -// staProtocol.setStaNo(inSta.getBackSta().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + staProtocol.setWorkNo(wrkNo); + wrkNo++; + staProtocol.setStaNo(inSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); // // if (ledThread != null) { -// String errorMsg = jsonObject.getString("msg"); -// if (!Cools.isEmpty(errorMsg)) { -// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); -// } + String errorMsg = jsonObject.getString("msg"); + if (!Cools.isEmpty(errorMsg)) { + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); + } // } // News.error(methodName + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); } @@ -393,7 +425,7 @@ StaDesc staDesc = staDescService.selectOne(wrapper); if (Cools.isEmpty(staDesc)) { News.error(""+mark+" - 2"+" - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); - staProtocol.setWorkNo(9989); + staProtocol.setWorkNo(wrkNo++); staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1)); devpThread.setPakMk(staProtocol.getSiteId(), false); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); @@ -403,7 +435,7 @@ // led 寮傚父鏄剧ず if (ledThread != null) { String errorMsg = "姝や负鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱.璇锋斁鍦�"+pickSta.getBackSta().shortValue()+"绔欑偣"; - MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errorMsg)); + MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); } continue; } @@ -450,7 +482,7 @@ // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 staProtocol.setWorkNo(wrkMast.getWrkNo()); - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + staProtocol.setStaNo((short) 161); devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); log.error("杈撻�佺嚎涓嬪彂5锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); @@ -467,6 +499,170 @@ } // News.infoNoLog(""+mark+" - 0"+" - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 ===銆嬫墽琛屽畬鎴�"); + } + + + //鐩樼偣鍐嶅叆搴� + public synchronized void stnToCrnStnPick2(){ + for (DevpSlave devp : slaveProperties.getDevp()) { + // 閬嶅巻鎷f枡鍏ュ簱鍙� + for (DevpSlave.Sta pickSta : devp.getPickSta()) { + // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() + && staProtocol.isLoading() + && staProtocol.isInEnable() + && !staProtocol.isEmptyMk() +// && staProtocol.getWorkNo() > 0 + && staProtocol.isPakMk()){ + + // 鑾峰彇鏉$爜鎵弿浠俊鎭� + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + if(!Cools.isEmpty(barcode)) { +// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode); + if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { + staProtocol.setWorkNo(wrkNo++); + staProtocol.setStaNo(pickSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + + // led 寮傚父鏄剧ず + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); + if (ledThread != null) { + String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; + MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); + } + continue; + } + } else { + staProtocol.setWorkNo(wrkNo++); + staProtocol.setStaNo(pickSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + + // led 寮傚父鏄剧ず + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); + if (ledThread != null) { + String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; + MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); + } + continue; + } + + WrkMast wrkMast = wrkMastMapper.selectPickStep2(barcode); + if (wrkMast == null) { + // 鏃犵洏鐐规暟鎹� + continue; + } + + // 鍑哄簱纭淇″彿浣� +// if ((Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) && wrkMast.getIoType() != 107) { +// continue; +// } +// if ( wrkMast.getIoType() != 107 || Cools.isEmpty(wrkMast.getStaNo()) +// || Cools.isEmpty(wrkMast.getSourceStaNo())) { +// continue; +// } + + // 鑾峰彇搴撲綅鍙� + try { + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo())); + LocTypeDto locTypeDto = new LocTypeDto(staProtocol); + SearchLocParam param = new SearchLocParam(); + param.setBarcode(barcode); + param.setIoType(107); + param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣 + if (!Cools.isEmpty(locMast)){ + param.setLocType1(locMast.getLocType1()); + }else { + param.setLocType1(locTypeDto.getLocType1()); + } + + String response = ""; + log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param); + try { + response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/pakin2/loc/v1") + .setJson(JSON.toJSONString(param)) +// .setTimeout(15, TimeUnit.SECONDS) + .build() + .doPost(); + } catch(Exception e){ + log.error("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param); + log.error("stnToCrnStnPick2===>>鐩樼偣鏌ュ簱浣嶅叆搴撴帴鍙eけ璐�", e); + e.printStackTrace(); + continue; + } + log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param); + log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"涓嬪彂鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS杩斿洖缁撴灉===>>" + response); + if(response.equals("")) { + continue; + } + JSONObject jsonObject = JSON.parseObject(response); + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); + Integer code = jsonObject.getInteger("code"); + if (code == 200) { + StartupDto dto = jsonObject.getObject("data", StartupDto.class); + if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getStaNo())) { + log.error("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶅け璐�===>>" + jsonObject.toJSONString()); + } else { + log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString()); + try { + // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 + staProtocol.setWorkNo(wrkMast.getWrkNo()); + staProtocol.setStaNo((short)161); + devpThread.setPakMk(staProtocol.getSiteId(), false); + + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + if (!result) { + log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); + } + log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol); + + ledThread.errorReset(); + log.error("鐩樼偣鍚巐ed閿欒鍒犻櫎"); + + } catch (Exception e) { + log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e); + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } + } else { + staProtocol.setWorkNo(wrkNo++); + staProtocol.setStaNo(pickSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + if (ledThread != null) { + String errorMsg = jsonObject.getString("msg"); + if (!Cools.isEmpty(errorMsg)) { + MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); + } + } + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response); + } + } catch (Exception e) { + log.error("stnToCrnStnPick2===>>fail", e); + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + + } + + } + + } } /** @@ -506,7 +702,7 @@ if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue()) && crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.forkPosType == CrnForkPosType.HOME) { - News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�"); + log.info("鍫嗗灈鏈哄嚭搴撳畬鎴� - 寮�濮嬫墽琛�"); // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- @@ -514,7 +710,10 @@ staProtocol.setWorkNo(wrkMast.getWrkNo()); staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo())); if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { + log.info(staProtocol.getWorkNo()+","+staProtocol.getStaNo()+"杈撻�佺嚎鍑哄簱鍛戒护涓嬪彂澶辫触"); continue; + }else { + log.info(staProtocol.getWorkNo()+","+staProtocol.getStaNo()+"杈撻�佺嚎鍑哄簱鍛戒护涓嬪彂鎴愬姛"); } // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触 @@ -522,6 +721,7 @@ wrkMast.setCrnEndTime(new Date()); if (wrkMastMapper.updateById(wrkMast) != 0) { // 澶嶄綅鍫嗗灈鏈� + News.error("鍑哄簱浠诲姟瀹屾垚涓嬪彂鍫嗗灈鏈哄浣�", wrkMast.getWrkNo()); crnThread.setResetFlag(true); } else { News.error(""+mark+" - 1"+" - 鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo()); @@ -1169,10 +1369,7 @@ // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) { News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔"); - if (crnProtocol.getTaskNo() == 9999) { - // 鍫嗗灈鏈哄浣� - crnThread.setResetFlag(true); - } else { + // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue()); if (wrkMast == null) { @@ -1191,12 +1388,13 @@ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 if (wrkMastMapper.updateById(wrkMast) > 0) { // 鍫嗗灈鏈哄浣� + log.error(wrkMast.getWrkNo()+"浠诲姟淇敼鐘舵��4鎴愬姛锛屽浣嶅爢鍨涙満={}",crnThread.getCrnProtocol().getCrnNo()); News.warnNoLog(""+mark+" - 2"+" - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}",crnThread.getCrnProtocol().getCrnNo()); crnThread.setResetFlag(true); } } - } + } // News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�"); } @@ -1401,7 +1599,7 @@ ledCommand.setLocNo(dto.getLocNo()); ledCommand.setStaNo(dto.getStaNo()); commands.add(ledCommand); - MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, commands)); + MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(1, commands)); // ledThread.errorReset(); } } else { @@ -1414,12 +1612,12 @@ // throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); // } // -// if (ledThread != null) { -// String errorMsg = jsonObject.getString("msg"); -// if (!Cools.isEmpty(errorMsg)) { -// MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(5, errorMsg)); -// } -// } + if (ledThread != null) { + String errorMsg = jsonObject.getString("msg"); + if (!Cools.isEmpty(errorMsg)) { + MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errorMsg)); + } + } // News.error(""+mark+" - 3"+" - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); } } catch (Exception e) { @@ -1441,7 +1639,6 @@ * 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣� */ public synchronized void ledExecute(Integer mark) { - for (LedSlave led : slaveProperties.getLed()) { // 鑾峰彇杈撻�佺嚎plc绾跨▼ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId()); @@ -1459,11 +1656,7 @@ } // 鑾峰彇宸ヤ綔妗f暟鎹� WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); -// if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; } - if (null == wrkMast) { - continue; - } - News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�:鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�"); + if (null == wrkMast) { continue; } wrkMasts.add(wrkMast); // 缁勮鍛戒护 LedCommand ledCommand = new LedCommand(); @@ -1494,16 +1687,34 @@ ledCommand.setEmptyMk(true); break; default: - News.error(""+mark+" - 1"+" - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType()); + News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType()); break; } ledCommand.setSourceLocNo(wrkMast.getSourceLocNo()); - ledCommand.setLocNo(wrkMast.getLocNo()); ledCommand.setStaNo(wrkMast.getStaNo()); -// ledCommand.setSourceStaNo(wrkMast.getSourceStaNo()); + ledCommand.setBarcode(wrkMast.getBarcode()); if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) { List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); - wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getSpecs()))); + + wrkDetls.forEach(wrkDetl -> { + Double total = 0.0; + EntityWrapper<LocDetl> wrapper = new EntityWrapper<>(); + LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr())); + if (Cools.isEmpty(locDetl)) { + total = wrkDetl.getAnfme(); + } else { + total = locDetl.getAnfme(); + } + if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) { + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total)); + } + if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) { + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total)); + } + if (wrkMast.getIoType() == 107) { + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total)); + } + }); } commands.add(ledCommand); } @@ -1514,32 +1725,11 @@ if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) { continue; } -// 鍛戒护涓嬪彂 ------------------------------------------------------------------------------- -// if (!commands.isEmpty()) { -// if (led.getId() < 7) { -// if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) { -// News.error(""+mark+" - 2"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort()); -// continue; -// } else { -// ledThread.setLedMk(false); -// } -// } else { -// if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) { -// News.error(""+mark+" - 3"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort()); -// continue; -// } else { -// ledThread.setLedMk(false); -// } -// } -// -// } // 鍛戒护涓嬪彂 ------------------------------------------------------------------------------- if (!commands.isEmpty()) { - if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) { - News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort()); + if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) { + News.error("{}鍙稬ED鏄剧ず鍐呭鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort()); continue; - }else { - ledThread.setLedMk(false); } } @@ -1549,7 +1739,6 @@ wrkMast.setOveMk("Y"); wrkMast.setModiTime(new Date()); if (wrkMastMapper.updateById(wrkMast) == 0) { - News.errorNoLog(""+mark+" - 4"+" - 鏇存柊宸ヤ綔妗eけ璐�"); throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�"); } } @@ -1563,17 +1752,13 @@ } } -// News.infoNoLog(""+mark+" - 0"+" - 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣ㄦ墽琛屽畬鎴�"); } /** * 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅 */ - public synchronized void ledReset(Integer mark) { - -// News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�:鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅"); + public synchronized void ledReset() { for (LedSlave led : slaveProperties.getLed()) { - // 鑾峰彇杈撻�佺嚎plc绾跨▼ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId()); // 鍛戒护闆嗗悎 @@ -1581,27 +1766,24 @@ for (Integer staNo : led.getStaArr()) { // 鑾峰彇鍙夎溅绔欑偣 StaProtocol staProtocol = devpThread.getStation().get(staNo); - if (staProtocol == null) { - continue; - } - if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) { + if (staProtocol == null) { continue; } + if (staProtocol.getWorkNo() != 0) { reset = false; break; } } // 鑾峰彇led绾跨▼ - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId()); // led鏄剧ず榛樿鍐呭 - if (reset && !ledThread.isLedMk()) { - ledThread.setLedMk(true); - if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) { - News.error(""+mark+" - 1"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort()); - } else { - + if (reset) { + if (ledThread == null) { + continue; + } + if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) { + News.error("{}鍙稬ED鏄剧ず榛樿鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort()); } } } -// News.infoNoLog(""+mark+" - 0"+" - 鎵ц瀹屾垚锛氬叾浠� ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅"); } /** @@ -2039,10 +2221,16 @@ public synchronized void autoEmptyOut() { - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); List<Integer> list = new ArrayList<>(); - list.add(102);list.add(111); + list.add(101);list.add(112); + Map<Integer,Integer> map = new HashMap<>(); + map.put(101,102);map.put(112,111); for (Integer site:list){ + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", map.get(site))); + if (!Cools.isEmpty(wrkMast)){ + continue; + } //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔� StaProtocol staProtocol = devpThread.getStation().get(site); if (staProtocol == null) { @@ -2060,7 +2248,7 @@ return; } Short loctype1 = 1; - if (site == 102){ + if (site == 101){ loctype1 = 2; } LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1); @@ -2074,10 +2262,10 @@ .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { - JSONObject data = (JSONObject) jsonObject.get("data"); - News.info((String) data.get("msg")); + String data = jsonObject.get("data").toString(); + News.info((String) jsonObject.get("msg")+","+data); } else { - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response); + News.warnNoLog("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response); } } catch (Exception e) { e.printStackTrace(); @@ -2089,7 +2277,7 @@ } public synchronized void autoEmptyIn() { - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); List<Integer> list = new ArrayList<>(); list.add(153);list.add(157); for (Integer site:list){ @@ -2143,7 +2331,7 @@ /* * 灏忚溅鍦板浘鏇存柊 鏇存柊閿� * */ - public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){ + public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,String sign){ // List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute()); //鏇存柊褰撳墠灏忚溅閿� @@ -2151,15 +2339,21 @@ Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐� Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤� basRgvMapCurrent.setLockEndRoute(fallMerge); - basRgvMapMapper.updateById(basRgvMapCurrent); + Integer i = basRgvMapMapper.updateById(basRgvMapCurrent); +// if (i>0){ +// log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫閿�,{}",sign,new Date(),basRgvMapCurrent.getRgvNo(),JSON.toJSONString(basRgvMapCurrent)); +// } //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥� - Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(); + Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo()); BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther); List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute()); Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃� basRgvMapOther.setEndRoute(lockEndRoute); - basRgvMapMapper.updateById(basRgvMapOther); + Integer i1 = basRgvMapMapper.updateById(basRgvMapOther); +// if (i1>0){ +// log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫浣嶇疆,{}",sign,new Date(),basRgvMapOther.getRgvNo(),JSON.toJSONString(basRgvMapOther)); +// } return true; }catch (Exception e){ log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�"); @@ -2172,28 +2366,57 @@ * */ public synchronized void refreshRgvMap() { try{ - for (RgvSlave rgvSlave:slaveProperties.getRgv()) { - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + 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.getId()); + BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); if (basRgv == null) { - log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�2", rgvSlave.getId()); + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�2", rgvSlave.getRgvNo()); continue; } // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 - if (rgvProtocol.getStatusType() == RgvStatusType.IDLE - && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 - && (rgvProtocol.getTaskNo1()==0 || rgvProtocol.getTaskNo1()==9999) - + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE && + rgvProtocol.getModeType() == RgvModeType.AUTO + && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 + && (rgvProtocol.getTaskNo1()==0) + &&rgvThread.isPakMk() ) { BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); - rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); + + Integer rgvNoOther = basRgvMap.getRgvNoOther(rgvProtocol.getRgvNo()); + RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther); + RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol(); + if (rgvProtocolOther == null) { + continue; + }else { + rgvProtocolOther = rgvProtocolOther.clone(); + } + if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE + && rgvProtocolOther.getModeType() == RgvModeType.AUTO + && rgvProtocolOther.getLoaded1()==0 + && (rgvProtocolOther.getTaskNo1()==0) + &&rgvThreadOther.isPakMk() + ){ + //瀵瑰伐浣滄。杩涜鍒ゆ柇 + basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); + if (rgvProtocol.getTaskNo1() >0 && rgvProtocol.getTaskNo1()<=9000){ + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue()); + rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2366"); + }else if (rgvProtocol.getTaskNo1() == 0){ + rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2366"); + } + + } + + + } } }catch (Exception e){ @@ -2209,15 +2432,18 @@ public synchronized void rgvCompleteWrkMastSta() { try{ for (DevpSlave devp : slaveProperties.getDevp()) { - for (RgvSlave rgvSlave:slaveProperties.getRgv()) { - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + 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.getId()); + BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); if (basRgv == null) { - log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgvSlave.getId()); + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgvSlave.getRgvNo()); continue; } @@ -2235,7 +2461,8 @@ } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); - rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); + rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415"); + rgvThread.setPakMk(true); break; } WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue()); @@ -2244,8 +2471,13 @@ continue; } - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ continue; } @@ -2262,6 +2494,19 @@ if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) { continue; } + }else { + log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护,浣嗘湭鏌ヨ鍒板伐浣滄。"); + // 涓嬪彂绔欑偣淇℃伅 + Map<Integer,Integer> map = new HashMap<>(); + map.put(101,102);map.put(112,111); + map.put(100,100); + staProtocol.setWorkNo(rgvProtocol.getTaskNo1().intValue()); + staProtocol.setStaNo(map.get(rgvProtocol.getRgvPosI()).shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); +// log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); + if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) { + continue; + } } boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); // boolean rgvComplete = true; @@ -2269,11 +2514,17 @@ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); break; } + WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1().intValue()); + wrkMast1.setPdcType("Y"); + + wrkMastService.updateById(wrkMast1); + wrkMastSta.setWrkSts(3); wrkMastStaMapper.updateById(wrkMastSta); BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); - rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); + rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471"); + rgvThread.setPakMk(true); } else { @@ -2292,15 +2543,18 @@ public synchronized void rgvRunWrkMastFullSta() { boolean wrkEnable = false; try{ - for (RgvSlave rgvSlave:slaveProperties.getRgv()) { - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + 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.getId()); + BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); if (basRgv == null) { - log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getId()); + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo()); continue; } @@ -2308,6 +2562,8 @@ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getLoaded1()==0 + && rgvProtocol.getTaskNo1() == 0 + && rgvThread.isPakMk() ) { BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); if (basRgvMap == null) { @@ -2324,11 +2580,14 @@ boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 wrkEnable = true; if (sign){ - boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd()); + rgvThread.setPakMk(false); + boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); if (signMap){ + Thread.sleep(300); wrkMastSta.setWrkSts(1); try{ wrkMastStaMapper.updateById(wrkMastSta); + return; }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } @@ -2490,36 +2749,41 @@ if (integer==0){ return; } - for (RgvSlave rgvSlave:slaveProperties.getRgv()) { - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + 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.getId()); + BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); if (basRgv == null) { - log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getId()); + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo()); continue; } // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO -// && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 + && 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) ){ - continue; - } +// if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){ +// continue; +// } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157) ){ +// continue; +// } rgvAvoidanceXY(rgvProtocol.getRgvNo()); - rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); + rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727"); } } }catch (Exception e){ @@ -2532,9 +2796,10 @@ * 灏忚溅XY绉诲姩 閬胯 * */ public synchronized boolean rgvAvoidanceXY(Integer rgvId){ - if (rgvId==1){ + BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId); + if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){ try{ - BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId); + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- RgvCommand rgvCommand = new RgvCommand(); rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 @@ -2542,7 +2807,7 @@ rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� //basRgvMap.getLockStartRoute().shortValue() - rgvCommand.setSourceStaNo1( (short)100); + 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浠诲姟鍙� @@ -2557,7 +2822,6 @@ } }else { try{ - BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId); // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- RgvCommand rgvCommand = new RgvCommand(); rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 @@ -2565,7 +2829,7 @@ rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� //basRgvMap.getLockStartRoute().shortValue() - rgvCommand.setSourceStaNo1( (short)157); + 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浠诲姟鍙� -- Gitblit v1.9.1