From eb96c650d25d9d17ea3c582cd091dbeff9909bf1 Mon Sep 17 00:00:00 2001 From: tqs <56479841@qq.com> Date: 星期五, 23 十二月 2022 08:52:07 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 172 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 143 insertions(+), 29 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 cd96c3e..4ff55ab 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -63,6 +63,8 @@ @Autowired private WrkMastMapper wrkMastMapper; @Autowired + private WrkMastService wrkMastService; + @Autowired private WrkDetlService wrkDetlService; @Autowired private LocMastService locMastService; @@ -329,6 +331,7 @@ /** * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱銆愮2闃舵銆� */ + @Transactional public synchronized void stnToCrnStnPick1(){ for (DevpSlave devp : slaveProperties.getDevp()) { // 閬嶅巻鎷f枡鍏ュ簱鍙� @@ -453,6 +456,7 @@ } String sourceLocNo = wrkMast.getSourceLocNo().trim(); + // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 @@ -468,14 +472,8 @@ if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) { throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); } + LocMast locMast = null; - // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣� -// locMast = locMastService.selectById(sourceLocNo); -// locMast.setLocSts("O"); -// locMast.setModiTime(new Date()); -// if (!locMastService.updateById(locMast)) { -// throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�"); -// } // 淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� locMast = locMastService.selectById(wrkMast.getLocNo()); locMast.setLocSts("Q"); @@ -483,10 +481,21 @@ if (!locMastService.updateById(locMast)) { throw new CoolException(wrkMast.getWrkNo() + "淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�"); } - // 搴撳瓨鏄庣粏杞Щ -// if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) { -// throw new CoolException(wrkMast.getWrkNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�"); -// } + // 婧愬簱浣嶅簱瀛樻槑缁嗚浆绉诲埌鐩爣搴撲綅 + if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) { + throw new CoolException(wrkMast.getLocNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�"); + } + + // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣� + LocMast sourceLocMast = locMastService.selectById(sourceLocNo); + if (sourceLocMast.getLocSts().equals("P")) { + sourceLocMast.setLocSts("O"); + sourceLocMast.setModiTime(new Date()); + if (!locMastService.updateById(sourceLocMast)) { + throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�"); + } + locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); + } // 鏉$爜璁惧澶勭悊 barcodeThread.setBarcode(""); @@ -542,22 +551,85 @@ public synchronized void pickWrkCompleteStaNo() { List<WrkMast> wrkMasts = wrkMastMapper.selectPick17(null, null); for (WrkMast wrkMast : wrkMasts) { - // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣� - LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); - if (locMast.getLocSts().equals("P")) { - locMast.setLocSts("O"); - locMast.setModiTime(new Date()); - if (!locMastService.updateById(locMast)) { - throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�"); - } - locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo())); - } +// // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣� +// LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); +// if (locMast.getLocSts().equals("P")) { +// locMast.setLocSts("O"); +// locMast.setModiTime(new Date()); +// if (!locMastService.updateById(locMast)) { +// throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�"); +// } +// locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo())); +// } // 淇敼宸ヤ綔妗� wrkMast.setIoPri(13D); wrkMast.setModiTime(new Date()); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("鏇存柊宸ヤ綔妗g殑浼樺厛绾уけ璐ワ紒锛侊紒 [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo()); } + } + } + + /** + * 鎷f枡/鐩樼偣杞叏鏉垮悗锛�300绔欎换鍔¤浆100/200绔欏幓 + */ + public synchronized void transPickToFullChangeStn() { + for (DevpSlave devp : slaveProperties.getDevp()) { + // 閬嶅巻鎷f枡鍑哄簱鍙� + for (DevpSlave.Sta pickSta : devp.getPickOutSta()) { + // 鑾峰彇鎷f枡鍑哄簱绔欎俊鎭� + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + + if (staProtocol.isAutoing() + && staProtocol.isLoading() + && staProtocol.isInEnable() + && staProtocol.getWorkNo() > 0 + && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue()) + && staProtocol.isPakMk()){ + WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); + if(Cools.isEmpty(wrkMast)){ + log.error("鎷f枡/鐩樼偣杞叏鏉�,浠诲姟鍙峰伐浣滄。涓嶅瓨鍦�===>>[浠诲姟鍙�:{}]", staProtocol.getWorkNo()); + continue; + } + if (wrkMast.getIoType() != 101) { continue; } + + //鎷f枡杞叏鏉块粯璁ゅ嚭搴撶珯100绔欙紝褰�100绔欐湁鐗╂椂锛岀洰鏍囨敼200绔� + Integer staNo = 100; + StaProtocol staProtocol100 = devpThread.getStation().get(staNo); + if (staProtocol100 == null) { + continue; + } else { + staProtocol100 = staProtocol100.clone(); + } + if (staProtocol100.isLoading()) { + staNo = 200; + } + + // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 + staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); + staProtocol.setStaNo(staNo.shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + if (!result) { + log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); + } else { + wrkMast.setStaNo(staNo); + wrkMast.setModiTime(new Date()); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("鏇存柊宸ヤ綔妗g殑鐩爣绔欏け璐ワ紒锛侊紒 [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo()); + } + } + + } + } + + } } @@ -609,6 +681,7 @@ // 鏇存柊宸ヤ綔妗g姸鎬佷负 17.鍑哄簱瀹屾垚 wrkMast.setWrkSts(17L); + wrkMast.setSteNo(0); wrkMast.setCrnEndTime(new Date()); if (wrkMastMapper.updateById(wrkMast) != 0) { // 澶嶄綅鍫嗗灈鏈� @@ -712,6 +785,18 @@ // log.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo()); continue; } + + // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔� + BasSte basSte = basSteService.findByCrnNo(wrkMast.getCrnNo()); + if(basSte == null) continue; + WrkMast one1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>() + .eq("ste_no",basSte.getSteNo()) + .last(" and wrk_sts > 10")); + if(one1 != null){ + log.error("{}鍏ュ簱浠诲姟鏃犳硶浣滀笟锛屽洜鍑哄簱浠诲姟宸茬粦瀹氬皬杞�!", wrkMast.getWrkNo()); + continue; + } + if (wrkMast.getWrkSts() < 3) { if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() && staDetl.getCanining()!=null && staDetl.getCanining().equals("Y")) { @@ -869,7 +954,7 @@ } // 娌℃湁灏忚溅 } else { - if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) { + if (wrkMast.getWrkSts() == 2L && (wrkMast.getSteNo() == null || wrkMast.getSteNo() == 0)) { // 瀵绘壘褰撳墠鍫嗗灈鏈哄搴旂殑灏忚溅 SteThread steThread = queryIdleCar(wrkMast); if (steThread != null) { @@ -902,29 +987,39 @@ continue; } + // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔� + BasSte basSte = basSteService.findByCrnNo(wrkMast.getCrnNo()); + if(basSte == null) continue; + WrkMast one1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>() + .eq("ste_no",basSte.getSteNo()) + .last(" and wrk_sts < 10")); + if(one1 != null){ + log.error("{}鍑哄簱浠诲姟鏃犳硶浣滀笟锛屽洜鍏ュ簱浠诲姟宸茬粦瀹氬皬杞�!", wrkMast.getWrkNo()); + continue; + } + //鍔犲己鍒ゆ柇锛岀‘淇濆洜鍑哄簱瀵艰嚧鐨勭Щ搴撴暣濂椾换鍔″叏閮ㄧ粨鏉熷悗锛屾墠鑳芥墽琛屼笅涓�绗斿嚭搴撲换鍔°�傚彧鏈夊簱浣嶅畬鎴愮Щ搴撳洖鍘诲叏閮ㄤ换鍔″悗锛屾墠璁や负褰撶粍鍑哄簱浠诲姟瀹屾垚 WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId()); if(!Cools.isEmpty(one)){ //瀛樺湪绉诲簱浠诲姟锛屼笖鍦ㄧЩ鍑轰腑锛屼笖绉诲簱婧愬簱浣嶄笌寰呭嚭搴撳簱浣嶄笉鍦ㄥ悓涓�搴撲綅缁勶紝鏃惰烦鍑猴紝纭繚绉诲簱/鍑哄簱鍏ㄥ浠诲姟瀹屾垚鍚庯紝鍐嶆墽琛屼笅涓�绗� - if(one.getWrkSts() > 10 && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getSourceLocNo()) + if(wrkMast.getWrkNo() == 11 && one.getWrkSts() > 10 && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getSourceLocNo()) || Utils.getBay(wrkMast.getSourceLocNo()) != Utils.getBay(one.getSourceLocNo()) || Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(one.getSourceLocNo()))){ continue; } //瀛樺湪绉诲簱浠诲姟锛屼笖鍦ㄧЩ鍥炰腑锛屼笖绉诲簱鐩爣搴撲綅涓庡緟鍑哄簱搴撲綅涓嶅湪鍚屼竴搴撲綅缁勶紝鏃惰烦鍑猴紝纭繚绉诲簱/鍑哄簱鍏ㄥ浠诲姟瀹屾垚鍚庯紝鍐嶆墽琛屼笅涓�绗� - if(one.getWrkSts() < 11 && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getLocNo()) + if(wrkMast.getWrkNo() == 11 && one.getWrkSts() < 11 && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getLocNo()) || Utils.getBay(wrkMast.getSourceLocNo()) != Utils.getBay(one.getLocNo()) || Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(one.getLocNo()))){ continue; } - log.info(""); } //鍑哄簱搴撲綅涓嶆槸鏈�澶栧眰搴撲綅锛屽垽鏂祬搴撲綅缁勬槸鍚﹂兘涓虹┖锛屾垨瀛樺湪搴撲綅绉昏浆浠诲姟 boolean flag = false; if(!locMastService.isOutMost(wrkMast.getSourceLocNo())){ WrkMast wrkMastMove = wrkMastMapper.selectLocMoveWorking(slave.getId()); - if(wrkMastMove != null){ + if(wrkMastMove != null && wrkMast.getWrkNo() == 11){ continue; } @@ -1184,6 +1279,23 @@ if (null == wrkMast) { return; } + // 杩囨护 + if (null != wrkMastMapper.selectPakin(slave.getId(), null)) { + log.error("{}鍑哄簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍏ュ簱涓换鍔�!", wrkMast.getWrkNo()); + return; + } + + // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔� + BasSte basSte = basSteService.findByCrnNo(wrkMast.getCrnNo()); + if(basSte == null) return; + WrkMast one = wrkMastService.selectOne(new EntityWrapper<WrkMast>() + .eq("ste_no",basSte.getSteNo()) + .last(" and io_type != 11 and wrk_sts < 10")); + if(one != null){ + log.error("{}绉诲簱浠诲姟鏃犳硶浣滀笟锛屽洜鍏ュ簱浠诲姟宸茬粦瀹氬皬杞�!", wrkMast.getWrkNo()); + return; + } + // 鑾峰彇婧愬簱浣嶄俊鎭� LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); if (null == sourceLoc) { @@ -1404,7 +1516,7 @@ } } LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); - if(sourceLoc.getLocSts().equals("F")){ + if(sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D")){ sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害 sourceLoc.setModiTime(new Date()); if (!locMastService.updateById(sourceLoc)) { @@ -2077,7 +2189,7 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { return; } - if (steProtocol.isIdle()) { + if (steProtocol.isIdle() && steProtocol.getLoad() == 0) { // 鍫嗗灈鏈虹┖闂� if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) { LocMast locMast; @@ -2156,7 +2268,7 @@ SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { return; } // 绌挎杞︾┖闂� - if (steProtocol.isIdle()) { + if (steProtocol.isIdle() && steProtocol.getLoad() == 0) { // 鍫嗗灈鏈虹┖闂� if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) { @@ -2502,6 +2614,8 @@ log.error("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={}],[鐩爣搴撲綅={}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); continue; } + } else { + locSts = "D"; } if(Cools.isEmpty(locSts)){ log.error("搴撲綅绉昏浆 ===>> 搴撳瓨鐘舵�佷负绌猴紱[婧愬簱浣�={}],[鐩爣搴撲綅={}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); -- Gitblit v1.9.1