From 5e022e2e6a10dcebe7fa38b5f524ff01b5cc69de Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Wed, 25 Dec 2024 11:10:54 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E9=87=87=E8=B4=AD=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E6=8C=89=E7=85=A7=E4=B8=87=E6=9D=90=E8=B0=83=E6=95=B4=EF=BC=9B?= =?UTF-8?q?=E5=9C=A8=E9=80=89=E6=8B=A9=E4=BE=9B=E5=BA=94=E5=95=86=E4=B9=8B?= =?UTF-8?q?=E5=90=8E=E7=AC=AC=E4=BA=8C=E6=AD=A5=E9=80=89=E6=8B=A9=E7=89=A9?= =?UTF-8?q?=E6=96=99=E4=B9=8B=E9=9C=80=E8=A6=81=E7=9C=8B=E8=A7=81=E6=AD=A4?= =?UTF-8?q?=E4=BE=9B=E5=BA=94=E5=95=86=E5=8F=AF=E4=BB=A5=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=E7=9A=84=E7=89=A9=E6=96=99=E4=BF=A1=E6=81=AF=EF=BC=8C=E5=85=B6?= =?UTF-8?q?=E4=BD=99=E4=BF=A1=E6=81=AF=E4=B8=8D=E5=B1=95=E7=A4=BA=20?= =?UTF-8?q?=E5=B7=B2=E7=BB=8F=E9=87=87=E8=B4=AD=E7=9A=84=E4=BE=9B=E5=BA=94?= =?UTF-8?q?=E5=95=86=E4=BB=A5=E5=8F=8A=E7=89=A9=E6=96=99=E4=B8=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E5=86=8D=E5=B1=95=E7=A4=BA=EF=BC=8C=E9=99=A4=E9=9D=9E?= =?UTF-8?q?=E5=90=8E=E7=BB=AD=E6=9C=AA=E9=87=87=E8=B4=AD=E7=9A=84=E7=89=A9?= =?UTF-8?q?=E6=96=99=EF=BC=8C=E6=9C=89=E4=B8=8D=E5=90=8C=E7=9A=84=E4=BE=9B?= =?UTF-8?q?=E5=BA=94=E5=95=86=E5=86=8D=E6=AC=A1=E6=8A=A5=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PurchasePlanServiceImpl.java | 66 ++++++++++--------- 1 file changed, 35 insertions(+), 31 deletions(-) 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; }