|  |  | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.common.DateUtils; | 
 |  |  | import com.core.common.R; | 
 |  |  | import com.zy.asrs.entity.BasWhs; | 
 |  |  | import com.zy.asrs.entity.LocDetl; | 
 |  |  | import com.zy.asrs.entity.LocMast; | 
 |  |  | import com.zy.asrs.entity.param.LocMastInitParam; | 
 |  |  | import com.zy.asrs.service.BasWhsService; | 
 |  |  | import com.zy.asrs.service.LocDetlService; | 
 |  |  | import com.zy.asrs.service.LocMastService; | 
 |  |  | import com.zy.asrs.utils.Utils; | 
 |  |  | 
 |  |  |     private LocMastService locMastService; | 
 |  |  |     @Autowired | 
 |  |  |     private LocDetlService locDetlService; | 
 |  |  |     @Autowired | 
 |  |  |     private BasWhsService basWhsService; | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locMast/init/pwd") | 
 |  |  |     public R locMastInitPwd(@RequestParam(required = false) String pwd) { | 
 |  |  | 
 |  |  |         return R.ok(locMastService.selectPage(new Page<>(curr, limit), wrapper)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locMast/crn/list/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R crnList(@RequestParam(defaultValue = "1")Integer curr, | 
 |  |  |                   @RequestParam(defaultValue = "10")Integer limit, | 
 |  |  |                   @RequestParam(required = false)String orderByField, | 
 |  |  |                   @RequestParam(required = false)String orderByType, | 
 |  |  |                   @RequestParam Map<String, Object> param){ | 
 |  |  |         excludeTrash(param); | 
 |  |  |         EntityWrapper<LocMast> wrapper = new EntityWrapper<>(); | 
 |  |  |         convert(param, wrapper); | 
 |  |  |         wrapper.in("crn_no", 1,2); | 
 |  |  |         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} | 
 |  |  |         return R.ok(locMastService.selectPage(new Page<>(curr, limit), wrapper)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ | 
 |  |  |         boolean sign = false; | 
 |  |  |         for (Map.Entry<String, Object> entry : map.entrySet()){ | 
 |  |  |             String val = String.valueOf(entry.getValue()); | 
 |  |  |             if (val.contains(RANGE_TIME_LINK)){ | 
 |  |  |                 String[] dates = val.split(RANGE_TIME_LINK); | 
 |  |  |                 wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); | 
 |  |  |                 wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); | 
 |  |  |             } else { | 
 |  |  |             } else if (entry.getKey().equals("loc_no")){ | 
 |  |  |                 wrapper.like(entry.getKey(), val); | 
 |  |  |             } else { | 
 |  |  |                 if (entry.getKey().equals("loc_type1")){ | 
 |  |  |                     sign=true; | 
 |  |  |                 } | 
 |  |  |                 wrapper.eq(entry.getKey(), val); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if (sign){ | 
 |  |  |             wrapper.and().ne("loc_sts","Y"); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |     @ManagerAuth(memo = "初始化库位") | 
 |  |  | //    @Transactional | 
 |  |  |     public R init(LocMastInitParam param) { | 
 |  |  |         List<LocMast> list = new ArrayList<>(); | 
 |  |  |         for (int r=param.getStartRow(); r<=param.getEndRow(); r++){ | 
 |  |  |             for (int b=param.getStartBay(); b<=param.getEndBay(); b++) { | 
 |  |  |                 for (int l=param.getStartLev(); l<=param.getEndLev(); l++) { | 
 |  |  |                     // 获取库位号 | 
 |  |  |                     String locNo = String.format("%02d", r) + String.format("%03d", b) + String.format("%02d", l); | 
 |  |  |                     // 获取堆垛机号 | 
 |  |  |                     int crnNo = 0; | 
 |  |  |                     Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getCrnAmount()); | 
 |  |  |                     for (List<Integer> node : shelves.nodes){ | 
 |  |  |                         if (node.contains(r)) { | 
 |  |  |                             crnNo = shelves.nodes.indexOf(node) + 1; | 
 |  |  |                             break; | 
 |  |  |         try{ | 
 |  |  |             List<LocMast> list = new ArrayList<>(); | 
 |  |  |             BasWhs basWhs = basWhsService.selectByIdentifying(param.getIdentifying()); | 
 |  |  |             if (Cools.isEmpty(basWhs)){ | 
 |  |  |                 return R.error("库型不存在!!!"); | 
 |  |  |             } | 
 |  |  |             for (int r=param.getStartRow(); r<=param.getEndRow(); r++){ | 
 |  |  |                 for (int b=param.getStartBay(); b<=param.getEndBay(); b++) { | 
 |  |  |                     for (int l=param.getStartLev(); l<=param.getEndLev(); l++) { | 
 |  |  |                         // 获取库位号 | 
 |  |  |                         String locNo = String.format("%02d", r) + String.format("%03d", b) + String.format("%02d", l); | 
 |  |  |                         // 获取堆垛机号 | 
 |  |  |                         int crnNo = 0; | 
 |  |  |                         try{ | 
 |  |  |                             Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getCrnAmount(),param.getStartRow()); | 
 |  |  |                             for (List<Integer> node : shelves.nodes){ | 
 |  |  |  | 
 |  |  |                                 if (node.contains(r)) { | 
 |  |  |                                     if (!Cools.isEmpty(param.getStaCrn()) && param.getStaCrn() > 0){ | 
 |  |  |                                         crnNo = shelves.nodes.indexOf(node) + param.getStaCrn(); | 
 |  |  |                                     }else { | 
 |  |  |                                         crnNo = shelves.nodes.indexOf(node) + 1; | 
 |  |  |                                     } | 
 |  |  |  | 
 |  |  |                                     break; | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         }catch (Exception e){ | 
 |  |  |                             throw new Exception("解析堆垛机号失败,请填写正确的数据!!!"); | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                         Date now =  new Date(); | 
 |  |  |                         LocMast locMast = new LocMast(); | 
 |  |  |                         locMast.setLocNo(locNo); | 
 |  |  |                         locMast.setLocSts("O"); | 
 |  |  |                         locMast.setRow1(r); // 排 | 
 |  |  |                         locMast.setBay1(b); // 列 | 
 |  |  |                         locMast.setLev1(l); // 层 | 
 |  |  |                         locMast.setGro1(r); // 组 | 
 |  |  |                         locMast.setCrnNo(crnNo); // 堆垛机 | 
 |  |  |                         locMast.setLocType1(!Cools.isEmpty(param.getLocType1()) ? param.getLocType1() : 1); | 
 |  |  |                         locMast.setLocType2(param.getLocType2()); | 
 |  |  |                         locMast.setLocType3(param.getLocType3()); | 
 |  |  |                         locMast.setAppeUser(getUserId()); | 
 |  |  |                         locMast.setAppeTime(now); | 
 |  |  |                         locMast.setModiUser(getUserId()); | 
 |  |  |                         locMast.setModiTime(now); | 
 |  |  |                         locMast.setWhsType(basWhs.getId()); | 
 |  |  |                         list.add(locMast); | 
 |  |  |                     } | 
 |  |  |                     Date now =  new Date(); | 
 |  |  |                     LocMast locMast = new LocMast(); | 
 |  |  |                     locMast.setLocNo(locNo); | 
 |  |  |                     locMast.setLocSts("O"); | 
 |  |  |                     locMast.setRow1(r); // 排 | 
 |  |  |                     locMast.setBay1(b); // 列 | 
 |  |  |                     locMast.setLev1(l); // 层 | 
 |  |  |                     locMast.setCrnNo(crnNo); // 堆垛机 | 
 |  |  |                     locMast.setLocType1(!Cools.isEmpty(param.getLocType1()) ? param.getLocType1() : 1); | 
 |  |  |                     locMast.setLocType2(param.getLocType2()); | 
 |  |  |                     locMast.setLocType3(param.getLocType3()); | 
 |  |  |                     locMast.setAppeUser(getUserId()); | 
 |  |  |                     locMast.setAppeTime(now); | 
 |  |  |                     locMast.setModiUser(getUserId()); | 
 |  |  |                     locMast.setModiTime(now); | 
 |  |  |                     list.add(locMast); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if (!Cools.isEmpty(param.getEnable()) && param.getEnable() == 1){ | 
 |  |  |                 locMastService.delete(new EntityWrapper<>()); | 
 |  |  |             } | 
 |  |  |             locMastService.insertBatch(list); | 
 |  |  |             return R.ok("初始化成功"); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             return R.error("初始化失败===>"+e.getMessage()); | 
 |  |  |         } | 
 |  |  |         locMastService.delete(new EntityWrapper<>()); | 
 |  |  |         locDetlService.delete(new EntityWrapper<>()); | 
 |  |  |         locMastService.insertBatch(list); | 
 |  |  |         return R.ok("初始化成功"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locMast/convert/size/auth") | 
 |  |  |     @ManagerAuth(memo = "大小库位转换") | 
 |  |  |     @Transactional | 
 |  |  |     public R convertSize(@RequestParam String param) { | 
 |  |  |         List<LocMast> list = JSONArray.parseArray(param, LocMast.class); | 
 |  |  |         if (Cools.isEmpty(list)){ | 
 |  |  |             return R.error(); | 
 |  |  |         } | 
 |  |  |         for (LocMast entity : list){ | 
 |  |  |             if (!entity.getCrnNo().equals(1) && !entity.getCrnNo().equals(4)){ | 
 |  |  |                 return R.error("请选择1号、4号堆垛机的货位!!!不符合条件库位:"+entity.getLocNo()); | 
 |  |  |             } | 
 |  |  |             if (!entity.getLocSts().equals("O") && !entity.getLocSts().equals("Y")){ | 
 |  |  |                 return R.error("请选择空闲、被合并的货位!!!不符合条件库位:"+entity.getLocNo()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         List<String> innermostSideLoc = Utils.getInnermostSideLoc(list); | 
 |  |  |         StringBuilder msg=new StringBuilder(); | 
 |  |  |         for (String locNo : innermostSideLoc){ | 
 |  |  |             String innermostSideLocLBR = Utils.getInnermostSideLocLBR(locNo); | 
 |  |  |             LocMast locMast1 = locMastService.selectById(innermostSideLocLBR);//浅 | 
 |  |  |             if (Cools.isEmpty(locMast1)){ | 
 |  |  |                 msg.append("请选择浅库位存在的货位!!!不符合条件库位:").append(innermostSideLocLBR).append("/n"); | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             if (!locMast1.getLocSts().equals("O")){ | 
 |  |  |                 msg.append("请选择浅库位空闲的货位!!!不符合条件库位:").append(locMast1.getLocNo()).append("/n"); | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             LocMast locMast = locMastService.selectById(locNo);//深 | 
 |  |  |             if (Cools.isEmpty(locMast)){ | 
 |  |  |                 msg.append("请选择深库位存在的货位!!!不符合条件库位:").append(locNo).append("/n"); | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             if (!Cools.isEmpty(locMast) && locMast.getLocSts().equals("O")){ | 
 |  |  |                 locMast1.setLocType1((short)2); | 
 |  |  |                 locMast.setLocType1((short)2); | 
 |  |  |                 locMast.setLocSts("Y"); | 
 |  |  |             }else if (!Cools.isEmpty(locMast) && locMast.getLocSts().equals("Y")){ | 
 |  |  |                 locMast1.setLocType1((short)1); | 
 |  |  |                 locMast.setLocType1((short)1); | 
 |  |  |                 locMast.setLocSts("O"); | 
 |  |  |             }else { | 
 |  |  |                 msg.append("请选择深库位库位空闲、被合并的货位!!!不符合条件库位:").append(locMast.getLocNo()).append("/n"); | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             locMastService.updateById(locMast1); | 
 |  |  |             locMastService.updateById(locMast); | 
 |  |  |         } | 
 |  |  |         return R.ok(msg); | 
 |  |  |     } | 
 |  |  | } |