|  |  | 
 |  |  | import com.core.common.R; | 
 |  |  | import com.core.exception.CoolException; | 
 |  |  | import com.zy.asrs.entity.*; | 
 |  |  | import com.zy.asrs.entity.param.EmptyPlateOutParam; | 
 |  |  | import com.zy.asrs.entity.result.FindLocNoAttributeVo; | 
 |  |  | import com.zy.asrs.service.*; | 
 |  |  | import com.zy.common.CodeRes; | 
 |  |  | import com.zy.common.model.LocTypeDto; | 
 |  |  | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  | 
 |  |  |     private WaitPakinService waitPakinService; | 
 |  |  |     @Autowired | 
 |  |  |     private  LocDetlService locDetlService; | 
 |  |  |     @Autowired | 
 |  |  |     private RowLastnoService rowLastnoService; | 
 |  |  |     @Autowired | 
 |  |  |     private WorkService workService; | 
 |  |  |  | 
 |  |  |     @PostMapping("/pakin/loc/v1") | 
 |  |  |     @ResponseBody | 
 |  |  |     public synchronized R getLocNo(@RequestBody SearchLocParam param) { | 
 |  |  |         log.info("收到WCS入库接口请求====>>入参:{}", param); | 
 |  |  |         if (Cools.isEmpty(param.getIoType())) { | 
 |  |  |             return R.error("入出库类型不能为空"); | 
 |  |  |         } | 
 |  |  | 
 |  |  |             int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); | 
 |  |  |             int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); | 
 |  |  |             if (countLoc > 0 || countWrk > 0) { | 
 |  |  |                 return R.error("工作档/库存条码数据已存在"); | 
 |  |  |                 return R.error(CodeRes.EXIST_500); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if (Cools.isEmpty(param.getLocType1())){ | 
 |  |  | 
 |  |  |             default: | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         log.info("WCS入库接口返参:{},托盘码:{}", dto, param.getBarcode()); | 
 |  |  |         return R.ok().add(dto); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @PostMapping("/auto/emptyIn/v1") | 
 |  |  |     @ResponseBody | 
 |  |  |     public R autoEmptyIn(@RequestBody LocTypeDto locTypeDto){ | 
 |  |  |         // 源站点状态检测 | 
 |  |  |         BasDevp sourceStaNo = basDevpService.checkSiteStatus(12, true); | 
 |  |  |  | 
 |  |  |         // 检索库位 | 
 |  |  |         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); | 
 |  |  |  | 
 |  |  |         StartupDto dto = commonService.getLocNo( 10, 12, findLocNoAttributeVo, locTypeDto); | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // 生成工作档 | 
 |  |  |         WrkMast wrkMast = new WrkMast(); | 
 |  |  |         wrkMast.setWrkNo(dto.getWorkNo()); | 
 |  |  |         wrkMast.setIoTime(now); | 
 |  |  |         wrkMast.setWrkSts(1L); | 
 |  |  |         wrkMast.setIoPri(13D); | 
 |  |  |         wrkMast.setIoType(10); | 
 |  |  |         wrkMast.setCrnNo(dto.getCrnNo()); | 
 |  |  |         wrkMast.setSourceStaNo(dto.getSourceStaNo() + ""); | 
 |  |  |         wrkMast.setStaNo(dto.getStaNo() + ""); | 
 |  |  |         wrkMast.setLocNo(dto.getLocNo()); | 
 |  |  |         wrkMast.setFullPlt("N"); // 满板:N | 
 |  |  |         wrkMast.setPicking("N"); // 拣料 | 
 |  |  |         wrkMast.setExitMk("N"); // 退出 | 
 |  |  |         wrkMast.setEmptyMk("Y"); // 空板 | 
 |  |  |         wrkMast.setLinkMis("Y"); | 
 |  |  |         wrkMast.setCtnType(sourceStaNo.getCtnType()); // 容器类型 | 
 |  |  |         // 操作人员数据 | 
 |  |  |         wrkMast.setAppeTime(now); | 
 |  |  |         wrkMast.setModiTime(now); | 
 |  |  |         wrkMast.setMemo("自动空托入库"); | 
 |  |  |         return wrkMastService.insert(wrkMast) ? R.ok("自动空托入库成功,工作号:"+wrkMast.getWrkNo()) : R.error("生成自动空托入库失败"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @PostMapping("auto/emptyOut/v1") | 
 |  |  |     @ResponseBody | 
 |  |  |     public R autoEmptyOut(){ | 
 |  |  |         LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() | 
 |  |  |                 .eq("loc_sts", "D")); | 
 |  |  |         if (Cools.isEmpty(locMast)) { | 
 |  |  |             return R.error("库存没有空板"); | 
 |  |  |         } | 
 |  |  |         EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam(); | 
 |  |  |         emptyPlateOutParam.setOutSite(12); | 
 |  |  |         emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locMast.getLocNo()+"");}}); | 
 |  |  |         WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam); | 
 |  |  |         return R.ok(!Cools.isEmpty(wrkMast)? R.ok("自动空托出库成功,工作号:" + wrkMast.getWrkNo()) : R.error("生成自动空托出库失败")); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 全板入库 | 
 |  |  | 
 |  |  |         // 源站点状态检测 | 
 |  |  |         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); | 
 |  |  |         // 检索库位 | 
 |  |  |         List<String> matNos = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList()); | 
 |  |  |         StartupDto dto = commonService.getLocNo(1, 1, devpNo, matNos, locTypeDto,0); | 
 |  |  | //        List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList()); | 
 |  |  | //        List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList()); | 
 |  |  | //        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(matnrs.get(0), batchs.get(0)); | 
 |  |  |         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins.get(0)); | 
 |  |  |         StartupDto dto = commonService.getLocNo( 1, devpNo,findLocNoAttributeVo, locTypeDto); | 
 |  |  |         int workNo = dto.getWorkNo(); | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // 生成工作档 | 
 |  |  | 
 |  |  |         wrkMast.setIoType(1); // 入出库状态:1.入库 | 
 |  |  |         wrkMast.setIoPri(13D); // 优先级 | 
 |  |  |         wrkMast.setCrnNo(dto.getCrnNo()); | 
 |  |  |         wrkMast.setSourceStaNo(dto.getSourceStaNo()); | 
 |  |  |         wrkMast.setStaNo(dto.getStaNo()); | 
 |  |  |         wrkMast.setSourceStaNo(dto.getSourceStaNo() + ""); | 
 |  |  |         wrkMast.setStaNo(dto.getStaNo() + ""); | 
 |  |  |         wrkMast.setLocNo(dto.getLocNo()); | 
 |  |  |         wrkMast.setBarcode(barcode); // 托盘码 | 
 |  |  |         wrkMast.setFullPlt("Y"); // 满板:Y | 
 |  |  | 
 |  |  |         Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() | 
 |  |  |                 .eq("zpallet", barcode); | 
 |  |  |         WaitPakin setParam = new WaitPakin(); | 
 |  |  |         setParam.setLocNo(dto.getLocNo()); | 
 |  |  |         setParam.setIoStatus("Y"); | 
 |  |  |         setParam.setModiTime(now); | 
 |  |  |         if (!waitPakinService.update(setParam, wrapper)) { | 
 |  |  | 
 |  |  |         // 源站点状态检测 | 
 |  |  |         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); | 
 |  |  |         // 检索库位 | 
 |  |  |         StartupDto dto = commonService.getLocNo(1, 10, devpNo, null, locTypeDto,0); | 
 |  |  |         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); | 
 |  |  |  | 
 |  |  |         StartupDto dto = commonService.getLocNo( 10, devpNo, findLocNoAttributeVo, locTypeDto); | 
 |  |  |         int workNo = dto.getWorkNo(); | 
 |  |  |         // 生成工作档 | 
 |  |  |         WrkMast wrkMast = new WrkMast(); | 
 |  |  | 
 |  |  |         wrkMast.setIoType(10); // 入出库状态:10.空板入库 | 
 |  |  |         wrkMast.setIoPri(13D); // 优先级 | 
 |  |  |         wrkMast.setCrnNo(dto.getCrnNo()); | 
 |  |  |         wrkMast.setSourceStaNo(dto.getSourceStaNo()); | 
 |  |  |         wrkMast.setStaNo(dto.getStaNo()); | 
 |  |  |         wrkMast.setSourceStaNo(dto.getSourceStaNo() + ""); | 
 |  |  |         wrkMast.setStaNo(dto.getStaNo() + ""); | 
 |  |  |         wrkMast.setLocNo(dto.getLocNo()); | 
 |  |  |         wrkMast.setFullPlt("N"); // 满板 | 
 |  |  |         wrkMast.setPicking("N"); // 拣料 |