From fb74f60f1d8397acf5251ae289e80ab8a056857f Mon Sep 17 00:00:00 2001 From: 1 <1> Date: 星期四, 09 十月 2025 09:08:05 +0800 Subject: [PATCH] #和得服务器 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1804 ++++++++++++++++++++++++--------------------------------- 1 files changed, 756 insertions(+), 1,048 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 ba96987..d770187 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.core.common.DateUtils; +import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.ArmOrderAssignmentParam; @@ -99,6 +100,8 @@ @Autowired private WrkMastService wrkMastService; @Autowired + private WrkMastStaService wrkMastStaService; + @Autowired private BasRgvMapService basRgvMapService; @Autowired private BasArmService basArmService; @@ -114,7 +117,7 @@ private Integer inventoryNumber; public Integer wrkNo = 10000; - + public static final List<Integer> LEFT_POSITION = Arrays.asList(1018,2018); /** * 缁勬墭 * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 @@ -127,7 +130,6 @@ for (DevpSlave.Sta inSta : devp.getInSta()) { // 鑾峰彇鏉$爜鎵弿浠俊鎭� BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); - BarcodeThread barcodeThreadMat = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcodeMat()); LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); @@ -141,13 +143,9 @@ continue; } - if (barcodeThreadMat == null) { - continue; - } String barcode = barcodeThread.getBarcode(); - String barcodeMat = barcodeThreadMat.getBarcode(); // 灏哄妫�娴嬪紓甯� boolean back = false; String errMsg = ""; @@ -200,7 +198,9 @@ wrkNo++; staProtocol.setStaNo(inSta.getBackSta().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); + staProtocol.setPakMk(false); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + System.out.println(staProtocol); log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+inSta.getBackSta()); } @@ -210,7 +210,8 @@ && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && staProtocol.isPakMk()) { - if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) { + if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) { +// News.error(JSON.toJSONString(staProtocol)); News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); // led 寮傚父鏄剧ず if (ledThread != null) { @@ -246,6 +247,11 @@ int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())); if (wrkNo1 != 0){ News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo()); + StaProtocol staProtocolNew = new StaProtocol(); + staProtocolNew.setWorkNo(wrkNo1); + staProtocolNew.setStaNo(RouteUtils.SouStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo())); + staProtocolNew.setSiteId(staProtocol.getSiteId()); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolNew)); if (ledThread != null) { News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯"); MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�="+ wrkMast.getWrkNo())); @@ -337,6 +343,7 @@ // } // } else { + News.error(JSON.toJSONString(staProtocol)); staProtocol.setWorkNo(wrkNo); wrkNo++; staProtocol.setStaNo(inSta.getBackSta().shortValue()); @@ -973,7 +980,7 @@ //mark - 3 - .... this.locToLoc(crn, crnProtocol,mark); //棰勮皟搴� - this.crnRebackHp(crnProtocol, crnThread); +// this.crnRebackHp(crnProtocol, crnThread); } // News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚"); @@ -1048,68 +1055,68 @@ } else { staProtocol = staProtocol.clone(); } - if (slave.getId() == 3) { - SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); - StaProtocol staProtocol2 = devpThread1.getStation().get(4001); - if (staProtocol2 == null) { - News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2); - break; - } else { - staProtocol2 = staProtocol2.clone(); - } - WrkMast wrkMast9999 = wrkMastMapper.selectByWrkNo(9996); - BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); - if (staDetl == null) { - News.error(""+mark+" - 2"+" - 5"+" - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); - break; -// continue; - } - if(wrkMast9999 != null && staProtocol2.isAutoing() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")){ - // 鍫嗗灈鏈烘帶鍒惰繃婊� - if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { -// continue; - break; - } - // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� - if (wrkMastMapper.selectWorking(slave.getId()) != null) { - break; -// return; - } - // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskNo((short) 9996); // 宸ヤ綔鍙� -// crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX((short) 5); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY((short) 1); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ((short) 4); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX((short) 6); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY((short) 1); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� -// crnCommand.setTraySize(sourceSta.getLocType1() == 2); //搴撲綅绫诲瀷 - if (!MessageQueue.offer(SlaveType.Crn, wrkMast9999.getCrnNo(), new Task(2, crnCommand))) { - News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast9999.getCrnNo(), JSON.toJSON(crnCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� - Date now = new Date(); - wrkMast9999.setWrkSts(3L); - wrkMast9999.setCrnStrTime(now); - wrkMast9999.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast9999) == 0) { - News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast9999.getWrkNo()); - } - break; - } - } - } +// if (slave.getId() == 3) { +// SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); +// StaProtocol staProtocol2 = devpThread1.getStation().get(4001); +// if (staProtocol2 == null) { +// News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2); +// break; +// } else { +// staProtocol2 = staProtocol2.clone(); +// } +// WrkMast wrkMast9999 = wrkMastMapper.selectByWrkNo(9996); +// BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); +// if (staDetl == null) { +// News.error(""+mark+" - 2"+" - 5"+" - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); +// break; +//// continue; +// } +// if(wrkMast9999 != null && staProtocol2.isAutoing() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")){ +// // 鍫嗗灈鏈烘帶鍒惰繃婊� +// if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { +//// continue; +// break; +// } +// // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� +// if (wrkMastMapper.selectWorking(slave.getId()) != null) { +// break; +//// return; +// } +// // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� +// CrnCommand crnCommand = new CrnCommand(); +// crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� +// crnCommand.setTaskNo((short) 9996); // 宸ヤ綔鍙� +//// crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� +// crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 +// crnCommand.setSourcePosX((short) 5); // 婧愬簱浣嶆帓 +// crnCommand.setSourcePosY((short) 1); // 婧愬簱浣嶅垪 +// crnCommand.setSourcePosZ((short) 4); // 婧愬簱浣嶅眰 +// crnCommand.setDestinationPosX((short) 6); // 鐩爣搴撲綅鎺� +// crnCommand.setDestinationPosY((short) 1); // 鐩爣搴撲綅鍒� +// crnCommand.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� +//// crnCommand.setTraySize(sourceSta.getLocType1() == 2); //搴撲綅绫诲瀷 +// if (!MessageQueue.offer(SlaveType.Crn, wrkMast9999.getCrnNo(), new Task(2, crnCommand))) { +// News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast9999.getCrnNo(), JSON.toJSON(crnCommand)); +// } else { +// // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� +// Date now = new Date(); +// wrkMast9999.setWrkSts(3L); +// wrkMast9999.setCrnStrTime(now); +// wrkMast9999.setModiTime(now); +// if (wrkMastMapper.updateById(wrkMast9999) == 0) { +// News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast9999.getWrkNo()); +// } +// break; +// } +// } +// } // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); if (staDetl == null) { News.error(""+mark+" - 1"+" - 2"+" - 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); continue; } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { flag = true; } @@ -1349,10 +1356,10 @@ // continue; } // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� -// if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") +// if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") // && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { - if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") + if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") && !staProtocol.isLoading() ) { // if (slave.getId() == 1 || slave.getId() == 2){ // if (staProtocol.isLoading() || staProtocol.getWorkNo() != 0 || !staProtocol.isOutEnable()){ @@ -2562,18 +2569,18 @@ public synchronized void autoEmptyOut() { SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); List<Integer> list = new ArrayList<>(); - list.add(1108);list.add(2031); + list.add(1109);list.add(2031); for (Integer site:list){ Integer emptyCount = wrkMastMapper.countPakOutEmpty(site); StaProtocol staProtocol = null; - if(emptyCount >= 2 && site == 1108){ + if(emptyCount >= 2 && site == 1109){ continue; }else if(emptyCount == 1 && site == 2031){ continue; } //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔� switch (site){ - case 1108:staProtocol = devpThread.getStation().get(site - 2);break; + case 1109:staProtocol = devpThread.getStation().get(site - 2);break; case 2031:staProtocol = devpThread.getStation().get(site);break; } if (staProtocol == null) { @@ -2613,11 +2620,12 @@ } public synchronized void autoEmptyIn() { - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); List<Integer> list = new ArrayList<>(); list.add(1038); for (Integer site:list){ StaProtocol staProtocol = devpThread.getStation().get(site); + StaProtocol staProtocol1 = devpThread.getStation().get(1040); if (staProtocol == null) { return; } else { @@ -2627,9 +2635,11 @@ && staProtocol.isLoading() //鏈夌墿 && staProtocol.isInEnable() //鍙叆淇″彿 && staProtocol.isPakMk() - && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛� + && staProtocol1.isFull() //鍙犳弧淇″彿 + && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990 ) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛� ) { + System.out.println(staProtocol); try { Short loctype1 = 1; LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1); @@ -2790,46 +2800,107 @@ // } // } - + /** + * 灏忚溅涓婂伐浣嶅乏鍙崇Щ鍔� + * + */ +// public synchronized boolean rgvStaMove(Long workNo) { +// try { +// for (RgvSlave rgv : slaveProperties.getRgv()) { +// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); +// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); +// if (rgvProtocol == null) { +// continue; +// } else { +// rgvProtocol = rgvProtocol.clone(); +// } +// if (rgvProtocol.isLoaded2ing() && rgvProtocol.isLoaded1ing()) { +// continue; +// } +// if (rgvProtocol.isLoaded1ing() && !rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo1() != 0) { +// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1()); +// Short moveSta = 0; +// +// if (wrkMastSta.getStaEnd() < 1036 || (2000 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd() < 2031)) { +// moveSta = 2; +// boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(), 7, wrkMastSta.getWrkNo(), moveSta); +// if (!rgvComplete) { +// log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); +// break; +// } +// } +// } +// if (!rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo2() != 0) { +// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2()); +// Short moveSta = 0; +// +// if (wrkMastSta.getStaEnd() > 2030 || (1036 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd() < 2000)) { +// moveSta = 1; +// boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(), 8, wrkMastSta.getWrkNo(), moveSta); +// if (!rgvComplete) { +// log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); +// break; +// } +// } +// } +// +// +// } +// } catch (Exception e) { +// log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�" + e); +// } +// } /** * 瀹屾垚灏忚溅浠诲姟 */ - public synchronized void rgvCompleteWrkMastSta() { - try{ - for (DevpSlave devp : slaveProperties.getDevp()) { - List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); - for (RgvSlave rgv : slaveProperties.getRgv()) { - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); - RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); - if (rgvProtocol == null) { - continue; - }else { - rgvProtocol = rgvProtocol.clone(); - } - BasRgv basRgv = basRgvService.selectById(rgv.getId()); - if (basRgv == null) { - log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgv.getId()); - continue; - } - - // 鍙湁褰揜GV宸ヤ綅1绛夊緟WCS纭銆佽嚜鍔� - if ((rgvProtocol.getStatusType1() == RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING) - && rgvProtocol.getModeType() == RgvModeType.AUTO - && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1) - ){ - - log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); - if(rgvProtocol.getTaskNo1() == 9999){ // 棰勮皟搴︿换鍔$‘璁� - BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - Integer staNo = basRgvMap.getNowRoute(); - switch (staNo){ - case 1004: staNo = 1042; break; - case 1007: staNo = 1105; break; - } - - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(staNo); - boolean rgvComplete = false; +// public synchronized void rgvCompleteWrkMastSta() { +// try{ +// for (DevpSlave devp : slaveProperties.getDevp()) { +// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); +// for (RgvSlave rgv : slaveProperties.getRgv()) { +// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); +// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); +// if (rgvProtocol == null) { +// continue; +// }else { +// rgvProtocol = rgvProtocol.clone(); +// } +// BasRgv basRgv = basRgvService.selectById(rgv.getId()); +// if (basRgv == null) { +// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgv.getId()); +// continue; +// } +// //鏀捐揣纭 +// if(rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){ +// boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3); +// if (!rgvComplete){ +// log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); +// } +// } +// if(rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){ +// boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 6); +// if (!rgvComplete){ +// log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); +// } +// } +// +// // 鍙湁褰揜GV宸ヤ綅1绛夊緟WCS纭銆佽嚜鍔� +// if (rgvProtocol.getStatusType1() == RgvStatusType.WAITING +// && rgvProtocol.getModeType() == RgvModeType.AUTO +// ){ +// +// log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType1(),rgvProtocol); +// if(rgvProtocol.getTaskNo1() == 9999){ // 棰勮皟搴︿换鍔$‘璁� +// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); +// Integer staNo = basRgvMap.getNowRoute(); +// switch (staNo){ +// case 1004: staNo = 1042; break; +// case 1007: staNo = 1105; break; +// } +// +// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(staNo); +// boolean rgvComplete = false; // long now = System.currentTimeMillis(); // if (staProtocol.isLoading()) { @@ -2839,210 +2910,140 @@ // rgvProtocol.setLoadingStartTime(now); // } // } +// +// if (staProtocol.isLoading()) { +// rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3); +// if (!rgvComplete){ +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�", rgvProtocol.getRgvNo()); +// } +// } +// } +// if ( rgvProtocol.getTaskNo1()!=9999 && rgvProtocol.getTaskNo1() != 0){ +// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1()); +// if(null == wrkMastSta){ +// log.error("灏忚溅鏃犱换鍔�"); +// continue; +// } +// if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭 +//// if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){ +//// continue; +//// } +// boolean rgvComplete = false; +// rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),7,wrkMastSta.getWrkNo(),(short)2); +// if (!rgvComplete){ +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); +// break; +// } +// wrkMastSta.setUpdateTime(new Date()); +// wrkMastSta.setWrkSts(2); +// try{ +// wrkMastStaMapper.updateById(wrkMastSta); +// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); +// }catch (Exception e){ +// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); +// } +// break; +// } +// } +// +// else { +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo()); +// } +// } +// // 鍙湁褰揜GV宸ヤ綅2绛夊緟WCS纭銆佽嚜鍔� +// if (rgvProtocol.getStatusType2() == RgvStatusType.WAITING +// && rgvProtocol.getModeType() == RgvModeType.AUTO +// ){ +// log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType2(),rgvProtocol); +// if (rgvProtocol.getTaskNo2() !=0 ){ +// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2()); +// if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭 +// boolean rgvComplete = false; +// rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),8,wrkMastSta.getWrkNo(),(short)1); +// if (!rgvComplete){ +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); +// break; +// } +// wrkMastSta.setWrkSts(2); +// try{ +// wrkMastStaMapper.updateById(wrkMastSta); +// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); +// }catch (Exception e){ +// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); +// } +// break; +// } +// if(wrkMastSta.getWrkSts() == 4){//琛岃蛋鍚庣‘璁� +// wrkMastSta.setWrkSts(2); +// try{ +// wrkMastStaMapper.updateById(wrkMastSta); +// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); +// }catch (Exception e){ +// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); +// } +// boolean rgvComplete = false; +// +// rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); +// if (!rgvComplete){ +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); +// break; +// } +// break; +// } +// if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){ +// log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta); +// continue; +// } - if (staProtocol.isLoading()) { - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�", rgvProtocol.getRgvNo()); - } - } - } - if (rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo1()!=9999){ - WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1()); - if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭 - wrkMastSta.setWrkSts(4); //琛岃蛋鐘舵�� - try{ - wrkMastStaMapper.updateById(wrkMastSta); - log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); - }catch (Exception e){ - log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } - boolean rgvComplete = false; +// 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; +// } +// WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); +// +// int sourceSta = wrkMast.getSourceStaNo(); +// boolean rgvComplete = false; +// +// //鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅 +// rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6); - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - break; - } - if(wrkMastSta.getWrkSts() == 4){//琛岃蛋纭 - wrkMastSta.setWrkSts(2); - try{ - wrkMastStaMapper.updateById(wrkMastSta); - log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); - }catch (Exception e){ - log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } - boolean rgvComplete = false; - - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - break; - } - if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){ - log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta); - continue; - } - - 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; - } - WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); - if (!Cools.isEmpty(wrkMast)){ - if (!staProtocol.isPakMk()){ - continue; - } - // 涓嬪彂绔欑偣淇℃伅 - staProtocol.setWorkNo(wrkMast.getWrkNo()); - staProtocol.setStaNo(wrkMast.getStaNo().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 = false; - - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1()); - 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(),"2471"); - } - - else { - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo()); - } - } - // 鍙湁褰揜GV宸ヤ綅2绛夊緟WCS纭銆佽嚜鍔� - if ((rgvProtocol.getStatusType2() == RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING) - && rgvProtocol.getModeType() == RgvModeType.AUTO - && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1) - ){ - log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); - if (rgvProtocol.getTaskNo2() !=0 ){ - WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1()); - if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭 - wrkMastSta.setWrkSts(4); //琛岃蛋鐘舵�� - try{ - wrkMastStaMapper.updateById(wrkMastSta); - log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); - }catch (Exception e){ - log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } - boolean rgvComplete = false; - - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - break; - } - if(wrkMastSta.getWrkSts() == 4){//琛岃蛋鍚庣‘璁� - wrkMastSta.setWrkSts(2); - try{ - wrkMastStaMapper.updateById(wrkMastSta); - log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); - }catch (Exception e){ - log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } - boolean rgvComplete = false; - - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - break; - } - if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){ - log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta); - continue; - } - - 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; - } - WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); - if (!Cools.isEmpty(wrkMast)){ - if (!staProtocol.isPakMk()){ - continue; - } - // 涓嬪彂绔欑偣淇℃伅 - staProtocol.setWorkNo(wrkMast.getWrkNo()); - staProtocol.setStaNo(wrkMast.getStaNo().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; - } - } - int sourceSta = wrkMast.getSourceStaNo(); - boolean rgvComplete = false; - - //鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅 - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6); - - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1()); - 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(),"2471"); - } - else { - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo()); - } - } - //褰撳皬杞︽棤浠诲姟鏃跺彇娑堥攣瀹� - if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0){ - rgvThread.setPakMk(true); - rgvThread.setPakIn(true); - rgvThread.setPakOut(true); - } - } - } - }catch (Exception e){ - log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); - } - } +// if (!rgvComplete){ +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); +// break; +// } +// WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1()); +// 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(),"2471"); +// } +// else { +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭锛�",rgvProtocol.getRgvNo()); +// } +// } +// //褰撳皬杞︽棤浠诲姟鏃跺彇娑堥攣瀹� +// if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0){ +// rgvThread.setPakMk(true); +// rgvThread.setPakIn(true); +// rgvThread.setPakOut(true); +// } +// } +// } +// }catch (Exception e){ +// log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); +// } +// } /** * rgv鏀捐揣浠诲姟涓嬪彂 @@ -3052,7 +3053,7 @@ // 鑾峰彇RGV淇℃伅 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); - if (rgvProtocol == null) { + if (rgvProtocol.getStatusType1() != RgvStatusType.IDLE && rgvProtocol.getModeType() != RgvModeType.AUTO) { continue; } BasRgv basRgv = basRgvService.selectById(rgv.getId()); @@ -3060,12 +3061,21 @@ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId()); continue; } + if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){ + rgvThread.setPaking(true); + } //灏忚溅鏃犱换鍔℃椂璺宠繃 - if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0){ + if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0 ){ continue; } - //鍏ュ簱鏀捐揣 - if(rgvThread.isPakIn()){ + if(!rgvThread.isPaking()){ + continue; + + } + if(!basRgv.getPakAll().equals("1")){ + continue; + } + if(basRgv.getPakIn().equals("1")){ for(RgvSlave.RgvStn rgvStn : rgv.getRgvInPStn()){//鍏ュ簱鏀捐揣绔欑偣 boolean flag = false; @@ -3084,8 +3094,7 @@ continue; } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() - && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { flag = true; } if (!flag) { @@ -3096,39 +3105,38 @@ continue; } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� - Integer wrkNo = 0; - if(rgvProtocol.getTaskNo2() != 0){ - wrkNo = rgvProtocol.getTaskNo2(); - }else{ - wrkNo = rgvProtocol.getTaskNo1(); - } - WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + Integer workNo = rgvProtocol.getTaskNo2() !=0 ? rgvProtocol.getTaskNo2() : rgvProtocol.getTaskNo1(); //鍏ュ簱鏀捐揣浼樺厛宸ヤ綅2鎵ц + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNoPut(workNo); + WrkMast wrkMast = wrkMastMapper.selectByWrkNo(workNo); if( null == wrkMastSta ) { News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } - boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂 + + + boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 if (sign){ try{ + rgvThread.setPaking(false); + wrkMast.setSheetNo("2"); + wrkMastSta.setWrkSts(2); wrkMastStaMapper.updateById(wrkMastSta); + wrkMastMapper.updateById(wrkMast); log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } - boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); - if (!signMap){ - log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); } } else { log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); } } + basRgv.setPakRgv("1"); + basRgvService.updateById(basRgv); } //鍑哄簱鏀捐揣 - if( rgvThread.isPakOut()){ + if( basRgv.getPakOut().equals("1")){ for(RgvSlave.RgvStn rgvStn : rgv.getRgvOutPStn()){//鍏ュ簱鏀捐揣绔欑偣 boolean flag = false; @@ -3147,8 +3155,7 @@ continue; } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isOutEnable() - && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { flag = true; } if (!flag) { @@ -3159,50 +3166,45 @@ continue; } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� - Integer wrkNo = 0; - if(rgvProtocol.getTaskNo1() != 0){ - wrkNo = rgvProtocol.getTaskNo1(); + Integer workNo = 0; + if(basRgv.getPakToCrn().equals("1")){ + workNo = rgvProtocol.getTaskNo1() !=0 ? rgvProtocol.getTaskNo1():rgvProtocol.getTaskNo2(); //姝e父鎯呭喌鍑哄簱鏀捐揣浼樺厛宸ヤ綅1鏀� }else{ - wrkNo = rgvProtocol.getTaskNo2(); + workNo = rgvProtocol.getTaskNo2() !=0 ? rgvProtocol.getTaskNo2():rgvProtocol.getTaskNo1(); //鎺ラ┏鎯呭喌浼樺厛宸ヤ綅2鏀� } - WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNoPut(workNo);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + if( null == wrkMastSta ) { News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍑哄簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } - wrkMastSta.setWrkSts(2); - boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂 + boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 if (sign){ try{ + rgvThread.setPaking(false); + wrkMastSta.setWrkSts(2); wrkMastStaMapper.updateById(wrkMastSta); log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } - boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); - if (!signMap){ - log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); - } + } else { log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); } } + basRgv.setPakRgv("1"); + basRgvService.updateById(basRgv); } - rgvThread.setPakRgv(true);//浼樺厛鏀捐揣瀹屾垚锛屽紑鍚璋冨害 } } - - - - /** - * rgv鍑哄叆搴撲换鍔′笅鍙� - */ - public synchronized void rgvIoExecute(Integer mark) { - List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); - + /** + * rgv浠诲姟瀹屾垚 + */ + public synchronized void rgvTaskComplete(){ for (RgvSlave rgv : slaveProperties.getRgv()) { // 鑾峰彇鍫嗗灈鏈轰俊鎭� RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); @@ -3215,58 +3217,137 @@ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId()); continue; } + Long taskNo1 = Long.valueOf(rgvProtocol.getTaskNo1()); + Long taskNo2 = Long.valueOf(rgvProtocol.getTaskNo2()); + List<WrkMastSta> wrkMastStaList = wrkMastStaService.selectList( + new EntityWrapper<WrkMastSta>() + .eq("wrk_sts" ,2) + .eq("rgv_no", rgvProtocol.getRgvNo()) + ); + for(WrkMastSta wrkMastSta : wrkMastStaList){ + if(!Objects.equals(wrkMastSta.getWrkNo(), taskNo1) && !Objects.equals(wrkMastSta.getWrkNo(), taskNo2)){ + try{ + wrkMastSta.setWrkSts(3); + wrkMastStaMapper.updateById(wrkMastSta); + log.info("鏇存柊灏忚溅宸ヤ綔妗h嚦瀹屾垚鎴愬姛"); + }catch (Exception e){ + log.error("鏇存柊灏忚溅宸ヤ綔妗h嚦瀹屾垚澶辫触"); + } + } + } + if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 + && !rgvProtocol.isLoaded1ing() + && !rgvProtocol.isLoaded2ing()){ + List<WrkMastSta> wrkMastStaLock = wrkMastStaService.selectLockWrk(); + List<WrkMastSta> wrkMastStaLockT = wrkMastStaService.selectLockWrkT(); + if(wrkMastStaLock.size() > 0 && rgvProtocol.getRgvNo() == 1){ + continue ; + } + if(wrkMastStaLockT.size() > 0 && rgvProtocol.getRgvNo() == 2){ + continue ; + } + basRgv.setPakRgv("1"); + basRgv.setPakToCrn("1"); + basRgv.setPakIn("1"); + basRgv.setPakOut("1"); + basRgv.setPakAll("1"); + basRgvService.updateById(basRgv); + rgvThread.setPakMk(true); + } + + } + } + + + /** + * rgv鍑哄叆搴撲换鍔′笅鍙� + */ + public synchronized void rgvIoExecute(Integer mark) { + for (RgvSlave rgv : slaveProperties.getRgv()) { + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + } + + BasRgv basRgv = basRgvService.selectById(rgv.getId()); + if (basRgv == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId()); + continue; + } + if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){ + rgvThread.setPaking(true); + } + if(rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing()){ + basRgv.setPakAll("1"); + basRgvService.updateById(basRgv); + } // 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� - if ((rgvProtocol.getStatusType1() == RgvStatusType.IDLE || rgvProtocol.getStatusType2() == RgvStatusType.IDLE) -// && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvThread.isPakMk()) { + if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && + rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk() + && basRgv.getPakToCrn().equals("1") && rgvThread.isPaking()) { News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�"); // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 // rgvRunWrkMastInTest(); if (rgvProtocol.getLastIo().equals("I")) { - if (basRgv.getInEnable().equals("1") && rgvThread.isPakIn()) { + if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) { //mark - 1 - .... - this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 鍏ュ簱 + if (rgvProtocol.getTaskNo1()==0){ + this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 鍏ュ簱 + } rgvProtocol.setLastIo("O"); - } else if (basRgv.getOutEnable().equals("1") && rgvThread.isPakOut()) { + } else if (basRgv.getOutEnable().equals("1") && basRgv.getPakOut().equals("1")) { //mark - 2 - .... - this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱 + if (rgvProtocol.getTaskNo2()==0){ + this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱 + } rgvProtocol.setLastIo("I"); } } // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡 else if (rgvProtocol.getLastIo().equals("O")) { - if (basRgv.getOutEnable().equals("1") && rgvThread.isPakOut()) { - this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱 + if (basRgv.getOutEnable().equals("1") && basRgv.getPakOut().equals("1")) { + if (rgvProtocol.getTaskNo2()==0){ + this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱 + } rgvProtocol.setLastIo("I"); - } else if (basRgv.getInEnable().equals("1") && rgvThread.isPakIn()) { - this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 鍏ュ簱 + } else if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) { + if (rgvProtocol.getTaskNo1()==0){ + this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 鍏ュ簱 + } rgvProtocol.setLastIo("O"); } } - WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo()); - WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo()); - if(wrkMastSta1 != null && wrkMastSta2 != null){ - rgvThread.setPakMk(false); //灏忚溅鍙屽伐浣嶉攣瀹� - } } - if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){ - rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣 + WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo()); + WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo()); + if(wrkMastSta1 != null && wrkMastSta2 != null){ + rgvThread.setPakMk(false); //灏忚溅鍙屽伐浣嶉攣瀹� } +// if(!rgvThread.isPakToCrn()){ +// rgvRunWrkToCrn(rgv, rgvProtocol,mark); //鑻ュ皬杞﹀彇鍒颁竴涓帴椹充换鍔★紝绗簩涓伐浣嶅彧鑳藉彇鎺ラ┏浠诲姟 +// } +// if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){ +// rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣 +// } - if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getStatusType2() == RgvStatusType.IDLE - && rgvProtocol.getModeType() == RgvModeType.AUTO) { - //灏忚溅鎵ц鏀捐揣浠诲姟 - rgvOutExecute(); - } +// if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO) { +// //灏忚溅鎵ц鏀捐揣浠诲姟 +// rgvOutExecute(); +// +// } } } public synchronized void rgvRunWrkMastInTest(){ BasRgvMap basRgvMap = basRgvMapMapper.selectById(1); List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); - basRgvMap.setNowRoute(1031); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� + basRgvMap.setNowRoute(1021); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(342);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 // WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, 1); @@ -3280,10 +3361,10 @@ // } wrkMastSta.setWorkSta(1); wrkMastSta.setRgvNo(1); - wrkMastSta.setStaStart(1031); + wrkMastSta.setStaStart(1035); Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃� boolean sign = false; - sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂 +// sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction,); //鍛戒护涓嬪彂 if (sign){ wrkMastSta.setWrkSts(1); try{ @@ -3307,13 +3388,17 @@ public synchronized void rgvRunWrkMastIn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark) { for (RgvSlave.RgvStn rgvStn : slave.getRgvInTStn()) {//rgv鍏ュ簱鍙栬揣绔欑偣 boolean flag = false; - boolean ds = false; + BasRgv basRgv = basRgvService.selectById(slave.getId()); + if (basRgv == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId()); + continue; + } //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); - StaProtocol staProtocol2 = null; - + StaProtocol staProtocol2 = null; //杩炵画鍙栬揣浠诲姟绔欑偣 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); + WrkMastSta wrkMastSta3 = null;//杩炲彇涓や釜 if(rgvStn.getStaNo2()!= null ){ staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2()); if (staProtocol2 == null) { @@ -3327,76 +3412,88 @@ News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); continue; } + wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo()); } + 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) { News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); continue; } - - - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0 && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { flag = true; } if (!flag) { News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv鍏ュ簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):" + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading() - + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable() - + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining()); + + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining()); continue; } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); - basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� - WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 - + List<Integer> route = new ArrayList<>(); + switch (rgvProtocol.getRgvNo()){ + case 1: route = RouteUtils.getRouteOne();break; + case 2: route = RouteUtils.getRouteTwo();break; + } + basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� + 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()); + WrkMastSta wrkMastSta2 = null; + if(rgvProtocol.getTaskNo2() != null){ + wrkMastSta2 = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2()); + } 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); + basRgv.setPakRgv("0"); + basRgvService.updateById(basRgv); + +// rgvThread.setPakRgv(false); continue; } - wrkMastSta.setWorkSta(wrkMastSta2 != null ? 1 : 2); + wrkMastSta.setWorkSta(wrkMastSta2 !=null ? 1 : 2); wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); - Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃� boolean sign = false; - //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠� - if(wrkMastSta.getWorkSta() == 2 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){ - 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); //鍛戒护涓嬪彂 - } + sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 if (sign){ - wrkMastSta.setWrkSts(1); + if(wrkMastSta3 != null){ + wrkMastSta3.setMk(1); + basRgv.setPakAll("0"); + basRgvService.updateById(basRgv); + + try{ + wrkMastStaMapper.updateById(wrkMastSta3); + log.error("閿佸畾鐩搁殧绔欑偣浠诲姟"); + }catch (Exception e){ + log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触"); + } + + } + basRgv.setPakOut("0"); + basRgvService.updateById(basRgv); + rgvThread.setPaking(false); +// rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁� +// basRgvService.updateById(basRgv); + try{ + wrkMastSta.setWrkSts(1); wrkMastStaMapper.updateById(wrkMastSta); log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } - rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁� - boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); - if (!signMap){ - log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); } } else { log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); @@ -3415,7 +3512,14 @@ 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()); + BasRgv basRgv = basRgvService.selectById(slave.getId()); + if (basRgv == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId()); + continue; + } StaProtocol staProtocol2 = null; + WrkMastSta wrkMastSta3 = null; + if(rgvStn.getStaNo2()!= null ){ staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2()); if (staProtocol2 == null) { @@ -3429,6 +3533,8 @@ News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); continue; } + wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo()); + } if (staProtocol == null) { News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); @@ -3436,6 +3542,7 @@ } else { staProtocol = staProtocol.clone(); } + // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo()); if (staDetl == null) { @@ -3443,7 +3550,7 @@ continue; } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isOutEnable() + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { flag = true; } @@ -3455,48 +3562,61 @@ continue; } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); - basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� + List<Integer> route = new ArrayList<>(); + switch (rgvProtocol.getRgvNo()){ + case 1: route = RouteUtils.getRouteOne();break; + case 2: route = RouteUtils.getRouteTwo();break; + } + basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� 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()); + WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1()); boolean result = false; - if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠� - result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣 + if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠� + result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣 } if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣 - rgvThread.setPakRgv(false); + basRgv.setPakRgv("0"); + basRgvService.updateById(basRgv); + +// rgvThread.setPakRgv(false); continue; } - WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo()); - wrkMastSta.setWorkSta(wrkMastSta1 != null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣� + wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣� wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); boolean sign = false; - Short direction = 1;//宸ヤ綅1鏂瑰悜 - //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠� - if(wrkMastSta.getWorkSta() == 1 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){ - 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); //鍛戒护涓嬪彂 - } + sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 if (sign){ - wrkMastSta.setWrkSts(1); + if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){ + basRgv.setPakToCrn("0"); + basRgvService.updateById(basRgv); + +// rgvThread.setPakToCrn(false); //閿佸畾灏忚溅鍙兘鎺ユ帴椹充换鍔� + } + if(wrkMastSta3 != null){ + wrkMastSta3.setMk(1); + try{ + wrkMastStaMapper.updateById(wrkMastSta3); + log.error("閿佸畾鐩搁殧绔欑偣浠诲姟"); + }catch (Exception e){ + log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触"); + } + + } + basRgv.setPakIn("0"); + basRgvService.updateById(basRgv); + + rgvThread.setPaking(false); +// rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁� try{ + wrkMastSta.setWrkSts(1); wrkMastStaMapper.updateById(wrkMastSta); log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } - rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁� - boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); - if (!signMap){ - log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); } } else { log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); @@ -3505,6 +3625,98 @@ } } + + /** + * 灏忚溅鍑哄簱鎺ラ┏浠诲姟鍙栬揣涓嬪彂 + */ +// public synchronized void rgvRunWrkToCrn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark){ +// for (RgvSlave.RgvStn rgvStn : slave.getRgvOutTStn()) {//rgv鍑哄簱鍙栬揣绔欑偣 +// boolean flag = 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; +// 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) { +// News.error("" + mark + " - 1" + " - 2" + " - 鍑哄簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); +// continue; +// } +// +// if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 +// && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { +// flag = true; +// } +// if (!flag) { +// News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv鍑哄簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):" +// + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading() +// + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable() +// + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting()); +// continue; +// } +// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); +// List<Integer> route = new ArrayList<>(); +// switch (rgvProtocol.getRgvNo()){ +// case 1: route = RouteUtils.getRouteOne();break; +// case 2: route = RouteUtils.getRouteTwo();break; +// } +// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� +// WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfereToCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 +// if( null == wrkMastSta ) { +// News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); +// continue; +// } +// WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1()); +// boolean result = false; +// if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠� +// result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣 +// } +// if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣 +// rgvThread.setPakRgv(false); +// continue; +// } +// wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣� +// wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); +// boolean sign = false; +// sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 +// if (sign){ +// rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁� +// try{ +// wrkMastSta.setWrkSts(1); +// wrkMastStaMapper.updateById(wrkMastSta); +// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); +// }catch (Exception e){ +// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); +// } +// } else { +// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); +// } +// +// +// } +// } /** * 鎵ц灏忚溅鎼繍浠诲姟 * @@ -3636,216 +3848,8 @@ /** * 灏忚溅棰勮皟搴� */ - 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( 1043, 1104,1037); - 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 鏀捐揣鍚庤鍘荤殑浣嶇疆 - 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))) { - //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("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触"); - } - } - /** - * 鎵ц灏忚溅鎼繍浠诲姟 - */ -// public synchronized void rgvRunWrkMastEmptyStaPut() {//鏀� +// public synchronized void rgvPreScheduling(){ // try{ -// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { -// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); -// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); -// if (rgvProtocol == null) { -// continue; -// } -// BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); -// if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�5", rgvSlave.getId()); -// continue; -// } -// -// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤 -// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE -// && rgvProtocol.getModeType() == RgvModeType.AUTO -// && rgvProtocol.getLoaded1()==1 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 -// ) { -// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// if (basRgvMap == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); -// continue; -// } -// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� -// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿 -// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔� -// for (WrkMastSta wrkMastSta : wrkMastStaList){ -// if (wrkMastSta.getType()!=2 || (wrkMastSta.getWrkType()!=2 && wrkMastSta.getWrkType()!=4)){// 2:绌烘澘 2:鏀� 4锛氭媶鐩� -// continue; -// } -// boolean sign = false; -// if (wrkMastSta.getStaStart()==0 && wrkMastSta.getStaEnd()!=0){//鏀� -// sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta); -// }else { -// continue; -// } -// if (sign){ -// boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd()); -// if (signMap){ -// wrkMastSta.setWrkSts(2); -// try{ -// wrkMastStaMapper.updateById(wrkMastSta); -// }catch (Exception e){ -// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); -// } -// return; -// }else { -// log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); -// } -// }else { -// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); -// } -// break; -// } -// } -// } -// }catch (Exception e){ -// log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触"); -// log.error("3933琛�"+e); -// } -// } - -// public synchronized void rgvRunWrkMastEmptyStaTake() {//鍙� -// try{ -// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { -// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); -// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); -// if (rgvProtocol == null) { -// continue; -// } -// BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); -// if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�6", rgvSlave.getId()); -// continue; -// } -// -// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤 -// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE -// && rgvProtocol.getModeType() == RgvModeType.AUTO -// && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 -// ) { -// 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){ -// if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=1){// 2:绌烘澘 1:鍙� -// continue; -// } -// boolean sign = false; -// if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//鍙� -// sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta); -// } else { -// continue; -// } -// if (sign){ -// boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute()); -// if (signMap){ -// wrkMastSta.setWrkSts(1); -// try{ -// wrkMastStaMapper.updateById(wrkMastSta); -// }catch (Exception e){ -// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); -// } -// return; -// }else { -// log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); -// } -// }else { -// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); -// } -// break; -// } -// } -// } -// }catch (Exception e){ -// log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触"); -// log.error("3989琛�"+e); -// } -// } - - /* - * 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃� - * */ -// 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()); @@ -3857,412 +3861,101 @@ // } // BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); // if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo()); +// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo()); // continue; // } // -// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 +// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鎵嶈繘琛岄璋冨害 // if (rgvProtocol.getStatusType() == RgvStatusType.IDLE // && rgvProtocol.getModeType() == RgvModeType.AUTO -// && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 -// && rgvProtocol.getTaskNo1()==0 -// && rgvProtocol.getStatusType1() == RgvStatusType.IDLE +// && !rgvProtocol.isLoaded1ing() +// && rgvProtocol.getTaskNo1() == 0 +// && !rgvProtocol.isLoaded2ing() +// && rgvProtocol.getTaskNo2() == 0 // && rgvThread.isPakMk() -//// && rgvProtocol.getTaskNo2()==0 -// ){ +// ) { // BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){ +// if (basRgvMap == null) { +// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); // continue; // } -//// 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"); +// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); +// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� +// // 鏍规嵁杈撻�佺嚎plc閬嶅巻 +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻鍏ュ簱鍙� 鍏ュ簱棰勮皟搴� +// List<Integer> staNos = Arrays.asList( 1043, 1104, 1029, 1022, 1019, 1008, 1005); +// 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.setTaskNo(9999); // 宸ヤ綅1宸ヤ綔鍙� +// rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅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))) { +// //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("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触"); -// log.error("4109琛�"+e); +// log.error("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触"); // } // } - /* - * 灏忚溅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 rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta,Short direction){ + public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){ try{ // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- RgvCommand rgvCommand = new RgvCommand(); - boolean pakIn1 = true; - boolean pakIn2 = true; rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 - if(wrkMastSta.getWrkSts() == 0 || wrkMastSta.getWrkSts() == 4){//鍒濆鍚庤璧� - if(wrkMastSta.getWorkSta() == 2){//鍑哄簱RGV鍙栬揣琛岃蛋 - rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� - rgvCommand.setTaskStatus2(RgvTaskStatusType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 -// rgvCommand.setDirection1((short) 2); -// rgvCommand.setWrkTaskMove2(direction); - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 - pakIn1 = false; - }else{ //鍏ュ簱RGV鍙栬揣琛岃蛋 - rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskStatus1(RgvTaskStatusType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 -// rgvCommand.setDirection1((short) 1); -// rgvCommand.setDirection1(direction); - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 - } - if(!pakIn1){ - 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; - } - }else{ - 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; - } - } + RgvTaskStatusType type; + Integer targetPosition = 0; + if(wrkMastSta.getWrkSts() == 0){ + type = RgvTaskStatusType.FETCH; //鍙栬揣 + targetPosition = wrkMastSta.getStaStart(); + }else{ + type = RgvTaskStatusType.PUT; //鏀捐揣 + targetPosition = wrkMastSta.getStaEnd(); } - if(wrkMastSta.getWrkSts() == 1){//鍙栬揣 - 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.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setDirection1((short)2); - rgvCommand.setWrkTaskMove2(direction); - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 - pakIn1 = false; - }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.setDirection1((short)1); - rgvCommand.setWrkTaskMove1(direction); - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 - } - 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; - } - } + rgvCommand.setTaskNo(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅宸ヤ綔鍙� + rgvCommand.setTaskStatus(type); // 宸ヤ綅浠诲姟妯″紡: 鍙栬揣 + rgvCommand.setTargetPosition(targetPosition); //宸ヤ綅鐩爣绔欑偣 + rgvCommand.setWrkTaskPri(wrkMastSta.getWorkSta()); + 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.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setDirection1((short)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.setDirection1((short)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; } } - - - /* - * 灏忚溅鍙栬揣鑷冲弻宸ヤ綅浠诲姟 - * */ - 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; - } - } - - /* - * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔� - * */ -// public synchronized boolean rgvTakeFull(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� -// rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣 -// rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅1璧风偣 -// 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鍐欎换鍔� -// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); -// return false; -// } else { -// return true; -// } -// }catch (Exception e){ -// return false; -// } -// } - - /* - * 灏忚溅鏀捐揣鑷宠緭閫佺嚎浠诲姟 - * */ -// public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� -// rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣 -// rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅1鐩爣绔欑偣 -// 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鍐欎换鍔� -// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); -// return false; -// } else { -// return true; -// } -// }catch (Exception e){ -// return false; -// } -// } - - /* - * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 - * */ -// public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� -// rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栬揣 -// rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅2璧风偣 -// rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭 -// if (!MessageQueue.offer(SlaveType.Crn, 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; -// } -// }catch (Exception e){ -// return false; -// } -// } - - /* - * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟 - * */ -// public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� -// rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣 -// rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅2鐩爣绔欑偣 -// rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭 -// if (!MessageQueue.offer(SlaveType.Crn, 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; -// } -// }catch (Exception e){ -// return false; -// } -// } /** * 鍙栨斁鍙栬矾寰勮绠� @@ -4317,7 +4010,6 @@ - /* * arm浠诲姟瀹屾垚鑷姩缁勬墭 * */ @@ -4326,23 +4018,29 @@ for (DevpSlave devp : slaveProperties.getDevp()) { // 閬嶅巻鎷f枡鍏ュ簱鍙� for (DevpSlave.Sta armSta : devp.getArmSta()) { - // 鑾峰彇鏉$爜鎵弿浠俊鎭� - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, armSta.getBarcode()); - if (barcodeThread == null) { + + // 鑾峰彇绔欑偣淇℃伅 + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(armSta.getStaNo()); + if (staProtocol == null) { continue; + } else { + staProtocol = staProtocol.clone(); } - String barcode = barcodeThread.getBarcode(); + String barcode = staProtocol.getBarcode(); if(!Cools.isEmpty(barcode)) { if("NG".endsWith(barcode) || "NoRead".equals(barcode)) { + log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愶細"+JSON.toJSON(barcode)+"===銆嬫墭鐩樻潯鐮佸紓甯�"); continue; } } else { + log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愶細===銆嬫墭鐩樻潯鐮佷负绌�"); continue; } List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>() .eq("arm_no", armSta.getArmNo()) - .eq("sta_no", armSta.getStaNo()) + .eq("sta_no_sou", armSta.getStaNo()) .eq("status", 1)); for (BasArm basArm : basArmList) { if (basArm.getStatus()!=1){ @@ -4352,7 +4050,7 @@ List<BasArmMast> basArmMastList = basArmMastService.selectList( new EntityWrapper<BasArmMast>() .eq("arm_no", basArm.getArmNo()) - .eq("sorting_line", basArm.getSortingLine()) + .eq("sorting_line", basArm.getSortingLineSou()) .eq("status", 3) ); if (basArmMastList.isEmpty()){ @@ -4360,10 +4058,10 @@ } CombParam combParam = new CombParam(basArmMastList); combParam.setBarcode(barcode); - //璁剧疆宸ヤ綔绌洪棿灏辩华 + //arm浠诲姟瀹屾垚鑷姩缁勬墭 ReturnT<String> result = new PostMesDataUtils().postMesData("arm浠诲姟瀹屾垚鑷姩缁勬墭",wmsUrl, wmsComb, combParam); if (result.getCode()==200){ - basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLine(),3,4); + basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLineSou(),3,4); } else { log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愶細"+JSON.toJSON(basArmMastList)+"===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯"); } @@ -4403,19 +4101,19 @@ staProtocol = staProtocol.clone(); } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) { - int workNo = commonService.getWorkNo(6);//寰呭畬鍠� - // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 - staProtocol.setWorkNo(workNo); - staProtocol.setStaNo(armSta.getStaNoEnd().shortValue()); - devpThread.setPakMk(staProtocol.getSiteId(), false); - boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - log.error("杈撻�佺嚎涓嬪彂5锛�"+workNo+","+armSta.getStaNoEnd()); - if (!result) { - News.error(""+" - 3"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); - } +// if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) { +// int workNo = commonService.getWorkNo(6);//寰呭畬鍠� +// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 +// staProtocol.setWorkNo(workNo); +// staProtocol.setStaNo(armSta.getStaNoEnd().shortValue()); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// log.error("杈撻�佺嚎涓嬪彂5锛�"+workNo+","+armSta.getStaNoEnd()); +// if (!result) { +// News.error(""+" - 3"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); +// } basArmMastService.updateArmMastStatus(basArmMastList.get(0).getArmNo(),basArmMastList.get(0).getSortingLine(),4,5); - } +// } } } } catch (Exception e){ @@ -4434,23 +4132,33 @@ continue; } try{ + List<BasArmMast> basArmMastListError = basArmMastService.selectList( + new EntityWrapper<BasArmMast>() + .eq("arm_no", basArm.getArmNo()) + .eq("sorting_line", basArm.getSortingLineSou()) + .eq("status", 9) + ); + if (!basArmMastListError.isEmpty()){ + log.error(basArm.getArmNo()+"鍙锋満姊拌噦瀛樺湪寮傚父鏁版嵁闇�瑕佺淮鎶わ紒锛侊紒"); + continue; + } List<BasArmMast> basArmMastListRuning = basArmMastService.selectList( new EntityWrapper<BasArmMast>() .eq("arm_no", basArm.getArmNo()) - .eq("sorting_line", basArm.getSortingLine()) + .eq("sorting_line", basArm.getSortingLineSou()) .eq("status", 1) ); List<BasArmMast> basArmMastListRuning3 = basArmMastService.selectList( new EntityWrapper<BasArmMast>() .eq("arm_no", basArm.getArmNo()) - .eq("sorting_line", basArm.getSortingLine()) + .eq("sorting_line", basArm.getSortingLineSou()) .eq("status", 3) ); if (basArmMastListRuning.isEmpty() && basArmMastListRuning3.isEmpty()){ List<BasArmMast> basArmMastList = basArmMastService.selectList( new EntityWrapper<BasArmMast>() .eq("arm_no", basArm.getArmNo()) - .eq("sorting_line", basArm.getSortingLine()) + .eq("sorting_line", basArm.getSortingLineSou()) .eq("status", 0) ); if (basArmMastList.isEmpty()){ @@ -4464,7 +4172,7 @@ List<BasArmMast> basArmMastListOrder = basArmMastService.selectList( new EntityWrapper<BasArmMast>() .eq("arm_no", basArm.getArmNo()) - .eq("sorting_line", basArm.getSortingLine()) + .eq("sorting_line", basArm.getSortingLineSou()) .eq("sku", basArmMast.getSku()) .eq("order_no", basArmMast.getOrderNo()) ); @@ -4490,7 +4198,7 @@ continue; } } - ArmTaskAssignmentParam armTaskAssignmentParam = new ArmTaskAssignmentParam(basArmMast.getSortingLine()); + ArmTaskAssignmentParam armTaskAssignmentParam = new ArmTaskAssignmentParam(basArm.getSortingLine()); //璁剧疆宸ヤ綔绌洪棿灏辩华 ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栦换鍔′笅鍙戯細閫氱煡宸ヤ綔绌洪棿宸插氨缁�",ArmConstant.getArmUrl(basArmMast.getArmNo()), ArmConstant.ARM_WORKSPACE, armTaskAssignmentParam); if (result.getCode()==200){ -- Gitblit v1.9.1