src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/model/StartupDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/model/enums/WorkNoType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/service/CommonService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -16,6 +16,7 @@ import com.zy.common.model.LocDetlDto; import com.zy.common.model.OutLocDto; import com.zy.common.model.StartupDto; import com.zy.common.model.enums.WorkNoType; import com.zy.common.service.CommonService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -68,11 +69,11 @@ } // 源站点状态检测 BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true); // 生成工作号 int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); // 检索库位 List<String> matNos = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatNo).distinct().collect(Collectors.toList()); StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matNos); // 生成工作号 int workNo = dto.getWorkNo(); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); @@ -189,7 +190,7 @@ throw new CoolException("出库路径不存在"); } // 生成工作号 int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); @@ -251,10 +252,9 @@ public String emptyPlateIn(Integer devpNo, Long userId) { // 源站点状态检测 BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); // 生成工作号 int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); // 检索库位 StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null); int workNo = dto.getWorkNo(); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); @@ -311,7 +311,7 @@ } for (String locNo : param.getLocNos()) { // 获取工作号 int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type); // 获取库位 LocMast locMast = locMastService.selectById(locNo); if (Cools.isEmpty(locMast)) { @@ -403,7 +403,7 @@ throw new CoolException("移转库位属于不同堆垛机"); } // 获取工作号 int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); int workNo = commonService.getWorkNo(WorkNoType.PICK.type); // 保存工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); src/main/java/com/zy/common/model/StartupDto.java
@@ -1,8 +1,11 @@ package com.zy.common.model; import lombok.Data; /** * Created by vincent on 2020/6/11 */ @Data public class StartupDto { private Integer sourceStaNo; @@ -13,35 +16,6 @@ private String locNo; public Integer getSourceStaNo() { return sourceStaNo; } private Integer workNo; public void setSourceStaNo(Integer sourceStaNo) { this.sourceStaNo = sourceStaNo; } public Integer getStaNo() { return staNo; } public void setStaNo(Integer staNo) { this.staNo = staNo; } public Integer getCrnNo() { return crnNo; } public void setCrnNo(Integer crnNo) { this.crnNo = crnNo; } public String getLocNo() { return locNo; } public void setLocNo(String locNo) { this.locNo = locNo; } } src/main/java/com/zy/common/model/enums/WorkNoType.java
New file @@ -0,0 +1,48 @@ package com.zy.common.model.enums; import com.core.exception.CoolException; /** * 工作号排序规则 */ public enum WorkNoType { PAKIN(0), PICK(1), PAKOUT(2), OTHER(3), ; public Integer type; WorkNoType(Integer type) { this.type = type; } public static Integer getWorkNoType(Integer ioType) { switch (ioType) { case 1: return PAKIN.type; case 10: return PAKIN.type; case 11: return PICK.type; case 53: case 54: case 57: return PICK.type; case 101: return PAKOUT.type; case 103: case 104: case 107: return PICK.type; case 110: return PAKOUT.type; default: break; } throw new CoolException(ioType + "的任务类型无法生成工作号"); } } src/main/java/com/zy/common/service/CommonService.java
@@ -8,6 +8,7 @@ import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import com.zy.common.model.StartupDto; import com.zy.common.model.enums.WorkNoType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -39,7 +40,7 @@ /** * 生成工作号 * @param wrkMk 0:入出库 ; 1:其他 * @param wrkMk 0:入库 1 - 3000 ; 1:拣料/并板/盘点 3001 - 6000 ; 2: 出库 6001 -9000 ; 3:其他 9001 -9999 * @return workNo(工作号) */ public int getWorkNo(Integer wrkMk) { @@ -47,28 +48,39 @@ if (Cools.isEmpty(wrkLastno)) { throw new CoolException("数据异常,请联系管理员"); } int workNo = 0; // 入出库类型 if (wrkLastno.getWrkMk() == 0) { workNo = wrkLastno.getWrkNo(); int sNo = wrkLastno.getSNo(); int eNo = wrkLastno.getENo(); workNo = workNo>=eNo ? sNo : workNo+1; // 类型 switch (wrkMk) { case 0: // 入库 1 - 3000 break; case 1: // 拣料/并板/盘点 3001 - 6000 break; case 2: // 出库 6001 -9000 break; case 3: // 其他 9001 -9999 break; default: break; } while (true) { WrkMast wrkMast = wrkMastService.selectById(workNo); if (null != wrkMast) { workNo = workNo>=eNo ? sNo : workNo+1; } else { break; } } if (workNo > 0){ wrkLastno.setWrkNo(workNo); wrkLastnoService.updateById(wrkLastno); int workNo = wrkLastno.getWrkNo(); int sNo = wrkLastno.getSNo(); int eNo = wrkLastno.getENo(); workNo = workNo>=eNo ? sNo : workNo+1; while (true) { WrkMast wrkMast = wrkMastService.selectById(workNo); if (null != wrkMast) { workNo = workNo>=eNo ? sNo : workNo+1; } else { break; } } // 修改序号记录 if (workNo > 0){ wrkLastno.setWrkNo(workNo); wrkLastnoService.updateById(wrkLastno); } // 检验 if (workNo == 0) { throw new CoolException("生成工作号失败,请联系管理员"); } else { @@ -89,6 +101,9 @@ */ public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos) { StartupDto startupDto = new StartupDto(); // 生成工作号 int workNo = getWorkNo(WorkNoType.getWorkNoType(staDescId)); startupDto.setWorkNo(workNo); RowLastno rowLastno = rowLastnoService.selectById(whsType); if (Cools.isEmpty(rowLastno)) { throw new CoolException("数据异常,请联系管理员"); @@ -103,35 +118,6 @@ int crnNo = 0; // 目标库位 LocMast locMast = null; // 同一天同规格货物靠近摆法规则 todo:luxiaotao // if (!Cools.isEmpty(matNos)) { // List<String> locNos = locDetlService.getSameDetlToday(matNos.get(0)); // for (String locNo : locNos) { // // 获取排 // int row = Integer.parseInt(locNo.substring(0, 2)); // // 判断是否为深库位 // double remainder = Arith.remainder(row, rowCount / crn_qty); // int targetRow; // if (remainder == 1) { // // 得到当前库位的外围库位 // targetRow = row + 1; // } else if (remainder == 0) { // // 得到当前库位的内围库位 // targetRow = row - 1; // } else { // continue; // } // String targetLocNo = zerofill(String.valueOf(targetRow), 2)+locNo.substring(2); // // 检测目标库位是否为空库位 // LocMast targetLocMast = locMastService.selectById(targetLocNo); // if (targetLocMast != null && targetLocMast.getLocSts().equals("O")) { // locMast = targetLocMast; // crnNo = locMast.getCrnNo(); // break; // } // } // } // 如果没有相近物料,则按规则轮询货架 if (null == locMast) {