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