refactor(sip): 重构项目订单信息导出功能
- 提取公共方法 addBasicFields 和 processProducts 以简化代码结构 - 使用 Consumer 函数替换重复的添加字段逻辑 - 优化循环结构,提高代码可读性和维护性master
parent
41cdc1fdb6
commit
c968dc1d9b
|
@ -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<String> 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<ProjectProductInfo> products, int maxCount, List<String> 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<String> 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<String> parentList) {
|
||||
if (dto == null || parentList == null) {
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue