feat(table): 新增表格选项配置方法- 新增 setTableOptions重载方法,支持自定义属性和包含字段列表
-优化字段映射过滤逻辑,支持按包含字段列表过滤- 移除冗余的表头处理方法和注释代码 - 调整方法参数顺序,提升代码可读性- 完善表格配置逻辑,支持启用描述信息- 重构字段属性处理流程,提高代码复用性
This commit is contained in:
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) -> {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user