فهرست منبع

优化动态表单

zhouhao 7 سال پیش
والد
کامیت
d63510de5f
9فایلهای تغییر یافته به همراه133 افزوده شده و 255 حذف شده
  1. 4 4
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebframework/web/controller/form/DynamicFormAuthorizeDefinitionParser.java
  2. 26 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebframework/web/entity/form/DictConfig.java
  3. 0 18
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebframework/web/entity/form/DynamicFormColumnEntity.java
  4. 7 225
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebframework/web/entity/form/SimpleDynamicFormColumnEntity.java
  5. 2 1
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-api/src/main/java/org/hswebframework/web/service/form/OptionalConvertBuilder.java
  6. 13 7
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java
  7. 29 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/dict/DefaultOptionalConvertBuilder.java
  8. 28 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/dict/DictionaryOptionalConvertBuilderStrategy.java
  9. 24 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/dict/OptionalConvertBuilderStrategy.java

+ 4 - 4
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebframework/web/controller/form/DynamicFormAuthorizeDefinitionParser.java

@@ -13,9 +13,9 @@ import java.lang.reflect.Method;
  * @author zhouhao
  * @since 3.0
  */
-public interface DynamicFormAuthorizeDefinitionParser extends AopMethodAuthorizeDefinitionCustomizerParser {
+public abstract class DynamicFormAuthorizeDefinitionParser implements AopMethodAuthorizeDefinitionCustomizerParser {
     @Override
-    default AuthorizeDefinition parse(Class target, Method method, MethodInterceptorContext context) {
+    public AuthorizeDefinition parse(Class target, Method method, MethodInterceptorContext context) {
         if (!ClassUtils.getUserClass(target).equals(DynamicFormOperationController.class)
                 || context == null) {
             return null;
@@ -24,9 +24,9 @@ public interface DynamicFormAuthorizeDefinitionParser extends AopMethodAuthorize
 
         //获取表单id
         return context.<String>getParameter("formId")
-                .map(formId -> getDefinition(formId, methodAuth == null ? new String[0] : methodAuth.action()))
+                .map(formId -> getDefinition(formId, methodAuth == null ? new String[0] : methodAuth.action(), context))
                 .orElse(null);
     }
 
-    AuthorizeDefinition getDefinition(String formId, String[] action);
+    protected abstract AuthorizeDefinition getDefinition(String formId, String[] action, MethodInterceptorContext context);
 }

+ 26 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebframework/web/entity/form/DictConfig.java

@@ -0,0 +1,26 @@
+package org.hswebframework.web.entity.form;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.hswebframework.web.commons.bean.Bean;
+import org.hswebframework.web.commons.entity.Entity;
+
+import java.io.Serializable;
+
+/**
+ * @author zhouhao
+ * @since 3.0
+ */
+@Setter
+@Getter
+public class DictConfig implements Bean {
+
+    private static final long serialVersionUID = 2115608884837210121L;
+
+    private String type;
+
+    private String toField;
+
+    private String config;
+
+}

+ 0 - 18
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebframework/web/entity/form/DynamicFormColumnEntity.java

@@ -63,16 +63,6 @@ public interface DynamicFormColumnEntity extends GenericEntity<String> {
      */
     String dictConfig = "dictConfig";
 
-    /**
-     * 字典ID
-     */
-    String dictId = "dictId";
-
-    /**
-     * 字典解析器ID
-     */
-    String dictParserId = "dictParserId";
-
     /**
      * 其他配置
      */
@@ -198,14 +188,6 @@ public interface DynamicFormColumnEntity extends GenericEntity<String> {
      */
     void setScale(Integer scale);
 
-    String getDictId();
-
-    void setDictId(String dictId);
-
-    String getDictParserId();
-
-    void setDictParserId(String dictParserId);
-
     void setDictConfig(String dictConfig);
 
     String getDictConfig();

+ 7 - 225
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebframework/web/entity/form/SimpleDynamicFormColumnEntity.java

@@ -1,5 +1,7 @@
 package org.hswebframework.web.entity.form;
 
+import lombok.Getter;
+import lombok.Setter;
 import org.hswebframework.web.commons.entity.SimpleGenericEntity;
 
 /**
@@ -7,6 +9,8 @@ import org.hswebframework.web.commons.entity.SimpleGenericEntity;
  *
  * @author hsweb-generator-online
  */
+@Getter
+@Setter
 public class SimpleDynamicFormColumnEntity extends SimpleGenericEntity<String> implements DynamicFormColumnEntity {
     //表单ID
     private String  formId;
@@ -30,230 +34,8 @@ public class SimpleDynamicFormColumnEntity extends SimpleGenericEntity<String> i
     private Integer precision;
     //小数点位数
     private Integer scale;
-    //字典ID
-    private String  dictId;
-    //字典解析器ID
-    private String  dictParserId;
-
     //数据字典配置
-    private String dictConfig;
-
-    private Long sortIndex;
-
-    /**
-     * @return 表单ID
-     */
-    @Override
-    public String getFormId() {
-        return this.formId;
-    }
-
-    /**
-     * @param formId 表单ID
-     */
-    @Override
-    public void setFormId(String formId) {
-        this.formId = formId;
-    }
-
-    /**
-     * @return 字段名称
-     */
-    @Override
-    public String getName() {
-        return this.name;
-    }
-
-    /**
-     * @param name 字段名称
-     */
-    @Override
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * @return 数据库列
-     */
-    @Override
-    public String getColumnName() {
-        return this.columnName;
-    }
-
-    /**
-     * @param columnName 数据库列
-     */
-    @Override
-    public void setColumnName(String columnName) {
-        this.columnName = columnName;
-    }
-
-    /**
-     * @return 备注
-     */
-    @Override
-    public String getDescribe() {
-        return this.describe;
-    }
-
-    /**
-     * @param describe 备注
-     */
-    @Override
-    public void setDescribe(String describe) {
-        this.describe = describe;
-    }
-
-    /**
-     * @return 别名
-     */
-    @Override
-    public String getAlias() {
-        return this.alias;
-    }
-
-    /**
-     * @param alias 别名
-     */
-    @Override
-    public void setAlias(String alias) {
-        this.alias = alias;
-    }
-
-    /**
-     * @return java类型
-     */
-    @Override
-    public String getJavaType() {
-        return this.javaType;
-    }
-
-    /**
-     * @param javaType java类型
-     */
-    @Override
-    public void setJavaType(String javaType) {
-        this.javaType = javaType;
-    }
-
-    /**
-     * @return jdbc类型
-     */
-    @Override
-    public String getJdbcType() {
-        return this.jdbcType;
-    }
-
-    /**
-     * @param jdbcType jdbc类型
-     */
-    @Override
-    public void setJdbcType(String jdbcType) {
-        this.jdbcType = jdbcType;
-    }
-
-    /**
-     * @return 数据类型
-     */
-    @Override
-    public String getDataType() {
-        return this.dataType;
-    }
-
-    /**
-     * @param dataType 数据类型
-     */
-    @Override
-    public void setDataType(String dataType) {
-        this.dataType = dataType;
-    }
-
-    /**
-     * @return 长度
-     */
-    @Override
-    public Integer getLength() {
-        return this.length;
-    }
-
-    /**
-     * @param length 长度
-     */
-    @Override
-    public void setLength(Integer length) {
-        this.length = length;
-    }
-
-    /**
-     * @return 精度
-     */
-    @Override
-    public Integer getPrecision() {
-        return this.precision;
-    }
-
-    /**
-     * @param precision 精度
-     */
-    @Override
-    public void setPrecision(Integer precision) {
-        this.precision = precision;
-    }
-
-    /**
-     * @return 小数点位数
-     */
-    @Override
-    public Integer getScale() {
-        return this.scale;
-    }
-
-    /**
-     * @param scale 小数点位数
-     */
-    @Override
-    public void setScale(Integer scale) {
-        this.scale = scale;
-    }
-
-    @Override
-    public String getDictId() {
-        return dictId;
-    }
-
-    @Override
-    public void setDictId(String dictId) {
-        this.dictId = dictId;
-    }
-
-    @Override
-    public String getDictParserId() {
-        return dictParserId;
-    }
-
-    @Override
-    public void setDictParserId(String dictParserId) {
-        this.dictParserId = dictParserId;
-    }
-
-    @Override
-    public String getDictConfig() {
-        return dictConfig;
-    }
-
-    @Override
-    public void setDictConfig(String dictConfig) {
-        this.dictConfig = dictConfig;
-    }
-
-
-    @Override
-    public Long getSortIndex() {
-        return sortIndex;
-    }
-
-    @Override
-    public void setSortIndex(Long sortIndex) {
-        this.sortIndex = sortIndex;
-    }
+    private String  dictConfig;
+    //序号
+    private Long    sortIndex;
 }

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

@@ -1,6 +1,7 @@
 package org.hswebframework.web.service.form;
 
 import org.hswebframework.ezorm.core.OptionConverter;
+import org.hswebframework.web.entity.form.DictConfig;
 import org.hswebframework.web.entity.form.DynamicFormColumnEntity;
 
 /**
@@ -8,5 +9,5 @@ import org.hswebframework.web.entity.form.DynamicFormColumnEntity;
  * @author zhouhao
  */
 public interface OptionalConvertBuilder {
-    OptionConverter build(DynamicFormColumnEntity columnEntity);
+    OptionConverter build(DictConfig dictConfig);
 }

+ 13 - 7
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java

@@ -19,10 +19,8 @@ import org.hswebframework.web.BusinessException;
 import org.hswebframework.web.commons.entity.DataStatus;
 import org.hswebframework.web.dao.form.DynamicFormColumnDao;
 import org.hswebframework.web.dao.form.DynamicFormDao;
-import org.hswebframework.web.entity.form.DynamicFormColumnBindEntity;
-import org.hswebframework.web.entity.form.DynamicFormColumnEntity;
-import org.hswebframework.web.entity.form.DynamicFormDeployLogEntity;
-import org.hswebframework.web.entity.form.DynamicFormEntity;
+import org.hswebframework.web.dict.EnumDict;
+import org.hswebframework.web.entity.form.*;
 import org.hswebframework.web.id.IDGenerator;
 import org.hswebframework.web.service.DefaultDSLDeleteService;
 import org.hswebframework.web.service.DefaultDSLQueryService;
@@ -446,7 +444,6 @@ public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEn
             columnMeta.setJdbcType(JDBCType.valueOf(column.getJdbcType()));
             columnMeta.setJavaType(getJavaType(column.getJavaType()));
             columnMeta.setProperties(column.getProperties() == null ? new HashMap<>() : column.getProperties());
-//            columnMeta.setValidator(column.getValidator());
             if (StringUtils.isEmpty(column.getDataType())) {
                 Dialect dialect = database.getMeta().getDialect();
                 columnMeta.setDataType(dialect.buildDataType(columnMeta));
@@ -454,8 +451,13 @@ public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEn
                 columnMeta.setDataType(column.getDataType());
             }
             columnMeta.setValueConverter(initColumnValueConvert(columnMeta.getJdbcType(), columnMeta.getJavaType()));
-            if (optionalConvertBuilder != null) {
-                columnMeta.setOptionConverter(optionalConvertBuilder.build(column));
+            if (optionalConvertBuilder != null && null != column.getDictConfig()) {
+                try {
+                    DictConfig config = JSON.parseObject(column.getDictConfig(), DictConfig.class);
+                    columnMeta.setOptionConverter(optionalConvertBuilder.build(config));
+                } catch (Exception e) {
+                    logger.warn("创建字典转换器失败", e);
+                }
             }
             customColumnSetting(database, form, metaData, column, columnMeta);
             metaData.addColumn(columnMeta);
@@ -549,6 +551,10 @@ public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEn
                 .values()
                 .contains(javaType) || javaType != Map.class || javaType != List.class;
 
+
+        if (EnumDict.class.isAssignableFrom(javaType)) {
+            // TODO: 18-4-25
+        }
         switch (jdbcType) {
             case BLOB:
                 if (!isBasicClass) {

+ 29 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/dict/DefaultOptionalConvertBuilder.java

@@ -0,0 +1,29 @@
+package org.hswebframework.web.service.form.simple.dict;
+
+import org.hswebframework.ezorm.core.OptionConverter;
+import org.hswebframework.web.entity.form.DictConfig;
+import org.hswebframework.web.service.form.OptionalConvertBuilder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author zhouhao
+ * @since 3.0
+ */
+@Component
+public class DefaultOptionalConvertBuilder implements OptionalConvertBuilder {
+
+    @Autowired(required = false)
+    private List<OptionalConvertBuilderStrategy> strategies;
+
+    @Override
+    public OptionConverter build(DictConfig dictConfig) {
+        return strategies.stream()
+                .filter(strategy -> strategy.support(dictConfig.getType()))
+                .findFirst()
+                .map(strategy -> strategy.build(dictConfig))
+                .orElse(null);
+    }
+}

+ 28 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/dict/DictionaryOptionalConvertBuilderStrategy.java

@@ -0,0 +1,28 @@
+package org.hswebframework.web.service.form.simple.dict;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.hswebframework.ezorm.core.OptionConverter;
+import org.hswebframework.web.entity.form.DictConfig;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * @author zhouhao
+ * @since 3.0
+ */
+@Component
+public class DictionaryOptionalConvertBuilderStrategy implements OptionalConvertBuilderStrategy {
+    @Override
+    public boolean support(String type) {
+        return "dict".equals(type);
+    }
+
+    @Override
+    public OptionConverter build(DictConfig dictConfig) {
+        JSONObject conf = JSON.parseObject(dictConfig.getConfig());
+        String dictType=conf.getString("dictType");
+
+        return null;
+    }
+}

+ 24 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/dict/OptionalConvertBuilderStrategy.java

@@ -0,0 +1,24 @@
+package org.hswebframework.web.service.form.simple.dict;
+
+import org.hswebframework.ezorm.core.OptionConverter;
+import org.hswebframework.web.entity.form.DictConfig;
+
+/**
+ * @author zhouhao
+ * @since 3.0
+ */
+public interface OptionalConvertBuilderStrategy {
+
+    /**
+     * @param type 类型是否支持
+     */
+    boolean support(String type);
+
+    /**
+     * 根据配置创建转换器
+     *
+     * @param dictConfig 配置内容
+     * @return 转换器对象
+     */
+    OptionConverter build(DictConfig dictConfig);
+}