| | |
| | | public synchronized Re getLocNo(@RequestBody SearchLocParam param) { |
| | | log.info("收到WCS入库接口请求====>>入参:{}", param); |
| | | if (Cools.isEmpty(param.getCargoHeight())) { |
| | | return Re.error("高低库类型不能为空"); |
| | | return Re.error("response.high_low_warehouse_type_not_empty"); |
| | | } |
| | | if (Cools.isEmpty(param.getFromPort())) { |
| | | return Re.error("源站编号不能为空"); |
| | | if (Cools.isEmpty(param.getFromPort()) && !param.getFromPort().equals("1001")) { |
| | | return Re.error("response.inbound_site_number_error"); |
| | | } |
| | | if(Cools.isEmpty(param.getWarehouse())){ |
| | | return Re.error("仓库编号不能为空"); |
| | | return Re.error("response.warehouse_number_not_empty"); |
| | | } |
| | | if(!param.getWarehouse().equals(warehouse)){ |
| | | return Re.error("仓库编号不匹配"); |
| | | return Re.error("response.warehouse_number_mismatch"); |
| | | } |
| | | List<WaitPakin> waitPakins = null; |
| | | if (param.getFromPort().equals("101")) { |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", param.getBarCode())); |
| | | |
| | | if(wrkMast != null && (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107)){ |
| | | switch (wrkMast.getIoType()){ |
| | | case 103:param.setIoType(103);break;//拣料 |
| | | case 107:param.setIoType(107);break;//盘点 |
| | | } |
| | | }else{ |
| | | //全板入库 |
| | | param.setIoType(1); |
| | | } |
| | | if (param.getFromPort().equals("101") && param.getIoType()!=103 && param.getIoType() != 107) { |
| | | |
| | | //有空板出库时禁止入库 |
| | | int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", 100).notIn("wrk_sts", 7)); |
| | | int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", 1001).notIn("wrk_sts", 7)); |
| | | if(wrkCount > 0){ |
| | | return Re.error("有空板出库到100站时时禁止入库"); |
| | | return Re.error("response.empty_plate_outbound_forbidden_inbound"); |
| | | } |
| | | |
| | | if (Cools.isEmpty(param.getBarCode())) { |
| | | return Re.error("条码不能为空"); |
| | | return Re.error("response.barcode_not_empty"); |
| | | } |
| | | waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarCode())); |
| | | if (Cools.isEmpty(waitPakins)) { |
| | | WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarCode()); |
| | | // WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarCode()); |
| | | if (wrkMast != null && wrkMast.getIoType() == 103) { |
| | | return Re.parse(CodeRes.PICK_600); |
| | | } |
| | |
| | | } |
| | | } else { |
| | | //有满板出库时禁止空板入库 |
| | | int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", 100).andNew().eq("io_type", 101).or().eq("io_type", 110)); |
| | | int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", 1001).andNew().eq("io_type", 101).or().eq("io_type", 110)); |
| | | if (wrkCount > 0) { |
| | | return Re.error("有满板出库时禁止空板入库"); |
| | | return Re.error("response.full_plate_outbound_forbidden_empty_plate_inbound"); |
| | | } |
| | | |
| | | int countLoc = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 10)); |
| | | if (countLoc > 0) { |
| | | return Re.error("已有空板入库任务禁止在入空板"); |
| | | return Re.error("response.empty_plate_inbound_task_exists"); |
| | | } |
| | | } |
| | | if (Cools.isEmpty(param.getCargoHeight())) { |
| | | return Re.error("高低检测信号不能为空"); |
| | | return Re.error("response.high_low_detection_signal_not_empty"); |
| | | } |
| | | // if (!param.getBarCode().startsWith("7")&&!param.getBarCode().startsWith("8")){ |
| | | // return Re.error("未定义的托盘码规则"); |
| | |
| | | |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.valueOf(param.getFromPort()), true); |
| | | if(sourceStaNo == null){ |
| | | return Re.error("response.site_not_exist"); |
| | | } |
| | | sourceStaNo.setLocType1(param.getCargoHeight().shortValue()); // 高低库位 |
| | | // if (param.getBarCode().startsWith("7")){ |
| | | // sourceStaNo.setLocType2((short) 1); // 宽窄库位 1.窄库位1200*1000*990 |
| | |
| | | |
| | | StartupDto dto = null; |
| | | |
| | | //全板入库 |
| | | param.setIoType(1); |
| | | |
| | | switch (param.getIoType()) { |
| | | case 1://满托盘入库 |
| | | assert waitPakins != null; |
| | | dto = startupFullPutStore(Integer.valueOf(param.getFromPort()), param.getBarCode(), locTypeDto, waitPakins); |
| | | break; |
| | | // case 10://空托盘入库 |
| | | // dto = emptyPlateIn(Integer.valueOf(param.getFromPort()), locTypeDto, param.getBarCode()); |
| | | // break; |
| | | case 103:startupFullPutStore103(Integer.valueOf(param.getFromPort()), param.getBarCode(), locTypeDto, wrkMast);break; |
| | | case 107:startupFullPutStore107(Integer.valueOf(param.getFromPort()), param.getBarCode(), locTypeDto, wrkMast);break; |
| | | default: |
| | | break; |
| | | } |
| | |
| | | public synchronized Re getLocNo(@RequestBody SearchEmptyParam param) { |
| | | log.info("收到WCS空板入库接口请求====>>入参:{}", param); |
| | | if(Cools.isEmpty(param.getWarehouse())){ |
| | | return Re.error("仓库编号不能为空"); |
| | | return Re.error("response.warehouse_number_not_empty"); |
| | | } |
| | | if(!param.getWarehouse().equals(warehouse)){ |
| | | return Re.error("仓库编号不匹配"); |
| | | return Re.error("response.warehouse_number_mismatch"); |
| | | } |
| | | |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.valueOf(param.getFromPort()), true); |
| | | LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); |
| | | // // 源站点状态检测 |
| | | // BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.valueOf(param.getFromPort()), true); |
| | | LocTypeDto locTypeDto = new LocTypeDto(); |
| | | locTypeDto.setLocType1((short) 2); |
| | | |
| | | StartupDto dto = null; |
| | | |
| | |
| | | public synchronized Re errReport(@RequestBody ErrorMsg param){ |
| | | log.info("收到WCS任务入库异常上报===>>入参:{}",param); |
| | | if(Cools.isEmpty(param.getWarehouse())){ |
| | | return Re.error("仓库编号不能为空"); |
| | | return Re.error("response.warehouse_number_not_empty"); |
| | | } |
| | | if(!param.getWarehouse().equals(warehouse)){ |
| | | return Re.error("仓库编号不匹配"); |
| | | return Re.error("response.warehouse_number_mismatch"); |
| | | } |
| | | return Re.ok(); |
| | | } |
| | |
| | | public synchronized Re applyChangeEnd(@RequestBody ApplyChangeEnd param){ |
| | | log.info("收到WCS申请最终目的位置===>>入参:{}",param); |
| | | if(Cools.isEmpty(param.getWarehouse())){ |
| | | return Re.error("仓库编号不能为空"); |
| | | return Re.error("response.warehouse_number_not_empty"); |
| | | } |
| | | if(!param.getWarehouse().equals(warehouse)){ |
| | | return Re.error("仓库编号不匹配"); |
| | | return Re.error("response.warehouse_number_mismatch"); |
| | | } |
| | | if (Cools.isEmpty(param.getTaskId())){ |
| | | return Re.error("任务编号不能为空"); |
| | | return Re.error("response.task_id_not_empty"); |
| | | } |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", param.getTaskId())); |
| | | if (wrkMast == null){ |
| | | return Re.error("WMS不存在任务号:" + param.getTaskId() + "任务"); |
| | | return Re.error("response.wms_task_not_exist"); |
| | | } |
| | | if (wrkMast.getIoType() > 100){ |
| | | return Re.error("任务号:" + param.getTaskId() + "是出库任务"); |
| | | return Re.error("response.task_is_outbound"); |
| | | } |
| | | if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 5 || wrkMast.getWrkSts() == 14 || wrkMast.getWrkSts() == 15){ |
| | | return Re.error("任务号:" + param.getTaskId() + "已结束"); |
| | | return Re.error("response.task_ended"); |
| | | } |
| | | String targetNo = wrkMast.getLocNo(); |
| | | return Re.ok(targetNo); |
| | |
| | | // 操作人员数据 |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setMemo("自动空托入库"); |
| | | return wrkMastService.insert(wrkMast) ? R.ok("自动空托入库成功,工作号:" + wrkMast.getWrkNo()) : R.error("生成自动空托入库失败"); |
| | | wrkMast.setMemo("response.auto_empty_in_memo"); |
| | | return wrkMastService.insert(wrkMast) ? R.ok("response.auto_empty_in_success") : R.error("response.auto_empty_in_failed"); |
| | | } |
| | | |
| | | @PostMapping("auto/emptyOut/v1") |
| | | @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("库存没有空板"); |
| | | return R.error("response.no_empty_pallet"); |
| | | } |
| | | EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam(); |
| | | emptyPlateOutParam.setOutSite(12); |
| | |
| | | add(locMast.getLocNo() + ""); |
| | | }}); |
| | | WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam); |
| | | return R.ok(!Cools.isEmpty(wrkMast) ? R.ok("自动空托出库成功,工作号:" + wrkMast.getWrkNo()) : R.error("生成自动空托出库失败")); |
| | | return !Cools.isEmpty(wrkMast) ? R.ok("response.auto_empty_out_success") : R.error("response.auto_empty_out_failed"); |
| | | } |
| | | |
| | | /** |
| | |
| | | WaitPakin waitPakin1 = waitPakins.get(0); |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); |
| | | findLocNoAttributeVo.setMatnr(waitPakin1.getMatnr()); |
| | | |
| | | findLocNoAttributeVo.setAreaId(waitPakin1.getAreaId()); |
| | | findLocNoAttributeVo.setOrderNo(waitPakin1.getOrderNo()); |
| | | // StartupDto dto = commonService.getLocNo(1, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto); |
| | | StartupDto dto = commonService.getLocNoNew(1, devpNo, findLocNoAttributeVo, locTypeDto,barcode); |
| | | if (dto == null) { |
| | | throw new CoolException("没有检索到空库位"); |
| | | throw new CoolException("response.no_empty_location_found"); |
| | | } |
| | | int workNo = dto.getWorkNo(); |
| | | Date now = new Date(); |
| | |
| | | wrkMast.setAppeUser(waitPakin1.getAppeUser()); |
| | | boolean res = wrkMastService.insert(wrkMast); |
| | | if (!res) { |
| | | throw new CoolException("保存工作档失败"); |
| | | throw new CoolException("response.save_work_master_failed"); |
| | | } |
| | | // 生成工作档明细 |
| | | waitPakins.forEach(waitPakin -> { |
| | |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setModiTime(now); |
| | | if (!wrkDetlService.insert(wrkDetl)) { |
| | | throw new CoolException("保存工作明细失败"); |
| | | throw new CoolException("response.save_work_detail_failed"); |
| | | } |
| | | }); |
| | | // 更新入库通知档 ioStatus ===>> Y |
| | |
| | | setParam.setIoStatus("Y"); |
| | | setParam.setModiTime(now); |
| | | if (!waitPakinService.update(setParam, wrapper)) { |
| | | throw new CoolException("更新通知档失败"); |
| | | throw new CoolException("response.update_wait_pakin_failed"); |
| | | } |
| | | // 更新源站点信息 |
| | | sourceStaNo.setWrkNo(workNo); |
| | | sourceStaNo.setModiTime(now); |
| | | if (!basDevpService.updateById(sourceStaNo)) { |
| | | throw new CoolException("更新源站失败"); |
| | | throw new CoolException("response.update_source_station_failed"); |
| | | } |
| | | // 更新目标库位状态 |
| | | LocMast locMast = locMastService.selectById(dto.getLocNo()); |
| | |
| | | locMast.setLocSts("S"); // S.入库预约 |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("改变库位状态失败"); |
| | | throw new CoolException("response.change_location_status_failed"); |
| | | } |
| | | } else { |
| | | throw new CoolException(dto.getLocNo() + "目标库位已被占用"); |
| | | throw new CoolException("response.target_location_occupied"); |
| | | } |
| | | return dto; |
| | | } |
| | | |
| | | /** |
| | | * 盘点入库 |
| | | */ |
| | | @Transactional |
| | | public StartupDto startupFullPutStore107(Integer devpNo, String barcode, LocTypeDto locTypeDto, WrkMast wrkMast) { |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); |
| | | List<WrkDetl> wrkDetlList = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | WrkDetl wrkDetl = wrkDetlList.get(0); |
| | | findLocNoAttributeVo.setMatnr(wrkDetl.getMatnr()); |
| | | findLocNoAttributeVo.setBatch(wrkDetl.getBatch()); |
| | | // StartupDto dto = commonService.getLocNo(1, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto); |
| | | StartupDto dto = commonService.getLocNoNew(1, devpNo, findLocNoAttributeVo, locTypeDto,barcode); |
| | | if (dto == null) { |
| | | throw new CoolException("response.no_empty_location_found"); |
| | | } |
| | | Date now = new Date(); |
| | | // 生成工作档 |
| | | try{ |
| | | // 保存工作明细档历史档 |
| | | if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { |
| | | throw new CoolException("response.save_work_detail_history_failed"); |
| | | } |
| | | // 保存工作主档历史档 |
| | | if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { |
| | | throw new CoolException("response.save_work_master_history_failed"); |
| | | } |
| | | // 更新工作档数据状态 |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57 |
| | | wrkMast.setWrkSts(0L); // 工作状态: 2.设备上走 |
| | | wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 源站 |
| | | wrkMast.setStaNo(dto.getStaNo()); // 目标站 |
| | | wrkMast.setLocNo(dto.getLocNo()); // 目标库位 = 出库时的源库位 |
| | | wrkMast.setSourceLocNo(""); // 源库位清空 |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setMk("N");//是否完成上报wcs |
| | | // 操作人员数据 |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | throw new CoolException("response.update_work_master_status_failed"); |
| | | } |
| | | // 更新明细档io_time (历史档关联使用) |
| | | wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now); |
| | | // 更新源站点信息 |
| | | sourceStaNo.setWrkNo(wrkMast.getWrkNo()); |
| | | sourceStaNo.setModiTime(now); |
| | | if (!basDevpService.updateById(sourceStaNo)) { |
| | | throw new CoolException("response.update_source_station_failed"); |
| | | } |
| | | // 更新目标库位状态 |
| | | LocMast locMast = locMastService.selectById(dto.getLocNo()); |
| | | if (locMast.getLocSts().equals("O")) { |
| | | locMast.setLocSts("Q"); // S.入库预约 |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("response.change_location_status_failed"); |
| | | } |
| | | } else { |
| | | throw new CoolException("response.target_location_occupied"); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | } |
| | | return dto; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 盘点入库 |
| | | */ |
| | | @Transactional |
| | | public StartupDto startupFullPutStore103(Integer devpNo, String barcode, LocTypeDto locTypeDto, WrkMast wrkMast) { |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); |
| | | List<WrkDetl> wrkDetlList = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | WrkDetl wrkDetl = wrkDetlList.get(0); |
| | | findLocNoAttributeVo.setMatnr(wrkDetl.getMatnr()); |
| | | findLocNoAttributeVo.setBatch(wrkDetl.getBatch()); |
| | | findLocNoAttributeVo.setOrderNo(wrkDetl.getOrderNo()); |
| | | // StartupDto dto = commonService.getLocNo(1, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto); |
| | | StartupDto dto = commonService.getLocNoNew(1, devpNo, findLocNoAttributeVo, locTypeDto,barcode); |
| | | if (dto == null) { |
| | | throw new CoolException("response.no_empty_location_found"); |
| | | } |
| | | Date now = new Date(); |
| | | // 生成工作档 |
| | | try{ |
| | | // 保存工作明细档历史档 |
| | | if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { |
| | | throw new CoolException("response.save_work_detail_history_failed"); |
| | | } |
| | | // 保存工作主档历史档 |
| | | if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { |
| | | throw new CoolException("response.save_work_master_history_failed"); |
| | | } |
| | | // 更新工作档数据状态 |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57 |
| | | wrkMast.setWrkSts(0L); // 工作状态: 2.设备上走 |
| | | wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 源站 |
| | | wrkMast.setStaNo(dto.getStaNo()); // 目标站 |
| | | wrkMast.setLocNo(dto.getLocNo()); // 目标库位 = 出库时的源库位 |
| | | wrkMast.setSourceLocNo(""); // 源库位清空 |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setMk("N");//是否完成上报wcs |
| | | // 操作人员数据 |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | throw new CoolException("response.update_work_master_status_failed"); |
| | | } |
| | | // 更新明细档io_time (历史档关联使用) |
| | | wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now); |
| | | // 更新源站点信息 |
| | | sourceStaNo.setWrkNo(wrkMast.getWrkNo()); |
| | | sourceStaNo.setModiTime(now); |
| | | if (!basDevpService.updateById(sourceStaNo)) { |
| | | throw new CoolException("response.update_source_station_failed"); |
| | | } |
| | | // 更新目标库位状态 |
| | | LocMast locMast = locMastService.selectById(dto.getLocNo()); |
| | | if (locMast.getLocSts().equals("O")) { |
| | | locMast.setLocSts("Q"); // S.入库预约 |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("response.change_location_status_failed"); |
| | | } |
| | | } else { |
| | | throw new CoolException("response.target_location_occupied"); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | } |
| | | return dto; |
| | | } |
| | |
| | | wrkMast.setModiTime(new Date()); |
| | | boolean res = wrkMastService.insert(wrkMast); |
| | | if (!res) { |
| | | throw new CoolException("保存工作档失败"); |
| | | throw new CoolException("response.save_work_detail_failed"); |
| | | } |
| | | // 更新源站点信息 |
| | | sourceStaNo.setWrkNo(workNo); |
| | | sourceStaNo.setModiTime(new Date()); |
| | | if (!basDevpService.updateById(sourceStaNo)) { |
| | | throw new CoolException("更新源站失败"); |
| | | throw new CoolException("response.update_source_station_failed"); |
| | | } |
| | | // 更新目标库位状态 |
| | | LocMast locMast = locMastService.selectById(dto.getLocNo()); |
| | |
| | | locMast.setLocSts("S"); // S.入库预约 |
| | | locMast.setModiTime(new Date()); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("改变库位状态失败"); |
| | | throw new CoolException("response.change_location_status_failed"); |
| | | } |
| | | } else { |
| | | throw new CoolException(dto.getLocNo() + "目标库位已被占用"); |
| | | throw new CoolException("response.target_location_occupied"); |
| | | } |
| | | return dto; |
| | | } |
| | |
| | | public Re status(@RequestBody StatusParam statusParam) { |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", statusParam.getTaskId())); |
| | | if (Cools.isEmpty(wrkMast) && statusParam.getTaskStatus() != 8) { |
| | | return Re.error("没有找到:" + statusParam.getTaskId() + "这条任务"); |
| | | return Re.error("response.task_not_found"); |
| | | } else if (Cools.isEmpty(wrkMast) && statusParam.getTaskStatus() == 8) { |
| | | return Re.ok(); |
| | | } else if (!Cools.isEmpty(wrkMast) && statusParam.getTaskStatus() == 8 && wrkMast.getIoType() == 110) { |
| | |
| | | * 任务中断,4-放货 |
| | | * 完成,8-任务结束 |
| | | */ |
| | | |
| | | if (statusParam.getTaskStatus() == 0) { |
| | | //拣料和盘点再入库判断 |
| | | if ((wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) && wrkMast.getWrkSts() == 14) { |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); |
| | | String sourcecLocNo = wrkMast.getSourceLocNo(); |
| | | // 获取后两位的层数(高低库位数据) |
| | | String layerStr = sourcecLocNo.substring(sourcecLocNo.length() - 2); |
| | | int layer = Integer.parseInt(layerStr); |
| | | // 判断层数 |
| | | Short locType1 = (short) ((layer == 1) ? 1 : 2); |
| | | LocTypeDto locTypeDto = new LocTypeDto(); |
| | | locTypeDto.setLocType1(locType1); |
| | | //注意一个板只能放同一种物料(检索新库位) |
| | | // StartupDto dto = commonService.getLocNoRunPick(4, 1, 101, wrkDetls.get(0).getMatnr(), wrkDetls.get(0).getBatch(), null, 4, locTypeDto, 2); |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); |
| | | findLocNoAttributeVo.setMatnr(wrkDetls.get(0).getMatnr()); |
| | | StartupDto dto = commonService.getLocNoNew(1, 101, findLocNoAttributeVo,locTypeDto,null); |
| | | Date now = new Date(); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57 |
| | | wrkMast.setWrkSts(1L);//1.已接收 |
| | | wrkMast.setSourceStaNo(101); // 源站 |
| | | wrkMast.setStaNo(null); // 目标站 |
| | | wrkMast.setLocNo(dto.getLocNo()); // 目标库位 |
| | | wrkMast.setSourceLocNo(sourcecLocNo); |
| | | wrkMast.setModiTime(now); |
| | | wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now); |
| | | |
| | | // 修改库位状态 Q.拣料/盘点/并板再入库 |
| | | LocMast locMast2 = locMastService.selectById(dto.getLocNo()); |
| | | locMast2.setLocSts("Q"); |
| | | locMast2.setModiTime(new Date()); |
| | | if (!locMastService.updateById(locMast2)) { |
| | | |
| | | throw new CoolException("修改库位状态失败"); |
| | | } |
| | | } else { |
| | | wrkMast.setWrkSts(1L);//1.已接收 |
| | | } |
| | | wrkMast.setWrkSts(1L);//1.已接收 |
| | | } else if (statusParam.getTaskStatus() == 1) { |
| | | wrkMast.setWrkSts(2L);//2.任务开始 |
| | | } else if (statusParam.getTaskStatus() == 2) { |
| | |
| | | String sourcecLocNo = wrkMast.getSourceLocNo(); |
| | | //更新工作明细并清空源库位 |
| | | for (WrkDetl wrkDetl : wrkDetls){ |
| | | LocDetl locDetl = locDetlService.selectItem(wrkMast.getSourceLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | LocDetl locDetl = locDetlService.selectItemCarton(wrkMast.getSourceLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBarcode()); |
| | | if (null != locDetl && wrkMast.getIoType() == 103) {//拣料 |
| | | if (!wrkDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(),wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { |
| | | if (!wrkDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(),wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBarcode())) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | throw new CoolException("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | throw new CoolException("response.picking_inbound_update_detail_failed"); |
| | | } |
| | | }else if(wrkMast.getIoType() == 107){//盘点 |
| | | if (!wrkDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { |
| | | if (!wrkDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBarcode())) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | throw new CoolException("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | throw new CoolException("response.picking_inbound_update_detail_failed"); |
| | | } |
| | | } |
| | | } |
| | |
| | | locMast1.setModiTime(new Date()); |
| | | if (!locMastService.updateById(locMast1)) { |
| | | |
| | | throw new CoolException("修改库位状态失败"); |
| | | throw new CoolException("response.modify_location_status_failed"); |
| | | } |
| | | wrkMast.setWrkSts(14L);//14.已出库未确认 |
| | | } else if ((wrkMast.getIoType() == 101 || wrkMast.getIoType() == 110) && statusParam.getTaskStatus() != 8) { |
| | | wrkMast.setWrkSts(7L);//7.出库完成 |
| | | } else if (wrkMast.getWrkSts() == 7 && statusParam.getTaskStatus() == 8){ |
| | | wrkMast.setWrkSts(15L);//15.出库更新完成,任务结束 |
| | | wrkMast.setWrkSts(14L);//15.出库更新完成,任务结束 |
| | | } |
| | | } |
| | | wrkMastService.updateById(wrkMast); |
| | | //已入库未确认历史档更新 |
| | | if(wrkMast.getWrkSts() == 14){ |
| | | // 保存工作主档历史档 |
| | | if (!wrkMastLogService.save(wrkMast.getWrkNo())) { |
| | | throw new CoolException("保存工作历史档失败"); |
| | | } |
| | | // 保存工作明细档历史档 |
| | | if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { |
| | | throw new CoolException("保存工作明细历史档失败"); |
| | | } |
| | | } |
| | | // //已入库未确认历史档更新 |
| | | // if(wrkMast.getWrkSts() == 14 && (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107)){ |
| | | // // 保存工作主档历史档 |
| | | // if (!wrkMastLogService.save(wrkMast.getWrkNo())) { |
| | | // throw new CoolException("保存工作历史档失败"); |
| | | // } |
| | | // // 保存工作明细档历史档 |
| | | // if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { |
| | | // throw new CoolException("保存工作明细历史档失败"); |
| | | // } |
| | | // } |
| | | return Re.ok(); |
| | | } |
| | | |
| | |
| | | success = true; |
| | | } else { |
| | | log.error("wms同步wcs库位失败!!!url:{};request:{};response:{}", url + "/" + loc, JSON.toJSONString(mapList), response); |
| | | throw new CoolException("wms同步wcs库位失败"); |
| | | throw new CoolException("response.wms_sync_wcs_location_failed"); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("fail", e); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | throw new CoolException("wms同步wcs库位失败"); |
| | | throw new CoolException("response.wms_sync_wcs_location_failed"); |
| | | } finally { |
| | | try { |
| | | // 保存接口日志 |