Commit 48a6f57774ce1e03792fab6f6deba168369e899a
Merge branch 'develop4' of http://172.16.29.40:8010/wms/wms4.git into develop4
Showing
8 changed files
with
176 additions
and
12 deletions
ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue
@@ -261,7 +261,7 @@ export default { | @@ -261,7 +261,7 @@ export default { | ||
261 | dataIndex: 'status_dictText', | 261 | dataIndex: 'status_dictText', |
262 | }, | 262 | }, |
263 | { | 263 | { |
264 | - title: '是否重入', | 264 | + title: '重入', |
265 | align: "center", | 265 | align: "center", |
266 | dataIndex: 'isDoubleIn_dictText', | 266 | dataIndex: 'isDoubleIn_dictText', |
267 | }, | 267 | }, |
ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
@@ -261,11 +261,16 @@ export default { | @@ -261,11 +261,16 @@ export default { | ||
261 | dataIndex: 'status_dictText', | 261 | dataIndex: 'status_dictText', |
262 | }, | 262 | }, |
263 | { | 263 | { |
264 | - title: '是否空出', | 264 | + title: '空出', |
265 | align: "center", | 265 | align: "center", |
266 | dataIndex: 'isEmptyOut_dictText', | 266 | dataIndex: 'isEmptyOut_dictText', |
267 | }, | 267 | }, |
268 | { | 268 | { |
269 | + title: '取货错', | ||
270 | + align: "center", | ||
271 | + dataIndex: 'isPickupError_dictText', | ||
272 | + }, | ||
273 | + { | ||
269 | title: '创建人', | 274 | title: '创建人', |
270 | align: "center", | 275 | align: "center", |
271 | dataIndex: 'createBy' | 276 | dataIndex: 'createBy' |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsService.java
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
@@ -460,6 +460,7 @@ public class WcsServiceImpl implements WcsService { | @@ -460,6 +460,7 @@ public class WcsServiceImpl implements WcsService { | ||
460 | return Result.error("任务已完成"); | 460 | return Result.error("任务已完成"); |
461 | } | 461 | } |
462 | 462 | ||
463 | + taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED); | ||
463 | taskHeader.setIsEmptyOut(QuantityConstant.EMPTY_OUT); | 464 | taskHeader.setIsEmptyOut(QuantityConstant.EMPTY_OUT); |
464 | taskHeader.setExceptionName("空出处理"); | 465 | taskHeader.setExceptionName("空出处理"); |
465 | taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_ERROR); | 466 | taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_ERROR); |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/controller/TaskHeaderController.java
@@ -40,16 +40,7 @@ import org.jeecgframework.poi.excel.entity.ExportParams; | @@ -40,16 +40,7 @@ import org.jeecgframework.poi.excel.entity.ExportParams; | ||
40 | import org.jeecgframework.poi.excel.entity.ImportParams; | 40 | import org.jeecgframework.poi.excel.entity.ImportParams; |
41 | import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; | 41 | import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; |
42 | import org.springframework.beans.factory.annotation.Autowired; | 42 | import org.springframework.beans.factory.annotation.Autowired; |
43 | -import org.springframework.web.bind.annotation.DeleteMapping; | ||
44 | -import org.springframework.web.bind.annotation.GetMapping; | ||
45 | -import org.springframework.web.bind.annotation.PathVariable; | ||
46 | -import org.springframework.web.bind.annotation.PostMapping; | ||
47 | -import org.springframework.web.bind.annotation.RequestBody; | ||
48 | -import org.springframework.web.bind.annotation.RequestMapping; | ||
49 | -import org.springframework.web.bind.annotation.RequestMethod; | ||
50 | -import org.springframework.web.bind.annotation.RequestParam; | ||
51 | -import org.springframework.web.bind.annotation.ResponseBody; | ||
52 | -import org.springframework.web.bind.annotation.RestController; | 43 | +import org.springframework.web.bind.annotation.*; |
53 | import org.springframework.web.multipart.MultipartFile; | 44 | import org.springframework.web.multipart.MultipartFile; |
54 | import org.springframework.web.multipart.MultipartHttpServletRequest; | 45 | import org.springframework.web.multipart.MultipartHttpServletRequest; |
55 | import org.springframework.web.servlet.ModelAndView; | 46 | import org.springframework.web.servlet.ModelAndView; |
@@ -656,4 +647,5 @@ public class TaskHeaderController extends HuahengBaseController { | @@ -656,4 +647,5 @@ public class TaskHeaderController extends HuahengBaseController { | ||
656 | } | 647 | } |
657 | return Result.OK(portList); | 648 | return Result.OK(portList); |
658 | } | 649 | } |
650 | + | ||
659 | } | 651 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java
@@ -85,6 +85,11 @@ public class TaskHeader implements Serializable { | @@ -85,6 +85,11 @@ public class TaskHeader implements Serializable { | ||
85 | @Dict(dicCode = "is_or_not") | 85 | @Dict(dicCode = "is_or_not") |
86 | @ApiModelProperty(value = "是否重入") | 86 | @ApiModelProperty(value = "是否重入") |
87 | private Integer isDoubleIn; | 87 | private Integer isDoubleIn; |
88 | + /** 取货错 */ | ||
89 | + @Excel(name = "取货错", width = 15, dicCode = "is_or_not") | ||
90 | + @Dict(dicCode = "is_or_not") | ||
91 | + @ApiModelProperty(value = "取货错") | ||
92 | + private Integer isPickupError; | ||
88 | /** 重入库位号 */ | 93 | /** 重入库位号 */ |
89 | @Excel(name = "重入库位号", width = 15) | 94 | @Excel(name = "重入库位号", width = 15) |
90 | @ApiModelProperty(value = "重入库位号") | 95 | @ApiModelProperty(value = "重入库位号") |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java
@@ -193,4 +193,24 @@ public interface ITaskHeaderService extends IService<TaskHeader> { | @@ -193,4 +193,24 @@ public interface ITaskHeaderService extends IService<TaskHeader> { | ||
193 | */ | 193 | */ |
194 | Result addMesTryTimes(TaskHeader taskHeader); | 194 | Result addMesTryTimes(TaskHeader taskHeader); |
195 | 195 | ||
196 | + /** | ||
197 | + * 处理空出 | ||
198 | + * @param taskNo | ||
199 | + * @return | ||
200 | + */ | ||
201 | + Result handleEmptyOut(String taskNo); | ||
202 | + | ||
203 | + /** | ||
204 | + * 处理重入 | ||
205 | + * @param taskNo | ||
206 | + * @return | ||
207 | + */ | ||
208 | + Result handleDoubleIn(String taskNo); | ||
209 | + | ||
210 | + /** | ||
211 | + * 处理取货错 | ||
212 | + * @param taskNo | ||
213 | + * @return | ||
214 | + */ | ||
215 | + Result handlePickupError(String taskNo); | ||
196 | } | 216 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
@@ -639,6 +639,146 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -639,6 +639,146 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
639 | } | 639 | } |
640 | 640 | ||
641 | @Override | 641 | @Override |
642 | + public Result handleEmptyOut(String taskNo) { | ||
643 | + // 1、判断非空字段 | ||
644 | + if (StringUtils.isEmpty(taskNo)) { | ||
645 | + return Result.error("处理空出失败,任务号为空"); | ||
646 | + } | ||
647 | + // 2、根据任务号查找任务 | ||
648 | + TaskHeader taskHeader = taskHeaderService.getById(taskNo); | ||
649 | + if (taskHeader == null) { | ||
650 | + return Result.error("处理空出失败,没有找到该任务"); | ||
651 | + } | ||
652 | + // 3、已经完成的任务,不需要在处理 | ||
653 | + if (taskHeader.getStatus() != QuantityConstant.TASK_STATUS_COMPLETED) { | ||
654 | + return Result.OK("处理空出失败, 任务没有完成"); | ||
655 | + } | ||
656 | + String containerCode = taskHeader.getContainerCode(); | ||
657 | + String fromLocationCode = taskHeader.getFromLocationCode(); | ||
658 | + String warehouseCode = taskHeader.getWarehouseCode(); | ||
659 | + // 4、容器号、库位号、仓库编码 不能为空 | ||
660 | + if (StringUtils.isEmpty(containerCode)) { | ||
661 | + return Result.error("处理空出失败,容器号为空"); | ||
662 | + } | ||
663 | + if (StringUtils.isEmpty(fromLocationCode)) { | ||
664 | + return Result.error("处理空出失败,起始库号位为空"); | ||
665 | + } | ||
666 | + if (StringUtils.isEmpty(warehouseCode)) { | ||
667 | + return Result.error("处理空出失败,仓库编码为空"); | ||
668 | + } | ||
669 | + Container container = containerService.getContainerByCode(containerCode, warehouseCode); | ||
670 | + if (container == null) { | ||
671 | + return Result.error("处理空出失败,没有找到容器"); | ||
672 | + } | ||
673 | + Location fronLocation = locationService.getLocationByCode(fromLocationCode, warehouseCode); | ||
674 | + if (fronLocation == null) { | ||
675 | + return Result.error("处理空出失败,没有找到库位"); | ||
676 | + } | ||
677 | + // 5、删除容器上的库位号,并设置状态为空盘 | ||
678 | + boolean success = | ||
679 | + containerService.updateLocationCodeAndStatus(containerCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_CONTAINER_EMPTY, warehouseCode); | ||
680 | + if (!success) { | ||
681 | + throw new ServiceException("处理空出失败, 更新容器状态失败"); | ||
682 | + } | ||
683 | + // 6、删除库位上的容器号,并设置状态为空闲 | ||
684 | + success = | ||
685 | + locationService.updateContainerCodeAndStatus(fromLocationCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode); | ||
686 | + if (!success) { | ||
687 | + throw new ServiceException("处理空出失败, 更新库位状态失败"); | ||
688 | + } | ||
689 | + // 7、删除库存头失败 | ||
690 | + InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByContainerCode(containerCode, warehouseCode); | ||
691 | + if (inventoryHeader != null) { | ||
692 | + success = inventoryHeaderService.removeById(inventoryHeader.getId()); | ||
693 | + if (!success) { | ||
694 | + throw new ServiceException("处理空出失败, 删除库存头失败"); | ||
695 | + } | ||
696 | + } | ||
697 | + // 8、删除库存详情失败 | ||
698 | + List<InventoryDetail> inventoryDetailList = inventoryDetailService.getInventoryDetailListByContainerCode(containerCode, warehouseCode); | ||
699 | + if (inventoryDetailList.size() != 0) { | ||
700 | + success = inventoryDetailService.removeByIds(inventoryDetailList); | ||
701 | + if (!success) { | ||
702 | + throw new ServiceException("处理空出失败, 删除库存详情失败"); | ||
703 | + } | ||
704 | + } | ||
705 | + return Result.error("处理空出成功"); | ||
706 | + } | ||
707 | + | ||
708 | + @Override | ||
709 | + public Result handleDoubleIn(String taskNo) { | ||
710 | + // 1、判断非空字段 | ||
711 | + if (StringUtils.isEmpty(taskNo)) { | ||
712 | + return Result.error("处理重入失败,任务号为空"); | ||
713 | + } | ||
714 | + // 2、根据任务号查找任务 | ||
715 | + TaskHeader taskHeader = taskHeaderService.getById(taskNo); | ||
716 | + if (taskHeader == null) { | ||
717 | + return Result.error("处理重入失败,没有找到该任务"); | ||
718 | + } | ||
719 | + // 3、已经完成的任务,不需要在处理 | ||
720 | + if (taskHeader.getStatus() != QuantityConstant.TASK_STATUS_COMPLETED) { | ||
721 | + return Result.OK("处理重入失败, 任务没有完成"); | ||
722 | + } | ||
723 | + | ||
724 | + String containerCode = taskHeader.getContainerCode(); | ||
725 | + String originLocationCode = taskHeader.getOriginLocationCode(); | ||
726 | + String warehouseCode = taskHeader.getWarehouseCode(); | ||
727 | + // 4、容器号、库位号、仓库编码 不能为空 | ||
728 | + if (StringUtils.isEmpty(containerCode)) { | ||
729 | + return Result.error("处理重入失败,容器号为空"); | ||
730 | + } | ||
731 | + if (StringUtils.isEmpty(originLocationCode)) { | ||
732 | + return Result.error("处理重入失败,终点库号位为空"); | ||
733 | + } | ||
734 | + if (StringUtils.isEmpty(warehouseCode)) { | ||
735 | + return Result.error("处理重入失败,仓库编码为空"); | ||
736 | + } | ||
737 | + Container container = containerService.getContainerByCode(containerCode, warehouseCode); | ||
738 | + if (container == null) { | ||
739 | + return Result.error("处理重入失败,没有找到容器"); | ||
740 | + } | ||
741 | + String[] locationCodes = originLocationCode.split(","); | ||
742 | + for (String locationCode : locationCodes) { | ||
743 | + Location toLocation = locationService.getLocationByCode(locationCode, warehouseCode); | ||
744 | + if (toLocation == null) { | ||
745 | + return Result.error("处理重入失败,没有找到库位"); | ||
746 | + } | ||
747 | + toLocation.setStatus(QuantityConstant.STATUS_LOCATION_EMPTY); | ||
748 | + boolean success = locationService.updateById(toLocation); | ||
749 | + if (!success) { | ||
750 | + throw new ServiceException("处理重入失败,更新库位失败"); | ||
751 | + } | ||
752 | + } | ||
753 | + | ||
754 | + return Result.ok("处理重入成功"); | ||
755 | + } | ||
756 | + | ||
757 | + @Override | ||
758 | + public Result handlePickupError(String taskNo) { | ||
759 | + // 1、判断非空字段 | ||
760 | + if (StringUtils.isEmpty(taskNo)) { | ||
761 | + return Result.error("处理取货错失败,任务号为空"); | ||
762 | + } | ||
763 | + // 2、根据任务号查找任务 | ||
764 | + TaskHeader taskHeader = taskHeaderService.getById(taskNo); | ||
765 | + if (taskHeader == null) { | ||
766 | + return Result.error("处理取货错失败,没有找到该任务"); | ||
767 | + } | ||
768 | + // 3、已经完成的任务,不需要在处理 | ||
769 | + if (taskHeader.getStatus() != QuantityConstant.TASK_STATUS_COMPLETED) { | ||
770 | + return Result.OK("处理取货错失败, 任务没有完成"); | ||
771 | + } | ||
772 | + | ||
773 | + taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); | ||
774 | + boolean success = taskHeaderService.updateById(taskHeader); | ||
775 | + if (!success) { | ||
776 | + throw new ServiceException("处理取货错失败,更新任务失败"); | ||
777 | + } | ||
778 | + return Result.ok("处理取货错成功"); | ||
779 | + } | ||
780 | + | ||
781 | + @Override | ||
642 | public TaskHeader getUnCompleteTaskByFromLocationCode(String fromLocationCode, String warehouseCode) { | 782 | public TaskHeader getUnCompleteTaskByFromLocationCode(String fromLocationCode, String warehouseCode) { |
643 | LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); | 783 | LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); |
644 | taskHeaderLambdaQueryWrapper.eq(TaskHeader::getFromLocationCode, fromLocationCode).eq(TaskHeader::getWarehouseCode, warehouseCode).lt(TaskHeader::getStatus, | 784 | taskHeaderLambdaQueryWrapper.eq(TaskHeader::getFromLocationCode, fromLocationCode).eq(TaskHeader::getWarehouseCode, warehouseCode).lt(TaskHeader::getStatus, |