diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java index a88114b..9f421af 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java @@ -349,4 +349,10 @@ public interface ITaskHeaderService extends IService<TaskHeader> { */ Result createOverStationTaskLockContainer(String containerCode, String warehouseCode); + /** + * 完成任务 解锁容器和库位 + * @param + */ + Result completeTaskUnLockContainerAndLocation(String containerFillStatus, int taskType, String containerCode, String fromLocationCode, String toLocationCode, + String warehouseCode); } 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 0253246..5aa5ae7 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 @@ -1649,6 +1649,73 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea } /** + * 完成任务时,统一解锁容器和库位 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Result completeTaskUnLockContainerAndLocation(String containerFillStatus, int taskType, String containerCode, String fromLocationCode, + String toLocationCode, String warehouseCode) { + Result result = null; + boolean success = false; + if (StringUtils.isEmpty(toLocationCode) && taskType == QuantityConstant.TASK_TYPE_OVER_STATION) { + return Result.error("完成任务时, 目标库位号为空"); + } + switch (taskType) { + case QuantityConstant.TASK_TYPE_WHOLERECEIPT: + case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT: + success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, containerFillStatus, + warehouseCode); + break; + case QuantityConstant.TASK_TYPE_EMPTYRECEIPT: + success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, + QuantityConstant.STATUS_CONTAINER_FILL_EMPTY, warehouseCode); + break; + case QuantityConstant.TASK_TYPE_MANY_EMPTYRECEIPT: + success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, + QuantityConstant.STATUS_CONTAINER_FILL_MANY, warehouseCode); + break; + case QuantityConstant.TASK_TYPE_WHOLESHIPMENT: + case QuantityConstant.TASK_TYPE_EMPTYSHIPMENT: + case QuantityConstant.TASK_TYPE_MANY_EMPTYSHIPMENT: + success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, + QuantityConstant.STATUS_CONTAINER_FILL_EMPTY, warehouseCode); + break; + case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT: + case QuantityConstant.TASK_TYPE_CYCLECOUNT: + case QuantityConstant.TASK_TYPE_TRANSFER: + case QuantityConstant.TASK_TYPE_CHECK_OUT: + InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByContainerCode(containerCode, warehouseCode); + if (inventoryHeader != null) { + success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, + QuantityConstant.STATUS_CONTAINER_FILL_SOME, warehouseCode); + } else { + success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, + QuantityConstant.STATUS_CONTAINER_FILL_EMPTY, warehouseCode); + } + break; + case QuantityConstant.TASK_TYPE_OVER_STATION: + success = containerService.updateLocationCodeAndStatus(containerCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_CONTAINER_EMPTY, + warehouseCode); + break; + } + if (!success) { + throw new JeecgBootException("完成任务时,更新容器失败"); + } + if (StringUtils.isNotEmpty(fromLocationCode) && !fromLocationCode.equals(toLocationCode)) { + success = + locationService.updateContainerCodeAndStatus(fromLocationCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode); + if (!success) { + throw new JeecgBootException("完成任务时,更新源库位失败"); + } + } + success = locationService.updateContainerCodeAndStatus(toLocationCode, containerCode, QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode); + if (!success) { + throw new JeecgBootException("完成任务时,更新库位失败"); + } + return Result.OK("完成任务成功"); + } + + /** * 完成空托盘入库任务 * @param taskHeader 任务 * @return Result 完成入库任务结果