feat(table): 新增表格选项配置方法- 新增 setTableOptions重载方法,支持自定义属性和包含字段列表

-优化字段映射过滤逻辑,支持按包含字段列表过滤- 移除冗余的表头处理方法和注释代码
- 调整方法参数顺序,提升代码可读性- 完善表格配置逻辑,支持启用描述信息- 重构字段属性处理流程,提高代码复用性
This commit is contained in:
liushuang 2025-09-29 11:49:50 +08:00
parent b4a6fdc278
commit 3c31130cbe

@ -307,6 +307,34 @@ public class FsTableUtil {
return resultMap; return resultMap;
} }
public static void setTableOptions(String spreadsheetToken, String sheetId, Class<?> clazz) {
setTableOptions(spreadsheetToken, sheetId, clazz, null, null);
}
public static void setTableOptions(String spreadsheetToken, String sheetId, Class<?> clazz,
Map<String, Object> customProperties, List<String> includeFields) {
Map<String, FieldProperty> fieldsMap = PropertyUtil.getTablePropertyFieldsMap(clazz);
Map<String, FieldProperty> currFieldsMap;
if (includeFields != null && !includeFields.isEmpty()) {
currFieldsMap = fieldsMap.entrySet().stream()
.filter(entry -> {
String field = entry.getValue().getField();
field = field.substring(field.lastIndexOf(".") + 1);
if (field.isEmpty()) {
return false;
}
return includeFields.contains(StringUtil.toUnderscoreCase(field));
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
} else {
currFieldsMap = fieldsMap;
}
List<String> headers = PropertyUtil.getHeaders(currFieldsMap, includeFields);
TableConf tableConf = PropertyUtil.getTableConf(clazz);
setTableOptions(spreadsheetToken, headers, currFieldsMap, sheetId, tableConf.enableDesc(), customProperties);
}
public static void setTableOptions(String spreadsheetToken, List<String> headers, Map<String, FieldProperty> fieldsMap, public static void setTableOptions(String spreadsheetToken, List<String> headers, Map<String, FieldProperty> fieldsMap,
String sheetId, boolean enableDesc, Map<String, Object> customProperties) { String sheetId, boolean enableDesc, Map<String, Object> customProperties) {
@ -357,11 +385,6 @@ public class FsTableUtil {
setTableOptions(spreadsheetToken, headers, fieldsMap, sheetId, enableDesc, null); setTableOptions(spreadsheetToken, headers, fieldsMap, sheetId, enableDesc, null);
} }
// public static CustomValueService.ValueRequest getHeadTemplateBuilder(String sheetId, List<String> headers,
// Map<String, FieldProperty> fieldsMap, TableConf tableConf) {
// return getHeadTemplateBuilder(sheetId, headers, fieldsMap, null, tableConf);
// }
public static CustomValueService.ValueRequest getHeadTemplateBuilder(String sheetId, List<String> headers, public static CustomValueService.ValueRequest getHeadTemplateBuilder(String sheetId, List<String> headers,
Map<String, FieldProperty> fieldsMap, TableConf tableConf) { Map<String, FieldProperty> fieldsMap, TableConf tableConf) {
return getHeadTemplateBuilder(sheetId, headers, fieldsMap, tableConf, null); return getHeadTemplateBuilder(sheetId, headers, fieldsMap, tableConf, null);
@ -424,52 +447,6 @@ public class FsTableUtil {
return batchPutValuesBuilder.build(); return batchPutValuesBuilder.build();
} }
@NotNull
private static List<String> getIncludeFieldHeaders(List<String> headers, Map<String, FieldProperty> fieldsMap, List<String> includeFields) {
return includeFields.stream()
.map(includeField -> {
// 查找匹配的fieldsMap key
for (Map.Entry<String, FieldProperty> entry : fieldsMap.entrySet()) {
FieldProperty fieldProperty = entry.getValue();
if (fieldProperty != null && fieldProperty.getTableProperty() != null) {
String field = fieldProperty.getField();
if (field != null) {
// 获取最后一个属性并转换为下划线格式
String[] split = field.split("\\.");
String lastValue = split[split.length - 1];
String underscoreFormat = StringUtil.toUnderscoreCase(lastValue);
// 如果匹配返回fieldsMap的key
if (underscoreFormat.equals(includeField)) {
return entry.getKey();
}
if (lastValue.equals(includeField)) {
return entry.getKey();
}
}
}
}
// 如果没有匹配到返回原始值
return includeField;
})
.sorted(Comparator.comparingInt(includeFields::indexOf))
.collect(Collectors.toList());
}
/**
* 获取按order排序的表头列表
*
* @param fieldsMap 字段属性映射
* @return 按order排序的表头列表
*/
private static List<String> getSortedHeaders(Map<String, FieldProperty> fieldsMap) {
return fieldsMap.entrySet().stream()
.filter(entry -> entry.getValue() != null && entry.getValue().getTableProperty() != null)
.sorted(Comparator.comparingInt(entry -> entry.getValue().getTableProperty().order()))
.map(Map.Entry::getKey)
.collect(Collectors.toList());
}
private static int getMaxLevel(Map<String, FieldProperty> fieldsMap) { private static int getMaxLevel(Map<String, FieldProperty> fieldsMap) {
AtomicInteger maxLevel = new AtomicInteger(1); AtomicInteger maxLevel = new AtomicInteger(1);
fieldsMap.forEach((field, fieldProperty) -> { fieldsMap.forEach((field, fieldProperty) -> {