From c968dc1d9b44c43778841cc4b7021191357fad01 Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Thu, 26 Jun 2025 10:52:33 +0800 Subject: [PATCH] =?UTF-8?q?refactor(sip):=20=E9=87=8D=E6=9E=84=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E8=AE=A2=E5=8D=95=E4=BF=A1=E6=81=AF=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 提取公共方法 addBasicFields 和 processProducts 以简化代码结构 - 使用 Consumer 函数替换重复的添加字段逻辑 - 优化循环结构,提高代码可读性和维护性 --- .../impl/ProjectOrderInfoServiceImpl.java | 125 ++++++++---------- 1 file changed, 58 insertions(+), 67 deletions(-) diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java index 2f6541ec..68ac1c74 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java @@ -6,6 +6,7 @@ import java.time.format.DateTimeFormatter; import java.util.*; import java.util.function.BiConsumer; import java.util.function.BiPredicate; +import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; @@ -513,43 +514,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService { for (ProjectOrderInfo info : projectInfos) { List row = new ArrayList<>(); // 添加基础字段 - row.add(info.getProjectCode()); - row.add(DateUtil.format(info.getEstimatedOrderTime(), "yyyy-MM-dd")); - row.add(info.getOrderCode()); - row.add(info.getProjectName()); - row.add(StringUtils.isEmpty(info.getOrderChannel()) ? "" : - "1".equals(info.getOrderChannel()) ? "总代" : "直签"); - row.add(info.getDutyName()); - row.add(info.getAgentName()); - row.add(info.getCustomerName()); - - row.add(DictUtils.getDictLabel("bg_type", info.getBgProperty())); - row.add(info.getIndustryType()); - - row.add(info.getBusinessPerson()); -// row.add(info.getBusinessEmail()); - row.add(info.getBusinessPhone()); - - row.add(DictUtils.getDictLabel("currency_type", info.getCurrencyType())); - - -// row.add(DateUtil.format(info.getOrderEndTime(), "yyyy-MM-dd")); -// row.add(DateUtil.format(info.getDeliveryTime(), "yyyy-MM-dd")); -// row.add(DictUtils.getDictLabel("company_delivery", info.getCompanyDelivery())); - - -// row.add(info.getSupplier()); - -// row.add(info.getDutyEmail()); -// row.add(info.getDutyPhone()); - row.add(info.getPartnerName()); -// row.add(info.getPartnerCode()); - row.add(DictUtils.getDictLabel("identify_level", info.getLevel())); - row.add(info.getPartnerUserName()); -// row.add(info.getPartnerEmail()); - row.add(info.getPartnerPhone()); -// row.add(info.getRemark()); -// row.add(DictUtils.getDictLabel("order_status", info.getOrderStatus())); + addBasicFields(info, row); BigDecimal totalPrice = BigDecimal.ZERO; BigDecimal maintenancePrice = BigDecimal.ZERO; @@ -580,20 +545,11 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService { } // 添加终端产品列 - for (int i = 0; i < maxHardware; i++) { - if (CollUtil.isNotEmpty(info.getHardwareProjectProductInfoList()) && i < info.getHardwareProjectProductInfoList().size()) { - ProjectProductInfo productInfo = info.getHardwareProjectProductInfoList().get(i); - totalPrice = addProductRow(productInfo, row, totalPrice); + totalPrice = processProducts(info.getHardwareProjectProductInfoList(), maxHardware, row, totalPrice); - } else { - addProductRow(null, row, totalPrice); - } - } int serviceIndex=maxMaintenance; // 添加服务产品列 - int maxMaintenanceIndex=-1; - while(serviceIndex>0){ - maxMaintenanceIndex++; + for (int maxMaintenanceIndex = 0; serviceIndex >0 ; maxMaintenanceIndex++) { if (CollUtil.isNotEmpty(info.getMaintenanceProjectProductInfoList()) && maxMaintenanceIndex < info.getMaintenanceProjectProductInfoList().size()) { ProjectProductInfo productInfo = info.getMaintenanceProjectProductInfoList().get(maxMaintenanceIndex); @@ -616,29 +572,12 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService { addProductRow(null, row, totalPrice); serviceIndex--; } - - } - //添加部署 - for (int i = 0; i < maxDeployService; i++) { - if (CollUtil.isNotEmpty(deployList) && i < deployList.size()) { - ProjectProductInfo productInfo = deployList.get(i); - totalPrice = addProductRow(productInfo, row, totalPrice); - } else { - addProductRow(null, row, totalPrice); - } - } + totalPrice = processProducts(deployList, maxDeployService, row, totalPrice); //添加维保 - for (int i = 0; i < maxMaintenanceService; i++) { - if (CollUtil.isNotEmpty(maintenanceList) && i < maintenanceList.size()) { - ProjectProductInfo productInfo = maintenanceList.get(i); - totalPrice = addProductRow(productInfo, row, totalPrice); - } else { - addProductRow(null, row, totalPrice); - } - } + totalPrice = processProducts(maintenanceList, maxMaintenanceService, row, totalPrice); row.add(8, wssDto.getQuantity().toString()); row.add(9, wssDto.getAllPrice().toString()); row.add(10, wspDto.getQuantity().toString()); @@ -659,6 +598,58 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService { } + private BigDecimal processProducts(List products, int maxCount, List row, BigDecimal currentTotal) { + for (int i = 0; i < maxCount; i++) { + if (CollUtil.isNotEmpty(products) && i < products.size()) { + ProjectProductInfo product = products.get(i); + currentTotal = addProductRow(product, row, currentTotal); + } else { + addProductRow(null, row, currentTotal); + } + } + return currentTotal; + } + private void addBasicFields(ProjectOrderInfo info, List row) { + row.add(info.getProjectCode()); + row.add(DateUtil.format(info.getEstimatedOrderTime(), "yyyy-MM-dd")); + row.add(info.getOrderCode()); + row.add(info.getProjectName()); + row.add(StringUtils.isEmpty(info.getOrderChannel()) ? "" : + "1".equals(info.getOrderChannel()) ? "总代" : "直签"); + row.add(info.getDutyName()); + row.add(info.getAgentName()); + row.add(info.getCustomerName()); + + row.add(DictUtils.getDictLabel("bg_type", info.getBgProperty())); + row.add(info.getIndustryType()); + + row.add(info.getBusinessPerson()); +// row.add(info.getBusinessEmail()); + row.add(info.getBusinessPhone()); + + row.add(DictUtils.getDictLabel("currency_type", info.getCurrencyType())); + + +// row.add(DateUtil.format(info.getOrderEndTime(), "yyyy-MM-dd")); +// row.add(DateUtil.format(info.getDeliveryTime(), "yyyy-MM-dd")); +// row.add(DictUtils.getDictLabel("company_delivery", info.getCompanyDelivery())); + + +// row.add(info.getSupplier()); + +// row.add(info.getDutyEmail()); +// row.add(info.getDutyPhone()); + row.add(info.getPartnerName()); +// row.add(info.getPartnerCode()); + row.add(DictUtils.getDictLabel("identify_level", info.getLevel())); + row.add(info.getPartnerUserName()); +// row.add(info.getPartnerEmail()); + row.add(info.getPartnerPhone()); +// row.add(info.getRemark()); +// row.add(DictUtils.getDictLabel("order_status", info.getOrderStatus())); + } + + private void staticsNum(OrderExcelNumStaticsDto dto, ProjectProductInfo info, List parentList) { if (dto == null || parentList == null) { return;