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 | 602 ++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 508 insertions(+), 94 deletions(-)
diff --git a/src/main/java/com/zy/common/service/AgvCommonService.java b/src/main/java/com/zy/common/service/AgvCommonService.java
index dcf9a62..e360c91 100644
--- a/src/main/java/com/zy/common/service/AgvCommonService.java
+++ b/src/main/java/com/zy/common/service/AgvCommonService.java
@@ -5,10 +5,14 @@
import com.core.exception.CoolException;
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;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -31,6 +35,14 @@
private MatService matService;
@Autowired
private LocRuleService locRuleService;
+ @Autowired
+ AgvBasDevpService agvBasDevpService;
+
+ @Autowired
+ private ConfigService configService;
+
+ @Autowired
+ private LocUtils locUtils;
public int getWorkNo(Integer wrkMk) {
AgvWrkLastno wrkLastno = agvWrkLastnoService.selectById(wrkMk);
@@ -43,24 +55,24 @@
int sNo = wrkLastno.getSNo();
int eNo = wrkLastno.getENo();
- workNo = workNo>=eNo ? sNo : workNo+1;
+ workNo = workNo >= eNo ? sNo : workNo + 1;
while (true) {
AgvWrkMast wrkMast = agvWrkMastService.selectById(workNo);
if (null != wrkMast) {
- workNo = workNo>=eNo ? sNo : workNo+1;
+ workNo = workNo >= eNo ? sNo : workNo + 1;
} else {
break;
}
}
- if (workNo > 0){
+ if (workNo > 0) {
wrkLastno.setWrkNo(workNo);
agvWrkLastnoService.updateById(wrkLastno);
}
if (workNo == 0) {
throw new CoolException("鐢熸垚宸ヤ綔鍙峰け璐ワ紝璇疯仈绯荤鐞嗗憳");
} else {
- if (agvWrkMastService.selectById(workNo)!=null) {
+ if (agvWrkMastService.selectById(workNo) != null) {
throw new CoolException("鐢熸垚宸ヤ綔鍙�" + workNo + "鍦ㄥ伐浣滄。涓凡瀛樺湪");
}
}
@@ -69,88 +81,313 @@
/**
* 妫�绱㈠簱浣嶅彿
+ *
* @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(floor); // 1. 闅忔満搴撲綅
- }
+// if(Cools.isEmpty(agvWaitPakinList)){
+// return getLocNoRule(type); // 1. 闅忔満搴撲綅
+// }
- //搴撲綅瑙勫垯
- locMast = getLocByLocRule(agvWaitPakinList.get(0),floor); // 2. 鎸夊簱浣嶈鍒欐悳绱�
- if(!Cools.isEmpty(locMast)){
- return locMast;
- }
+// //搴撲綅瑙勫垯
+// locMast = getLocByLocRule(agvWaitPakinList.get(0),floor); // 2. 鎸夊簱浣嶈鍒欐悳绱�
+// if(!Cools.isEmpty(locMast)){
+// 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;
+// }
- //搴撲綅缂栫爜瑙勫垯
- 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;
- }
-
-
- // 寮�濮嬫煡鎵惧簱浣� ==============================>>
- locMast = getLocNoRule(floor);
- if (locMast != null) {
- return locMast;
+ try {
+ // 寮�濮嬫煡鎵惧簱浣� ==============================>>
+ // 绠卞3鍏ュ簱
+// if (type == 3 && factory != null) {
+// //浼樺厛鍏ュ簱鍚稿1妤硷紝鍦�2妤�
+// locMast = locUtils.getLocNoRuleByFactory(type, isEmpty, factory);
+// } else if (type == 6) {
+// //鍗婃垚鍝佺澹冲叆搴擄紝鍏ュ埌鍚稿2妤肩殑370涓簱浣嶉噷
+// locMast = locUtils.getLocNoRuleByFloor(type, floor, isEmpty, 2);
+// } else {
+// //涓嶅姩杩欎釜閫昏緫
+ if (type == 6) {
+ locMast = locUtils.getLocNoRuleByFloor6(type, floor);
+ } else {
+ 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 + "妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅");
+ }
+
+ /**
+ * 搴撲綅瑙勫垯鏌ユ壘锛屼細棰勭暀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 synchronized AgvLocMast getLocByLocRule(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<>();
+ //涓嶆槸绌烘澘浼樺厛鎵�2灞�
+ if (Cools.isEmpty(factory)) {
+ wrapper.eq("floor", floor).orderBy("lev1", true);
+ } else {
+ //B鏄簩鍘傦紝G鏄笁鍘�
+ switch (factory) {
+ case "B":
+ wrapper.eq("floor", floor).orderBy("lev1", false).orderBy("row1", flag);
+ break;
+ case "G":
+ wrapper.eq("floor", floor).orderBy("lev1", true);
+ break;
+ default:
+ wrapper.eq("floor", floor).orderBy("lev1", true);
+ break;
+ }
+ }
+
+ 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 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("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�");
+ }
}
/*
- 搴撲綅瑙勫垯鏌ユ壘
- */
- private AgvLocMast getLocByLocRule(AgvWaitPakin agvWaitPakin, int floor) {
- List<AgvLocRule> agvLocRules = null;
- agvLocRules = agvLocRuleService.selectList(new EntityWrapper<AgvLocRule>()
- .eq("matnr", agvWaitPakin.getMatnr())
- .eq("batch", agvWaitPakin.getModel())
- .eq("floor", floor));
- if(Cools.isEmpty(agvLocRules)){
- agvLocRules = agvLocRuleService.selectList(new EntityWrapper<AgvLocRule>()
- .eq("matnr", agvWaitPakin.getMatnr())
- .eq("floor", floor));
+ 搴撲綅瑙勫垯鏌ユ壘
+ */
+ 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("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�");
}
- if(Cools.isEmpty(agvLocRules)){
+ }
+
+ /*
+搴撲綅瑙勫垯鏌ユ壘
+ */
+ 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;
}
-
- for (AgvLocRule agvLocRule : agvLocRules) {
- EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
- wrapper.between("row1",agvLocRule.getRowBeg(),agvLocRule.getRowEnd())
- .between("bay1",agvLocRule.getBayBeg(),agvLocRule.getBayEnd())
- .between("lev1",agvLocRule.getLevBeg(),agvLocRule.getLevEnd())
- .eq("floor",floor)
- .eq("loc_sts","O");
- AgvLocMast agvLocMast = agvLocMastService.selectOne(wrapper);
- if(!Cools.isEmpty(agvLocMast)){
- return agvLocMast;
- }
- }
-
- return null;
}
/*
@@ -187,7 +424,7 @@
/*
闈犺繎鎽嗘斁瑙勫垯
*/
- private AgvLocMast getLocByProximityRule(){
+ private AgvLocMast getLocByProximityRule() {
//to do
return null;
}
@@ -195,30 +432,30 @@
/*
鏍规嵁鐗╂枡棰戠巼鏌ユ壘
*/
- private AgvLocMast getLocByFre(int fre, int floor){
- if(floor == 1){
- if(fre == 1){
+ private AgvLocMast getLocByFre(int fre, int floor) {
+ if (floor == 1) {
+ if (fre == 1) {
return agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>()
- .eq("floor",floor)
- .eq("loc_sts","O")
- .orderBy("bay1",false));
- }else{
+ .eq("floor", floor)
+ .eq("loc_sts", "O")
+ .orderBy("bay1", false));
+ } else {
return agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>()
- .eq("floor",floor)
- .eq("loc_sts","O")
+ .eq("floor", floor)
+ .eq("loc_sts", "O")
.orderBy("bay1"));
}
}
- if(floor == 3){
- if(fre == 1){
+ if (floor == 3) {
+ if (fre == 1) {
return agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>()
- .eq("floor",floor)
- .eq("loc_sts","O")
- .orderBy("row1",false));
- }else{
+ .eq("floor", floor)
+ .eq("loc_sts", "O")
+ .orderBy("row1", false));
+ } else {
return agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>()
- .eq("floor",floor)
- .eq("loc_sts","O")
+ .eq("floor", floor)
+ .eq("loc_sts", "O")
.orderBy("row1"));
}
}
@@ -226,13 +463,190 @@
throw new CoolException("鎼滅储搴撲綅鏃讹紝妤煎眰鍑洪敊銆�");
}
- //闅忔満鍙栦竴涓揣浣�
- private AgvLocMast getLocNoRule(int floor){
- return agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>()
- .eq("floor",floor)
- .eq("loc_sts","O")
- .eq(false,"loc_type2",1));
+ 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) {
+ 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