diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java index 91f73fe..5b36c0f 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java @@ -262,7 +262,7 @@ public class WcsServiceImpl implements WcsService { if (!taskHeaderService.updateById(taskHeader)) { throw new JeecgBootException("更新任务头表目标库位失败"); } - + WcsTask wcsTask = new WcsTask(); wcsTask.setToLocationCode(locationCode); wcsTask.setPreTaskNo(String.valueOf(preTaskNo)); @@ -350,7 +350,7 @@ public class WcsServiceImpl implements WcsService { } Result<TaskHeader> result = taskHeaderService.createTransferTask(insideLocation.getCode(), destinationLocation.getCode(), warehouseCode); if (!result.isSuccess()) { - throw new JeecgBootException("创建移库任务失败"); + throw new JeecgBootException(result.getMessage()); } preTaskNo = result.getResult().getId(); taskHeader.setPreTaskNo(preTaskNo); @@ -634,6 +634,8 @@ public class WcsServiceImpl implements WcsService { originLocationCode = originLocationCode + "," + taskLocationCode; } + taskHeader = new TaskHeader(); + taskHeader.setId(Integer.parseInt(taskNo)); taskHeader.setToLocationCode(locationCode); taskHeader.setExceptionName("重入处理"); taskHeader.setIsDoubleIn(QuantityConstant.DOUBLE_IN); 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 09b1e93..72df89c 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 @@ -365,7 +365,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi shipmentContainerHeader = new ShipmentContainerHeader(); shipmentContainerHeader.setContainerCode(containerCode); shipmentContainerHeader.setFromLocationCode(locationCode); - if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) { + if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION && taskType == QuantityConstant.TASK_TYPE_SORTINGSHIPMENT) { shipmentContainerHeader.setToLocationCode(locationCode); } shipmentContainerHeader.setWarehouseCode(warehouseCode); 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 9f421af..e118dfb 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 @@ -305,6 +305,14 @@ public interface ITaskHeaderService extends IService<TaskHeader> { boolean updateStatusById(int status, int id); /** + * 更新 + * @param status + * @param id + * @return + */ + boolean updateExceptionStateById(int status, int id); + + /** * 更新状态 * @param preTaskNo * @param id 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 a973f4d..4104ea2 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 @@ -550,6 +550,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea @Override @Transactional(rollbackFor = Exception.class) public Result handleEmptyOut(String taskNo) { + log.info("开始处理空出任务" + taskNo); // 1、判断非空字段 if (StringUtils.isEmpty(taskNo)) { return Result.error("处理空出失败,任务号为空"); @@ -615,15 +616,18 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea } // 9 更新单据 taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_HANDLE); - success = taskHeaderService.updateById(taskHeader); + success = taskHeaderService.updateExceptionStateById(QuantityConstant.EXCEPTION_TASK_HANDLE, taskHeader.getId()); if (!success) { throw new JeecgBootException("处理空出失败,更新任务失败"); } + log.info("完成处理空出任务" + taskNo); return Result.ok("处理空出成功"); } @Override + @Transactional(rollbackFor = Exception.class) public Result handleDoubleIn(String taskNo) { + log.info("开始处理重入任务" + taskNo); // 1、判断非空字段 if (StringUtils.isEmpty(taskNo)) { return Result.error("处理重入失败,任务号为空"); @@ -661,22 +665,24 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (toLocation == null) { return Result.error("处理重入失败,没有找到库位"); } - toLocation.setStatus(QuantityConstant.STATUS_LOCATION_EMPTY); - boolean success = locationService.updateById(toLocation); + boolean success = locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode); if (!success) { throw new JeecgBootException("处理重入失败,更新库位失败"); } } taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_HANDLE); - boolean success = taskHeaderService.updateById(taskHeader); + boolean success = taskHeaderService.updateExceptionStateById(QuantityConstant.EXCEPTION_TASK_HANDLE, taskHeader.getId()); if (!success) { throw new JeecgBootException("处理重入失败,更新任务失败"); } + log.info("完成处理重入任务" + taskNo); return Result.ok("处理重入成功"); } @Override + @Transactional(rollbackFor = Exception.class) public Result handlePickupError(String taskNo) { + log.info("开始处理取货错任务" + taskNo); // 1、判断非空字段 if (StringUtils.isEmpty(taskNo)) { return Result.error("处理取货错失败,任务号为空"); @@ -691,12 +697,15 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea return Result.OK("处理取货错失败, 任务已经完成"); } + taskHeader = new TaskHeader(); + taskHeader.setId(Integer.parseInt(taskNo)); taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_HANDLE); boolean success = taskHeaderService.updateById(taskHeader); if (!success) { throw new JeecgBootException("处理取货错失败,更新任务失败"); } + log.info("完成处理取货错任务" + taskNo); return Result.ok("处理取货错成功"); } @@ -1556,7 +1565,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea } zoneCode = fromLocation.getZoneCode(); taskLockEntity.setZoneCode(zoneCode); - if (StringUtils.isNotEmpty(toLocationCode)) { + if (StringUtils.isNotEmpty(toLocationCode) && !fromLocationCode.equals(toLocationCode)) { Location toLocation = locationService.getLocationByCode(toLocationCode, warehouseCode); if (toLocation == null) { return Result.error("创建分拣任务时," + toLocationCode + "目标库位不存在"); @@ -1577,9 +1586,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea throw new JeecgBootException("创建分拣任务时,更新库位状态失败"); } if (StringUtils.isNotEmpty(toLocationCode)) { - success = locationService.updateStatus(toLocationCode, QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode); - if (!success) { - throw new JeecgBootException("创建分拣任务时,更新库位状态失败"); + if (!fromLocationCode.equals(toLocationCode)) { + success = locationService.updateStatus(toLocationCode, QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode); + if (!success) { + throw new JeecgBootException("创建分拣任务时,更新库位状态失败"); + } } } return Result.OK("创建分拣任务成功", taskLockEntity); @@ -1611,9 +1622,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea String toLocationCode, String warehouseCode) { Result result = null; boolean success = false; - if (StringUtils.isEmpty(toLocationCode) && taskType != QuantityConstant.TASK_TYPE_OVER_STATION) { - return Result.error("任务类型" + taskType + "完成任务时, 目标库位号为空"); - } if (StringUtils.isEmpty(containerCode)) { return Result.error("任务类型" + taskType + "完成任务时, 容器号为空"); } @@ -1624,14 +1632,23 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea switch (taskType) { case QuantityConstant.TASK_TYPE_WHOLERECEIPT: case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT: + if (StringUtils.isEmpty(toLocationCode)) { + return Result.error("任务类型" + taskType + "完成任务时, 目标库位号为空"); + } success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, containerFillStatus, warehouseCode); break; case QuantityConstant.TASK_TYPE_EMPTYRECEIPT: + if (StringUtils.isEmpty(toLocationCode)) { + return Result.error("任务类型" + taskType + "完成任务时, 目标库位号为空"); + } success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, QuantityConstant.STATUS_CONTAINER_FILL_EMPTY, warehouseCode); break; case QuantityConstant.TASK_TYPE_MANY_EMPTYRECEIPT: + if (StringUtils.isEmpty(toLocationCode)) { + return Result.error("任务类型" + taskType + "完成任务时, 目标库位号为空"); + } success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, QuantityConstant.STATUS_CONTAINER_FILL_MANY, warehouseCode); break; @@ -1651,6 +1668,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (StringUtils.isEmpty(fromLocationCode)) { return Result.error("任务类型" + taskType + "完成任务时, 起始库位号为空"); } + if (StringUtils.isEmpty(toLocationCode)) { + return Result.error("任务类型" + taskType + "完成任务时, 目标库位号为空"); + } InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByContainerCode(containerCode, warehouseCode); if (inventoryHeader != null) { if (fromLocationCode.equals(toLocationCode)) { @@ -1679,7 +1699,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (StringUtils.isNotEmpty(fromLocationCode) && !fromLocationCode.equals(toLocationCode)) { Location toLocation = locationService.getLocationByCode(fromLocationCode, warehouseCode); if (toLocation == null) { - return Result.error("完成任务时," + toLocationCode + "目标库位不存在"); + return Result.error("任务类型" + taskType + "完成任务时," + toLocationCode + "目标库位不存在"); } success = locationService.updateContainerCodeAndStatus(fromLocationCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode); @@ -2019,7 +2039,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (port == null) { return Result.error("完成空托盘出库任务时," + toPortCode + "目标出库口不存在"); } - Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_EMPTYRECEIPT, + Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_EMPTYSHIPMENT, containerCode, fromLocationCode, QuantityConstant.EMPTY_STRING, warehouseCode); if (!result.isSuccess()) { throw new JeecgBootException(result.getMessage()); @@ -2108,7 +2128,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea throw new JeecgBootException("完成移库任务时, 更新库存详情失败"); } } - Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_OVER_STATION, + Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_TRANSFER, containerCode, fromLocationCode, toLocationCode, warehouseCode); if (!result.isSuccess()) { throw new JeecgBootException(result.getMessage()); @@ -2184,7 +2204,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea } } - Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_EMPTYRECEIPT, + Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_CHECK_OUT, containerCode, fromLocationCode, toLocationCode, warehouseCode); if (!result.isSuccess()) { throw new JeecgBootException(result.getMessage()); @@ -2307,6 +2327,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea String warehouseCode = taskHeader.getWarehouseCode(); String containerCode = taskHeader.getContainerCode(); String toPortCode = taskHeader.getToPortCode(); + String fromLocationCode = taskHeader.getFromLocationCode(); log.info("开始完成空托盘组出库任务" + taskHeader.getId()); if (StringUtils.isEmpty(containerCode)) { return Result.error("完成空托盘组出库任务时, 托盘号为空"); @@ -2317,12 +2338,15 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (StringUtils.isEmpty(toPortCode)) { return Result.error("完成空托盘组出库任务时, 目标出入口为空"); } + if (StringUtils.isEmpty(fromLocationCode)) { + return Result.error("完成空托盘组出库任务时, 起始库位为空"); + } Container container = containerService.getContainerByCode(containerCode, warehouseCode); if (container == null) { return Result.error("完成空托盘组出库任务时,没有找到容器" + containerCode); } - String toLocationCode = container.getLocationCode(); - if (StringUtils.isEmpty(toLocationCode)) { + String locationCode = container.getLocationCode(); + if (StringUtils.isEmpty(locationCode)) { return Result.error("完成空托盘组出库任务时, 容器不在库位上"); } Port port = portService.getPortByCode(toPortCode, warehouseCode); @@ -2334,16 +2358,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (!success) { throw new JeecgBootException("完成空托盘组出库任务时, 更新任务失败"); } - success = containerService.updateLocationCodeAndStatus(containerCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_CONTAINER_EMPTY, - QuantityConstant.STATUS_CONTAINER_FILL_EMPTY, warehouseCode); - if (!success) { - throw new JeecgBootException("完成空托盘组出库任务时, 更新容器失败"); - } - success = locationService.updateContainerCodeAndStatus(toLocationCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode); - log.info("开始完成空托盘组出库任务" + taskHeader.getId()); - if (!success) { - throw new JeecgBootException("完成空托盘组出库任务时, 更新库位失败"); + Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_MANY_EMPTYSHIPMENT, + containerCode, fromLocationCode, QuantityConstant.EMPTY_STRING, warehouseCode); + if (!result.isSuccess()) { + throw new JeecgBootException(result.getMessage()); } + log.info("完成空托盘组出库任务" + taskHeader.getId()); return Result.ok("完成空托盘组出库任务成功"); } @@ -2389,6 +2409,15 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea } @Override + public boolean updateExceptionStateById(int exceptionState, int id) { + TaskHeader taskHeader = new TaskHeader(); + taskHeader.setExceptionState(exceptionState); + taskHeader.setId(id); + boolean success = taskHeaderService.updateById(taskHeader); + return success; + } + + @Override public boolean updatePreTaskNoById(int preTaskNo, int id) { TaskHeader taskHeader = new TaskHeader(); taskHeader.setId(id);