Commit 38dc728e0b0c1ddccdfb471395e3a3b2bbbd878f

Authored by 肖超群
1 parent 98b459ae

优化空出、重入、取货错

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&lt;TaskHeader&gt; {
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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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);
... ...