|  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public void shuttleTransfer(List<String> locNos) { | 
 |  |  |         if (Cools.isEmpty(locNos)) { | 
 |  |  |             return; | 
 |  |  | 
 |  |  |             default: | 
 |  |  |                 throw new IllegalStateException("Unexpected value: " + locMasts.get(0).getRow1()); | 
 |  |  |         } | 
 |  |  |         if (locNos.size() > locMasts.size()) { | 
 |  |  |             throw new CoolException("服务器错误"); | 
 |  |  |         } | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // 生成移库工作档 | 
 |  |  |         for (String sourceLocNo : locNos) { | 
 |  |  |             Iterator<LocMast> iterator = locMasts.iterator(); | 
 |  |  |             while (iterator.hasNext()) { | 
 |  |  |                 LocMast sourceLoc = locMastService.selectById(sourceLocNo); | 
 |  |  |                 List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); | 
 |  |  |                 if (Cools.isEmpty(sourceLoc)){ | 
 |  |  |                     throw new CoolException("未找到库位"); | 
 |  |  |                 } | 
 |  |  |                 LocMast loc = iterator.next(); | 
 |  |  |                 if (Cools.isEmpty(loc)){ | 
 |  |  |                     throw new CoolException("未找到库位"); | 
 |  |  |                 } | 
 |  |  |                 if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) { | 
 |  |  |                     throw new CoolException("移转库位属于不同堆垛机"); | 
 |  |  |                 } | 
 |  |  |                 // 获取工作号 | 
 |  |  |                 int workNo = commonService.getWorkNo(WorkNoType.PICK.type); | 
 |  |  |                 // 保存工作档 | 
 |  |  |                 WrkMast wrkMast = new WrkMast(); | 
 |  |  |                 wrkMast.setWrkNo(workNo); | 
 |  |  |                 wrkMast.setIoTime(now); | 
 |  |  |                 wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID | 
 |  |  |                 wrkMast.setIoType(11); // 入出库状态: 11.库格移载 | 
 |  |  |                 wrkMast.setIoPri(15D); | 
 |  |  |                 wrkMast.setOutMost(locMastService.isOutMost(loc.getLocNo(), false)?1:0);; | 
 |  |  |                 wrkMast.setCrnNo(sourceLoc.getCrnNo()); | 
 |  |  |                 wrkMast.setSourceLocNo(sourceLocNo); // 源库位 | 
 |  |  |                 wrkMast.setLocNo(loc.getLocNo()); // 目标库位 | 
 |  |  |                 wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 满板:Y | 
 |  |  |                 wrkMast.setPicking("N"); // 拣料 | 
 |  |  |                 wrkMast.setExitMk("N"); // 退出 | 
 |  |  |                 wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 空板 | 
 |  |  |                 wrkMast.setBarcode(sourceLoc.getBarcode()); // 托盘码 | 
 |  |  |                 wrkMast.setLinkMis("N"); | 
 |  |  |                 wrkMast.setAppeUser(9527L); | 
 |  |  |                 wrkMast.setAppeTime(now); | 
 |  |  |                 wrkMast.setModiUser(9527L); | 
 |  |  |                 wrkMast.setModiTime(now); | 
 |  |  |                 boolean res = wrkMastService.insert(wrkMast); | 
 |  |  |                 if (!res) { | 
 |  |  |                     throw new CoolException("保存工作档失败"); | 
 |  |  |                 } | 
 |  |  |                 // 工作档明细保存 | 
 |  |  |                 for (LocDetl locDetl : locDetls) { | 
 |  |  |                     WrkDetl wrkDetl = new WrkDetl(); | 
 |  |  |                     wrkDetl.sync(locDetl); | 
 |  |  |                     wrkDetl.setWrkNo(workNo); | 
 |  |  |                     wrkDetl.setIoTime(now); | 
 |  |  |                     wrkDetl.setAnfme(locDetl.getAnfme()); | 
 |  |  |                     wrkDetl.setAppeTime(now); | 
 |  |  |                     wrkDetl.setAppeUser(9527L); | 
 |  |  |                     wrkDetl.setModiTime(now); | 
 |  |  |                     wrkDetl.setModiUser(9527L); | 
 |  |  |                     if (!wrkDetlService.insert(wrkDetl)) { | 
 |  |  |                         throw new CoolException("保存工作档明细失败"); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 // 修改源库位状态 | 
 |  |  |                 if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) { | 
 |  |  |                     sourceLoc.setLocSts("R"); // R.出库预约 | 
 |  |  |                     sourceLoc.setModiUser(9527L); | 
 |  |  |                     sourceLoc.setModiTime(now); | 
 |  |  |                     if (!locMastService.updateById(sourceLoc)){ | 
 |  |  |                         throw new CoolException("更新源库位状态失败"); | 
 |  |  |                     } | 
 |  |  |                 } else { | 
 |  |  |                     throw new CoolException("源库位出库失败,状态:"+sourceLoc.getLocSts$()); | 
 |  |  |                 } | 
 |  |  |                 // 修改目标库位状态 | 
 |  |  |                 if (loc.getLocSts().equals("O")) { | 
 |  |  |                     loc.setLocSts("S"); // S.入库预约 | 
 |  |  |                     loc.setModiTime(now); | 
 |  |  |                     loc.setModiUser(9527L); | 
 |  |  |                     if (!locMastService.updateById(loc)) { | 
 |  |  |                         throw new CoolException("更新目标库位状态失败"); | 
 |  |  |                     } | 
 |  |  |                 } else { | 
 |  |  |                     throw new CoolException("移转失败,目标库位状态:"+loc.getLocSts$()); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 iterator.remove(); | 
 |  |  |                 break; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |