diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java index 37cbab9..5744429 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java @@ -138,16 +138,36 @@ public class ReceiptTaskService { if (!receiptContainerHeader.getWarehouseCode().equals(ShiroUtils.getWarehouseCode())) { throw new ServiceException("id:" + id + "的入库组盘不能在" + ShiroUtils.getWarehouseCode() + "仓库操作"); } - Container container = containerService.getContainerByCode(receiptContainerHeader.getContainerCode()); - if(container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK)) { - throw new ServiceException("托盘已经锁定,不能生成任务"); - } - //锁定容器 - containerService.updateStatus(receiptContainerHeader.getContainerCode(), QuantityConstant.STATUS_CONTAINER_LOCK, container.getWarehouseCode()); + + //查询入库组盘明细 - List<ReceiptContainerDetail> list = receiptContainerDetailService.list(new LambdaQueryWrapper<ReceiptContainerDetail>().eq(ReceiptContainerDetail::getReceiptContainerId, id)); + LambdaQueryWrapper<ReceiptContainerDetail> lam = Wrappers.lambdaQuery(); + lam.eq(ReceiptContainerDetail::getReceiptContainerId,id); + lam.lt(ReceiptContainerDetail::getStatus,QuantityConstant.RECEIPT_CONTAINER_TASK); + List<ReceiptContainerDetail> list = receiptContainerDetailService.list(lam); + +// List<ReceiptContainerDetail> list = receiptContainerDetailService.list(new LambdaQueryWrapper<ReceiptContainerDetail>().eq(ReceiptContainerDetail::getReceiptContainerId, id)); if (list.isEmpty()) { - throw new ServiceException("id:" + id + "的入库组盘,没有组盘明细,请先组盘!"); + throw new ServiceException("id:" + id + "的入库组盘,没有未生成任务的组盘明细!"); + } + Container container = containerService.getContainerByCode(receiptContainerHeader.getContainerCode()); + if(container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK)) { + //一般只有一个异常数据 + ReceiptContainerDetail itemReceiptContainerDetail = list.get(0); + if (itemReceiptContainerDetail!=null) { + LambdaQueryWrapper<TaskDetail> detaillam = Wrappers.lambdaQuery(); + detaillam.eq(TaskDetail::getAllocationId,itemReceiptContainerDetail.getId()); + detaillam.last("limit 1"); + TaskDetail taskDetail=taskDetailService.getOne(detaillam); + if(taskDetail!=null){ + //更新入库组盘明细状态 + itemReceiptContainerDetail.setStatus(QuantityConstant.RECEIPT_CONTAINER_TASK); + receiptContainerDetailService.updateById(itemReceiptContainerDetail); + return AjaxResult.success("生成任务成功").setData(taskDetail.getTaskId()); + } + }else{ + throw new ServiceException("托盘已经锁定,不能生成任务"); + } } if(StringUtils.isNotEmpty(receiptContainerHeader.getFromLocation())) { locationService.updateStatus(receiptContainerHeader.getFromLocation(), QuantityConstant.STATUS_LOCATION_LOCK); @@ -157,11 +177,11 @@ public class ReceiptTaskService { locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCATION_LOCK); Location desLocation = locationService.getLocationByCode(locationCode); if (desLocation==null){ - return AjaxResult.error(receiptContainerHeader.getContainerCode()+",该托盘没有这个库位,"+locationCode); + throw new ServiceException(receiptContainerHeader.getContainerCode()+",该托盘没有这个库位,"+locationCode); } String loginWarehouse = ShiroUtils.getWarehouseCode(); if(!desLocation.getWarehouseCode().equals(loginWarehouse)) { - return AjaxResult.error("库位对应仓库不对"); + throw new ServiceException("库位对应仓库不对"); } //if (taskHeaderService.getUncompleteTaskInNear(desLocation) > 0) { // return AjaxResult.error("目标库位:" + desLocation + "旁边存在任务,请完成任务以后再分配"); @@ -174,109 +194,24 @@ public class ReceiptTaskService { throw new ServiceException("组盘状态更新失败"); } } - //添加任务主表 - TaskHeader task = new TaskHeader(); - //成品入库任务将typeid改成1 - if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){ - task.setTypeId(1); - } - task.setAllocationHeadId(receiptContainerHeader.getId()); - task.setElectricQuantity(receiptContainerHeader.getElectricQuantity()); - task.setAllocationHeadId(receiptContainerHeader.getId()); - task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); - task.setWarehouseCode(receiptContainerHeader.getWarehouseCode()); - task.setCompanyCode(receiptContainerHeader.getCompanyCode()); - task.setStatus(QuantityConstant.TASK_STATUS_BUILD); - task.setTaskType(receiptContainerHeader.getTaskType()); - task.setFromLocation(receiptContainerHeader.getFromLocation()); - if(StringUtils.isNotEmpty(receiptContainerHeader.getToLocation())){ - task.setToLocation(receiptContainerHeader.getToLocation()); - Location location = locationService.getLocationByCode(task.getToLocation(), ShiroUtils.getWarehouseCode()); - if(location != null) { - task.setZoneCode(location.getZoneCode()); - } - } - if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){ - task.setBarCodeHeaderCode(receiptContainerHeader.getBarCodeHeaderCode()); - task.setBarCodeHeaderId(receiptContainerHeader.getBarCodeHeaderId()); - } - task.setContainerCode(receiptContainerHeader.getContainerCode()); - task.setRecvDock(receiptContainerHeader.getRecvDock()); - task.setPort(receiptContainerHeader.getPort()); - //是否需要检测放电 + //锁定容器 + containerService.updateStatus(receiptContainerHeader.getContainerCode(), QuantityConstant.STATUS_CONTAINER_LOCK, container.getWarehouseCode()); + //是否需要检测放电 int isBatteryFlag=1; + TaskHeader task=createTask(receiptContainerHeader); + if (taskHeaderService.save(task)) { //添加任务明细表 for (ReceiptContainerDetail item : list) { - TaskDetail taskDetail = new TaskDetail(); - taskDetail.setTaskId(task.getId()); - taskDetail.setTaskType(task.getTaskType()); - taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); - taskDetail.setWarehouseCode(task.getWarehouseCode()); - taskDetail.setAllocationId(item.getId()); - taskDetail.setCompanyCode(task.getCompanyCode()); - taskDetail.setBatteryPackTwoCode(item.getBatteryPackTwoCode()); - taskDetail.setMaterialCode(item.getMaterialCode()); - taskDetail.setMaterialName(item.getMaterialName()); - taskDetail.setMaterialSpec(item.getMaterialSpec()); - taskDetail.setMaterialUnit(item.getMaterialUnit()); - taskDetail.setMaterialIsBattery(item.getMaterialIsBattery()); - taskDetail.setInventorySts(item.getInventorySts()); - taskDetail.setBillCode(item.getReceiptCode()); - taskDetail.setBillDetailId(item.getReceiptDetailId()); - //成品入库任务将typeid改成1 - if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){ - taskDetail.setTypeId(1); - //taskDetail.setBillDetailId(item.getBarcodeDetailsId()); - taskDetail.setBarcodeDetailsCode(item.getBarcodeDetailsCode()); - taskDetail.setBarcodeDetailsId(item.getBarcodeDetailsId()); - //taskDetail.setBillDetailId(rec); - } - taskDetail.setQty(item.getQty()); - taskDetail.setWeights(item.getWeights()); - taskDetail.setContainerCode(task.getContainerCode()); - taskDetail.setFromLocation(task.getFromLocation()); - taskDetail.setElectricQuantity(item.getElectricQuantity()); - taskDetail.setMaterialNetWeight(item.getMaterialNetWeight()); - taskDetail.setMaterialGrossWeight(item.getMaterialGrossWeight()); - taskDetail.setMaterialNetWeight(item.getMaterialNetWeight()); - taskDetail.setMaterialTareWeight(item.getMaterialTareWeight()); - taskDetail.setMaterialBatch(item.getMaterialBatch()); - if(StringUtils.isNotEmpty(task.getToLocation() )) { - taskDetail.setToLocation(task.getToLocation()); - } - if(StringUtils.isNotEmpty(item.getSn() )){ - taskDetail.setSn(item.getSn()); - } - taskDetail.setBatch(item.getBatch()); - taskDetail.setProjectNo(item.getProjectNo()); - taskDetail.setBatteryQty(item.getBatteryQty()); - taskDetail.setBatteryPackType(item.getBatteryPackType()); - taskDetail.setBatteryTypes(item.getBatteryTypes()); - taskDetail.setCompleteness(item.getCompleteness()); - taskDetail.setRemark(item.getRemark()); - taskDetail.setCountryCode(item.getCountryCode()); - taskDetail.setRecycler(item.getRecycler()); - /* System.out.println("id=="+item.getId()); - System.out.println("taskDetail.getMaterialIsBattery()=="+taskDetail.getMaterialIsBattery()); - System.out.println("taskDetail.getBatteryTypes()=="+taskDetail.getBatteryTypes());*/ - if(taskDetail.getMaterialIsBattery()==1&&StringUtils.isNotEmpty(taskDetail.getBatteryTypes())&&taskDetail.getBatteryTypes().equals("1")){ - taskDetail.setDischargeReview(2); - isBatteryFlag=2; - }else{ - taskDetail.setDischargeReview(1); + TaskDetail taskDetail=createTaskDetail(task,isBatteryFlag,item,receiptContainerHeader); + if (!taskDetailService.save(taskDetail)) { + throw new ServiceException("生成任务明细失败"); } //更新入库组盘明细状态 item.setStatus(QuantityConstant.RECEIPT_CONTAINER_TASK); if (!receiptContainerDetailService.updateById(item)) { throw new ServiceException("更新入库组盘明细状态出错"); } - taskDetail.setPoundCode(item.getPoundCode()); - taskDetail.setSupplierCode(item.getSupplierCode()); - if (!taskDetailService.save(taskDetail)) { - throw new ServiceException("生成任务明细失败"); - } - /* 修改明细状态为上架*/ ReceiptDetail receiptDetail = receiptDetailService.getById(item.getReceiptDetailId()); @@ -315,6 +250,106 @@ public class ReceiptTaskService { } + + public TaskHeader createTask(ReceiptContainerHeader receiptContainerHeader){ + //添加任务主表 + TaskHeader task = new TaskHeader(); + //成品入库任务将typeid改成1 + if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){ + task.setTypeId(1); + } + task.setAllocationHeadId(receiptContainerHeader.getId()); + task.setElectricQuantity(receiptContainerHeader.getElectricQuantity()); + task.setAllocationHeadId(receiptContainerHeader.getId()); + task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); + task.setWarehouseCode(receiptContainerHeader.getWarehouseCode()); + task.setCompanyCode(receiptContainerHeader.getCompanyCode()); + task.setStatus(QuantityConstant.TASK_STATUS_BUILD); + task.setTaskType(receiptContainerHeader.getTaskType()); + task.setFromLocation(receiptContainerHeader.getFromLocation()); + if(StringUtils.isNotEmpty(receiptContainerHeader.getToLocation())){ + task.setToLocation(receiptContainerHeader.getToLocation()); + Location location = locationService.getLocationByCode(task.getToLocation(), ShiroUtils.getWarehouseCode()); + if(location != null) { + task.setZoneCode(location.getZoneCode()); + } + } + if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){ + task.setBarCodeHeaderCode(receiptContainerHeader.getBarCodeHeaderCode()); + task.setBarCodeHeaderId(receiptContainerHeader.getBarCodeHeaderId()); + } + task.setContainerCode(receiptContainerHeader.getContainerCode()); + task.setRecvDock(receiptContainerHeader.getRecvDock()); + task.setPort(receiptContainerHeader.getPort()); + + return task; + } + + + public TaskDetail createTaskDetail(TaskHeader task,int isBatteryFlag,ReceiptContainerDetail item,ReceiptContainerHeader receiptContainerHeader){ + TaskDetail taskDetail = new TaskDetail(); + taskDetail.setTaskId(task.getId()); + taskDetail.setTaskType(task.getTaskType()); + taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); + taskDetail.setWarehouseCode(task.getWarehouseCode()); + taskDetail.setAllocationId(item.getId()); + taskDetail.setCompanyCode(task.getCompanyCode()); + taskDetail.setBatteryPackTwoCode(item.getBatteryPackTwoCode()); + taskDetail.setMaterialCode(item.getMaterialCode()); + taskDetail.setMaterialName(item.getMaterialName()); + taskDetail.setMaterialSpec(item.getMaterialSpec()); + taskDetail.setMaterialUnit(item.getMaterialUnit()); + taskDetail.setMaterialIsBattery(item.getMaterialIsBattery()); + taskDetail.setInventorySts(item.getInventorySts()); + taskDetail.setBillCode(item.getReceiptCode()); + taskDetail.setBillDetailId(item.getReceiptDetailId()); + //成品入库任务将typeid改成1 + if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){ + taskDetail.setTypeId(1); + //taskDetail.setBillDetailId(item.getBarcodeDetailsId()); + taskDetail.setBarcodeDetailsCode(item.getBarcodeDetailsCode()); + taskDetail.setBarcodeDetailsId(item.getBarcodeDetailsId()); + //taskDetail.setBillDetailId(rec); + } + taskDetail.setQty(item.getQty()); + taskDetail.setWeights(item.getWeights()); + taskDetail.setContainerCode(task.getContainerCode()); + taskDetail.setFromLocation(task.getFromLocation()); + taskDetail.setElectricQuantity(item.getElectricQuantity()); + taskDetail.setMaterialNetWeight(item.getMaterialNetWeight()); + taskDetail.setMaterialGrossWeight(item.getMaterialGrossWeight()); + taskDetail.setMaterialNetWeight(item.getMaterialNetWeight()); + taskDetail.setMaterialTareWeight(item.getMaterialTareWeight()); + taskDetail.setMaterialBatch(item.getMaterialBatch()); + if(StringUtils.isNotEmpty(task.getToLocation() )) { + taskDetail.setToLocation(task.getToLocation()); + } + if(StringUtils.isNotEmpty(item.getSn() )){ + taskDetail.setSn(item.getSn()); + } + taskDetail.setBatch(item.getBatch()); + taskDetail.setProjectNo(item.getProjectNo()); + taskDetail.setBatteryQty(item.getBatteryQty()); + taskDetail.setBatteryPackType(item.getBatteryPackType()); + taskDetail.setBatteryTypes(item.getBatteryTypes()); + taskDetail.setCompleteness(item.getCompleteness()); + taskDetail.setRemark(item.getRemark()); + taskDetail.setCountryCode(item.getCountryCode()); + taskDetail.setRecycler(item.getRecycler()); + /* System.out.println("id=="+item.getId()); + System.out.println("taskDetail.getMaterialIsBattery()=="+taskDetail.getMaterialIsBattery()); + System.out.println("taskDetail.getBatteryTypes()=="+taskDetail.getBatteryTypes());*/ + if(taskDetail.getMaterialIsBattery()==1&&StringUtils.isNotEmpty(taskDetail.getBatteryTypes())&&taskDetail.getBatteryTypes().equals("1")){ + taskDetail.setDischargeReview(2); + isBatteryFlag=2; + }else{ + taskDetail.setDischargeReview(1); + } + taskDetail.setPoundCode(item.getPoundCode()); + taskDetail.setSupplierCode(item.getSupplierCode()); + return taskDetail; + } + public WcsTask createWcsTask(TaskHeader task){ WcsTask wcsTask=new WcsTask(); wcsTask.setTaskNo(task.getId().toString());