From ff9ff27ce3da6f911576152a0d41e8830041f0a0 Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期三, 21 五月 2025 10:12:14 +0800 Subject: [PATCH] 接口编写 --- src/main/java/com/zy/common/service/AgvCommonService.java | 271 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 263 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/zy/common/service/AgvCommonService.java b/src/main/java/com/zy/common/service/AgvCommonService.java index d917ed1..e360c91 100644 --- a/src/main/java/com/zy/common/service/AgvCommonService.java +++ b/src/main/java/com/zy/common/service/AgvCommonService.java @@ -6,6 +6,8 @@ import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import com.zy.asrs.utils.LocUtils; +import com.zy.system.entity.Config; +import com.zy.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -35,6 +37,9 @@ private LocRuleService locRuleService; @Autowired AgvBasDevpService agvBasDevpService; + + @Autowired + private ConfigService configService; @Autowired private LocUtils locUtils; @@ -76,6 +81,7 @@ /** * 妫�绱㈠簱浣嶅彿 + * * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿 */ public AgvLocMast getLocNo(int type, int floor, boolean isEmpty, boolean isCurrLev) { @@ -118,7 +124,6 @@ try { // 寮�濮嬫煡鎵惧簱浣� ==============================>> - // 鍥涙湡椤圭洰锛氶渶瑕佹敼鏌ユ壘搴撲綅閫昏緫 // 绠卞3鍏ュ簱 // if (type == 3 && factory != null) { // //浼樺厛鍏ュ簱鍚稿1妤硷紝鍦�2妤� @@ -128,7 +133,11 @@ // locMast = locUtils.getLocNoRuleByFloor(type, floor, isEmpty, 2); // } else { // //涓嶅姩杩欎釜閫昏緫 - locMast = getLocNoRule(type, floor, isEmpty, isCurrLev); + if (type == 6) { + locMast = locUtils.getLocNoRuleByFloor6(type, floor); + } else { + locMast = getLocNoRule(type, floor, isEmpty, isCurrLev); + } // } if (locMast != null) { return locMast; @@ -141,10 +150,97 @@ throw new CoolException(floor + "妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅"); } - /* - 搴撲綅瑙勫垯鏌ユ壘 + /** + * 搴撲綅瑙勫垯鏌ユ壘锛屼細棰勭暀20涓簱浣� */ - public AgvLocMast getLocByLocRule(int type, int floor, String factory) { + public synchronized AgvLocMast getLocByLocRule20(int type, int floor, String factory, boolean flag) { + + try { + EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); + wrapper.eq("loc_sts", "O").eq("loc_type1", type); + List<AgvLocMast> agvLocMasts = new ArrayList<>(); + List<AgvLocMast> all1 = new ArrayList<>(); + List<AgvLocMast> all2 = new ArrayList<>(); + //涓嶆槸绌烘澘浼樺厛鎵�2灞� + if (Cools.isEmpty(factory)) { + wrapper.eq("floor", floor).orderBy("lev1", true); + } else { + //B鏄簩鍘傦紝G鏄笁鍘� + if (factory.equals("B")) { + wrapper.eq("floor", floor).orderBy("lev1", false).orderBy("row1", flag); + + } else { + wrapper.eq("floor", floor).orderBy("lev1", true); + + } + } + int num = 20; + int num2 = 20; + Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "LOC_3_NUM")); + Config config2 = configService.selectOne(new EntityWrapper<Config>().eq("code", "LOC_3_NUM2")); + if (config != null && !Cools.isEmpty(config.getValue())) { + num = Integer.parseInt(config.getValue()); + } + if (config2 != null && !Cools.isEmpty(config2.getValue())) { + num2 = Integer.parseInt(config2.getValue()); + } + agvLocMasts = agvLocMastService.selectList(wrapper); + for (AgvLocMast agvLocMast : agvLocMasts) { + if (agvLocMast.getLev1() == 2) { + all2.add(agvLocMast); + } else if (agvLocMast.getLev1() == 1) { + all1.add(agvLocMast); + } + } + if (factory != null && factory.equalsIgnoreCase("B")) { + if (all2.size() > num2) { + for (AgvLocMast agvLocMast : all2) { + AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo())); + if (agvLocMast1.getLocSts().equals("O")) { + return agvLocMast1; + } + } + } else if (all1.size() > num) { + for (AgvLocMast agvLocMast : all1) { + AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo())); + if (agvLocMast1.getLocSts().equals("O")) { + return agvLocMast1; + } + } + } else { + throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�"); + } + } else { + if (all1.size() > num) { + for (AgvLocMast agvLocMast : all1) { + AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo())); + if (agvLocMast1.getLocSts().equals("O")) { + return agvLocMast1; + } + } + } else if (all2.size() > num2) { + for (AgvLocMast agvLocMast : all2) { + AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo())); + if (agvLocMast1.getLocSts().equals("O")) { + return agvLocMast1; + } + } + } else { + throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�"); + } + } + throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�"); + } catch (Exception e) { + throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�"); + } + + + } + + /** + * 搴撲綅瑙勫垯鏌ユ壘 + */ + public synchronized AgvLocMast getLocByLocRule(int type, int floor, String factory, boolean flag) { try { EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); @@ -152,15 +248,15 @@ List<AgvLocMast> agvLocMasts = new ArrayList<>(); //涓嶆槸绌烘澘浼樺厛鎵�2灞� if (Cools.isEmpty(factory)) { - wrapper.eq("floor", floor).orderBy("lev1", false); + wrapper.eq("floor", floor).orderBy("lev1", true); } else { //B鏄簩鍘傦紝G鏄笁鍘� switch (factory) { case "B": - wrapper.eq("floor", floor).orderBy("lev1", true); + wrapper.eq("floor", floor).orderBy("lev1", false).orderBy("row1", flag); break; case "G": - wrapper.eq("floor", floor).orderBy("lev1", false); + wrapper.eq("floor", floor).orderBy("lev1", true); break; default: wrapper.eq("floor", floor).orderBy("lev1", true); @@ -178,6 +274,119 @@ throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�"); } catch (Exception e) { throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�"); + } + + + } + + /** + * 搴撲綅瑙勫垯鏌ユ壘 + */ + public AgvLocMast getLocByLocRule(int type, int floor, int lev1) { + + try { + EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); + wrapper.eq("loc_sts", "O").eq("loc_type1", type); + wrapper.eq("floor", floor).eq("lev1", lev1).orderBy("bay1", false); + List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(wrapper); + 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("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�"); + } + } + + /** + * 搴撲綅瑙勫垯鏌ユ壘 + */ + public AgvLocMast getLocByLocRule2(int type, int floor, int lev1) { + + try { + EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); + wrapper.eq("loc_sts", "O").eq("loc_type1", type); + wrapper.eq("floor", floor).eq("lev1", lev1); + List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(wrapper); + if (lev1 == 2) { + int num = 20; + Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "LOC_3_NUM2")); + if (config != null && !Cools.isEmpty(config.getValue())) { + num = Integer.parseInt(config.getValue()); + } + int er = agvLocMasts.size(); + if (er < num) { + throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�2"); + } + } else if (lev1 == 1) { + int num = 8; + Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "LOC_3_NUM")); + if (config != null && !Cools.isEmpty(config.getValue())) { + num = Integer.parseInt(config.getValue()); + } + int er = agvLocMasts.size(); + if (er < num) { + throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�1"); + } + } + 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("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�"); + } + } + + /* + 搴撲綅瑙勫垯鏌ユ壘 + */ + public AgvLocMast getLocByFloorAndLev1(int type, int floor, int lev1) { + + try { + EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); + wrapper.eq("loc_sts", "O").eq("loc_type1", type); + wrapper.eq("floor", floor).eq("lev1", lev1).orderBy("bay1", true); + List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(wrapper); + + for (AgvLocMast agvLocMast : agvLocMasts) { + AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo())); + if (agvLocMast1.getLocSts().equals("O")) { + return agvLocMast1; + } + } + + return null; + } catch (Exception e) { + throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�"); + } + } + + /* +搴撲綅瑙勫垯鏌ユ壘 + */ + public AgvLocMast getLocByFloor(int type, int floor) { + try { + EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); + wrapper.eq("loc_sts", "O").eq("loc_type1", type); + wrapper.eq("floor", floor).orderBy("lev1", false); + + List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(wrapper); + for (AgvLocMast agvLocMast : agvLocMasts) { + AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo())); + if (agvLocMast1.getLocSts().equals("O")) { + return agvLocMast1; + } + } + return null; + } catch (Exception e) { + return null; } } @@ -254,6 +463,49 @@ throw new CoolException("鎼滅储搴撲綅鏃讹紝妤煎眰鍑洪敊銆�"); } + public AgvLocMast getLocNoOnXiSuer(int type, int floor) { + EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); + wrapper.eq("loc_sts", "O").eq("loc_type1", type); + wrapper.eq("floor", floor).orderBy("lev1", false); + List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(wrapper); + if (Cools.isEmpty(agvLocMasts)) { + return null; + } else { + for (AgvLocMast agvLocMast : agvLocMasts) { + AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo())); + if (agvLocMast1.getLocSts().equals("O")) { + return agvLocMast1; + } + } + } + return null; + } + + public AgvLocMast getLocNoOnXiSuer20(int type, int floor) { + EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); + wrapper.eq("loc_sts", "O").eq("loc_type1", type); + wrapper.eq("floor", floor).eq("lev1", 2); + List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(wrapper); + if (Cools.isEmpty(agvLocMasts)) { + return null; + } else { + int num = 15; + Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "LOC_6_NUM")); + if (config != null && !Cools.isEmpty(config.getValue())) { + num = Integer.parseInt(config.getValue()); + } + if (agvLocMasts.size() > num) { + for (AgvLocMast agvLocMast : agvLocMasts) { + AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo())); + if (agvLocMast1.getLocSts().equals("O")) { + return agvLocMast1; + } + } + } + } + return null; + } + //闅忔満鍙栦竴涓揣浣� private AgvLocMast getLocNoRule(int type, int floor, boolean isEmpty, boolean isCurrLev) { @@ -312,6 +564,7 @@ /** * 妫�绱㈠簱浣嶅彿 + * * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿 */ public AgvBasDevp getDevpNo(int type, int floor) { @@ -331,6 +584,7 @@ /** * 妫�绱㈠簱浣嶅彿 + * * @return locNo 妫�绱㈣嚜鍔ㄦ帴椹充綅 */ public AgvBasDevp getDevpNo(int type, int floor, String auto) { @@ -349,6 +603,7 @@ /** * 妫�绱㈠簱浣嶅彿 + * * @return locNo 妫�绱㈠彲鍏ユ帴椹充綅 */ public AgvBasDevp getDevpNo(int type, int floor, String auto, String inEable) { -- Gitblit v1.9.1