Explorar el Código

优化字典转换

zhouhao hace 6 años
padre
commit
2343c9d171

+ 2 - 1
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/entity/form/DictConfig.java

@@ -6,6 +6,7 @@ import org.hswebframework.web.commons.bean.Bean;
 import org.hswebframework.web.commons.entity.Entity;
 
 import java.io.Serializable;
+import java.util.Map;
 
 /**
  * @author zhouhao
@@ -21,6 +22,6 @@ public class DictConfig implements Bean {
 
     private String toField;
 
-    private String config;
+    private Map<String,Object> config;
 
 }

+ 6 - 4
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java

@@ -488,18 +488,20 @@ public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEn
             } else {
                 columnMeta.setDataType(column.getDataType());
             }
-            List<ValueConverter> converters = new ArrayList<>();
-            converters.add(initColumnValueConvert(columnMeta.getJdbcType(), columnMeta.getJavaType()));
+            columnMeta.setValueConverter(initColumnValueConvert(columnMeta.getJdbcType(), columnMeta.getJavaType()));
+
             if (optionalConvertBuilder != null && null != column.getDictConfig()) {
                 try {
                     DictConfig config = JSON.parseObject(column.getDictConfig(), DictConfig.class);
                     columnMeta.setOptionConverter(optionalConvertBuilder.build(config));
-                    converters.add(optionalConvertBuilder.buildValueConverter(config));
+                    ValueConverter converter = optionalConvertBuilder.buildValueConverter(config);
+                    if (null != converter) {
+                        columnMeta.setValueConverter(converter);
+                    }
                 } catch (Exception e) {
                     logger.warn("创建字典转换器失败", e);
                 }
             }
-            columnMeta.setValueConverter(new SmartValueConverter(converters));
             customColumnSetting(database, form, metaData, column, columnMeta);
             metaData.addColumn(columnMeta);
         });

+ 9 - 4
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/dict/DictionaryOptionalConvertBuilderStrategy.java

@@ -32,10 +32,10 @@ public class DictionaryOptionalConvertBuilderStrategy implements OptionalConvert
 
     @Override
     public OptionConverter build(DictConfig dictConfig) {
-        JSONObject conf = JSON.parseObject(dictConfig.getConfig());
+        JSONObject conf = new JSONObject(dictConfig.getConfig());
         String dictId = conf.getString("dictId");
-        String fieldName = conf.getString("fieldName");
-        String sppliter = conf.getString("sppliter");
+        String fieldName = dictConfig.getToField();
+        String sppliter = conf.getString("spliter");
         String writeObject = conf.getString("writeObject");
         EnumDictOptionConverter<EnumDict<Object>> converter = new EnumDictOptionConverter<>(() -> dictDefineRepository.getDefine(dictId).getItems(), fieldName);
 
@@ -50,12 +50,17 @@ public class DictionaryOptionalConvertBuilderStrategy implements OptionalConvert
 
     @Override
     public ValueConverter buildValueConverter(DictConfig dictConfig) {
-        JSONObject conf = JSON.parseObject(dictConfig.getConfig());
+        JSONObject conf = new JSONObject(dictConfig.getConfig());
         String dictId = conf.getString("dictId");
+        String multi = conf.getString("multi");
 
         EnumDictValueConverter<EnumDict<Object>> converter =
                 new EnumDictValueConverter<>(() -> dictDefineRepository.getDefine(dictId).getItems());
 
+        converter.setMulti(!"false".equalsIgnoreCase(multi));
+
+        converter.setDataToMask(!"false".equalsIgnoreCase(conf.getString("fast")));
+
         return converter;
     }
 }

+ 2 - 2
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/dict/EnumDictOptionConverter.java

@@ -68,12 +68,12 @@ public class EnumDictOptionConverter<T extends EnumDict> implements OptionConver
         if (writeObject) {
             return allOptionSupplier.get()
                     .stream()
-                    .filter(e -> e.eq(o))
+                    .filter(e -> e.eq(values))
                     .collect(Collectors.toSet());
         }
         return dictToText.apply(allOptionSupplier.get()
                 .stream()
-                .filter(e -> e.eq(o))
+                .filter(e -> e.eq(values))
                 .map(EnumDict::getText)
                 .map(String::valueOf));
     }

+ 2 - 1
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/dict/EnumDictValueConverter.java

@@ -114,10 +114,11 @@ public class EnumDictValueConverter<T extends EnumDict> implements ValueConverte
                                     .map(String::valueOf));
                 }
             }
+            List<Object> lst = splitter.apply(String.valueOf(data));
             return multiValueConvert
                     .apply(allOptionSupplier.get()
                             .stream()
-                            .filter(e -> e.eq(data))
+                            .filter(e -> e.eq(lst))
                             .map(EnumDict::getValue)
                             .map(String::valueOf));
         }