| | |
| | | import com.zy.asrs.entity.param.EmptyPlateOutParam; |
| | | import com.zy.asrs.entity.result.FindLocNoAttributeVo; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.CodeRes; |
| | | import com.zy.common.model.LocTypeDto; |
| | | import com.zy.common.model.StartupDto; |
| | |
| | | @ResponseBody |
| | | public synchronized R getLocNo(@RequestBody SearchLocParam param) { |
| | | log.info("收到WCS入库接口请求====>>入参:{}", param); |
| | | if (Cools.isEmpty(param.getIoType())) { |
| | | return R.error("入出库类型不能为空"); |
| | | } |
| | | if (Cools.isEmpty(param.getSourceStaNo())) { |
| | | return R.error("源站编号不能为空"); |
| | | } |
| | | List<WaitPakin> waitPakins = null; |
| | | if (param.getIoType() == 1) { |
| | | |
| | | if (Cools.isEmpty(param.getBarcode())) { |
| | | return R.error("条码不能为空"); |
| | | } |
| | | WrkMast wrkMast1 = wrkMastService.selectByBarcode(param.getBarcode()); |
| | | if (!Cools.isEmpty(wrkMast1)&&wrkMast1.getWrkSts()==2) { |
| | | StartupDto dto1 =new StartupDto(); |
| | | dto1.setBarcode(param.getBarcode()); |
| | | dto1.setStaNo(Integer.valueOf(wrkMast1.getStaNo())); |
| | | String wcsLoc = Utils.WMSLocToWCSLoc(wrkMast1.getLocNo()); |
| | | dto1.setLocNo(wcsLoc); |
| | | dto1.setCrnNo(wrkMast1.getCrnNo()); |
| | | dto1.setWorkNo(wrkMast1.getWrkNo()); |
| | | dto1.setTaskNo(wrkMast1.getWrkNo()+""); |
| | | // dto1.setTaskPri((int) Math.round(wrkMast1.getIoPri())); |
| | | return R.ok(dto1); |
| | | } |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("io_type", 1)); |
| | | if (!Cools.isEmpty(wrkMasts)&&wrkMasts.size()>100) { |
| | | return R.error("限行"); |
| | | } |
| | | waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())); |
| | | if (Cools.isEmpty(waitPakins)) { |
| | | WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); |
| | | if (wrkMast != null && wrkMast.getIoType() == 103) { |
| | | return R.parse(CodeRes.PICK_600); |
| | | } |
| | | return R.parse(CodeRes.NO_COMB_700); |
| | | Date now = new Date(); |
| | | WaitPakin waitPakin = new WaitPakin(); |
| | | waitPakin.setMatnr("emptyPallet"); |
| | | waitPakin.setBatch(""); |
| | | waitPakin.setAnfme(1D); |
| | | waitPakin.setZpallet(param.getBarcode()); |
| | | waitPakin.setIoStatus("N"); |
| | | waitPakin.setStatus("Y"); |
| | | waitPakin.setAppeUser(9999L); |
| | | waitPakin.setAppeTime(now); |
| | | waitPakin.setModiUser(9999L); |
| | | waitPakin.setModiTime(now); |
| | | if (!waitPakinService.insert(waitPakin)) { |
| | | return R.error("自动生成入库通知档失败"); |
| | | } |
| | | waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())); |
| | | if (Cools.isEmpty(waitPakins)) { |
| | | return R.error("自动生成入库通知档后未查询到数据"); |
| | | } |
| | | log.info("WCS入库接口自动生成入库通知档, zpallet:{}, matnr:{}, anfme:{}", param.getBarcode(), "32149", 1D); |
| | | } |
| | | 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(CodeRes.EXIST_500); |
| | | } |
| | | } |
| | | if (Cools.isEmpty(param.getLocType1())){ |
| | | return R.error("高低检测信号不能为空"); |
| | | } |
| | |
| | | sourceStaNo.setLocType1(param.getLocType1()); |
| | | LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); |
| | | |
| | | StartupDto dto = null; |
| | | switch (param.getIoType()) { |
| | | case 1://满托盘入库 |
| | | assert waitPakins != null; |
| | | dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins); |
| | | break; |
| | | case 10://空托盘入库 |
| | | dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode()); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | StartupDto dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins, param.getRow()); |
| | | log.info("WCS入库接口返参:{},托盘码:{}", dto, param.getBarcode()); |
| | | return R.ok().add(dto); |
| | | } |
| | |
| | | } |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.selectById(param.getSourceStaNo()); |
| | | if(sourceStaNo.getWrkNo() == 0 ){ |
| | | if(sourceStaNo.getWrkNo() == 0 && sourceStaNo.getDevNo() != 2033){ |
| | | return R.error("站点工作号不存在"); |
| | | } |
| | | sourceStaNo.setLocType1(param.getLocType1()); |
| | | LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); |
| | | |
| | | param.setIoType(10); |
| | | StartupDto dto = null; |
| | | switch (param.getIoType()) { |
| | | case 1://满托盘入库 |
| | | case 10://空托盘入库 |
| | | dto = startupFullPutStoreAgv(param.getSourceStaNo(), param.getBarcode(), locTypeDto); |
| | | dto = startupFullPutStoreAgv(param.getSourceStaNo(), param.getBarcode(), locTypeDto,param.getOutArea()); |
| | | break; |
| | | // dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode()); |
| | | // break; |
| | |
| | | // 源站点状态检测 |
| | | // BasDevp sourceStaNo = basDevpService.checkSiteStatus(transplantWork.getStaNo(), true); |
| | | WrkMast wrkMast1 = wrkMastService.selectWrkMast(transplantWork.getWorkNo(),transplantWork.getBarcode()); |
| | | // if(sourceStaNo ==null ){ |
| | | // if(sourceStaNo ==null )hnagbao1{ |
| | | // return R.error("该站点盘点移栽许可,请查看源站点状态检测"); |
| | | // } |
| | | if(wrkMast1== null){ |
| | | return R.error("无该盘点移栽任务"); |
| | | } |
| | | WrkMast wrkMast2 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",9997)); |
| | | if(wrkMast2 != null){ |
| | | throw new CoolException("存在9997盘点移栽任务"); |
| | | } |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(transplantWork.getWorkNo()); |
| | | Date now = new Date(); |
| | |
| | | if(wrkMast1== null){ |
| | | return R.error("无该盘点移栽任务"); |
| | | } |
| | | WrkMast wrkMast2 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",9996)); |
| | | if(wrkMast2 != null){ |
| | | throw new CoolException("存在9996盘点移栽任务"); |
| | | } |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(transplantWork.getWorkNo()); |
| | | Date now = new Date(); |
| | | |
| | |
| | | * 全板入库AGV |
| | | */ |
| | | @Transactional |
| | | public StartupDto startupFullPutStoreAgv(Integer devpNo, String barcode, LocTypeDto locTypeDto) { |
| | | public StartupDto startupFullPutStoreAgv(Integer devpNo, String barcode, LocTypeDto locTypeDto,Integer outArea) { |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); |
| | | // BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); |
| | | // 检索库位 |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); |
| | | findLocNoAttributeVo.setOutArea(outArea); |
| | | // FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins.get(0)); |
| | | StartupDto dto = commonService.getLocNo( 1, devpNo,findLocNoAttributeVo, locTypeDto); |
| | | // 更新目标库位状态 |
| | |
| | | * 全板入库 |
| | | */ |
| | | @Transactional |
| | | public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) { |
| | | public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins, List<Integer> recommendRows) { |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); |
| | | // 检索库位 |
| | |
| | | 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); |
| | | StartupDto dto = commonService.getLocNo(1, devpNo, findLocNoAttributeVo, locTypeDto, recommendRows); |
| | | int workNo = dto.getWorkNo(); |
| | | Date now = new Date(); |
| | | // 生成工作档 |
| | |
| | | if (!waitPakinService.update(setParam, wrapper)) { |
| | | throw new CoolException("更新通知档失败"); |
| | | } |
| | | // 更新源站点信息 |
| | | sourceStaNo.setWrkNo(workNo); |
| | | sourceStaNo.setModiTime(now); |
| | | if (!basDevpService.updateById(sourceStaNo)){ |
| | | throw new CoolException("更新源站失败"); |
| | | } |
| | | // // 更新源站点信息 |
| | | // sourceStaNo.setWrkNo(workNo); |
| | | // sourceStaNo.setModiTime(now); |
| | | // if (!basDevpService.updateById(sourceStaNo)){ |
| | | // throw new CoolException("更新源站失败"); |
| | | // } |
| | | // 更新目标库位状态 |
| | | LocMast locMast = locMastService.selectById(dto.getLocNo()); |
| | | if (locMast.getLocSts().equals("O")){ |
| | |
| | | } else { |
| | | throw new CoolException(dto.getLocNo()+"目标库位已被占用"); |
| | | } |
| | | String wcsLoc = Utils.WMSLocToWCSLoc(dto.getLocNo()); |
| | | dto.setLocNo(wcsLoc); |
| | | dto.setTaskNo(workNo+""); |
| | | return dto; |
| | | } |
| | | |