Commit 38dc728e0b0c1ddccdfb471395e3a3b2bbbd878f
1 parent
98b459ae
优化空出、重入、取货错
Showing
4 changed files
with
68 additions
and
29 deletions
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
... | ... | @@ -262,7 +262,7 @@ public class WcsServiceImpl implements WcsService { |
262 | 262 | if (!taskHeaderService.updateById(taskHeader)) { |
263 | 263 | throw new JeecgBootException("更新任务头表目标库位失败"); |
264 | 264 | } |
265 | - | |
265 | + | |
266 | 266 | WcsTask wcsTask = new WcsTask(); |
267 | 267 | wcsTask.setToLocationCode(locationCode); |
268 | 268 | wcsTask.setPreTaskNo(String.valueOf(preTaskNo)); |
... | ... | @@ -350,7 +350,7 @@ public class WcsServiceImpl implements WcsService { |
350 | 350 | } |
351 | 351 | Result<TaskHeader> result = taskHeaderService.createTransferTask(insideLocation.getCode(), destinationLocation.getCode(), warehouseCode); |
352 | 352 | if (!result.isSuccess()) { |
353 | - throw new JeecgBootException("创建移库任务失败"); | |
353 | + throw new JeecgBootException(result.getMessage()); | |
354 | 354 | } |
355 | 355 | preTaskNo = result.getResult().getId(); |
356 | 356 | taskHeader.setPreTaskNo(preTaskNo); |
... | ... | @@ -634,6 +634,8 @@ public class WcsServiceImpl implements WcsService { |
634 | 634 | originLocationCode = originLocationCode + "," + taskLocationCode; |
635 | 635 | } |
636 | 636 | |
637 | + taskHeader = new TaskHeader(); | |
638 | + taskHeader.setId(Integer.parseInt(taskNo)); | |
637 | 639 | taskHeader.setToLocationCode(locationCode); |
638 | 640 | taskHeader.setExceptionName("重入处理"); |
639 | 641 | taskHeader.setIsDoubleIn(QuantityConstant.DOUBLE_IN); |
... | ... |
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 |
365 | 365 | shipmentContainerHeader = new ShipmentContainerHeader(); |
366 | 366 | shipmentContainerHeader.setContainerCode(containerCode); |
367 | 367 | shipmentContainerHeader.setFromLocationCode(locationCode); |
368 | - if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) { | |
368 | + if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION && taskType == QuantityConstant.TASK_TYPE_SORTINGSHIPMENT) { | |
369 | 369 | shipmentContainerHeader.setToLocationCode(locationCode); |
370 | 370 | } |
371 | 371 | shipmentContainerHeader.setWarehouseCode(warehouseCode); |
... | ... |
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> { |
305 | 305 | boolean updateStatusById(int status, int id); |
306 | 306 | |
307 | 307 | /** |
308 | + * 更新 | |
309 | + * @param status | |
310 | + * @param id | |
311 | + * @return | |
312 | + */ | |
313 | + boolean updateExceptionStateById(int status, int id); | |
314 | + | |
315 | + /** | |
308 | 316 | * 更新状态 |
309 | 317 | * @param preTaskNo |
310 | 318 | * @param id |
... | ... |
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 |
550 | 550 | @Override |
551 | 551 | @Transactional(rollbackFor = Exception.class) |
552 | 552 | public Result handleEmptyOut(String taskNo) { |
553 | + log.info("开始处理空出任务" + taskNo); | |
553 | 554 | // 1、判断非空字段 |
554 | 555 | if (StringUtils.isEmpty(taskNo)) { |
555 | 556 | return Result.error("处理空出失败,任务号为空"); |
... | ... | @@ -615,15 +616,18 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
615 | 616 | } |
616 | 617 | // 9 更新单据 |
617 | 618 | taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_HANDLE); |
618 | - success = taskHeaderService.updateById(taskHeader); | |
619 | + success = taskHeaderService.updateExceptionStateById(QuantityConstant.EXCEPTION_TASK_HANDLE, taskHeader.getId()); | |
619 | 620 | if (!success) { |
620 | 621 | throw new JeecgBootException("处理空出失败,更新任务失败"); |
621 | 622 | } |
623 | + log.info("完成处理空出任务" + taskNo); | |
622 | 624 | return Result.ok("处理空出成功"); |
623 | 625 | } |
624 | 626 | |
625 | 627 | @Override |
628 | + @Transactional(rollbackFor = Exception.class) | |
626 | 629 | public Result handleDoubleIn(String taskNo) { |
630 | + log.info("开始处理重入任务" + taskNo); | |
627 | 631 | // 1、判断非空字段 |
628 | 632 | if (StringUtils.isEmpty(taskNo)) { |
629 | 633 | return Result.error("处理重入失败,任务号为空"); |
... | ... | @@ -661,22 +665,24 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
661 | 665 | if (toLocation == null) { |
662 | 666 | return Result.error("处理重入失败,没有找到库位"); |
663 | 667 | } |
664 | - toLocation.setStatus(QuantityConstant.STATUS_LOCATION_EMPTY); | |
665 | - boolean success = locationService.updateById(toLocation); | |
668 | + boolean success = locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode); | |
666 | 669 | if (!success) { |
667 | 670 | throw new JeecgBootException("处理重入失败,更新库位失败"); |
668 | 671 | } |
669 | 672 | } |
670 | 673 | taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_HANDLE); |
671 | - boolean success = taskHeaderService.updateById(taskHeader); | |
674 | + boolean success = taskHeaderService.updateExceptionStateById(QuantityConstant.EXCEPTION_TASK_HANDLE, taskHeader.getId()); | |
672 | 675 | if (!success) { |
673 | 676 | throw new JeecgBootException("处理重入失败,更新任务失败"); |
674 | 677 | } |
678 | + log.info("完成处理重入任务" + taskNo); | |
675 | 679 | return Result.ok("处理重入成功"); |
676 | 680 | } |
677 | 681 | |
678 | 682 | @Override |
683 | + @Transactional(rollbackFor = Exception.class) | |
679 | 684 | public Result handlePickupError(String taskNo) { |
685 | + log.info("开始处理取货错任务" + taskNo); | |
680 | 686 | // 1、判断非空字段 |
681 | 687 | if (StringUtils.isEmpty(taskNo)) { |
682 | 688 | return Result.error("处理取货错失败,任务号为空"); |
... | ... | @@ -691,12 +697,15 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
691 | 697 | return Result.OK("处理取货错失败, 任务已经完成"); |
692 | 698 | } |
693 | 699 | |
700 | + taskHeader = new TaskHeader(); | |
701 | + taskHeader.setId(Integer.parseInt(taskNo)); | |
694 | 702 | taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); |
695 | 703 | taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_HANDLE); |
696 | 704 | boolean success = taskHeaderService.updateById(taskHeader); |
697 | 705 | if (!success) { |
698 | 706 | throw new JeecgBootException("处理取货错失败,更新任务失败"); |
699 | 707 | } |
708 | + log.info("完成处理取货错任务" + taskNo); | |
700 | 709 | return Result.ok("处理取货错成功"); |
701 | 710 | } |
702 | 711 | |
... | ... | @@ -1556,7 +1565,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
1556 | 1565 | } |
1557 | 1566 | zoneCode = fromLocation.getZoneCode(); |
1558 | 1567 | taskLockEntity.setZoneCode(zoneCode); |
1559 | - if (StringUtils.isNotEmpty(toLocationCode)) { | |
1568 | + if (StringUtils.isNotEmpty(toLocationCode) && !fromLocationCode.equals(toLocationCode)) { | |
1560 | 1569 | Location toLocation = locationService.getLocationByCode(toLocationCode, warehouseCode); |
1561 | 1570 | if (toLocation == null) { |
1562 | 1571 | return Result.error("创建分拣任务时," + toLocationCode + "目标库位不存在"); |
... | ... | @@ -1577,9 +1586,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
1577 | 1586 | throw new JeecgBootException("创建分拣任务时,更新库位状态失败"); |
1578 | 1587 | } |
1579 | 1588 | if (StringUtils.isNotEmpty(toLocationCode)) { |
1580 | - success = locationService.updateStatus(toLocationCode, QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode); | |
1581 | - if (!success) { | |
1582 | - throw new JeecgBootException("创建分拣任务时,更新库位状态失败"); | |
1589 | + if (!fromLocationCode.equals(toLocationCode)) { | |
1590 | + success = locationService.updateStatus(toLocationCode, QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode); | |
1591 | + if (!success) { | |
1592 | + throw new JeecgBootException("创建分拣任务时,更新库位状态失败"); | |
1593 | + } | |
1583 | 1594 | } |
1584 | 1595 | } |
1585 | 1596 | return Result.OK("创建分拣任务成功", taskLockEntity); |
... | ... | @@ -1611,9 +1622,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
1611 | 1622 | String toLocationCode, String warehouseCode) { |
1612 | 1623 | Result result = null; |
1613 | 1624 | boolean success = false; |
1614 | - if (StringUtils.isEmpty(toLocationCode) && taskType != QuantityConstant.TASK_TYPE_OVER_STATION) { | |
1615 | - return Result.error("任务类型" + taskType + "完成任务时, 目标库位号为空"); | |
1616 | - } | |
1617 | 1625 | if (StringUtils.isEmpty(containerCode)) { |
1618 | 1626 | return Result.error("任务类型" + taskType + "完成任务时, 容器号为空"); |
1619 | 1627 | } |
... | ... | @@ -1624,14 +1632,23 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
1624 | 1632 | switch (taskType) { |
1625 | 1633 | case QuantityConstant.TASK_TYPE_WHOLERECEIPT: |
1626 | 1634 | case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT: |
1635 | + if (StringUtils.isEmpty(toLocationCode)) { | |
1636 | + return Result.error("任务类型" + taskType + "完成任务时, 目标库位号为空"); | |
1637 | + } | |
1627 | 1638 | success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, containerFillStatus, |
1628 | 1639 | warehouseCode); |
1629 | 1640 | break; |
1630 | 1641 | case QuantityConstant.TASK_TYPE_EMPTYRECEIPT: |
1642 | + if (StringUtils.isEmpty(toLocationCode)) { | |
1643 | + return Result.error("任务类型" + taskType + "完成任务时, 目标库位号为空"); | |
1644 | + } | |
1631 | 1645 | success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, |
1632 | 1646 | QuantityConstant.STATUS_CONTAINER_FILL_EMPTY, warehouseCode); |
1633 | 1647 | break; |
1634 | 1648 | case QuantityConstant.TASK_TYPE_MANY_EMPTYRECEIPT: |
1649 | + if (StringUtils.isEmpty(toLocationCode)) { | |
1650 | + return Result.error("任务类型" + taskType + "完成任务时, 目标库位号为空"); | |
1651 | + } | |
1635 | 1652 | success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, |
1636 | 1653 | QuantityConstant.STATUS_CONTAINER_FILL_MANY, warehouseCode); |
1637 | 1654 | break; |
... | ... | @@ -1651,6 +1668,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
1651 | 1668 | if (StringUtils.isEmpty(fromLocationCode)) { |
1652 | 1669 | return Result.error("任务类型" + taskType + "完成任务时, 起始库位号为空"); |
1653 | 1670 | } |
1671 | + if (StringUtils.isEmpty(toLocationCode)) { | |
1672 | + return Result.error("任务类型" + taskType + "完成任务时, 目标库位号为空"); | |
1673 | + } | |
1654 | 1674 | InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByContainerCode(containerCode, warehouseCode); |
1655 | 1675 | if (inventoryHeader != null) { |
1656 | 1676 | if (fromLocationCode.equals(toLocationCode)) { |
... | ... | @@ -1679,7 +1699,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
1679 | 1699 | if (StringUtils.isNotEmpty(fromLocationCode) && !fromLocationCode.equals(toLocationCode)) { |
1680 | 1700 | Location toLocation = locationService.getLocationByCode(fromLocationCode, warehouseCode); |
1681 | 1701 | if (toLocation == null) { |
1682 | - return Result.error("完成任务时," + toLocationCode + "目标库位不存在"); | |
1702 | + return Result.error("任务类型" + taskType + "完成任务时," + toLocationCode + "目标库位不存在"); | |
1683 | 1703 | } |
1684 | 1704 | success = |
1685 | 1705 | locationService.updateContainerCodeAndStatus(fromLocationCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode); |
... | ... | @@ -2019,7 +2039,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
2019 | 2039 | if (port == null) { |
2020 | 2040 | return Result.error("完成空托盘出库任务时," + toPortCode + "目标出库口不存在"); |
2021 | 2041 | } |
2022 | - Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_EMPTYRECEIPT, | |
2042 | + Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_EMPTYSHIPMENT, | |
2023 | 2043 | containerCode, fromLocationCode, QuantityConstant.EMPTY_STRING, warehouseCode); |
2024 | 2044 | if (!result.isSuccess()) { |
2025 | 2045 | throw new JeecgBootException(result.getMessage()); |
... | ... | @@ -2108,7 +2128,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
2108 | 2128 | throw new JeecgBootException("完成移库任务时, 更新库存详情失败"); |
2109 | 2129 | } |
2110 | 2130 | } |
2111 | - Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_OVER_STATION, | |
2131 | + Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_TRANSFER, | |
2112 | 2132 | containerCode, fromLocationCode, toLocationCode, warehouseCode); |
2113 | 2133 | if (!result.isSuccess()) { |
2114 | 2134 | throw new JeecgBootException(result.getMessage()); |
... | ... | @@ -2184,7 +2204,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
2184 | 2204 | } |
2185 | 2205 | } |
2186 | 2206 | |
2187 | - Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_EMPTYRECEIPT, | |
2207 | + Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_CHECK_OUT, | |
2188 | 2208 | containerCode, fromLocationCode, toLocationCode, warehouseCode); |
2189 | 2209 | if (!result.isSuccess()) { |
2190 | 2210 | throw new JeecgBootException(result.getMessage()); |
... | ... | @@ -2307,6 +2327,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
2307 | 2327 | String warehouseCode = taskHeader.getWarehouseCode(); |
2308 | 2328 | String containerCode = taskHeader.getContainerCode(); |
2309 | 2329 | String toPortCode = taskHeader.getToPortCode(); |
2330 | + String fromLocationCode = taskHeader.getFromLocationCode(); | |
2310 | 2331 | log.info("开始完成空托盘组出库任务" + taskHeader.getId()); |
2311 | 2332 | if (StringUtils.isEmpty(containerCode)) { |
2312 | 2333 | return Result.error("完成空托盘组出库任务时, 托盘号为空"); |
... | ... | @@ -2317,12 +2338,15 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
2317 | 2338 | if (StringUtils.isEmpty(toPortCode)) { |
2318 | 2339 | return Result.error("完成空托盘组出库任务时, 目标出入口为空"); |
2319 | 2340 | } |
2341 | + if (StringUtils.isEmpty(fromLocationCode)) { | |
2342 | + return Result.error("完成空托盘组出库任务时, 起始库位为空"); | |
2343 | + } | |
2320 | 2344 | Container container = containerService.getContainerByCode(containerCode, warehouseCode); |
2321 | 2345 | if (container == null) { |
2322 | 2346 | return Result.error("完成空托盘组出库任务时,没有找到容器" + containerCode); |
2323 | 2347 | } |
2324 | - String toLocationCode = container.getLocationCode(); | |
2325 | - if (StringUtils.isEmpty(toLocationCode)) { | |
2348 | + String locationCode = container.getLocationCode(); | |
2349 | + if (StringUtils.isEmpty(locationCode)) { | |
2326 | 2350 | return Result.error("完成空托盘组出库任务时, 容器不在库位上"); |
2327 | 2351 | } |
2328 | 2352 | Port port = portService.getPortByCode(toPortCode, warehouseCode); |
... | ... | @@ -2334,16 +2358,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
2334 | 2358 | if (!success) { |
2335 | 2359 | throw new JeecgBootException("完成空托盘组出库任务时, 更新任务失败"); |
2336 | 2360 | } |
2337 | - success = containerService.updateLocationCodeAndStatus(containerCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_CONTAINER_EMPTY, | |
2338 | - QuantityConstant.STATUS_CONTAINER_FILL_EMPTY, warehouseCode); | |
2339 | - if (!success) { | |
2340 | - throw new JeecgBootException("完成空托盘组出库任务时, 更新容器失败"); | |
2341 | - } | |
2342 | - success = locationService.updateContainerCodeAndStatus(toLocationCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode); | |
2343 | - log.info("开始完成空托盘组出库任务" + taskHeader.getId()); | |
2344 | - if (!success) { | |
2345 | - throw new JeecgBootException("完成空托盘组出库任务时, 更新库位失败"); | |
2361 | + Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_MANY_EMPTYSHIPMENT, | |
2362 | + containerCode, fromLocationCode, QuantityConstant.EMPTY_STRING, warehouseCode); | |
2363 | + if (!result.isSuccess()) { | |
2364 | + throw new JeecgBootException(result.getMessage()); | |
2346 | 2365 | } |
2366 | + log.info("完成空托盘组出库任务" + taskHeader.getId()); | |
2347 | 2367 | return Result.ok("完成空托盘组出库任务成功"); |
2348 | 2368 | } |
2349 | 2369 | |
... | ... | @@ -2389,6 +2409,15 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
2389 | 2409 | } |
2390 | 2410 | |
2391 | 2411 | @Override |
2412 | + public boolean updateExceptionStateById(int exceptionState, int id) { | |
2413 | + TaskHeader taskHeader = new TaskHeader(); | |
2414 | + taskHeader.setExceptionState(exceptionState); | |
2415 | + taskHeader.setId(id); | |
2416 | + boolean success = taskHeaderService.updateById(taskHeader); | |
2417 | + return success; | |
2418 | + } | |
2419 | + | |
2420 | + @Override | |
2392 | 2421 | public boolean updatePreTaskNoById(int preTaskNo, int id) { |
2393 | 2422 | TaskHeader taskHeader = new TaskHeader(); |
2394 | 2423 | taskHeader.setId(id); |
... | ... |