From 9d8ae2357274abd88be1338352bf855bcdfe66de Mon Sep 17 00:00:00 2001 From: youjie <272855983@qq.com> Date: Fri, 16 Jun 2023 11:35:02 +0800 Subject: [PATCH] 完善生成任务 锁定容器和库位 --- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java | 4 +++- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java | 57 ++++++++++++++++++++++----------------------------------- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java | 49 +++++++++++++++---------------------------------- 3 files changed, 40 insertions(+), 70 deletions(-) diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java index 54ce4b0..09b1e93 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java @@ -34,6 +34,7 @@ import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailServ import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentHeaderService; import org.jeecg.modules.wms.task.taskHeader.entity.TaskDetail; import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; +import org.jeecg.modules.wms.task.taskHeader.entity.TaskLockEntity; import org.jeecg.modules.wms.task.taskHeader.service.ITaskDetailService; import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; import org.jeecg.utils.StringUtils; @@ -513,7 +514,8 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi if (!result.isSuccess()) { return result; } - String zoneCode = location.getZoneCode(); + TaskLockEntity taskLockEntity = (TaskLockEntity)result.getResult(); + String zoneCode = taskLockEntity.getZoneCode(); TaskHeader taskHeader = new TaskHeader(); taskHeader.setPreTaskNo(preTaskNo); taskHeader.setTaskType(taskType); diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java index 225a78e..58db1cb 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java @@ -27,6 +27,7 @@ import org.jeecg.modules.wms.stocktaking.cycleCountHeader.entity.CycleCountHeade import org.jeecg.modules.wms.stocktaking.cycleCountHeader.service.impl.CycleCountHeaderServiceImpl; import org.jeecg.modules.wms.task.taskHeader.entity.TaskDetail; import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; +import org.jeecg.modules.wms.task.taskHeader.entity.TaskLockEntity; import org.jeecg.modules.wms.task.taskHeader.service.impl.TaskDetailServiceImpl; import org.jeecg.modules.wms.task.taskHeader.service.impl.TaskHeaderServiceImpl; import org.jeecg.utils.StringUtils; @@ -198,6 +199,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap * @return */ @Override + @Transactional public Result createCycleCoutTaskByDetailId(Integer cycleCoutDetailId, String toPort, String warehouseCode) { /* 任务主表中存在库位,在盘点明细中生成任务时,不同的容器生成不同的主任务 */ // 校验有没有相同容器正在执行任务. @@ -214,32 +216,27 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap if (childList.size() < 1) { return Result.error("盘点明细没有子单"); } - Location location = locationService.getLocationByCode(cycleCountDetail.getLocationCode(), warehouseCode); - if (!location.getStatus().equals(QuantityConstant.STATUS_LOCATION_EMPTY)) { - return Result.error(cycleCountDetail.getLocationCode() + "库位不在空闲状态,请先完成其他任务,操作失败!"); - } - if (StringUtils.isEmpty(location.getContainerCode())) { - return Result.error(cycleCountDetail.getLocationCode() + "库位中没有容器,操作失败!"); - } - - // 生成任务同时锁定库位 - boolean success = locationService.updateStatus(location.getCode(), QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode); - if (!success) { - throw new JeecgBootException("更新库位状态失败"); + String containerCode = cycleCountDetail.getContainerCode(); + String fromLocationCode = cycleCountDetail.getLocationCode(); + String toLocationCode = QuantityConstant.EMPTY_STRING; + String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION); + int taskLocationRule = Integer.parseInt(value); + if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) { + toLocationCode = fromLocationCode; } - // 生成任务同时锁定容器 - success = containerServiceImpl.updateStatus(location.getContainerCode(), QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode); - if (!success) { - throw new JeecgBootException("更新容器状态失败"); + Result result = taskHeaderService.createTaskLockContainerAndLocation(QuantityConstant.TASK_TYPE_CYCLECOUNT, containerCode, fromLocationCode, toLocationCode, + warehouseCode); + if (!result.isSuccess()) { + return result; } + TaskLockEntity taskLockEntity = (TaskLockEntity)result.getResult(); + String zoneCode = taskLockEntity.getZoneCode(); // 每个明细单生成一张主任务,子单就是任务明细。 TaskHeader task = new TaskHeader(); task.setWarehouseCode(warehouseCode); task.setCompanyCode(cycleCountDetail.getCompanyCode()); task.setShipmentContainerHeaderId(cycleCountDetail.getId());// 明细ID写入主任务 - if (location != null) { - task.setZoneCode(location.getZoneCode()); - } + task.setZoneCode(zoneCode); task.setInnernalTaskType(QuantityConstant.TASK_INTENERTYPE_CYCLECOUNT); task.setTaskType(QuantityConstant.TASK_TYPE_CYCLECOUNT); task.setContainerCode(cycleCountDetail.getContainerCode()); @@ -250,15 +247,9 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap task.setShipmentContainerHeaderId(cycleCoutDetailId); task.setSequence(1); task.setShipmentOrder(System.currentTimeMillis()); - - String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION); - int taskLocationRule = Integer.parseInt(value); - if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) { - task.setToLocationCode(cycleCountDetail.getLocationCode()); - } + task.setToLocationCode(toLocationCode); if (taskHeaderService.save(task)) { // 锁定库位状态 - locationService.updateStatus(location.getContainerCode(), QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode); cycleCountDetail.setTaskHeaderId(task.getId()); // 盘点明细修改状态task数据源 } else { throw new JeecgBootException("盘点任务主表生成失败!"); @@ -308,15 +299,11 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap cycleCountHeader.setStatusCyc(QuantityConstant.CYCLECOUNT_STATUS_BUILDTASK); cycleCountHeaderService.updateById(cycleCountHeader); -// LambdaQueryWrapper<InventoryDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(); -// lambdaQueryWrapper.eq(InventoryDetail::getContainerCode,task.getContainerCode()); -// List<InventoryDetail> inventoryDetails = inventoryDetailService.list(lambdaQueryWrapper); - - Result<Integer> result = new Result<Integer>(); - result.setCode(200); - result.setMessage("盘点任务生成成功"); - result.setResult(cycleCountHeader.getId()); - return result; +// Result<Integer> result = new Result<Integer>(); +// result.setCode(200); +// result.setMessage("盘点任务生成成功"); +// result.setResult(cycleCountHeader.getId()); + return Result.OK("盘点任务生成成功", cycleCountHeader.getId()); } @Override diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java index 01bd362..0253246 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java @@ -259,12 +259,14 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (!result.isSuccess()) { return result; } + TaskLockEntity taskLockEntity = (TaskLockEntity)result.getResult(); + String zoneCode = taskLockEntity.getZoneCode(); // 4. 判断源库位旁边有托盘但是没有任务,那么不允许移库 TaskHeader taskHeader = new TaskHeader(); taskHeader.setWarehouseCode(warehouseCode); taskHeader.setTaskType(QuantityConstant.TASK_TYPE_TRANSFER); taskHeader.setInnernalTaskType(QuantityConstant.TASK_INTENERTYPE_TRANSFER_POSITION); - taskHeader.setZoneCode(fromLocation.getZoneCode()); + taskHeader.setZoneCode(zoneCode); taskHeader.setContainerCode(fromLocation.getContainerCode()); taskHeader.setFromLocationCode(fromLocationCode); taskHeader.setToLocationCode(toLocationCode); @@ -303,23 +305,17 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) { toLocationCode = fromLocationCode; } - if (StringUtils.isEmpty(fromLocationCode)) { - return Result.error("创建出库查看任务时,容器不在库位上"); - } - Location location = locationService.getLocationByCode(fromLocationCode, warehouseCode); - if (location == null) { - return Result.error("创建出库查看任务时,没有找到库位:" + fromLocationCode); - } - String zoneCode = location.getZoneCode(); - Port port = portService.getPortByCode(toPortCode, zoneCode, warehouseCode); - if (port == null) { - return Result.error("创建出库查看任务时,没有找到出库口:" + toPortCode); - } Result result = taskHeaderService.createTaskLockContainerAndLocation(QuantityConstant.TASK_TYPE_CHECK_OUT, containerCode, fromLocationCode, toLocationCode, warehouseCode); if (!result.isSuccess()) { return result; } + TaskLockEntity taskLockEntity = (TaskLockEntity)result.getResult(); + String zoneCode = taskLockEntity.getZoneCode(); + Port port = portService.getPortByCode(toPortCode, zoneCode, warehouseCode); + if (port == null) { + throw new JeecgBootException("创建出库查看任务时,没有找到出库口:" + toPortCode); + } boolean success = false; LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getContainerCode, containerCode).eq(InventoryDetail::getWarehouseCode, warehouseCode) @@ -477,16 +473,13 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea return Result.error("创建空托盘组入库任务时,仓库编码为空"); } log.info("开始创建空托盘组入库任务,容器编码" + containerCode + ",库位编码" + toLocationCode); - String zoneCode = null; Result result = taskHeaderService.createTaskLockContainerAndLocation(QuantityConstant.TASK_TYPE_MANY_EMPTYRECEIPT, containerCode, QuantityConstant.EMPTY_STRING, toLocationCode, warehouseCode); if (!result.isSuccess()) { return result; } - if (StringUtils.isNotEmpty(toLocationCode)) { - Location toLocation = locationService.getLocationByCode(toLocationCode, warehouseCode); - zoneCode = toLocation.getZoneCode(); - } + TaskLockEntity taskLockEntity = (TaskLockEntity)result.getResult(); + String zoneCode = taskLockEntity.getZoneCode(); TaskHeader taskHeader = new TaskHeader(); taskHeader.setWarehouseCode(warehouseCode); taskHeader.setContainerCode(containerCode); @@ -521,16 +514,10 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (!result.isSuccess()) { return result; } + TaskLockEntity taskLockEntity = (TaskLockEntity)result.getResult(); + String zoneCode = taskLockEntity.getZoneCode(); Container container = containerService.getContainerByCode(containerCode, warehouseCode); String fromLocationCode = container.getLocationCode(); - Location fromLocation = locationService.getLocationByCode(fromLocationCode, warehouseCode); - if (fromLocation == null) { - return Result.error("创建空托盘组出库任务时, 没有找到库位:" + fromLocationCode); - } - String zoneCode = fromLocation.getZoneCode(); - if (StringUtils.isEmpty(zoneCode)) { - return Result.error("创建空托盘组出库任务时, 库区为空"); - } TaskHeader taskHeader = new TaskHeader(); taskHeader.setWarehouseCode(warehouseCode); taskHeader.setZoneCode(zoneCode); @@ -960,14 +947,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (!result.isSuccess()) { return result; } - Location fromLocation = locationService.getLocationByCode(fromLocationCode, warehouseCode); - if (fromLocation == null) { - return Result.error("创建空托盘出库时, 起始库位为空"); - } - String zoneCode = fromLocation.getZoneCode(); - if (StringUtils.isEmpty(zoneCode)) { - return Result.error("创建空托盘出库时, 起始库位的库区为空"); - } + TaskLockEntity taskLockEntity = (TaskLockEntity)result.getResult(); + String zoneCode = taskLockEntity.getZoneCode(); Port port = portService.getPortByCode(toPortCode, zoneCode, warehouseCode); if (port == null) { return Result.error("创建空托盘出库时, 没有找到出库口" + toPortCode); -- libgit2 0.22.2