feat(extension/crud): 查询字典列表新增支持 extraKey 额外信息字段

This commit is contained in:
2024-11-08 20:57:04 +08:00
parent e9b9d8b82e
commit 9b7ea33c0b
4 changed files with 23 additions and 15 deletions

View File

@@ -42,4 +42,11 @@ public @interface DictField {
* @return 值字段名 * @return 值字段名
*/ */
String valueKey() default "id"; String valueKey() default "id";
/**
* 额外信息字段名
*
* @return 额外信息字段名
*/
String extraKey() default "";
} }

View File

@@ -33,7 +33,7 @@ public class CrudProperties {
* 树配置 * 树配置
*/ */
@NestedConfigurationProperty @NestedConfigurationProperty
private CrudTreeProperties tree; private CrudTreeProperties tree = new CrudTreeProperties();
public CrudTreeProperties getTree() { public CrudTreeProperties getTree() {
return tree; return tree;

View File

@@ -54,11 +54,11 @@ public class LabelValueResp<T> implements Serializable {
private Boolean disabled; private Boolean disabled;
/** /**
* 扩展 * 额外数据
*/ */
@Schema(description = "扩展") @Schema(description = "额外数据")
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
private Object extend; private Object extra;
public LabelValueResp() { public LabelValueResp() {
} }
@@ -68,10 +68,10 @@ public class LabelValueResp<T> implements Serializable {
this.value = value; this.value = value;
} }
public LabelValueResp(String label, T value, Object extend) { public LabelValueResp(String label, T value, Object extra) {
this.label = label; this.label = label;
this.value = value; this.value = value;
this.extend = extend; this.extra = extra;
} }
public LabelValueResp(String label, T value, Boolean disabled) { public LabelValueResp(String label, T value, Boolean disabled) {
@@ -104,11 +104,11 @@ public class LabelValueResp<T> implements Serializable {
this.disabled = disabled; this.disabled = disabled;
} }
public Object getExtend() { public Object getExtra() {
return extend; return extra;
} }
public void setExtend(Object extend) { public void setExtra(Object extra) {
this.extend = extend; this.extra = extra;
} }
} }

View File

@@ -54,10 +54,7 @@ import top.continew.starter.extension.crud.service.BaseService;
import top.continew.starter.file.excel.util.ExcelUtils; import top.continew.starter.file.excel.util.ExcelUtils;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/** /**
* 业务实现基类 * 业务实现基类
@@ -146,12 +143,16 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseIdD
DictField dictField = super.getEntityClass().getDeclaredAnnotation(DictField.class); DictField dictField = super.getEntityClass().getDeclaredAnnotation(DictField.class);
CheckUtils.throwIfNull(dictField, "请添加并配置 @DictField 字典结构信息"); CheckUtils.throwIfNull(dictField, "请添加并配置 @DictField 字典结构信息");
// 指定查询字典字段 // 指定查询字典字段
queryWrapper.select(dictField.labelKey(), dictField.valueKey()); Set<String> columns = CollUtil.newLinkedHashSet(dictField.labelKey(), dictField.valueKey(), dictField
.extraKey());
columns.removeIf(CharSequenceUtil::isBlank);
queryWrapper.select(columns.toArray(String[]::new));
List<T> entityList = baseMapper.selectList(queryWrapper); List<T> entityList = baseMapper.selectList(queryWrapper);
// 解析映射 // 解析映射
Map<String, String> fieldMapping = MapUtil.newHashMap(2); Map<String, String> fieldMapping = MapUtil.newHashMap(2);
fieldMapping.put(CharSequenceUtil.toCamelCase(dictField.labelKey()), "label"); fieldMapping.put(CharSequenceUtil.toCamelCase(dictField.labelKey()), "label");
fieldMapping.put(CharSequenceUtil.toCamelCase(dictField.valueKey()), "value"); fieldMapping.put(CharSequenceUtil.toCamelCase(dictField.valueKey()), "value");
fieldMapping.put(CharSequenceUtil.toCamelCase(dictField.extraKey()), "extra");
return BeanUtil.copyToList(entityList, LabelValueResp.class, CopyOptions.create() return BeanUtil.copyToList(entityList, LabelValueResp.class, CopyOptions.create()
.setFieldMapping(fieldMapping)); .setFieldMapping(fieldMapping));
} }