Commit 19bba5a7 by zhangxingmin

push

parent 10181b40
...@@ -235,6 +235,44 @@ public class ExcelExportServiceImpl implements ExcelExportService { ...@@ -235,6 +235,44 @@ public class ExcelExportServiceImpl implements ExcelExportService {
return fieldAnnotationMap; return fieldAnnotationMap;
} }
// /**
// * 构建数据Map列表,将对象列表转换为EasyPOI所需的Map结构
// * @param dataList 数据对象列表
// * @param fieldNames 需要导出的字段名称列表
// * @param entityClass 实体类类型
// * @return 数据Map列表
// */
// private List<Map<String, Object>> buildDataMapList(List<?> dataList, List<String> fieldNames, Class<?> entityClass) {
// // 创建数据Map列表
// List<Map<String, Object>> dataMapList = new ArrayList<>();
// if (CollectionUtils.isEmpty(dataList)) {
// return dataMapList;
// }
// // 遍历数据列表中的每个对象
// for (Object data : dataList) {
// // 为每个对象创建字段-值的映射
// Map<String, Object> map = new HashMap<>();
// // 遍历所有需要导出的字段
// for (String fieldName : fieldNames) {
// try {
// // 通过反射获取字段对象
// Field field = entityClass.getDeclaredField(fieldName);
// // 设置字段可访问(突破private限制)
// field.setAccessible(true);
// // 将字段值放入Map,key为字段名,value为字段值
// map.put(fieldName, field.get(data));
// } catch (Exception e) {
// // 如果获取字段值失败,设置为空字符串
// map.put(fieldName, "");
// }
// }
// // 将当前对象的字段映射添加到列表
// dataMapList.add(map);
// }
// return dataMapList;
// }
/** /**
* 构建数据Map列表,将对象列表转换为EasyPOI所需的Map结构 * 构建数据Map列表,将对象列表转换为EasyPOI所需的Map结构
* @param dataList 数据对象列表 * @param dataList 数据对象列表
...@@ -243,30 +281,32 @@ public class ExcelExportServiceImpl implements ExcelExportService { ...@@ -243,30 +281,32 @@ public class ExcelExportServiceImpl implements ExcelExportService {
* @return 数据Map列表 * @return 数据Map列表
*/ */
private List<Map<String, Object>> buildDataMapList(List<?> dataList, List<String> fieldNames, Class<?> entityClass) { private List<Map<String, Object>> buildDataMapList(List<?> dataList, List<String> fieldNames, Class<?> entityClass) {
// 创建数据Map列表
List<Map<String, Object>> dataMapList = new ArrayList<>(); List<Map<String, Object>> dataMapList = new ArrayList<>();
if (CollectionUtils.isEmpty(dataList)) { if (CollectionUtils.isEmpty(dataList)) {
return dataMapList; return dataMapList;
} }
// 遍历数据列表中的每个对象
for (Object data : dataList) { for (Object data : dataList) {
// 为每个对象创建字段-值的映射
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
// 遍历所有需要导出的字段 // 判断是否为 Map 类型(Feign 反序列化结果)
if (data instanceof Map) {
Map<String, Object> dataMap = (Map<String, Object>) data;
for (String fieldName : fieldNames) {
Object value = dataMap.get(fieldName);
map.put(fieldName, value != null ? value : "");
}
} else {
// 原有的反射逻辑,适用于本地直接调用
for (String fieldName : fieldNames) { for (String fieldName : fieldNames) {
try { try {
// 通过反射获取字段对象
Field field = entityClass.getDeclaredField(fieldName); Field field = entityClass.getDeclaredField(fieldName);
// 设置字段可访问(突破private限制)
field.setAccessible(true); field.setAccessible(true);
// 将字段值放入Map,key为字段名,value为字段值
map.put(fieldName, field.get(data)); map.put(fieldName, field.get(data));
} catch (Exception e) { } catch (Exception e) {
// 如果获取字段值失败,设置为空字符串 log.warn("字段 {} 获取失败: {}", fieldName, e.getMessage());
map.put(fieldName, ""); map.put(fieldName, "");
} }
} }
// 将当前对象的字段映射添加到列表 }
dataMapList.add(map); dataMapList.add(map);
} }
return dataMapList; return dataMapList;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment