diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchasePlanServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchasePlanServiceImpl.java index 09a5b6dd..08a0b987 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchasePlanServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchasePlanServiceImpl.java @@ -128,7 +128,6 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService * */ @Override public List selectSupplierOneList(PurchasePlan purchasePlan) { - String purchasePlanCode = purchasePlan.getPurchasePlanCode(); List purchasePlanCodeList = new ArrayList<>(); @@ -136,58 +135,55 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService String[] splitSalesOrderCode = purchasePlanCode.split(","); purchasePlanCodeList = Arrays.asList(splitSalesOrderCode); } - List purchasePlanList = purchasePlanMapper.selectPurchaseOrderByPlanCodeList(purchasePlanCodeList); - //采购计划子表数据 - List purchasePlanChildList = purchasePlanChildMapper.selectPurchasePlanChildPlanCodeList(purchasePlanCodeList); + // 获取采购计划子表数据并过滤掉已完成采购的项 + List purchasePlanChildList = purchasePlanChildMapper.selectPurchasePlanChildPlanCodeList(purchasePlanCodeList) + .stream() + .filter(item -> Objects.nonNull(item.getPurchasePlanStatus()) && !"2".equals(item.getPurchasePlanStatus())) + .collect(Collectors.toList()); - //查找采购报价的数据 - List purchaseQuoteList = purchaseQuoteMapper.selectPurchaseQuoteAllList(); + // 获取采购计划中的物料编号 + Set planMaterialNos = purchasePlanChildList.stream().map(PurchasePlanChild::getMaterialNo).collect(Collectors.toSet()); + // 查找采购报价的数据,并获取报价子表的数据 + List purchaseQuoteList = purchaseQuoteMapper.selectPurchaseQuoteAllList(); List purchaseQuoteCodes = purchaseQuoteList.stream().map(PurchaseQuote::getPurchaseQuoteCode).collect(Collectors.toList()); - - //查找采购报价子表的数据 List purchaseQuoteChildList = purchaseQuoteChildMapper.selectPurchaseQuoteChildListByQuoteCodeList(purchaseQuoteCodes); - - //获取采购计划中的物料编号 - Set planMaterialNos = purchasePlanChildList.stream().map(PurchasePlanChild::getMaterialNo).collect(Collectors.toSet()); - - //根据供应商编号对采购报价子表进行分组 - Map> quoteChildBySupplier = purchaseQuoteChildList.stream().collect(Collectors.groupingBy(PurchaseQuoteChild::getSupplierCode)); - - //提取采购报价中的所有supplierCode - List supplierCodes = purchaseQuoteList.stream().map(PurchaseQuote::getSupplierQuoteCode).distinct().collect(Collectors.toList()); + // 根据供应商编号对采购报价子表进行分组 + Map> quoteChildBySupplier = purchaseQuoteChildList.stream() + .collect(Collectors.groupingBy(PurchaseQuoteChild::getSupplierCode)); // 创建结果列表 List result = new ArrayList<>(); - // 遍历每个 supplierCode + // 遍历每个供应商 for (Map.Entry> entry : quoteChildBySupplier.entrySet()) { String supplierCode = entry.getKey(); List supplierQuoteChildren = entry.getValue(); SysSupplier sysSupplier = sysSupplierMapper.selectSysSupplierByCode(supplierCode); - // 提取这些 purchaseQuoteChild 中的所有 materialCode - Set supplierMaterialCodes = supplierQuoteChildren.stream() + + // 提取这些 purchaseQuoteChild 中与采购计划关联且未完成采购的物料 + Set availableMaterials = supplierQuoteChildren.stream() .map(PurchaseQuoteChild::getMaterialCode) - .filter(planMaterialNos::contains) + .filter(materialCode -> planMaterialNos.contains(materialCode)) .collect(Collectors.toSet()); // 创建 PurchasePlanSelectSupplierVo 对象 PurchasePlanSelectSupplierVo vo = new PurchasePlanSelectSupplierVo(); vo.setSupplierCode(supplierCode); vo.setSupplierName(sysSupplier.getSupplierName()); - vo.setAvailableMaterialNum(supplierMaterialCodes.size()); + vo.setAvailableMaterialNum(availableMaterials.size()); // 将结果添加到结果列表中 result.add(vo); } - //去掉没有可供应物料数的供应商 - result = result.stream().filter(item->item.getAvailableMaterialNum() > 0).collect(Collectors.toList()); - //对结果进行排序,按可用物料数量降序 - result.sort(Comparator.comparingInt(PurchasePlanSelectSupplierVo::getAvailableMaterialNum).reversed()); - return result; + // 去掉没有可供应物料数的供应商,并对结果进行排序,按可用物料数量降序 + return result.stream() + .filter(item -> item.getAvailableMaterialNum() > 0) + .sorted(Comparator.comparingInt(PurchasePlanSelectSupplierVo::getAvailableMaterialNum).reversed()) + .collect(Collectors.toList()); } /** @@ -285,9 +281,14 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService mergedList.forEach(item -> { // 获取库存查询信息 WarehouseInventoryInquiry warehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(item.getMaterialNo()); + Integer sharedAvailableStockNum = 0; + if (warehouseInventoryInquiry != null){ + // 设置共享可用库存数,默认为0 + sharedAvailableStockNum = Optional.ofNullable(warehouseInventoryInquiry.getSharedAvailableStockNum()).orElse(0); + }else { + sharedAvailableStockNum = 0; + } - // 设置共享可用库存数,默认为0 - Integer sharedAvailableStockNum = Optional.ofNullable(warehouseInventoryInquiry.getSharedAvailableStockNum()).orElse(0); item.setSharedAvailableInventoryNum(sharedAvailableStockNum); // 计划采购数、实际采购数、作废数 @@ -321,8 +322,11 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService // mergedList = mergedList.stream().filter(item->item.getPurchaseNum() > 0).collect(Collectors.toList()); //过滤掉采购计划状态为全部申请和全部作废的数据 2为全部申请、3为全部作废 - mergedList = mergedList.stream().filter(item->!item.getPurchasePlanStatus().equals("2") || !item.getPurchasePlanStatus().equals("3")).collect(Collectors.toList()); - + mergedList = mergedList.stream() + .filter(item -> !"2".equals(item.getPurchasePlanStatus()) && !"3".equals(item.getPurchasePlanStatus())) + .collect(Collectors.toList()); + //过滤掉 不含税总价和含税总价为null或者0的数据 + mergedList = mergedList.stream().filter(item->item.getMaterialNoRmbSum() != null && item.getMaterialNoRmbSum().compareTo(BigDecimal.ZERO) > 0 && item.getMaterialRmbSum() != null && item.getMaterialRmbSum().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList()); return mergedList; }