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 b64278d..7fda5f7 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 @@ -45,10 +45,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.text.MessageFormat; +import java.util.*; /** * 入库任务创建和完成 @@ -219,6 +217,32 @@ public class ReceiptTaskService { return AjaxResult.success("生成上架任务成功").setData(taskIds); } + + /** + * 自动生成容器编码 + * @return 容器编码 + */ + @Transactional + public String createContainer(){ + String code = MessageFormat.format("{0}{1}", + "LS", + String.format("%d", Calendar.getInstance().getTimeInMillis())); + Container container = new Container(); + container.setCode(code); + container.setWarehouseCode(ShiroUtils.getWarehouseCode()); + container.setCompanyCode(ShiroUtils.getCompanyCodeList().get(0)); + container.setContainerType("LS"); + container.setCreatedBy(ShiroUtils.getLoginName()); + container.setLastUpdated(new Date()); + container.setLastUpdatedBy(ShiroUtils.getLoginName()); + container.setEnable(true); + container.setStatus(QuantityConstant.STATUS_CONTAINER_EMPTY); + if (!containerService.save(container)){ + throw new ServiceException("新增容器失败"); + } + return code; + } + /** * 完成入库任务 * @param task 任务 @@ -234,11 +258,16 @@ public class ReceiptTaskService { if (StringUtils.isEmpty(task.getToLocation())) { throw new ServiceException("任务" + task.getId() + "没有目的库位,执行中止"); } + BigDecimal totalQty = BigDecimal.ZERO; List<TaskDetail> taskDetailList = taskDetailService.findByTaskId(task.getId()); if (taskDetailList.isEmpty()) { throw new ServiceException("任务明细为空"); } + String containerCode = null; + if(task.getZoneCode().equals("C")) { + containerCode = createContainer(); + } InventoryHeader inventoryHeader = null; if(task.getTaskType().equals(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT)) { LambdaQueryWrapper<InventoryHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(); @@ -282,7 +311,12 @@ public class ReceiptTaskService { Location location = locationService.getLocationByCode(task.getToLocation(), ShiroUtils.getWarehouseCode()); inventoryHeader.setZoneCode(location.getZoneCode()); inventoryHeader.setTotalWeight(task.getWeight()); - inventoryHeader.setContainerCode(task.getContainerCode()); + if(task.getZoneCode().equals("C")) { + inventoryHeader.setContainerCode(containerCode); + inventoryHeader.setUserDef2(task.getContainerCode()); + } else { + inventoryHeader.setContainerCode(task.getContainerCode()); + } inventoryHeader.setContainerStatus(QuantityConstant.STATUS_CONTAINER_SOME); inventoryHeader.setTotalQty(new BigDecimal(0)); inventoryHeader.setTotalLines(0); @@ -305,7 +339,6 @@ public class ReceiptTaskService { /*查询入库单明细*/ ReceiptDetail receiptDetail = receiptDetailService.getById(taskDetail.getBillDetailId()); if (StringUtils.isNotNull(receiptDetail)) { - totalQty = this.addInventoryDetail(taskDetail, receiptDetail, inventoryHeader); //修改组盘表状态为完成 ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail(); @@ -323,6 +356,8 @@ public class ReceiptTaskService { receiptDetailService.updateById(receiptDetail); receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId()); materialWarningService.materialWarning(taskDetail.getMaterialCode(), taskDetail.getCompanyCode()); + taskDetail.setStatus(QuantityConstant.TASK_STATUS_COMPLETED); + taskDetailService.updateById(taskDetail); } } if (StringUtils.isNull(inventoryHeader)) { @@ -338,7 +373,13 @@ public class ReceiptTaskService { //修改库位状态和对应的容器 Location location = new Location(); - location.setContainerCode(task.getContainerCode()); + if(task.getZoneCode().equals("C")) { + location.setContainerCode(containerCode); + location.setUserDef2(task.getContainerCode()); + containerService.updateLocationCodeAndStatus(containerCode, task.getToLocation(), QuantityConstant.STATUS_CONTAINER_EMPTY); + } else { + location.setContainerCode(task.getContainerCode()); + } location.setWarehouseCode(ShiroUtils.getWarehouseCode()); location.setStatus(QuantityConstant.STATUS_LOCATION_EMPTY); LambdaUpdateWrapper<Location> locationLambdaUpdateWrapper = Wrappers.lambdaUpdate(); @@ -349,7 +390,9 @@ public class ReceiptTaskService { } //修改容器状态和对应的库位 Container container = new Container(); - container.setLocationCode(task.getToLocation()); + if(!task.getZoneCode().equals("C")) { + container.setLocationCode(task.getToLocation()); + } container.setStatus(QuantityConstant.STATUS_CONTAINER_SOME); LambdaUpdateWrapper<Container> containerLambdaUpdateWrapper = Wrappers.lambdaUpdate(); containerLambdaUpdateWrapper.eq(Container::getCode, task.getContainerCode());