代码优化

This commit is contained in:
spllzh
2025-08-15 08:04:21 +08:00
parent 1d9d5ca2c4
commit 4e6af75be4
3 changed files with 597 additions and 0 deletions

View File

@@ -0,0 +1,164 @@
package com.rj.common;
import com.rj.entity.Dealership;
import com.rj.entity.ProjectManagement;
import com.rj.entity.SalesManagement;
import com.rj.service.IDealershipService;
import com.rj.service.IProjectManagementService;
import com.rj.service.ISalesManagementService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* DataEnrichmentUtil 使用示例
* 展示如何使用数据丰富工具类来减少代码冗余
*
* @author 系统生成
* @since 2025-08-07
*/
@Component
public class DataEnrichmentUtilExample {
@Autowired
private DataEnrichmentUtil dataEnrichmentUtil;
@Autowired
private IDealershipService dealershipService;
@Autowired
private IProjectManagementService projectManagementService;
@Autowired
private ISalesManagementService salesManagementService;
/**
* 示例1基本用法 - 批量获取门店名称映射
*/
public Map<String, String> getDealershipNameMap(List<String> dealershipIds) {
return DataEnrichmentUtil.batchGetNameMap(
dealershipIds,
dealershipService,
Dealership::getId,
Dealership::getDealershipName
);
}
/**
* 示例1-1使用便捷方法 - 批量获取门店名称映射
*/
public Map<String, String> getDealershipNameMapEasy(List<String> dealershipIds) {
return dataEnrichmentUtil.getDealershipIdNameMap(dealershipIds);
}
/**
* 示例2带条件的批量获取 - 只获取启用的门店
*/
public Map<String, String> getActiveDealershipNameMap(List<String> dealershipIds) {
return DataEnrichmentUtil.batchGetNameMap(
dealershipIds,
dealershipService,
Dealership::getId,
Dealership::getDealershipName,
queryWrapper -> queryWrapper.eq(Dealership::getStatus, true)
);
}
/**
* 示例3获取多个字段 - 获取门店的名称和地区
*/
public Map<String, Map<String, Object>> getDealershipInfoMap(List<String> dealershipIds) {
Map<String, java.util.function.Function<Dealership, Object>> fieldGetters = Map.of(
"name", Dealership::getDealershipName,
"region", Dealership::getRegion,
"type", Dealership::getDealershipType
);
return DataEnrichmentUtil.batchGetFieldMap(
dealershipIds,
dealershipService,
Dealership::getId,
fieldGetters
);
}
/**
* 示例4从实体列表中提取ID
*/
public List<String> extractDealershipIds(List<SalesManagement> salesList) {
return DataEnrichmentUtil.extractIds(salesList, SalesManagement::getDealershipId);
}
/**
* 示例5带过滤条件的ID提取 - 只提取有门店ID的记录
*/
public List<String> extractValidDealershipIds(List<SalesManagement> salesList) {
return DataEnrichmentUtil.extractIds(
salesList,
SalesManagement::getDealershipId,
sales -> sales.getDealershipId() != null && !sales.getDealershipId().trim().isEmpty()
);
}
/**
* 示例6完整的销售数据丰富流程
*/
public void enrichSalesData(List<SalesManagement> salesList) {
// 1. 提取关联ID
List<String> dealershipIds = DataEnrichmentUtil.extractIds(salesList, SalesManagement::getDealershipId);
List<String> projectIds = DataEnrichmentUtil.extractIds(salesList, SalesManagement::getProjectId);
// 2. 批量获取关联数据
Map<String, String> dealershipNameMap = DataEnrichmentUtil.batchGetNameMap(
dealershipIds, dealershipService, Dealership::getId, Dealership::getDealershipName);
Map<String, String> projectNameMap = DataEnrichmentUtil.batchGetNameMap(
projectIds, projectManagementService, ProjectManagement::getId, ProjectManagement::getProjectName);
// 3. 填充关联数据
salesList.forEach(sales -> {
sales.setDealershipName(dealershipNameMap.get(sales.getDealershipId()));
sales.setProjectName(projectNameMap.get(sales.getProjectId()));
});
}
/**
* 示例6-1使用便捷方法的销售数据丰富流程
*/
public void enrichSalesDataEasy(List<SalesManagement> salesList) {
// 1. 提取关联ID
List<String> dealershipIds = DataEnrichmentUtil.extractIds(salesList, SalesManagement::getDealershipId);
List<String> projectIds = DataEnrichmentUtil.extractIds(salesList, SalesManagement::getProjectId);
// 2. 使用便捷方法批量获取关联数据
Map<String, String> dealershipNameMap = dataEnrichmentUtil.getDealershipIdNameMap(dealershipIds);
Map<String, String> projectNameMap = dataEnrichmentUtil.getProjectIdNameMap(projectIds);
// 3. 填充关联数据
salesList.forEach(sales -> {
sales.setDealershipName(dealershipNameMap.get(sales.getDealershipId()));
sales.setProjectName(projectNameMap.get(sales.getProjectId()));
});
}
/**
* 示例7获取项目详细信息包含多个字段
*/
public Map<String, Map<String, Object>> getProjectDetailMap(List<String> projectIds) {
Map<String, java.util.function.Function<ProjectManagement, Object>> fieldGetters = Map.of(
"name", ProjectManagement::getProjectName,
"version", ProjectManagement::getScriptVersion,
"status", ProjectManagement::getStatus,
"group", ProjectManagement::getGroupName
);
return DataEnrichmentUtil.batchGetFieldMap(
projectIds,
projectManagementService,
ProjectManagement::getId,
fieldGetters
);
}
}