src/main/java/com/zy/asrs/mapper/LocMastMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/LocMastService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/WrkMastService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/utils/Utils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/service/CommonService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/LocMastMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/WrkMastMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -43,7 +43,7 @@ LocMast findInEmptyLocMast(Short locType1, @Param("rows") List<Integer> rows); //在库位组中搜索可入的空库位 LocMast findEmptyLocMastByLocNos(Short locType1, @Param("locNos") List<String> locNos); List<LocMast> findEmptyLocMastByLocNos(Short locType1, @Param("locNos") List<String> locNos); //搜索低频(混放区域)空库位 List<LocMast> findEmptyLowFrequencyLocMast(Short locType1); src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -29,4 +29,9 @@ WrkMast selectPakoutOfStaNo(@Param("staNo")Integer staNo); /** * 获取相同规格货物的库位号,且状态为S入库预约类型 */ List<WrkMast> selectSameWrkMast(String matnr); } src/main/java/com/zy/asrs/service/LocMastService.java
@@ -62,7 +62,7 @@ LocMast findInEmptyLocMast(Short locType1, List<Integer> rows); //在库位组中搜索可入的空库位 LocMast findEmptyLocMastByLocNos(Short locType1, List<String> locNos); List<LocMast> findEmptyLocMastByLocNos(Short locType1, List<String> locNos); //搜索低频(混放区域)空库位 List<LocMast> findEmptyLowFrequencyLocMast(Short locType1); src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -30,4 +30,9 @@ WrkMast selectPakoutOfStaNo(Integer staNo); /** * 获取相同规格货物的库位号,且状态为S入库预约类型 */ List<WrkMast> selectSameWrkMast(String matnr); } src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -215,7 +215,7 @@ } @Override public LocMast findEmptyLocMastByLocNos(Short locType1, List<String> locNos) { public List<LocMast> findEmptyLocMastByLocNos(Short locType1, List<String> locNos) { return this.baseMapper.findEmptyLocMastByLocNos(locType1, locNos); } src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -116,4 +116,8 @@ return this.baseMapper.selectPakoutOfStaNo(staNo); } @Override public List<WrkMast> selectSameWrkMast(String matnr) { return this.baseMapper.selectSameWrkMast(matnr); } } src/main/java/com/zy/asrs/utils/Utils.java
@@ -564,6 +564,49 @@ } } /** * 检测当前库位内侧其他库位是否为D、F、X * 返回true表示内侧库位不是DFX,返回false表示内侧库位是DFX */ public static boolean checkInsideLocIsDFX(String locNo) { LocMastService locMastService = SpringUtils.getBean(LocMastService.class); List<String> insideLoc = Utils.getGroupInsideLoc(locNo); if (insideLoc.size() > 0) { List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc); for (LocMast mast : insideLocMast) { if (!mast.getLocSts().equals("D") && !mast.getLocSts().equals("F") && !mast.getLocSts().equals("X")) { //D、F、X(不能选定这个外侧库位) return true; } } } return false; } /** * 检测当前库位内侧其他库位是否为D、F、X、S * 返回true表示内侧库位不是DFX,返回false表示内侧库位是DFX */ public static boolean checkInsideLocIsDFXS(String locNo) { LocMastService locMastService = SpringUtils.getBean(LocMastService.class); List<String> insideLoc = Utils.getGroupInsideLoc(locNo); if (insideLoc.size() > 0) { List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc); for (LocMast mast : insideLocMast) { if (!mast.getLocSts().equals("D") && !mast.getLocSts().equals("F") && !mast.getLocSts().equals("X") && !mast.getLocSts().equals("S")) { //D、F、X、S(不能选定这个外侧库位) return true; } } } return false; } public static void main(String[] args) { List<String> groupLoc = Utils.getGroupLoc("1300801"); System.out.println(groupLoc); src/main/java/com/zy/common/service/CommonService.java
@@ -241,12 +241,19 @@ //单品类型入库 private LocMast getLocNoStep2(LocTypeDto locTypeDto, List<String> matNos, List<Integer> rows) { LocMast locMast = null; //找内侧空库位(非最外侧库位) List<String> locNos = locDetlService.getSameDetl(matNos.get(0)); for (String locNo : locNos) { List<String> groupLoc = Utils.getGroupLoc(locNo); LocMast locMast0 = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc); if (null != locMast0) { //先找工作档 List<WrkMast> wrkMasts = wrkMastService.selectSameWrkMast(matNos.get(0)); for (WrkMast wrkMast : wrkMasts) { List<String> groupLoc = Utils.getGroupLoc(wrkMast.getLocNo()); List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc); for (LocMast locMast0 : locMasts) { //检测当前库位内侧其他库位是否为D、F、X、S if (Utils.checkInsideLocIsDFXS(locMast0.getLocNo())) { //内侧其他库位不是D、F、X、S。不能选取该库位 continue; } // 浅库位符合尺寸检测 if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) { // 浅库位对应堆垛机必须可用且无异常 @@ -255,6 +262,34 @@ if (locMastService.checkEmptyCount(locMast0, 10)) { locMast = locMast0; break; } } } } } //找内侧空库位(非最外侧库位) if (locMast == null) { List<String> locNos = locDetlService.getSameDetl(matNos.get(0)); for (String locNo : locNos) { List<String> groupLoc = Utils.getGroupLoc(locNo); List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc); for (LocMast locMast0 : locMasts) { //检测当前库位内侧其他库位是否为D、F、X if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) { //内侧其他库位不是D、F、X。不能选取该库位 continue; } // 浅库位符合尺寸检测 if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) { // 浅库位对应堆垛机必须可用且无异常 if (true || basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { // 因库位移转、需预留空库位 if (locMastService.checkEmptyCount(locMast0, 10)) { locMast = locMast0; break; } } } } @@ -276,21 +311,8 @@ List<LocMast> locMasts = locMastService.findOutMast(locTypeDto.getLocType1(), crnNos); for (LocMast locMast0 : locMasts) { //检测当前库位内侧其他库位是否为D、F、X boolean flag = false; List<String> insideLoc = Utils.getGroupInsideLoc(locMast0.getLocNo()); if (insideLoc.size() > 0) { List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc); for (LocMast mast : insideLocMast) { if (!mast.getLocSts().equals("D") && !mast.getLocSts().equals("F") && !mast.getLocSts().equals("X")) { //D、F、X(不能选定这个外侧库位) flag = true; break; } } } if (flag) { if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) { //内侧其他库位不是D、F、X。不能选取该库位 continue; } @@ -315,21 +337,13 @@ List<LocMast> locMasts = locMastService.findEmptyLowFrequencyLocMast(locTypeDto.getLocType1()); for (LocMast locMast0 : locMasts) { //检测当前库位内侧其他库位是否为D、F、X boolean flag = false; List<String> insideLoc = Utils.getGroupInsideLoc(locMast0.getLocNo()); if (insideLoc.size() > 0) { List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc); for (LocMast mast : insideLocMast) { if (!mast.getLocSts().equals("D") && !mast.getLocSts().equals("F") && !mast.getLocSts().equals("X")) { //D、F、X(不能选定这个外侧库位) flag = true; break; } } if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) { //内侧其他库位不是D、F、X。不能选取该库位 continue; } //检测当前库位外侧库位是否为O(空库位) boolean flag = false; List<String> outerLoc = Utils.getGroupOuterLoc(locMast0.getLocNo()); if (outerLoc.size() > 0) { List<LocMast> outerLocMast = locMastService.selectByLocNos(outerLoc); src/main/resources/mapper/LocMastMapper.xml
@@ -308,7 +308,7 @@ </select> <select id="findEmptyLocMastByLocNos" resultMap="BaseResultMap"> select top 1 * from asr_loc_mast select * from asr_loc_mast where loc_type2 = 1 and loc_type1 = #{locType1} and loc_no in src/main/resources/mapper/WrkMastMapper.xml
@@ -118,4 +118,17 @@ </select> <select id="selectSameWrkMast" resultMap="BaseResultMap"> select wm.* from asr_wrk_mast wm left join asr_loc_mast lm on lm.loc_no = wm.loc_no left join asr_wrk_detl wd on wd.wrk_no = wm.wrk_no where io_type=1 and wrk_sts < 11 and lm.loc_sts = 'S' and wd.matnr = #{matnr} ORDER BY wm.wrk_no desc </select> </mapper>