From aa221b6b6c3939130c78e4219207d14ce877ff30 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 06 八月 2025 15:57:34 +0800
Subject: [PATCH] 1
---
src/main/java/com/zy/common/service/AgvCommonService.java | 217 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 212 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/zy/common/service/AgvCommonService.java b/src/main/java/com/zy/common/service/AgvCommonService.java
index c7903e4..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;
@@ -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;
@@ -142,9 +151,96 @@
}
/**
+ * 搴撲綅瑙勫垯鏌ユ壘锛屼細棰勭暀20涓簱浣�
+ */
+ 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 AgvLocMast getLocByLocRule(int type, int floor, String factory) {
+ public synchronized AgvLocMast getLocByLocRule(int type, int floor, String factory, boolean flag) {
try {
EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
@@ -157,7 +253,7 @@
//B鏄簩鍘傦紝G鏄笁鍘�
switch (factory) {
case "B":
- wrapper.eq("floor", floor).orderBy("lev1", false);
+ wrapper.eq("floor", floor).orderBy("lev1", false).orderBy("row1", flag);
break;
case "G":
wrapper.eq("floor", floor).orderBy("lev1", true);
@@ -179,6 +275,8 @@
} catch (Exception e) {
throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�");
}
+
+
}
/**
@@ -189,8 +287,51 @@
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")) {
@@ -211,7 +352,30 @@
try {
EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
wrapper.eq("loc_sts", "O").eq("loc_type1", type);
- wrapper.eq("floor", floor).eq("lev1", lev1);
+ 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) {
@@ -222,7 +386,7 @@
}
return null;
} catch (Exception e) {
- throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�");
+ return null;
}
}
@@ -299,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) {
--
Gitblit v1.9.1