From 6d7d0dc468f6e1d2f2f46552ed12cb6db32d4f4e Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期二, 06 九月 2022 13:34:13 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java | 20 ++++
src/main/java/com/zy/asrs/utils/Utils.java | 131 ++++++++++++++++++++++++++++++--
src/main/resources/mapper/LocMastMapper.xml | 36 +++++++--
src/main/java/com/zy/asrs/mapper/LocMastMapper.java | 2
src/main/java/com/zy/asrs/service/LocMastService.java | 2
src/main/java/com/zy/common/service/CommonService.java | 2
6 files changed, 169 insertions(+), 24 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index d448c40..6db87eb 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -13,7 +13,7 @@
@Repository
public interface LocMastMapper extends BaseMapper<LocMast> {
- LocMast queryFreeLocMast(@Param("row") Integer row, @Param("rows") List<Integer> rows, @Param("locType1") Short locType1);
+ List<LocMast> queryFreeLocMast(@Param("row") Integer row, @Param("rows") List<Integer> rows, @Param("rowsLen") Integer rowsLen, @Param("locType1") Short locType1);
@Select("select loc_no from asr_loc_mast where 1=1 and loc_sts = 'O' and crn_no = #{crnNo}")
List<String> queryGroupEmptyStock(Integer crnNo);
diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java
index f39fff9..c134e40 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -11,7 +11,7 @@
/**
* 妫�绱㈠彲鐢ㄥ簱浣�
*/
- LocMast queryFreeLocMast(Integer row, List<Integer> rows, Short locType1);
+ LocMast queryFreeLocMast(Integer row, List<Integer> rows, Integer rowsLen, Short locType1);
/**
* 鑾峰彇鍚岀粍璐ф灦鐨勭┖搴撲綅
diff --git a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
index 07c5584..05c53ac 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -23,8 +23,18 @@
private RowLastnoService rowLastnoService;
@Override
- public LocMast queryFreeLocMast(Integer row, List<Integer> rows, Short locType1) {
- return this.baseMapper.queryFreeLocMast(row, rows, locType1);
+ public LocMast queryFreeLocMast(Integer row, List<Integer> rows, Integer rowsLen, Short locType1) {
+ List<LocMast> locMasts = this.baseMapper.queryFreeLocMast(row, rows, rowsLen, locType1);
+ if (Cools.isEmpty(locMasts)) {
+ return null;
+ }
+ Integer innermostRow = Utils.getInnermostRow(locMasts.get(0).getLocNo());
+ for (LocMast locMast : locMasts) {
+ if (locMast.getRow1().equals(innermostRow)) {
+ return locMast;
+ }
+ }
+ return null;
}
@Override
@@ -81,8 +91,12 @@
}
@Override
- public void breakUp(String locNo) {
+ public synchronized void breakUp(String locNo) {
+ List<String> groupLoc = Utils.getGroupOuterLoc(locNo);
+ for (String outerLocNo : groupLoc) {
+ LocMast locMast = this.selectById(outerLocNo);
+ }
}
}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 67f9ef3..04516e3 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -196,6 +196,41 @@
}
}
+ public static Integer getInnermostRow(String locNo){
+ int row = getRow(locNo);
+ switch (row) {
+ case 1:
+ case 2:
+ case 3:
+ return 1;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ return 7;
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ return 8;
+ case 12:
+ case 13:
+ case 14:
+ return 14;
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ return 15;
+ case 19:
+ case 20:
+ case 21:
+ return 21;
+ default:
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ }
+
public static List<String> getGroupLoc(String locNo){
int row = getRow(locNo);
@@ -320,15 +355,91 @@
}
}
- public static void main(String[] args) {
- SlaveProperties slaveProperties = new SlaveProperties();
- slaveProperties.setDoubleDeep(true);
- List<Integer> list = new ArrayList<>();
- list.add(1);list.add(4);list.add(5);list.add(8);list.add(9);list.add(12);
- slaveProperties.setDoubleLocs(list);
- slaveProperties.setGroupCount(4);
- Integer deepRow = getDeepRow(slaveProperties, 6);
- System.out.println(deepRow);
-
+ public static List<String> getGroupOuterLoc(String locNo){
+ int row = getRow(locNo);
+ switch (row) {
+ case 1:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(2), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
+ }};
+ case 2:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
+ }};
+ case 3:
+ case 4:
+ case 11:
+ case 12:
+ case 18:
+ case 19:
+ return new ArrayList<>();
+ case 5:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+ }};
+ case 6:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+ }};
+ case 7:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
+ }};
+ case 8:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ }};
+ case 9:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ }};
+ case 10:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ }};
+ case 13:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(12), 2) + locNo.substring(2));
+ }};
+ case 14:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(12), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(13), 2) + locNo.substring(2));
+ }};
+ case 15:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ }};
+ case 16:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ }};
+ case 17:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ }};
+ case 20:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(19), 2) + locNo.substring(2));
+ }};
+ case 21:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(19), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(20), 2) + locNo.substring(2));
+ }};
+ default:
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
}
+
}
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 66f91e7..c9d468a 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -269,7 +269,7 @@
if (locMast == null) {
List<Integer> rows = Utils.getGroupLoc(curRow);
- locMast = locMastService.queryFreeLocMast(null, rows, locTypeDto.getLocType1());
+ locMast = locMastService.queryFreeLocMast(null, rows, rows.size(), locTypeDto.getLocType1());
// 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
// if (!locMastService.checkEmptyCount(locMast)) {
// locMast = null;
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 2c261f9..36d335e 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -39,18 +39,38 @@
</resultMap>
<select id="queryFreeLocMast" resultMap="BaseResultMap">
- select top 1 *
+ select
+ *
from asr_loc_mast
- where
- row1 in
+ where 1=1
+ and row1 in
<foreach item="item" collection="rows" index="index" separator="," open="(" close=")">
#{item}
</foreach>
- <if test="locType1 != null">
- and loc_type1 = #{locType1}
- </if>
- and loc_sts='O'
- order by loc_sts desc,row1 asc, lev1 asc, bay1 asc
+ and ctn_no =
+ (
+ select
+ top 1
+ ctn_no
+ from (
+ select
+ ctn_no,
+ count(1) as count
+ from asr_loc_mast
+ where 1=1
+ and row1 in
+ <foreach item="item" collection="rows" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ and loc_sts = 'O'
+ <if test="locType1 != null">
+ and loc_type1 = #{locType1}
+ </if>
+ group by ctn_no
+ ) a
+ where count = #{rowsLen}
+ order by right(ctn_no, 2) + 0 asc, left(ctn_no, 3) + 0 asc
+ )
</select>
</mapper>
--
Gitblit v1.9.1