From 8aed3bbc70b7183d3c4085962e7942ee54365a7a Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 17 四月 2023 14:51:26 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 153 ++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 121 insertions(+), 32 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 4a38951..5053466 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -326,15 +326,20 @@ continue; } short staNo; + List<BasDevp> basDevps1 = basDevpMapper.getLoading(103); + List<BasDevp> basDevps2 = basDevpMapper.getLoading(203); + switch (wrkMast.getSourceStaNo()) { case 104: case 108: staNo = 103; - List<BasDevp> basDevps1 = basDevpMapper.getLoading(103); - if (basDevps1.size()!=0){ + if (basDevps1.size()!=0 && basDevps2.size()!=0){ continue; + } else if (basDevps1.size()!=0){ + staNo = 203; } - List<WrkMast> wrkMasts1 = wrkMastMapper.selectWrkStsAndIoType(103); + + List<WrkMast> wrkMasts1 = wrkMastMapper.selectWrkStsAndIoType((int)staNo); if (wrkMasts1.size()!=0){ boolean flag = false; for (WrkMast wrkMast1:wrkMasts1){ @@ -352,11 +357,16 @@ case 204: case 208: staNo = 203; - List<BasDevp> basDevps2 = basDevpMapper.getLoading(203); - if (basDevps2.size()!=0){ + if (basDevps1.size()!=0 && basDevps2.size()!=0){ continue; + } else if (basDevps2.size()!=0){ + staNo = 103; } - List<WrkMast> wrkMasts2 = wrkMastMapper.selectWrkStsAndIoType(203); + +// if (basDevps2.size()!=0){ +// continue; +// } + List<WrkMast> wrkMasts2 = wrkMastMapper.selectWrkStsAndIoType((int)staNo); if (wrkMasts2.size()!=0){ boolean flag = false; for (WrkMast wrkMast1:wrkMasts2){ @@ -493,7 +503,7 @@ Integer code = jsonObject.getInteger("code"); if (code.equals(200)) { StartupDto dto = jsonObject.getObject("data", StartupDto.class); - + News.info("鍐嶅叆搴撹幏鍙栨柊搴撲綅鎴愬姛锛岃繑鍥炴暟鎹�===>>", JSON.toJSON(dto)); // // 鑾峰彇鐩爣绔� // Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() // .eq("type_no", wrkMast.getIoType() - 50) @@ -521,6 +531,7 @@ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 + wrkMast.setIoPri(13D); wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯 wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔� wrkMast.setCrnNo(dto.getCrnNo()); @@ -564,6 +575,9 @@ ledThread.errorReset(); + if(wrkMast.getIoType()>100){ + throw new CoolException("鍐嶅叆搴撴洿鏂板伐浣滄。澶辫触锛屼笉鑳界粰PLC涓嬪彂浠诲姟===>>" + wrkMast.getWrkNo()); + } // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); @@ -744,6 +758,7 @@ // 鏇存柊宸ヤ綔妗g姸鎬佷负 17.鍑哄簱瀹屾垚 wrkMast.setWrkSts(17L); wrkMast.setSteNo(0); + wrkMast.setIoPri(15D); wrkMast.setCrnEndTime(new Date()); if (wrkMastMapper.updateById(wrkMast) != 0) { // 澶嶄綅鍫嗗灈鏈� @@ -834,18 +849,18 @@ continue; } - //鍔犲己鍒ゆ柇锛屽彧瑕佸瓨鍦ㄧЩ搴撲换鍔★紝璇存槑鍑哄簱浠诲姟鏈畬鍏ㄧ粨鏉燂紝涓嶆墽琛屽叆搴撲换鍔� - WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId()); - if(!Cools.isEmpty(one)){ - News.error("鍏ュ簱 ===>> 瀛樺湪绉诲簱鏈畬鎴愪换鍔★紝涓嶈兘鍏ュ簱銆傜Щ搴撲换鍔″彿={},鍫嗗灈鏈哄彿={}", one.getWrkNo(), slave.getId()); -// continue; - } - // 鑾峰彇宸ヤ綔鐘舵�佷负 2,3,4,5,6 鐨勫叆搴撳伐浣滄。 WrkMast wrkMast = wrkMastMapper.selectPakInStep23456(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo()); if(null == wrkMast) { // News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo()); continue; + } + + //鍔犲己鍒ゆ柇锛屽彧瑕佸瓨鍦ㄧЩ搴撲换鍔★紝璇存槑鍑哄簱浠诲姟鏈畬鍏ㄧ粨鏉燂紝涓嶆墽琛屽叆搴撲换鍔� + WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId()); + if(!Cools.isEmpty(one)){ + News.error("鍏ュ簱 ===>> 瀛樺湪绉诲簱鏈畬鎴愪换鍔★紝涓嶈兘鍏ュ簱銆傜Щ搴撲换鍔″彿={},鍫嗗灈鏈哄彿={}", one.getWrkNo(), slave.getId()); +// continue; } // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔� @@ -1061,11 +1076,11 @@ if (wrkMast.getCrnNo().equals(2)){ if (wrkMast.getStaNo() == 103 && devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) { News.error("MainServiceImpl locToCrnStn"+"103闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo()); - continue; + return false; } if (wrkMast.getStaNo() == 203 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) { News.error("MainServiceImpl locToCrnStn"+"203闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo()); - continue; + return false; } if (wrkMast.getWrkSts() == 11 && (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107)){ @@ -1073,7 +1088,29 @@ List<WrkMast> wrkMasts = wrkMastMapper.selectWrkStsAndIoType0(sour); if (wrkMasts.size() > 0){ News.error("MainServiceImpl 1028琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�"); - continue; + return false; + } + + //濡傛灉瀛樺湪鐩爣绔�300涓旀鍦ㄦ墽琛岀殑鎷f枡/鐩樼偣浠诲姟锛屽垯2鍙峰爢鍨涙満涓嶅厑璁稿仛鎷f枡/鐩樼偣鍑哄簱 + WrkMast one = wrkMastService.selectOne(new EntityWrapper<WrkMast>() + .eq("sta_no",300) + .last(" and wrk_sts>11 and io_type in (103,107) ")); + if(!Cools.isEmpty(one)){ + News.error("MainServiceImpl 1099琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�"); + return false; + } + } + + if (wrkMast.getWrkSts() == 11 && wrkMast.getIoType() == 101){ + Integer sour = wrkMast.getSourceStaNo(); + List<WrkMast> wrkMasts = wrkMastMapper.selectWrkStsAndIoType1(sour); + if (wrkMasts.size() > 0){ + for (WrkMast one : wrkMasts){ + if(one.getWrkNo().equals(wrkMast.getWrkNo())){ + News.error("MainServiceImpl 1028琛�"+"204瀛樺湪鍏ㄦ澘鍑哄簱涓揣鐗╋紝2鍙峰爢鍨涙満鏆傛椂绂佹鍏ㄦ澘鍑哄簱锛侊紒锛�"); + return false; + } + } } } } @@ -1086,7 +1123,7 @@ .last(" and wrk_sts < 10")); if(one1 != null){ News.error("{}鍑哄簱浠诲姟鏃犳硶浣滀笟锛屽洜鍏ュ簱浠诲姟宸茬粦瀹氬皬杞�!", wrkMast.getWrkNo()); - continue; + return false; } //鍔犲己鍒ゆ柇锛岀‘淇濆洜鍑哄簱瀵艰嚧鐨勭Щ搴撴暣濂椾换鍔″叏閮ㄧ粨鏉熷悗锛屾墠鑳芥墽琛屼笅涓�绗斿嚭搴撲换鍔°�傚彧鏈夊簱浣嶅畬鎴愮Щ搴撳洖鍘诲叏閮ㄤ换鍔″悗锛屾墠璁や负褰撶粍鍑哄簱浠诲姟瀹屾垚 @@ -1096,13 +1133,13 @@ if(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; + return false; } //瀛樺湪绉诲簱浠诲姟锛屼笖鍦ㄧЩ鍥炰腑锛屼笖绉诲簱鐩爣搴撲綅涓庡緟鍑哄簱搴撲綅涓嶅湪鍚屼竴搴撲綅缁勶紝鏃惰烦鍑猴紝纭繚绉诲簱/鍑哄簱鍏ㄥ浠诲姟瀹屾垚鍚庯紝鍐嶆墽琛屼笅涓�绗� if(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; + return false; } } @@ -1145,6 +1182,8 @@ .last(" and wrk_sts in (12,13,14,15,16)")); if(one2==null) { moveLocForDeepLoc(slave, shallowLoc); + } else { + News.error("娴呭簱浣嶉樆濉炴椂锛屼笖娴呭簱浣嶅瓨鍦ㄤ綔涓氫腑鍑哄簱浠诲姟锛佸伐浣滃彿={}", one2.getWrkNo()); } flag = true; break; @@ -1162,11 +1201,17 @@ break; } + //20230307 ADD锛屽啀鍔犱竴娆″垽鏂紝褰撴祬搴撲綅鐘舵�佷笉涓篛鏃讹紝涓嶆墽琛屽綋鍓嶅嚭搴撲换鍔� + if(shallowLoc!=null && !shallowLoc.getLocSts().equals("O")){ + News.error("鍋氫簡娴呭簱浣嶉樆濉炲鐞嗗悗鍙嶅鍒ゆ柇锛屾祬搴撲綅鐘舵�佷笉涓篛 ===>> 娴呭簱浣嶅簱浣嶇姸鎬佷负鍏ュ簱棰勭害锛佸嚭搴撳簱浣�={},娴呭簱浣嶅彿={}", wrkMast.getSourceLocNo(), shallowLoc.getLocNo()); + flag = true; + break; + } } } } if(flag){ - continue; + return false; } // 宸ヤ綔妗g姸鎬佸垽鏂� @@ -1177,7 +1222,7 @@ // 鑾峰彇婧愬簱浣嶄俊鎭� LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo()); if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) { - News.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts()); + News.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getSourceLocNo(), sourceSta.getLocSts()); continue; } @@ -1587,6 +1632,10 @@ && !deepLoc.getLocSts().equals("O") && (waitWrkMast!=null && waitWrkMast.getWrkSts()<18)){ News.error("绉诲簱鍐嶅洖搴撴椂锛屾繁搴撲綅缁勬繁搴撲綅鐘舵�佷负浣滀笟涓� ===>> deepLoc={},loc_sts={}", deepLoc.getLocNo(), deepLoc.getLocSts()); + if(waitWrkMast.getIoPri()<9999) {//璋冮珮浼樺厛绾� + waitWrkMast.setIoPri(waitWrkMast.getIoPri() + 1); + wrkMastService.updateById(waitWrkMast); + } flag = true; break; } @@ -1611,7 +1660,7 @@ } } LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); - if(sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D")){ + if(sourceLoc.getLocSts().equals("R") || sourceLoc.getLocSts().equals("D")){ sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害 sourceLoc.setModiTime(new Date()); if (!locMastService.updateById(sourceLoc)) { @@ -1619,6 +1668,11 @@ } } break; +// } else { +// LocMast curLoc = locMastService.selectById(locNo); +// if(curLoc != null && curLoc.getLocSts().equals("O")){ +// +// } } } } @@ -2285,6 +2339,10 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { return; } + if(steProtocol.getLoad() == 1){ + News.error("灏忚溅涓婃柟鏈夎揣锛屾棤娉曚笅鍙戜换鍔�===>>{}", steNo); + return; + } if (steProtocol.isIdle() && steProtocol.getLoad() == 0) { // 鍫嗗灈鏈虹┖闂� if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) { @@ -2305,18 +2363,35 @@ crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue()); // 鐩爣搴撲綅鎺� crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� - if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { - News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); - } else { + + if( crnCommand.getSourcePosX() == crnCommand.getDestinationPosX() + && crnCommand.getSourcePosY() == crnCommand.getDestinationPosY() + && crnCommand.getSourcePosZ() == crnCommand.getDestinationPosZ()){ + //鎵撹ˉ涓侊紝濡傛灉鍑虹幇婧愭帓鍒楀眰 鍜岀洰鏍囨帓鍒楀眰瀹屽叏鐩稿悓鏃讹紝涓嶇粰鍫嗗灈鏈哄彂浠诲姟锛岀姸鎬佺洿鎺ョ敱3 ==>> 6 // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1()); - // 淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 + // 淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 6.灏忚溅寰呭叆 Date now = new Date(); - wrkMast.setWrkSts(4L); + wrkMast.setWrkSts(6L); wrkMast.setCrnStrTime(now); wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { - News.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + News.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } else { + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { + News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� + steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1()); + // 淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 + Date now = new Date(); + wrkMast.setWrkSts(4L); + wrkMast.setCrnStrTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + News.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } } } // 鍑哄簱鎼� @@ -2675,7 +2750,7 @@ SteCommand steCommand = new SteCommand(); steCommand.setSteNo(wrkMast.getSteNo()); // 绌挎杞︾紪鍙� steCommand.setTaskNo(9999); // 宸ヤ綔鍙� - steCommand.setTaskMode(SteTaskModeType.findWaiting(basSte.getRow())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� + steCommand.setTaskMode(SteTaskModeType.findWaiting(basSte.getRow())); // 浠诲姟妯″紡: 鍘诲緟鏈轰綅閬胯 // steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); // steCommand.setBay(steProtocol.getBay()); // steCommand.setLev(steProtocol.getLev()); @@ -2704,7 +2779,7 @@ String locSts = ""; // 搴撲綅绉昏浆鍒ゆ柇鏄惁涓虹┖鏉跨Щ杞� if (wrkMast.getEmptyMk().equals("N")) { - locSts = "F"; + locSts = "R"; // 杞Щ搴撳瓨鏄庣粏鏁版嵁: 搴撳瓨鍙� 鐢卞伐浣滄。婧愬簱浣嶅彉涓虹洰鏍囧簱浣� if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) { News.error("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={}],[鐩爣搴撲綅={}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); @@ -3395,6 +3470,7 @@ } ledCommand.setSourceLocNo(wrkMast.getSourceLocNo()); ledCommand.setStaNo(wrkMast.getStaNo()); + ledCommand.setBarcode(wrkMast.getBarcode()); if (wrkMast.getIoType() != 110) { List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); wrkDetls.forEach(wrkDetl -> { @@ -3848,10 +3924,23 @@ boolean success = true; List<String> insideLoc = Utils.getGroupInsideLoc(one.getLocNo()); for (String inside : insideLoc) { - if (!locMastService.selectById(inside).getLocSts().equals("O")) { + LocMast locMast = locMastService.selectById(inside); + if(Cools.isEmpty(locMast)){ + continue; + } + if (locMast.getLocSts().equals("P") + || locMastService.selectById(inside).getLocSts().equals("R") + || locMastService.selectById(inside).getLocSts().equals("S") + || locMastService.selectById(inside).getLocSts().equals("Q")) { success = false; break; } } + + Integer steNo = this.hasCar(one.getLocNo()); + if (steNo != null) { + continue; + } + if (success) { loc = one; break; -- Gitblit v1.9.1