From 5144715ea4f275375c439cc3fe59253202425198 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期二, 28 四月 2026 16:17:06 +0800
Subject: [PATCH] 1号堆垛机摆放逻辑先深后浅改为正常层列排递增
---
src/main/java/com/zy/common/service/CommonService.java | 75 ++++++++++++++++++++++++++-----------
1 files changed, 52 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index dce1bc3..e43f03f 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -166,12 +166,14 @@
return null;
}
+ private final Object locLock = new Object();
+
@Transactional(propagation = Propagation.REQUIRED)
public StartupDto getLocNoNew(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, int locArea) {
// 鐩爣搴撲綅
LocMast locMast;
-
+ synchronized (locLock) {
// 鍏ョ┖妗跺簱
if (staDescId == 1 && locArea == 2) {
Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "emptyBucketInCacheCount").eq("status", 1));
@@ -192,7 +194,12 @@
// if (wrkMastList.size() == 0) {
// 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
- List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
+ Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O");
+ String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
+ if (model.equals("IBC")) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L
+ wrapper.ne("lev1", 11);
+ }
+ List<LocMast> locMasts = locMastService.selectList(wrapper);
List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
if (collect.size() - wrkMastList.size() <= 0 && collect1.size() - wrkMastList.size() <= 0) {
@@ -362,11 +369,18 @@
basCrnp.setWrkNo(count);
basCrnpList.add(basCrnp);
}
+ final String sortByType;
+ Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "inLocCrn1PriorityAssign").eq("status", 1));
+ if (!Cools.isEmpty(config.getValue()) && config.getValue().equals("Y")) {
+ sortByType = "asc"; // 瀹氫箟 1 鈫� 2 鈫� 3 鐨勪紭鍏堢骇
+ } else {
+ sortByType = "other"; // 瀹氫箟 2 鈫� 3 鈫� 1 鐨勪紭鍏堢骇
+ }
basCrnpList = basCrnpList.stream().sorted(Comparator.comparing(BasCrnp::getWrkNo).thenComparing(BasCrnp::getCrnNo,((o1, o2) -> {
// 瀹氫箟 2 鈫� 3 鈫� 1 鐨勪紭鍏堢骇
- int order1 = getCustomOrder(o1);
- int order2 = getCustomOrder(o2);
+ int order1 = getCustomOrder(o1,sortByType);
+ int order2 = getCustomOrder(o2,sortByType);
return Integer.compare(order1, order2);
}))).collect(Collectors.toList());
@@ -383,25 +397,29 @@
if (model == null || !model.equals("208L")) {
wrapper.ne("lev1", 11);
}
- if (crnNo == 1) {
- wrapper.in("row1", 1, 4);
+// if (crnNo == 1) {
+// wrapper.in("row1", 1, 4);
+// }
+ int count = locMastService.selectCount(wrapper);
+ if (crnNo == 1 && count <= 4) {
+ continue;
}
locMast = locMastService.selectOne(wrapper);
if (locMast != null) {
break;
}
// 娣卞簱浣嶆病鏈変簡鍒欒幏鍙栦竴涓祬搴撲綅
- if (crnNo == 1) {
- locMast = locMastService.selectOne(wrapper.in("row1", 2, 3));
- if (locMast != null) {
- int count = locMastService.selectCount(wrapper);
- if (count <= 10) {
- locMast = null;
- } else {
- break;
- }
- }
- }
+// if (crnNo == 1) {
+// locMast = locMastService.selectOne(wrapper.in("row1", 2, 3));
+// if (locMast != null) {
+// int count = locMastService.selectCount(wrapper);
+// if (count <= 10) {
+// locMast = null;
+// } else {
+// break;
+// }
+// }
+// }
}
if (locMast == null) {
@@ -438,15 +456,26 @@
startupDto.setSourceStaNo(sourceStaNo);
startupDto.setLocNo(locMast.getLocNo());
return startupDto;
+ }
}
// 杈呭姪鏂规硶锛氬畾涔� crn_no 鐨勬帓搴忎紭鍏堢骇
- private static int getCustomOrder(Integer crnNo) {
- switch (crnNo) {
- case 2: return 1; // 2 鎺掔涓�
- case 3: return 2; // 3 鎺掔浜�
- case 1: return 3; // 1 鎺掔涓�
- default: return 4; // 鍏朵粬鍊兼帓鏈�鍚庯紙濡傛灉鏈夛級
+ private static int getCustomOrder(Integer crnNo, String sort) {
+ switch (sort) {
+ case "other":
+ switch (crnNo) {
+ case 2:
+ return 1; // 2 鎺掔涓�
+ case 3:
+ return 2; // 3 鎺掔浜�
+ case 1:
+ return 3; // 1 鎺掔涓�
+ default:
+ return 4; // 鍏朵粬鍊兼帓鏈�鍚庯紙濡傛灉鏈夛級
+ }
+ case "asc":
+ default:
+ return crnNo;
}
}
--
Gitblit v1.9.1