diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java index c86b48975..e2e552c37 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java @@ -196,44 +196,6 @@ public class PickingOrderApplicationService { pickingOrderPO.setMaterialQuantity(0); } } - - // ========== 批量查保管明细表补规格型号 ========== - Set inOrderNumberSet = new HashSet<>(); - Set materialBaseInfoIdSet = new HashSet<>(); - for (List details : materialDetailsByOrderNumber.values()) { - for (PickingMaterialDetailPO d : details) { - if (StringUtils.isNotBlank(d.getInOrderNumber()) && d.getMaterialBaseInfoId() != null) { - inOrderNumberSet.add(d.getInOrderNumber()); - materialBaseInfoIdSet.add(d.getMaterialBaseInfoId()); - } - } - } - if (!inOrderNumberSet.isEmpty() && !materialBaseInfoIdSet.isEmpty()) { - LambdaQueryWrapper inWrapper = new LambdaQueryWrapper<>(); - inWrapper.in(InMaterialDetail::getInOrderNumber, inOrderNumberSet); - inWrapper.in(InMaterialDetail::getMaterialBaseInfoId, materialBaseInfoIdSet); - inWrapper.eq(InMaterialDetail::getDelFlag, 1); - List inDetailList = inMaterialDetailService.list(inWrapper); - // 按 inOrderNumber + materialBaseInfoId 分组 - Map>> grouped = inDetailList.stream() - .collect(Collectors.groupingBy(InMaterialDetail::getInOrderNumber, - Collectors.groupingBy(InMaterialDetail::getMaterialBaseInfoId))); - // 回填到拣货单头 - for (PickingOrderPO po : pickingOrderPOList) { - List details = materialDetailsByOrderNumber.get(po.getPickingOrderNumber()); - if (CollectionUtils.isEmpty(details)) continue; - PickingMaterialDetailPO first = details.get(0); - Map> byBaseId = grouped.get(first.getInOrderNumber()); - if (byBaseId != null) { - List list = byBaseId.get(first.getMaterialBaseInfoId()); - if (list != null && !list.isEmpty()) { - po.setSpecificationModel(list.get(0).getSpecificationModel()); - } - } - } - } - // ========== 批量查保管明细表补规格型号结束 ========== - } } @@ -1006,4 +968,120 @@ public class PickingOrderApplicationService { } pickingOrderMapper.updateById(entity); } + + /** + * 分页查询拣货单列表(含规格型号) + */ + public List queryList1(PickingOrderDO pickingOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = pickingOrderDO.getOrganizationId(); + + if (userOrganizationId != null && userOrganizationId == 2827L) { + if (frontendOrganizationId != null) { + pickingOrderDO.setOrganizationId(frontendOrganizationId); + pickingOrderDO.setTopOrganizationId(null); + } else { + pickingOrderDO.setOrganizationId(null); + pickingOrderDO.setTopOrganizationId(null); + } + } else { + if (frontendOrganizationId != null && userOrganizationId != null) { + if (!frontendOrganizationId.equals(userOrganizationId)) { + pickingOrderDO.setOrganizationId(userOrganizationId); + } + } else { + if (userOrganizationId != null) { + pickingOrderDO.setOrganizationId(userOrganizationId); + } + } + if (pickingOrderDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + pickingOrderDO.setTopOrganizationId(topOrganizationId); + } + } else { + pickingOrderDO.setTopOrganizationId(2827L); + } + } + } + List pickingOrderPOList = pickingOrderDomainService.queryList(pickingOrderDO); + + // 重新计算物料种类数 + 查保管明细表补规格型号 + if (!CollectionUtils.isEmpty(pickingOrderPOList)) { + List pickingOrderNumbers = pickingOrderPOList.stream() + .map(PickingOrderPO::getPickingOrderNumber) + .filter(Objects::nonNull) + .filter(number -> !number.trim().isEmpty()) + .collect(Collectors.toList()); + + if (!pickingOrderNumbers.isEmpty()) { + Map> materialDetailsByOrderNumber = new HashMap<>(); + for (String pickingOrderNumber : pickingOrderNumbers) { + PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO(); + pickingMaterialDetailDO.setPickingOrderNumber(pickingOrderNumber); + List materialDetails = pickingMaterialDetailDomainService.queryList(pickingMaterialDetailDO); + if (!CollectionUtils.isEmpty(materialDetails)) { + materialDetailsByOrderNumber.put(pickingOrderNumber, materialDetails); + } + } + + // 计算物料种类数(按料号去重) + for (PickingOrderPO pickingOrderPO : pickingOrderPOList) { + String pickingOrderNumber = pickingOrderPO.getPickingOrderNumber(); + if (pickingOrderNumber != null && materialDetailsByOrderNumber.containsKey(pickingOrderNumber)) { + List materialDetails = materialDetailsByOrderNumber.get(pickingOrderNumber); + long materialQuantity = materialDetails.stream() + .map(PickingMaterialDetailPO::getMaterialCode) + .filter(Objects::nonNull) + .filter(code -> !code.trim().isEmpty()) + .distinct() + .count(); + pickingOrderPO.setMaterialQuantity((int) materialQuantity); + } else { + pickingOrderPO.setMaterialQuantity(0); + } + } + + // ========== 批量查保管明细表补规格型号 ========== + Set inOrderNumberSet = new HashSet<>(); + Set materialBaseInfoIdSet = new HashSet<>(); + for (List details : materialDetailsByOrderNumber.values()) { + for (PickingMaterialDetailPO d : details) { + if (StringUtils.isNotBlank(d.getInOrderNumber()) && d.getMaterialBaseInfoId() != null) { + inOrderNumberSet.add(d.getInOrderNumber()); + materialBaseInfoIdSet.add(d.getMaterialBaseInfoId()); + } + } + } + if (!inOrderNumberSet.isEmpty() && !materialBaseInfoIdSet.isEmpty()) { + LambdaQueryWrapper inWrapper = new LambdaQueryWrapper<>(); + inWrapper.in(InMaterialDetail::getInOrderNumber, inOrderNumberSet); + inWrapper.in(InMaterialDetail::getMaterialBaseInfoId, materialBaseInfoIdSet); + inWrapper.eq(InMaterialDetail::getDelFlag, 1); + List inDetailList = inMaterialDetailService.list(inWrapper); + Map>> grouped = inDetailList.stream() + .collect(Collectors.groupingBy(InMaterialDetail::getInOrderNumber, + Collectors.groupingBy(InMaterialDetail::getMaterialBaseInfoId))); + for (PickingOrderPO po : pickingOrderPOList) { + List details = materialDetailsByOrderNumber.get(po.getPickingOrderNumber()); + if (CollectionUtils.isEmpty(details)) continue; + PickingMaterialDetailPO first = details.get(0); + Map> byBaseId = grouped.get(first.getInOrderNumber()); + if (byBaseId != null) { + List list = byBaseId.get(first.getMaterialBaseInfoId()); + if (list != null && !list.isEmpty()) { + po.setSpecificationModel(list.get(0).getSpecificationModel()); + } + } + } + } + // ========== 批量查保管明细表补规格型号结束 ========== + + } + } + + return pickingOrderPOList; + } } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/pickingOrder/PickingOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/pickingOrder/PickingOrderApi.java index 17a85bae1..ac12e34c6 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/pickingOrder/PickingOrderApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/pickingOrder/PickingOrderApi.java @@ -128,5 +128,15 @@ public class PickingOrderApi extends BaseController { } + @ApiOperation("查询拣货单列表") + @GetMapping("/list1") + public TableDataInfo list1(PickingOrderDTO pickingOrderDTO) + { + //转换实体 + PickingOrderDO pickingOrderDO = pickingOrderAssembler.toDO(pickingOrderDTO); + startPage(); + List list = pickingOrderApplicationService.queryList1(pickingOrderDO); + return getDataTable(list); + } } \ No newline at end of file