| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.ArrayList; |
| | |
| | | private RowLastnoService rowLastnoService; |
| | | @Autowired |
| | | private WorkService workService; |
| | | @Autowired |
| | | private WrkMastLogService wrkMastLogService; |
| | | @Autowired |
| | | private WrkDetlLogService wrkDetlLogService; |
| | | |
| | | @PostMapping("/pakin/loc/v1") |
| | | @ResponseBody |
| | |
| | | return R.ok().add(dto); |
| | | } |
| | | |
| | | @PostMapping("/pakin/pick/loc/v1") |
| | | @ResponseBody |
| | | public synchronized R getPickLocNo(@RequestBody SearchLocParam param) { |
| | | log.info("收到WCS拣料盘点入库接口请求====>>入参:{}", param); |
| | | |
| | | if (Cools.isEmpty(param.getSourceStaNo())) { |
| | | return R.error("源站编号不能为空"); |
| | | } |
| | | |
| | | if (Cools.isEmpty(param.getLocType1())) { |
| | | return R.error("高低检测信号不能为空"); |
| | | } |
| | | |
| | | if (Cools.isEmpty(param.getBarcode())) { |
| | | return R.error("托盘码不存在"); |
| | | } |
| | | |
| | | startupPickPutStore(param); |
| | | log.info("WCS拣料盘点入库接口,托盘码:{}", param.getBarcode()); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PostMapping("/auto/emptyIn/v1") |
| | | @ResponseBody |
| | | public R autoEmptyIn(@RequestBody LocTypeDto locTypeDto) { |
| | |
| | | return R.ok(!Cools.isEmpty(wrkMast) ? R.ok("自动空托出库成功,工作号:" + wrkMast.getWrkNo()) : R.error("生成自动空托出库失败")); |
| | | } |
| | | |
| | | @Transactional |
| | | public void startupPickPutStore(SearchLocParam param) { |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true); |
| | | sourceStaNo.setLocType1(param.getLocType1()); |
| | | LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); |
| | | if (param.getBarcode().startsWith("11")) { |
| | | locTypeDto.setLocType2((short) 1); |
| | | } else if (param.getBarcode().startsWith("13")) { |
| | | locTypeDto.setLocType2((short) 2); |
| | | } else if (param.getBarcode().startsWith("16")) { |
| | | locTypeDto.setLocType2((short) 3); |
| | | } else { |
| | | throw new CoolException("未知托盘码规则"); |
| | | } |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); |
| | | if (wrkMast == null) { |
| | | throw new CoolException(param.getBarcode() + "托盘,任务不存在"); |
| | | } |
| | | |
| | | if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) { |
| | | throw new CoolException(wrkMast.getWrkNo() + "工作号,任务已经拣选盘点"); |
| | | } |
| | | |
| | | if (wrkMast.getIoType() != 103 || wrkMast.getIoType() != 107) { |
| | | throw new CoolException(wrkMast.getWrkNo() + "工作号,任务不属于拣选盘点"); |
| | | } |
| | | |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); |
| | | if (wrkDetls.isEmpty()) { |
| | | throw new CoolException(wrkMast.getWrkNo() + "工作号,工作明细不存在"); |
| | | } |
| | | |
| | | WrkDetl wrkDetl = wrkDetls.get(0); |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); |
| | | findLocNoAttributeVo.setMatnr(wrkDetl.getMatnr()); |
| | | |
| | | StartupDto dto = commonService.getLocNo(1, param.getSourceStaNo(), findLocNoAttributeVo, locTypeDto, param.getBarcode()); |
| | | if (dto == null) { |
| | | throw new CoolException("找不到空库位"); |
| | | } |
| | | |
| | | // 保存工作主档历史档 |
| | | if (!wrkMastLogService.save(wrkMast.getWrkNo())) { |
| | | throw new CoolException("保存工作主档历史档失败"); |
| | | } |
| | | |
| | | // 保存工作明细档历史档 |
| | | if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { |
| | | throw new CoolException("保存工作明细档历史档失败"); |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | // 更新工作档数据状态 |
| | | wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57 |
| | | wrkMast.setWrkSts(2L); // 工作状态: 2.设备上走 |
| | | wrkMast.setCrnNo(dto.getCrnNo()); |
| | | wrkMast.setSourceStaNo(dto.getSourceStaNo()); |
| | | wrkMast.setStaNo(dto.getStaNo()); |
| | | wrkMast.setLocNo(dto.getLocNo()); |
| | | wrkMast.setBarcode(param.getBarcode()); // 托盘码 |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setUpdMk("");//允许再次移库 |
| | | if (!wrkMastService.updateById(wrkMast)) { |
| | | throw new CoolException("更新工作档数据状态失败"); |
| | | } |
| | | |
| | | LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); |
| | | if (!locMast.getLocSts().equals("O")) { |
| | | throw new CoolException(locMast.getLocNo() + "库位状态不处于空库位"); |
| | | } |
| | | |
| | | locMast.setLocSts("S"); |
| | | locMast.setModiTime(new Date()); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("修改库位状态失败"); |
| | | } |
| | | |
| | | // 修改库位状态 Q.拣料/盘点/并板再入库 |
| | | LocMast sourceLocMast = locMastService.selectById(wrkMast.getSourceLocNo()); |
| | | if (!sourceLocMast.getLocSts().equals("P")) { |
| | | throw new CoolException(sourceLocMast.getLocNo() + "库位状态不处于P.拣料盘点出库"); |
| | | } |
| | | |
| | | //获取源库存信息并迁移至新库位 |
| | | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() |
| | | .eq("loc_no", sourceLocMast.getLocNo())); |
| | | if (locDetls.isEmpty()) { |
| | | throw new CoolException("保存工作主档历史档失败"); |
| | | } |
| | | |
| | | for (LocDetl locDetl : locDetls) { |
| | | locDetl.setLocNo(wrkMast.getLocNo()); |
| | | locDetl.setModiTime(new Date()); |
| | | if (!locDetlService.insert(locDetl)) { |
| | | throw new CoolException("迁移工作明细档失败"); |
| | | } |
| | | } |
| | | |
| | | //清空源库位信息 |
| | | // 删除工作档源库位的库存明细 |
| | | if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocMast.getLocNo()))) { |
| | | throw new CoolException("清空源库存信息失败"); |
| | | } |
| | | |
| | | // 修改源库位状态 P ===>> O |
| | | if (sourceLocMast.getLocSts().equals("P")) { |
| | | sourceLocMast.setLocSts("O"); |
| | | sourceLocMast.setBarcode(""); |
| | | sourceLocMast.setModiTime(now); |
| | | sourceLocMast.setIoTime(now); |
| | | if (!locMastService.updateById(sourceLocMast)) { |
| | | throw new CoolException("修改源库位状态失败"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 全板入库 |
| | | */ |