From f4214b3e0764ab116fc6975dbbc5bb4fc80f9fcd Mon Sep 17 00:00:00 2001 From: zhangchao <zc857179121@qq.com> Date: 星期四, 21 十一月 2024 16:08:15 +0800 Subject: [PATCH] rcs超时 --- src/main/java/com/zy/common/service/AgvCommonService.java | 232 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 181 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/zy/common/service/AgvCommonService.java b/src/main/java/com/zy/common/service/AgvCommonService.java index 9b2e5f1..e7aded0 100644 --- a/src/main/java/com/zy/common/service/AgvCommonService.java +++ b/src/main/java/com/zy/common/service/AgvCommonService.java @@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -31,6 +32,8 @@ private MatService matService; @Autowired private LocRuleService locRuleService; + @Autowired + AgvBasDevpService agvBasDevpService; public int getWorkNo(Integer wrkMk) { AgvWrkLastno wrkLastno = agvWrkLastnoService.selectById(wrkMk); @@ -71,58 +74,56 @@ * 妫�绱㈠簱浣嶅彿 * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿 */ - public AgvLocMast getLocNo(List<AgvWaitPakin> agvWaitPakinList, int floor) { + public AgvLocMast getLocNo(int type, int floor,boolean isEmpty,boolean isCurrLev) { // 鐩爣搴撲綅 AgvLocMast locMast = null; +// if(Cools.isEmpty(agvWaitPakinList)){ +// return getLocNoRule(type); // 1. 闅忔満搴撲綅 +// } - //搴撲綅瑙勫垯 - if(!Cools.isEmpty(agvWaitPakinList)){ - locMast = getLocByLocRule(agvWaitPakinList.get(0),floor); - if(!Cools.isEmpty(locMast)){ - return locMast; - } - } - - //搴撲綅缂栫爜瑙勫垯 - if(!Cools.isEmpty(agvWaitPakinList)){ - locMast = getLocByLocCodeRule(agvWaitPakinList.get(0),floor); - if(!Cools.isEmpty(locMast)){ - return locMast; - } - } - - // 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂� - locMast = getLocByProximityRule(); - if (locMast != null) { - //鎵惧埌搴撲綅锛岃繑鍥瀌to - //return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto - } - - //鏍规嵁鐗╂枡棰戠巼鎼滅储搴撲綅锛岄鐜囬珮鍒欐悳绱㈢缂撳瓨璐ф灦鏈�杩戝簱浣嶏紝棰戠巼浣庡垯鎼滅储鏈�杩滃簱浣� - Mat mat = matService.selectByMatnr(agvWaitPakinList.get(0).getMatnr()); - if(true){ - - }else { - - } - -// -// // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭 -// locMast = getLocNoStep4(staDescId, locTypeDto); -// if (locMast != null) { -// //鎵惧埌搴撲綅锛岃繑鍥瀌to -// return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto +// //搴撲綅瑙勫垯 +// locMast = getLocByLocRule(agvWaitPakinList.get(0),floor); // 2. 鎸夊簱浣嶈鍒欐悳绱� +// if(!Cools.isEmpty(locMast)){ +// return locMast; // } // -// // 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋� - // 寮�濮嬫煡鎵惧簱浣� ==============================>> - locMast = getLocNoRule(floor); - if (locMast != null) { - return locMast; +// +// //搴撲綅缂栫爜瑙勫垯 +// locMast = getLocByLocCodeRule(agvWaitPakinList.get(0),floor); +// if(!Cools.isEmpty(locMast)){ +// return locMast; +// } +// +// // 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂� +// locMast = getLocByProximityRule(); +// if (locMast != null) { +// //鎵惧埌搴撲綅锛岃繑鍥瀌to +// //return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto +// } +// +// //鏍规嵁鐗╂枡棰戠巼鎼滅储搴撲綅锛岄鐜囬珮鍒欐悳绱㈢缂撳瓨璐ф灦鏈�杩戝簱浣嶏紝棰戠巼浣庡垯鎼滅储鏈�杩滃簱浣� +// Mat mat = matService.selectByMatnr(agvWaitPakinList.get(0).getMatnr()); +// if(Cools.isEmpty(mat.getBeBatch())){ +// mat.setBeBatch(0); +// } +// locMast = getLocByFre(mat.getBeBatch(), floor); +// if (locMast != null) { +// return locMast; +// } + + + try{ + // 寮�濮嬫煡鎵惧簱浣� ==============================>> + locMast = getLocNoRule(type,floor,isEmpty,isCurrLev); + if (locMast != null) { + return locMast; + } + }catch (Exception e){ + throw new CoolException(floor+"妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅===>"+e.getMessage()); } //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父 - throw new CoolException("璇ユゼ灞傛病鏈夌┖搴撲綅"); + throw new CoolException(floor+"妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅"); } /* @@ -163,7 +164,7 @@ 搴撲綅瑙勫垯鏌ユ壘 */ private AgvLocMast getLocByLocCodeRule(AgvWaitPakin agvWaitPakin, int floor) { - if(Cools.isEmpty(agvWaitPakin.getBrand())){ + /*if(Cools.isEmpty(agvWaitPakin.getBrand())){ return null; } @@ -185,7 +186,7 @@ if(!Cools.isEmpty(agvLocMast)){ return agvLocMast; } - } + }*/ return null; } @@ -233,12 +234,141 @@ } //闅忔満鍙栦竴涓揣浣� - private AgvLocMast getLocNoRule(int floor){ - return agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>() - .eq("floor",floor) - .eq("loc_sts","O") - .eq(false,"loc_type2",1)); + private AgvLocMast getLocNoRule(int type,int floor,boolean isEmpty,boolean isCurrLev){ + Boolean orderBy = false; + int levCount = 0; + int times = 1; + if (floor == 1 || floor >= 4) { + if (floor >= 4 ) { + floor = 1; + } + orderBy = true; + levCount = 2; + } else { + orderBy = false; + levCount = 1; + } + try{ + EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); + wrapper.eq("loc_sts", "O").eq("loc_type1", type); + List<AgvLocMast> agvLocMasts = new ArrayList<>(); + //涓嶆槸绌烘澘浼樺厛鎵�2灞� + if (isEmpty) { + wrapper.eq("floor", floor).eq("lev1",1); + } else { + if (isCurrLev) { + wrapper.eq("floor", floor).eq("lev1",1); + } else { + wrapper.eq("floor", floor).orderBy("lev1",!orderBy); + } + } + + + //褰撶洰鏍囧簱浣嶆槸1妤� + if(floor == 1) { + wrapper.orderBy("loc_no",false); + } + agvLocMasts = agvLocMastService.selectList(wrapper); + //鏄惁褰撳墠灞� + if (Cools.isEmpty(agvLocMasts) && !isCurrLev) { + if (times < levCount) { + times++; + return getLocNoRule(type,floor,isEmpty,isCurrLev); + } + } + for (AgvLocMast agvLocMast : agvLocMasts){ + AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo())); + if (agvLocMast1.getLocSts().equals("O")){ + return agvLocMast1; + } + } + throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�"); + }catch (Exception e){ + throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�"); + } + } + /** + * 妫�绱㈠簱浣嶅彿 + * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿 + */ + public AgvBasDevp getDevpNo(int type, int floor) { + // 鐩爣搴撲綅 + AgvBasDevp basDevp = null; + + // 寮�濮嬫煡鎵惧簱浣� ==============================>> + basDevp = getDevpNoRule(type,floor); + if (basDevp != null) { + return basDevp; + } + + //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父 + throw new CoolException("妤煎眰鍙凤細"+floor+"锛涜妤煎眰娌℃湁绌烘帴椹充綅"); } + /** + * 妫�绱㈠簱浣嶅彿 + * @return locNo 妫�绱㈣嚜鍔ㄦ帴椹充綅 + */ + public AgvBasDevp getDevpNo(int type, int floor, String auto) { + // 鐩爣搴撲綅 + AgvBasDevp basDevp = null; + + // 寮�濮嬫煡鎵惧簱浣� ==============================>> + basDevp = getDevpNoAuto(type,floor,auto); + if (basDevp != null) { + return basDevp; + } + + //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父 + throw new CoolException("妤煎眰鍙凤細"+floor+"锛涜妤煎眰娌℃湁绌烘帴椹充綅"); + } + + /** + * 妫�绱㈠簱浣嶅彿 + * @return locNo 妫�绱㈠彲鍏ユ帴椹充綅 + */ + public AgvBasDevp getDevpNo(int type, int floor, String auto ,String inEable) { + // 鐩爣搴撲綅 + AgvBasDevp basDevp = null; + + // 寮�濮嬫煡鎵惧簱浣� ==============================>> + basDevp = getDevpNoInEable(type,floor,inEable); + if (basDevp != null) { + return basDevp; + } + + //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父 + return basDevp; + } + + //闅忔満鍙栦竴涓揣浣� + private AgvBasDevp getDevpNoRule(int type,int floor){ + return agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() + .eq("loc_sts","O") + .eq("floor",floor) + .eq("loc_type1",type) + .like("dev_no","DB")); + } + + //闅忔満鍙栦竴涓揣浣� + private AgvBasDevp getDevpNoAuto(int type,int floor,String auto){ + return agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() + .eq("loc_sts","O") + .eq("floor",floor) + .eq("loc_type1",type) + .eq("autoing",auto) + .like("dev_no","DB")); + } + + //闅忔満鍙栦竴涓揣浣� + private AgvBasDevp getDevpNoInEable(int type,int floor,String inEable){ + return agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() + .eq("loc_sts","O") + .eq("floor",floor) + .eq("loc_type1",type) + .eq("in_enable",inEable) + .like("dev_no","DB")); + } + } -- Gitblit v1.9.1