| | |
| | | public StartupDto getDoubleLocNoRun(Integer whsType, Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, Integer moveCrnNo, LocTypeDto locTypeDto, int times) { |
| | | // 初始化参数 |
| | | int crnNo = 6; //堆垛机号 |
| | | int nearRow = 11; //最浅库位排 |
| | | int curRow = 14; //最深库位排 |
| | | int rowCount = 0; //轮询轮次 |
| | | int nearRow = 12; //浅库位排 (与11对应) |
| | | int curRow = 11; //深库位排 |
| | | int rowCount = 2; //轮询轮次 (12/11 对 和 13/14 对) |
| | | LocMast locMast = null; // 目标库位 |
| | | |
| | | StartupDto startupDto = new StartupDto(); |
| | |
| | | int sRow = rowLastno.getsRow(); |
| | | int eRow = rowLastno.geteRow(); |
| | | int crnNumber = rowLastno.getCrnQty(); |
| | | |
| | | // 根据轮询次数切换排 (优先深库位排 11, 14) |
| | | if (times % 2 == 0) { |
| | | nearRow = 12; |
| | | curRow = 11; |
| | | } else { |
| | | nearRow = 13; |
| | | curRow = 14; |
| | | } |
| | | |
| | | |
| | | // ===============>>>> 开始执行 |
| | |
| | | // 开始查找库位 ==============================>> |
| | | // 1.按规则查找库位 |
| | | if (Cools.isEmpty(locMast) && crnNo != 0) { |
| | | List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("row1", nearRow) |
| | | // 首先尝试查找对应的深库位排 (11 或 14) |
| | | List<LocMast> deepLocMasts = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("row1", curRow) |
| | | .eq("loc_sts", "O").eq("crn_no", crnNo) |
| | | .orderBy("lev1", true).orderBy("bay1", true)); |
| | | // for (LocMast locMast1 : locMasts) { |
| | | // if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { |
| | | // continue; |
| | | // } |
| | | // if (Utils.BooleanWhsTypeStaIoType(rowLastno)) { |
| | | // String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast1.getLocNo()); |
| | | // LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | // .eq("loc_no", shallowLoc).eq("loc_sts", "O").eq("crn_no", crnNo)); |
| | | // if (!Cools.isEmpty(locMast2)) { |
| | | // locMast = locMast2; |
| | | // break; |
| | | // } |
| | | // } else { |
| | | // if (!Cools.isEmpty(locMast1)) { |
| | | // locMast = locMast1; |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | if (Cools.isEmpty(locMast) && Utils.BooleanWhsTypeStaIoType(rowLastno)) { |
| | | for (LocMast locMast1 : locMasts) { |
| | | if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { |
| | | for (LocMast deepLoc : deepLocMasts) { |
| | | if (!VersionUtils.locMoveCheckLocTypeComplete(deepLoc, locTypeDto)) { |
| | | continue; |
| | | } |
| | | // 获取对应的浅库位,确保浅库位不挡住入库 |
| | | String shallowLocNo = Utils.getShallowLoc(slaveProperties, deepLoc.getLocNo()); |
| | | LocMast shallowLoc = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | .eq("loc_no", shallowLocNo).eq("crn_no", crnNo)); |
| | | |
| | | // 只有浅库位为空,或者浅库位已经有货(且不是挡住入库的状态,这里简单判断为空即可放入深库位) |
| | | // 实际上,双深入库时,如果深库位为空且浅库位为空,应优先入深库位 |
| | | if (!Cools.isEmpty(shallowLoc) && (shallowLoc.getLocSts().equals("O") || shallowLoc.getLocSts().equals("F"))) { |
| | | locMast = deepLoc; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // 如果没找到深库位,再尝试找浅库位排 (12 或 13) |
| | | if (Cools.isEmpty(locMast)) { |
| | | List<LocMast> shallowLocMasts = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("row1", nearRow) |
| | | .eq("loc_sts", "O").eq("crn_no", crnNo) |
| | | .orderBy("lev1", true).orderBy("bay1", true)); |
| | | |
| | | for (LocMast shallowLoc : shallowLocMasts) { |
| | | if (!VersionUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) { |
| | | continue; |
| | | } |
| | | if (Utils.BooleanWhsTypeStaIoType(rowLastno)) { |
| | | String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast1.getLocNo()); |
| | | LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | .eq("loc_no", shallowLoc).eq("loc_sts", "O").eq("crn_no", crnNo)); |
| | | if (!Cools.isEmpty(locMast2)) { |
| | | locMast = locMast2; |
| | | break; |
| | | } else { |
| | | locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | .eq("loc_no", shallowLoc).eq("loc_sts", "F").eq("crn_no", crnNo)); |
| | | if (!Cools.isEmpty(locMast2)) { |
| | | locMast = locMast1; |
| | | break; |
| | | } else { |
| | | locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | .eq("loc_no", shallowLoc).eq("loc_sts", "D").eq("crn_no", crnNo)); |
| | | if (!Cools.isEmpty(locMast2)) { |
| | | locMast = locMast1; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | if (!Cools.isEmpty(locMast1)) { |
| | | locMast = locMast1; |
| | | break; |
| | | } |
| | | } |
| | | // 浅库位入库的前提是深库位已经满了,或者有特殊要求。这里直接允许入浅库位。 |
| | | locMast = shallowLoc; |
| | | break; |
| | | } |
| | | } |
| | | } |