From ab14726215678ac69adfeafbd845ebc5b0776ea2 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 14 一月 2025 14:56:41 +0800
Subject: [PATCH] 优化订单同步逻辑及库位查找
---
src/main/java/com/zy/common/service/AgvCommonService.java | 164 +++++++++++++++++++++++++++++++-----------------------
1 files changed, 94 insertions(+), 70 deletions(-)
diff --git a/src/main/java/com/zy/common/service/AgvCommonService.java b/src/main/java/com/zy/common/service/AgvCommonService.java
index 8efe2b6..5be7c9a 100644
--- a/src/main/java/com/zy/common/service/AgvCommonService.java
+++ b/src/main/java/com/zy/common/service/AgvCommonService.java
@@ -5,6 +5,7 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
+import com.zy.asrs.utils.LocUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -35,6 +36,9 @@
@Autowired
AgvBasDevpService agvBasDevpService;
+ @Autowired
+ private LocUtils locUtils;
+
public int getWorkNo(Integer wrkMk) {
AgvWrkLastno wrkLastno = agvWrkLastnoService.selectById(wrkMk);
if (Cools.isEmpty(wrkLastno)) {
@@ -46,24 +50,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 + "鍦ㄥ伐浣滄。涓凡瀛樺湪");
}
}
@@ -74,7 +78,7 @@
* 妫�绱㈠簱浣嶅彿
* @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
*/
- public AgvLocMast getLocNo(int type, int floor,boolean isEmpty,boolean isCurrLev) {
+ public AgvLocMast getLocNo(int type, int floor, boolean isEmpty, boolean isCurrLev, String factory) {
// 鐩爣搴撲綅
AgvLocMast locMast = null;
// if(Cools.isEmpty(agvWaitPakinList)){
@@ -112,18 +116,29 @@
// }
- try{
+ try {
// 寮�濮嬫煡鎵惧簱浣� ==============================>>
- locMast = getLocNoRule(type,floor,isEmpty,isCurrLev);
+ // 鍥涙湡椤圭洰锛氶渶瑕佹敼鏌ユ壘搴撲綅閫昏緫
+ // 绠卞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 {
+ //涓嶅姩杩欎釜閫昏緫
+ locMast = getLocNoRule(type, floor, isEmpty, isCurrLev);
+ }
if (locMast != null) {
return locMast;
}
- }catch (Exception e){
- throw new CoolException(floor+"妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅===>"+e.getMessage());
+ } catch (Exception e) {
+ throw new CoolException(floor + "妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅===>" + e.getMessage());
}
//鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
- throw new CoolException(floor+"妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅");
+ throw new CoolException(floor + "妤硷紱璇ユゼ灞傛病鏈夌┖搴撲綅");
}
/*
@@ -135,24 +150,24 @@
.eq("matnr", agvWaitPakin.getMatnr())
.eq("batch", agvWaitPakin.getModel())
.eq("floor", floor));
- if(Cools.isEmpty(agvLocRules)){
+ if (Cools.isEmpty(agvLocRules)) {
agvLocRules = agvLocRuleService.selectList(new EntityWrapper<AgvLocRule>()
.eq("matnr", agvWaitPakin.getMatnr())
.eq("floor", floor));
}
- if(Cools.isEmpty(agvLocRules)){
+ if (Cools.isEmpty(agvLocRules)) {
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");
+ 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)){
+ if (!Cools.isEmpty(agvLocMast)) {
return agvLocMast;
}
}
@@ -194,7 +209,7 @@
/*
闈犺繎鎽嗘斁瑙勫垯
*/
- private AgvLocMast getLocByProximityRule(){
+ private AgvLocMast getLocByProximityRule() {
//to do
return null;
}
@@ -202,30 +217,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"));
}
}
@@ -233,53 +248,62 @@
throw new CoolException("鎼滅储搴撲綅鏃讹紝妤煎眰鍑洪敊銆�");
}
+
//闅忔満鍙栦竴涓揣浣�
- private AgvLocMast getLocNoRule(int type,int floor,boolean isEmpty,boolean isCurrLev){
+ private AgvLocMast getLocNoRule(int type, int floor, boolean isEmpty, boolean isCurrLev) {
Boolean orderBy = false;
int levCount = 0;
int times = 1;
- if (floor == 1) {
+ if (floor == 1 || floor >= 4) {
+ if (floor >= 4) {
+ floor = 1;
+ }
orderBy = true;
levCount = 2;
} else {
orderBy = false;
levCount = 1;
}
- try{
+ 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);
+ wrapper.eq("floor", floor).eq("lev1", 1);
} else {
- wrapper.eq("floor", floor).orderBy("lev1",!orderBy);
+ 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);
+ 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);
+ return getLocNoRule(type, floor, isEmpty, isCurrLev);
}
}
- for (AgvLocMast agvLocMast : agvLocMasts){
+ for (AgvLocMast agvLocMast : agvLocMasts) {
AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo()));
- if (agvLocMast1.getLocSts().equals("O")){
+ if (agvLocMast1.getLocSts().equals("O")) {
return agvLocMast1;
}
}
throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�");
- }catch (Exception e){
+ } catch (Exception e) {
throw new CoolException("鎼滅储搴撲綅鏃讹紝鏈壘鍒板彲鍏ュ簱搴撲綅銆�");
}
}
+
/**
* 妫�绱㈠簱浣嶅彿
* @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
@@ -289,13 +313,13 @@
AgvBasDevp basDevp = null;
// 寮�濮嬫煡鎵惧簱浣� ==============================>>
- basDevp = getDevpNoRule(type,floor);
+ basDevp = getDevpNoRule(type, floor);
if (basDevp != null) {
return basDevp;
}
//鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
- throw new CoolException("妤煎眰鍙凤細"+floor+"锛涜妤煎眰娌℃湁绌烘帴椹充綅");
+ throw new CoolException("妤煎眰鍙凤細" + floor + "锛涜妤煎眰娌℃湁绌烘帴椹充綅");
}
@@ -308,25 +332,25 @@
AgvBasDevp basDevp = null;
// 寮�濮嬫煡鎵惧簱浣� ==============================>>
- basDevp = getDevpNoAuto(type,floor,auto);
+ basDevp = getDevpNoAuto(type, floor, auto);
if (basDevp != null) {
return basDevp;
}
//鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
- throw new CoolException("妤煎眰鍙凤細"+floor+"锛涜妤煎眰娌℃湁绌烘帴椹充綅");
+ throw new CoolException("妤煎眰鍙凤細" + floor + "锛涜妤煎眰娌℃湁绌烘帴椹充綅");
}
/**
* 妫�绱㈠簱浣嶅彿
* @return locNo 妫�绱㈠彲鍏ユ帴椹充綅
*/
- public AgvBasDevp getDevpNo(int type, int floor, String auto ,String inEable) {
+ public AgvBasDevp getDevpNo(int type, int floor, String auto, String inEable) {
// 鐩爣搴撲綅
AgvBasDevp basDevp = null;
// 寮�濮嬫煡鎵惧簱浣� ==============================>>
- basDevp = getDevpNoInEable(type,floor,inEable);
+ basDevp = getDevpNoInEable(type, floor, inEable);
if (basDevp != null) {
return basDevp;
}
@@ -336,32 +360,32 @@
}
//闅忔満鍙栦竴涓揣浣�
- private AgvBasDevp getDevpNoRule(int type,int floor){
+ 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"));
+ .eq("loc_sts", "O")
+ .eq("floor", floor)
+ .eq("loc_type1", type)
+ .like("dev_no", "DB"));
}
//闅忔満鍙栦竴涓揣浣�
- private AgvBasDevp getDevpNoAuto(int type,int floor,String auto){
+ 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"));
+ .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){
+ 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"));
+ .eq("loc_sts", "O")
+ .eq("floor", floor)
+ .eq("loc_type1", type)
+ .eq("in_enable", inEable)
+ .like("dev_no", "DB"));
}
}
--
Gitblit v1.9.1