From 1cf9f39f899ec162af8ea2f136641582a486101b Mon Sep 17 00:00:00 2001 From: zhouhao Date: Wed, 4 Jul 2018 11:11:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=8B=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/dict/DictDefineRepository.java | 2 + .../defaults/DefaultDictDefineRepository.java | 5 +++ .../form/simple/SimpleDynamicFormService.java | 39 ++++++++++++++++--- .../simple/convert/SmartValueConverter.java | 34 ++++++++++++++++ 4 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/convert/SmartValueConverter.java diff --git a/hsweb-core/src/main/java/org/hswebframework/web/dict/DictDefineRepository.java b/hsweb-core/src/main/java/org/hswebframework/web/dict/DictDefineRepository.java index 0a13e23ba..347e590d8 100644 --- a/hsweb-core/src/main/java/org/hswebframework/web/dict/DictDefineRepository.java +++ b/hsweb-core/src/main/java/org/hswebframework/web/dict/DictDefineRepository.java @@ -9,6 +9,8 @@ import java.util.List; public interface DictDefineRepository { DictDefine getDefine(String id); + List getAllDefine(); + @Deprecated List getDefine(Class type); diff --git a/hsweb-core/src/main/java/org/hswebframework/web/dict/defaults/DefaultDictDefineRepository.java b/hsweb-core/src/main/java/org/hswebframework/web/dict/defaults/DefaultDictDefineRepository.java index b6ebcf06a..5b1b6e988 100644 --- a/hsweb-core/src/main/java/org/hswebframework/web/dict/defaults/DefaultDictDefineRepository.java +++ b/hsweb-core/src/main/java/org/hswebframework/web/dict/defaults/DefaultDictDefineRepository.java @@ -54,6 +54,11 @@ public class DefaultDictDefineRepository implements DictDefineRepository { return parsedDict.get(id); } + @Override + public List getAllDefine() { + return new ArrayList<>(parsedDict.values()); + } + @Override public List getDefine(Class type) { return Collections.emptyList(); diff --git a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java index fcff300a1..2853f1788 100644 --- a/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java +++ b/hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java @@ -35,6 +35,7 @@ import org.hswebframework.web.service.form.OptionalConvertBuilder; import org.hswebframework.web.service.form.initialize.ColumnInitializeContext; import org.hswebframework.web.service.form.initialize.DynamicFormInitializeCustomer; import org.hswebframework.web.service.form.initialize.TableInitializeContext; +import org.hswebframework.web.service.form.simple.convert.SmartValueConverter; import org.hswebframework.web.service.form.simple.dict.EnumDictValueConverter; import org.hswebframework.web.validator.group.CreateGroup; import org.hswebframework.web.validator.group.UpdateGroup; @@ -44,6 +45,8 @@ import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -102,6 +105,7 @@ public class SimpleDynamicFormService extends GenericEntityService entities = createQuery() .select(DynamicFormEntity.id) @@ -143,6 +147,8 @@ public class SimpleDynamicFormService extends GenericEntityService converters = new ArrayList<>(); + converters.add(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)); } catch (Exception e) { logger.warn("创建字典转换器失败", e); } } + columnMeta.setValueConverter(new SmartValueConverter(converters)); customColumnSetting(database, form, metaData, column, columnMeta); metaData.addColumn(columnMeta); }); @@ -502,6 +528,7 @@ public class SimpleDynamicFormService extends GenericEntityService converters; + + public SmartValueConverter(List converters) { + this.converters = converters; + } + + @Override + public Object getData(Object value) { + for (ValueConverter converter : converters) { + value = converter.getData(value); + } + return value; + } + + @Override + public Object getValue(Object data) { + for (ValueConverter converter : converters) { + data = converter.getData(data); + } + return data; + } +}