|  |  | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } else { | 
 |  |  |  | 
 |  |  |                     if (Utils.isShallowLoc(slaveProperties, locNo)) { | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |                     String shallowLocNo = Utils.getShallowLoc(slaveProperties, locNo); | 
 |  |  |                     // 检测目标库位是否为空库位 | 
 |  |  |                     LocMast shallowLoc = locMastService.selectById(shallowLocNo); | 
 |  |  |                     if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) { | 
 |  |  |                         if (VersionUtils.locMoveCheckLocType(shallowLoc, locTypeDto)) { | 
 |  |  |                             // 因库位移转、需预留空库位 | 
 |  |  |                             if (locMastService.checkEmptyCount(shallowLoc)) { | 
 |  |  |                                 if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) { | 
 |  |  |                                     locMast = shallowLoc; | 
 |  |  |                                     crnNo = locMast.getCrnNo(); | 
 |  |  |                                     break; | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  | 
 |  |  |                     .eq("loc_sts", "D").ge("row1", start).le("row1", end)); | 
 |  |  |             if (locMasts.size() > 0) { | 
 |  |  |                 for (LocMast loc : locMasts) { | 
 |  |  |                     LocMast locMast0 = locMastService.findOutMost(loc.getLocNo()); | 
 |  |  |                     if (null != locMast0) { | 
 |  |  |                         // 浅库位符合尺寸检测 | 
 |  |  |                         if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) { | 
 |  |  |                             int locCrnNo; | 
 |  |  |                             if (whsType == 1) { | 
 |  |  |                                 locCrnNo = 2; | 
 |  |  |                             } else { | 
 |  |  |                                 locCrnNo = 3; | 
 |  |  |                     if (whsType == 1) { | 
 |  |  |                         LocMast locMast0 = locMastService.findOutMost(loc.getLocNo()); | 
 |  |  |                         if (null != locMast0) { | 
 |  |  |                             // 浅库位符合尺寸检测 | 
 |  |  |                             if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) { | 
 |  |  |                                 // 浅库位对应堆垛机必须可用且无异常 | 
 |  |  |                                 if (basCrnpService.checkSiteError(dualCrnNo, true)) { | 
 |  |  |                                     crnNo = dualCrnNo; | 
 |  |  |                                     locMast = locMast0; | 
 |  |  |                                     break; | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                             // 浅库位对应堆垛机必须可用且无异常 | 
 |  |  |                             if (basCrnpService.checkSiteError(locCrnNo, true)) { | 
 |  |  |                                 crnNo = locCrnNo; | 
 |  |  |                                 locMast = locMast0; | 
 |  |  |                                 break; | 
 |  |  |                         } | 
 |  |  |                     } else { | 
 |  |  |                         if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) { | 
 |  |  |                             continue; | 
 |  |  |                         } | 
 |  |  |                         String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo()); | 
 |  |  |                         // 检测目标库位是否为空库位 | 
 |  |  |                         LocMast shallowLoc = locMastService.selectById(shallowLocNo); | 
 |  |  |                         if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) { | 
 |  |  |                             if (VersionUtils.locMoveCheckLocType(shallowLoc, locTypeDto)) { | 
 |  |  |                                 // 因库位移转、需预留空库位 | 
 |  |  |                                 if (locMastService.checkEmptyCount(shallowLoc)) { | 
 |  |  |                                     if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) { | 
 |  |  |                                         locMast = shallowLoc; | 
 |  |  |                                         crnNo = locMast.getCrnNo(); | 
 |  |  |                                         break; | 
 |  |  |                                     } | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 如果没有相近物料,则按规则轮询货架 | 
 |  |  |         if (null == locMast && whsType == 1) { | 
 |  |  |             if (curRow == 2) { | 
 |  |  |                 curRow = 30; | 
 |  |  |             } else if (curRow == 30) { | 
 |  |  |                 curRow = 2; | 
 |  |  |         if (null == locMast) { | 
 |  |  |             if (whsType == 1) { | 
 |  |  |                 if (curRow == 2) { | 
 |  |  |                     curRow = 30; | 
 |  |  |                 } else if (curRow == 30) { | 
 |  |  |                     curRow = 2; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if (basCrnpService.checkSiteError(dualCrnNo, true)) { | 
 |  |  |                crnNo = dualCrnNo; | 
 |  |  |                 crnNo = dualCrnNo; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |         // 1.当检索库排为浅库位排时,优先寻找当前库排的深库位排 | 
 |  |  |         if (locMast == null) { | 
 |  |  |             List<Integer> rows = Utils.getGroupLoc(curRow); | 
 |  |  |             if (whsType == 1) { | 
 |  |  |                 List<Integer> rows = Utils.getGroupLoc(curRow); | 
 |  |  |  | 
 |  |  |             List<LocMast> locMasts = locMastService.queryFreeLocMast(rows, rows.size(), locTypeDto.getLocType1()); | 
 |  |  |             if (!Cools.isEmpty(locMasts)) { | 
 |  |  |                 Integer innermostRow = Utils.getOutLayerRow(locMasts.get(0).getLocNo(), false); | 
 |  |  |                 for (LocMast one : locMasts) { | 
 |  |  |                     if (one.getRow1().equals(innermostRow)) { | 
 |  |  |                         locMast = one; | 
 |  |  |                         break; | 
 |  |  |                 List<LocMast> locMasts = locMastService.queryFreeLocMast(rows, rows.size(), locTypeDto.getLocType1()); | 
 |  |  |                 if (!Cools.isEmpty(locMasts)) { | 
 |  |  |                     Integer innermostRow = Utils.getOutLayerRow(locMasts.get(0).getLocNo(), false); | 
 |  |  |                     for (LocMast one : locMasts) { | 
 |  |  |                         if (one.getRow1().equals(innermostRow)) { | 
 |  |  |                             locMast = one; | 
 |  |  |                             break; | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             // 因库位移转、需预留空库位 todo:luxiaotao | 
 |  |  |                 // 因库位移转、需预留空库位 todo:luxiaotao | 
 |  |  | //            if (!locMastService.checkEmptyCount(locMast)) { | 
 |  |  | //                locMast = null; | 
 |  |  | //            } | 
 |  |  |             } else { | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 2.库位当前所属尺寸无空库位时,调整尺寸参数,向上兼容检索库位 |