From a64aaeecc264176a60c6bb0e4e348c63f929d459 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期六, 22 六月 2024 13:52:35 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 312 +++++++++++++++++++++++++++++++++------------------ 1 files changed, 200 insertions(+), 112 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 eb15ae1..c323c3b 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -45,6 +45,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import springfox.documentation.spring.web.json.Json; import java.util.*; import java.util.concurrent.TimeUnit; @@ -111,9 +112,14 @@ private BasJarMastService basJarMastService; @Autowired private WrkMastExecuteService wrkMastExecuteService; + @Autowired + private BasJarService basJarService; + @Autowired + private BasJarMapper basJarMapper; @Value("${wms.url}") private String wmsUrl; + /** @@ -4409,56 +4415,92 @@ } /** - * Jar浠诲姟鍒涘缓 + * Jar浠诲姟鍒涘缓 //瀹屾垚 */ - public synchronized void jarGenerateWrkMastSta() { + public synchronized void jarMastGenerate() { for (JarSlave jarSlave : slaveProperties.getJar()) { - for(JarSlave.StaStn staStn : jarSlave.getJarInSta()){ - // 鑾峰彇纭寲缃愬叆搴撶珯淇℃伅 - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, staStn.getDevpPlcId()); - StaProtocol staProtocol = devpThread.getStation().get(staStn.getStaNo()); - if (staProtocol == null) { + try{ + if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ continue; - } else { - staProtocol = staProtocol.clone(); } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo()!=0){ - try{ - if (basJarMastService.selectJarMastOperation(jarSlave.getId(),1)!=0){ - break; - } - if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ - break; - } - if (basJarMastService.getJarMastByJarIdCount(jarSlave.getId())>=7){ - continue; - } - BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId()); - if (!Cools.isEmpty(jarMastByJarIdMax) && jarMastByJarIdMax.getJarLocDigit()==7){ - continue; - } - WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); - if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=2){ - continue; - } - if (jarGenerateWrkMastStaExecute(jarSlave,wrkMast)){ - return; - }; - }catch (Exception e){ - log.error(jarSlave.getId()+"鍙峰皬杞﹀浣嶇嚎绋嬫姤閿欙紒"+e); + for(JarSlave.StaStn staStn : jarSlave.getJarInSta()){ + // 鑾峰彇纭寲缃愬叆搴撶珯淇℃伅 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, staStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(staStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); } - break; + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo()!=0){ + try{ + if (basJarMastService.selectJarMastOperation(jarSlave.getId(),2)!=0){ + break; + } + if (basJarMastService.selectJarMastOperation(jarSlave.getJarOtherId(),3)!=0){ +// log.error("{}鍙峰皬杞�",jarSlave.getJarOtherId()); + break; + } + if (basJarMastService.getJarMastByJarIdCount(jarSlave.getId())>=14){ + break; + } + if (basJarMastService.selectJarMastOperation(jarSlave.getId(),0,9)>=7){ + break; + } + if (!Objects.equals + ( + basJarMastService.selectJarMastOperation(jarSlave.getId(), 0, 4) + , + basJarMastService.selectJarMastOperation(jarSlave.getId(), 0, 9) + ) + ){ + break; + } + BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId(),0,4); + int jarLocDigit = 0; + if (Cools.isEmpty(jarMastByJarIdMax)){ + if (basJarMastService.selectJarMastOperation(jarSlave.getId(),0,4)!=0){ + break; + } + jarLocDigit = 1; + } else if (jarMastByJarIdMax.getJarLocDigit()<7){ + jarLocDigit = jarMastByJarIdMax.getJarLocDigit()+1; + } else { + continue; + } + WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); + if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=2){ + continue; + } + BasJarMast basJarMast = basJarMastService.getJarMastByWrkNo(wrkMast.getWrkNo().longValue()); + if (!Cools.isEmpty(basJarMast)){ + continue; + } + WrkMastExecute wrkMastExecute = wrkMastExecuteService.getWrkMastByWrkNo(wrkMast.getWrkNo().longValue()); + if (!Cools.isEmpty(wrkMastExecute)){ + continue; + } + if (jarMastGenerateExecute(jarSlave,wrkMast,jarLocDigit,staStn.getStaNo())){ + return; + } + }catch (Exception e){ + log.error(jarSlave.getId()+"鍙峰皬杞﹀浣嶇嚎绋嬫姤閿欙紒"+e); + } + break; + } } + } catch (Exception e){ + log.error("{}鍙风~鍖栫綈Jar浠诲姟鍒涘缓寮傚父,寮傚父鍘熷洜={}",jarSlave.getId(),e.getMessage()); } } } /** - * Jar浠诲姟鍒涘缓 鎵ц + * Jar浠诲姟鍒涘缓===銆嬫墽琛� //瀹屾垚 */ - public synchronized boolean jarGenerateWrkMastStaExecute(JarSlave jarSlave,WrkMast wrkMast) { + public synchronized boolean jarMastGenerateExecute(JarSlave jarSlave,WrkMast wrkMast,Integer jarLocDigit,Integer staNo) { try{ - // 鑾峰彇鍫嗗灈鏈轰俊鎭� + // 鑾峰彇纭寲缃愪俊鎭� JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); JarProtocol jarProtocol = jarThread.getJarProtocol(); if (jarProtocol == null) { @@ -4473,25 +4515,42 @@ if (jarOtherProtocol == null) { return false; } - if (jarOtherProtocol.modeType != JarModeType.AUTO){ +// if (jarOtherProtocol.modeType != JarModeType.AUTO){ +// return false; +// } + + BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); + if (Cools.isEmpty(basJar)){ + log.error("{}鍙风~鍖栫綈鏌ヨ璁惧妗f鏃犱俊鎭紒锛侊紒",jarProtocol.getJarNo()); + return false; + } + + if (basJar.getJarMode()!=1 && basJar.getJarMode()!=0){ return false; } //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂�� Other宸﹂棬鍏抽棴 - if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor()){ - + if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 + && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0 + && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0 && jarOtherProtocol.leftDoorClose==0){ + if (jarProtocol.statusType == JarStatusType.IDLE || jarProtocol.statusType == JarStatusType.MOVING){ + BasJarMast basJarMast = new BasJarMast(basJar, wrkMast, jarLocDigit); + basJarMast.setJarEnterStaNo(staNo);//鍏ョ~鍖栫綈绔欑偣 + basJarMastService.insert(basJarMast); + return true; + } } } catch (Exception e){ -// log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2); + log.error("{}鍙风~鍖栫綈鐢熸垚BasJarMast鍒濆浠诲姟澶辫触,寮傚父鍘熷洜={},宸ヤ綔鍙�={},纭寲搴撲綅={}",jarSlave.getId(),e.getMessage(),wrkMast,jarLocDigit); } return false; } /** - * Jar浠诲姟鍒涘缓 鎵ц + * Jar浠诲姟瀹屾垚 //鏈畬鎴� */ - public synchronized boolean jarGenerateWrkMastStaExecuteOne(JarSlave jarSlave) { + public synchronized boolean jarMastGenerateComplete(JarSlave jarSlave) { try{ // 鑾峰彇鍫嗗灈鏈轰俊鎭� JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); @@ -4516,7 +4575,6 @@ if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){ } - } catch (Exception e){ // log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2); } @@ -4524,86 +4582,116 @@ } /** - * Jar浠诲姟鍒涘缓 鎵ц + * JarWrkMastExecute浠诲姟鍒涘缓 //鏈畬鎴� + * 寮�闂ㄣ�佸叆纭寲缃� */ - public synchronized boolean jarGenerateWrkMastStaExecuteTwo(JarSlave jarSlave) { + public synchronized void jarWrkMastExecuteGenerate() { + for (JarSlave jarSlave : slaveProperties.getJar()) { + try{ + if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ + continue; + } + List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{ + add(0); + add(2); + }}); + for (BasJarMast basJarMast : basJarMastList){ + // 鑾峰彇纭寲缃愪俊鎭� + JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); + JarProtocol jarProtocol = jarThread.getJarProtocol(); + if (jarProtocol == null) { + break; + } + if (jarProtocol.modeType != JarModeType.AUTO){ + break; + } + + JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); + JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); + if (jarOtherProtocol == null) { + break; + } +// if (jarOtherProtocol.modeType != JarModeType.AUTO){ +// continue; +// } + + BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); + if (Cools.isEmpty(basJar)){ + log.error("{}鍙风~鍖栫綈鏌ヨ璁惧妗f鏃犱俊鎭紒锛侊紒",jarProtocol.getJarNo()); + break; + } + + //闂ㄤ綔涓� 鏃� + //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂�� Other宸﹂棬鍏抽棴 + if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 + && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0 + && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0 && jarOtherProtocol.leftDoorClose==0){ + if (jarProtocol.statusType == JarStatusType.IDLE && !jarProtocol.isLeftDoor() && basJarMast.getStatus()==0){ + //鐢熸垚寮�闂ㄤ换鍔� OpenTheDoor + if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),1,1})){ + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); + } + return; + } else if (jarProtocol.statusType == JarStatusType.MOVING && jarProtocol.isLeftDoor()){ + //鐢熸垚鍏ョ~鍖栫綈浠诲姟 + if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),5,1})){ + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); + } + return; + } else if (jarProtocol.statusType == JarStatusType.IDLE && jarProtocol.isLeftDoor()){ + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬬~鍖栫綈绌洪棽浣嗘槸闂ㄦ湭鍏�===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); + } + } + break; + } + } catch (Exception e){ + log.error("{}鍙风~鍖栫綈JarWrkMastExecute浠诲姟鍒涘缓寮傚父,寮傚父鍘熷洜={}",jarSlave.getId(),e.getMessage()); + } + } + } + + /** + * JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц //鏈畬鎴� + */ + public synchronized boolean jarWrkMastExecuteGenerateExecute(BasJar basJar,BasJarMast basJarMast,int[] digit) { try{ - // 鑾峰彇鍫嗗灈鏈轰俊鎭� - JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); - JarProtocol jarProtocol = jarThread.getJarProtocol(); - if (jarProtocol == null) { - return false; - } - if (jarProtocol.modeType != JarModeType.AUTO){ - return false; - } - - JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); - JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); - if (jarOtherProtocol == null) { - return false; - } - if (jarOtherProtocol.modeType != JarModeType.AUTO){ - return false; - } - - //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂�� - if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){ - - } - - } catch (Exception e){ -// log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2); + WrkMastExecute wrkMastExecute = new WrkMastExecute(basJarMast); + wrkMastExecute.setJarId(digit[3]==2? basJar.getBurial():basJar.getJarNo()); + wrkMastExecute.setSteId(digit[0]);//绌挎鏉縄D + wrkMastExecute.setRgvId(digit[1]);//RGV ID + wrkMastExecute.setIoType(digit[2]);//浠诲姟绫诲瀷 0: 鏈煡 1: 寮�杩涙枡闂� 2: 鍏宠繘鏂欓棬 3: 寮�鍑烘枡闂� 4: 鍏冲嚭鏂欓棬 5: 鍏ョ~鍖栫綈 6: 鍏ュ喎鍗存Ы 7: 绌挎杞﹁繘鍐峰嵈妲� 8: 绌挎杞︾寮�鍐峰嵈妲� 9: 鍑哄喎鍗存Ы + wrkMastExecute.setType(digit[3]);//璁惧 0: 鏈煡 1: 纭寲缃� 2: 鍐峰嵈妲� 3: 纭寲缃�==>鍐峰嵈妲� + return wrkMastExecuteService.insert(wrkMastExecute); + }catch (Exception e){ + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯稿師鍥狅細"+e.getMessage()); } return false; - } - - /** - * Jar浠诲姟鎵ц - */ - public synchronized void jarExecuteWrkMastSta() { - try{ - - }catch (Exception e){ - log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); - } - } - - /** - * Jar瀹屾垚 - */ - public synchronized void jarCompleteWrkMastSta() { - try{ - - }catch (Exception e){ - log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); - } } /* - * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 婊″彇 + * 寮�闂ㄤ换鍔″垱寤� * */ - public synchronized boolean jarRgvTake1(Integer rgvId,WrkMastSta wrkMastSta){ + public synchronized boolean jarWrkMastExecuteGenerate2(){ try{ - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 - rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� - rgvCommand.setTaskMode2(RgvTaskModeType.FETCH_5); // 宸ヤ綅2浠诲姟妯″紡: 婊″彇 - rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅2璧风偣 - rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭 - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) { - //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); - return false; - } else { - return true; - } + } catch (Exception e){ - return false; + log.error("{}鍙风~鍖栫綈OpenTheDoorGenerate==銆婮arWrkMastExecute浠诲姟鍒涘缓寮傚父,寮傚父鍘熷洜={}",null,e.getMessage()); + } + return false; + } + + /** + * JarWrkMastExecute浠诲姟瀹屾垚 //鏈畬鎴� + */ + public synchronized void jarWrkMastExecuteGenerateComplete() { + try{ + + }catch (Exception e){ + log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); } } + + /* * Rgv 绉诲姩 * */ -- Gitblit v1.9.1