Explorar el Código

优化动态表单

zhouhao hace 7 años
padre
commit
b8cdda5a6e
Se han modificado 29 ficheros con 808 adiciones y 198 borrados
  1. 3 3
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebfarmework/web/controller/form/DynamicFormColumnController.java
  2. 3 3
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebfarmework/web/controller/form/DynamicFormController.java
  3. 35 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebframework/web/controller/form/DynamicFormDeployLogController.java
  4. 2 2
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-api/src/main/java/org/hswebfarmework/web/dao/form/DynamicFormColumnDao.java
  5. 2 2
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-api/src/main/java/org/hswebfarmework/web/dao/form/DynamicFormDao.java
  6. 11 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-api/src/main/java/org/hswebframework/web/dao/form/DynamicFormDeployLogDao.java
  7. 0 58
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-mybatis/src/main/resources/org/hswebfarmework/web/dao/mybatis/mappers/form/DynamicFormMapper.xml
  8. 4 4
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-mybatis/src/main/resources/org/hswebfarmework/web/dao/mybatis/mappers/form/DynamicFormColumnMapper.xml
  9. 49 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/form/DynamicFormDeployLogMapper.xml
  10. 58 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/form/DynamicFormMapper.xml
  11. 19 1
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebfarmework/web/entity/form/DynamicFormColumnEntity.java
  12. 75 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebframework/web/entity/form/DynamicFormDeployLogEntity.java
  13. 1 1
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebfarmework/web/entity/form/DynamicFormEntity.java
  14. 28 10
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebfarmework/web/entity/form/SimpleDynamicFormColumnEntity.java
  15. 85 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebframework/web/entity/form/SimpleDynamicFormDeployLogEntity.java
  16. 1 1
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebfarmework/web/entity/form/SimpleDynamicFormEntity.java
  17. 0 34
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-api/src/main/java/org/hswebfarmework/web/service/form/DynamicFormService.java
  18. 18 0
      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/DatabaseRepository.java
  19. 2 2
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-api/src/main/java/org/hswebfarmework/web/service/form/DynamicFormColumnService.java
  20. 20 0
      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/DynamicFormDeployLogService.java
  21. 24 0
      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/DynamicFormOperationService.java
  22. 19 0
      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/DynamicFormService.java
  23. 12 0
      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
  24. 5 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/pom.xml
  25. 0 73
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebfarmework/web/service/form/simple/SimpleDynamicFormService.java
  26. 4 4
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebfarmework/web/service/form/simple/SimpleDynamicFormColumnService.java
  27. 86 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/SimpleDynamicFormDeployLogService.java
  28. 231 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/SimpleDynamicFormService.java
  29. 11 0
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/src/main/resources/hsweb-starter.js

+ 3 - 3
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebfarmework/web/controller/form/DynamicFormColumnController.java

@@ -1,7 +1,7 @@
-package org.hswebfarmework.web.controller.form;
+package org.hswebframework.web.controller.form;
 
-import org.hswebfarmework.web.entity.form.DynamicFormColumnEntity;
-import org.hswebfarmework.web.service.form.DynamicFormColumnService;
+import org.hswebframework.web.entity.form.DynamicFormColumnEntity;
+import org.hswebframework.web.service.form.DynamicFormColumnService;
 import org.hswebframework.web.authorization.annotation.Authorize;
 import org.hswebframework.web.commons.entity.param.QueryParamEntity;
 import org.hswebframework.web.controller.SimpleGenericEntityController;

+ 3 - 3
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebfarmework/web/controller/form/DynamicFormController.java

@@ -1,11 +1,11 @@
-package org.hswebfarmework.web.controller.form;
+package org.hswebframework.web.controller.form;
 
 import org.hswebframework.web.authorization.annotation.Authorize;
 import org.hswebframework.web.commons.entity.param.QueryParamEntity;
 import org.hswebframework.web.controller.SimpleGenericEntityController;
-import org.hswebfarmework.web.entity.form.DynamicFormEntity;
+import org.hswebframework.web.entity.form.DynamicFormEntity;
 import org.hswebframework.web.logging.AccessLogger;
-import org.hswebfarmework.web.service.form.DynamicFormService;
+import org.hswebframework.web.service.form.DynamicFormService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;

+ 35 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebframework/web/controller/form/DynamicFormDeployLogController.java

@@ -0,0 +1,35 @@
+package org.hswebframework.web.controller.form;
+
+import org.hswebframework.web.authorization.annotation.Authorize;
+import org.hswebframework.web.commons.entity.param.QueryParamEntity;
+import org.hswebframework.web.controller.SimpleGenericEntityController;
+import org.hswebframework.web.entity.form.DynamicFormDeployLogEntity;
+import org.hswebframework.web.logging.AccessLogger;
+import  org.hswebframework.web.service.form.DynamicFormDeployLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *  表单发布日志
+ *
+ * @author hsweb-generator-online
+ */
+@RestController
+@RequestMapping("${hsweb.web.mappings.dynamicFormDeployLog:dynamic/form-deploy-log}")
+@Authorize(permission = "form-deploy-log")
+@AccessLogger("表单发布日志")
+public class DynamicFormDeployLogController implements SimpleGenericEntityController<DynamicFormDeployLogEntity, String, QueryParamEntity> {
+
+    private DynamicFormDeployLogService dynamicFormDeployLogService;
+  
+    @Autowired
+    public void setDynamicFormDeployLogService(DynamicFormDeployLogService dynamicFormDeployLogService) {
+        this.dynamicFormDeployLogService = dynamicFormDeployLogService;
+    }
+  
+    @Override
+    public DynamicFormDeployLogService getService() {
+        return dynamicFormDeployLogService;
+    }
+}

+ 2 - 2
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-api/src/main/java/org/hswebfarmework/web/dao/form/DynamicFormColumnDao.java

@@ -1,7 +1,7 @@
-package org.hswebfarmework.web.dao.form;
+package org.hswebframework.web.dao.form;
 
 import org.hswebframework.web.dao.CrudDao;
-import org.hswebfarmework.web.entity.form.DynamicFormColumnEntity;
+import org.hswebframework.web.entity.form.DynamicFormColumnEntity;
 
 /**
 *  动态表单 DAO接口

+ 2 - 2
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-api/src/main/java/org/hswebfarmework/web/dao/form/DynamicFormDao.java

@@ -1,7 +1,7 @@
-package org.hswebfarmework.web.dao.form;
+package org.hswebframework.web.dao.form;
 
 import org.hswebframework.web.dao.CrudDao;
-import org.hswebfarmework.web.entity.form.DynamicFormEntity;
+import org.hswebframework.web.entity.form.DynamicFormEntity;
 
 /**
 *  动态表单 DAO接口

+ 11 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-api/src/main/java/org/hswebframework/web/dao/form/DynamicFormDeployLogDao.java

@@ -0,0 +1,11 @@
+package org.hswebframework.web.dao.form;
+
+import org.hswebframework.web.dao.CrudDao;
+import org.hswebframework.web.entity.form.DynamicFormDeployLogEntity;
+
+/**
+*  表单发布日志 DAO接口
+*  @author hsweb-generator-online
+ */
+public interface DynamicFormDeployLogDao extends CrudDao<DynamicFormDeployLogEntity,String> {
+}

+ 0 - 58
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-mybatis/src/main/resources/org/hswebfarmework/web/dao/mybatis/mappers/form/DynamicFormMapper.xml

@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.hswebfarmework.web.dao.form.DynamicFormDao">
-    <resultMap id="DynamicFormResultMap" type="org.hswebfarmework.web.entity.form.SimpleDynamicFormEntity">
-              <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
-            <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
-            <result property="tableName" column="table_name" javaType="String" jdbcType="VARCHAR"/>
-            <result property="describe" column="describe" javaType="String" jdbcType="VARCHAR"/>
-            <result property="version" column="version" javaType="Long" jdbcType="DECIMAL"/>
-            <result property="creatorId" column="creator_id" javaType="String" jdbcType="VARCHAR"/>
-            <result property="createTime" column="create_time" javaType="Long" jdbcType="DECIMAL"/>
-            <result property="updateTime" column="update_time" javaType="Long" jdbcType="DECIMAL"/>
-            <result property="deployed" column="is_deployed" javaType="Boolean" jdbcType="DECIMAL"/>
-            <result property="alias" column="alias" javaType="String" jdbcType="VARCHAR"/>
-            <result property="triggers" column="triggers" javaType="String" jdbcType="CLOB"/>
-            <result property="correlations" column="correlations" javaType="String" jdbcType="CLOB"/>
-            <result property="dataSourceId" column="data_source_id" javaType="String" jdbcType="VARCHAR"/>
-            <result property="properties" column="properties" javaType="String" jdbcType="CLOB"/>
-            <result property="type" column="type" javaType="String" jdbcType="VARCHAR"/>
-    </resultMap>
-
-    <!--用于动态生成sql所需的配置-->
-    <sql id="config">
-        <bind name="resultMapId" value="'DynamicFormResultMap'"/>
-        <bind name="tableName" value="'s_dyn_form'"/>
-    </sql>
-  
-    <insert id="insert" parameterType="org.hswebfarmework.web.entity.form.SimpleDynamicFormEntity" >
-        <include refid="config"/>
-        <include refid="BasicMapper.buildInsertSql"/>
-    </insert>
-
-    <delete id="deleteByPk" parameterType="String">
-        delete from s_dyn_form where u_id =#{id}
-    </delete>
-
-    <delete id="delete" parameterType="org.hswebframework.web.commons.entity.Entity">
-        <include refid="config"/>
-        <include refid="BasicMapper.buildDeleteSql"/>
-    </delete>
-
-    <update id="update" parameterType="org.hswebframework.web.commons.entity.Entity">
-        <include refid="config"/>
-        <include refid="BasicMapper.buildUpdateSql"/>
-    </update>
-
-    <select id="query" parameterType="org.hswebframework.web.commons.entity.Entity" resultMap="DynamicFormResultMap">
-        <include refid="config"/>
-        <include refid="BasicMapper.buildSelectSql"/>
-    </select>
-
-    <select id="count" parameterType="org.hswebframework.web.commons.entity.Entity" resultType="int">
-        <include refid="config"/>
-        <include refid="BasicMapper.buildTotalSql"/>
-    </select>
-</mapper>

+ 4 - 4
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-mybatis/src/main/resources/org/hswebfarmework/web/dao/mybatis/mappers/form/DynamicFormColumnMapper.xml

@@ -2,8 +2,8 @@
 <!DOCTYPE mapper
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.hswebfarmework.web.dao.form.DynamicFormColumnDao">
-    <resultMap id="DynamicFormColumnResultMap" type="org.hswebfarmework.web.entity.form.SimpleDynamicFormColumnEntity">
+<mapper namespace="org.hswebframework.web.dao.form.DynamicFormColumnDao">
+    <resultMap id="DynamicFormColumnResultMap" type="org.hswebframework.web.entity.form.SimpleDynamicFormColumnEntity">
         <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="formId" column="form_id" javaType="String" jdbcType="VARCHAR"/>
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
@@ -16,7 +16,7 @@
         <result property="length" column="length" javaType="Integer" jdbcType="DECIMAL"/>
         <result property="precision" column="precision" javaType="Integer" jdbcType="DECIMAL"/>
         <result property="scale" column="scale" javaType="Integer" jdbcType="DECIMAL"/>
-        <result property="properties" column="properties" javaType="String" jdbcType="CLOB"/>
+        <result property="properties" column="properties" javaType="java.util.Map" jdbcType="CLOB"/>
     </resultMap>
 
     <!--用于动态生成sql所需的配置-->
@@ -25,7 +25,7 @@
         <bind name="tableName" value="'S_DYN_FORM_COLUMN'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hswebfarmework.web.entity.form.DynamicFormColumnEntity">
+    <insert id="insert" parameterType="org.hswebframework.web.entity.form.DynamicFormColumnEntity">
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 49 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/form/DynamicFormDeployLogMapper.xml

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.hswebframework.web.dao.form.DynamicFormDeployLogDao">
+    <resultMap id="DynamicFormDeployLogResultMap" type="org.hswebframework.web.entity.form.SimpleDynamicFormDeployLogEntity">
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <result property="formId" column="form_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="version" column="version" javaType="Long" jdbcType="NUMERIC"/>
+        <result property="deployTime" column="deploy_time" javaType="Long" jdbcType="TIMESTAMP"/>
+        <result property="metaData" column="meta_data" javaType="String" jdbcType="CLOB"/>
+        <result property="status" column="status" javaType="Byte" jdbcType="NUMERIC"/>
+    </resultMap>
+
+    <!--用于动态生成sql所需的配置-->
+    <sql id="config">
+        <bind name="resultMapId" value="'DynamicFormDeployLogResultMap'"/>
+        <bind name="tableName" value="'s_dyn_form_log'"/>
+    </sql>
+
+    <insert id="insert" parameterType="org.hswebframework.web.entity.form.SimpleDynamicFormDeployLogEntity">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildInsertSql"/>
+    </insert>
+
+    <delete id="deleteByPk" parameterType="String">
+        delete from s_dyn_form_log where u_id =#{id}
+    </delete>
+
+    <delete id="delete" parameterType="org.hswebframework.web.commons.entity.Entity">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildDeleteSql"/>
+    </delete>
+
+    <update id="update" parameterType="org.hswebframework.web.commons.entity.Entity">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildUpdateSql"/>
+    </update>
+
+    <select id="query" parameterType="org.hswebframework.web.commons.entity.Entity" resultMap="DynamicFormDeployLogResultMap">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildSelectSql"/>
+    </select>
+
+    <select id="count" parameterType="org.hswebframework.web.commons.entity.Entity" resultType="int">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildTotalSql"/>
+    </select>
+</mapper>

+ 58 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-dao/hsweb-system-dynamic-form-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/form/DynamicFormMapper.xml

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.hswebframework.web.dao.form.DynamicFormDao">
+    <resultMap id="DynamicFormResultMap" type="org.hswebframework.web.entity.form.SimpleDynamicFormEntity">
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
+        <result property="tableName" column="table_name" javaType="String" jdbcType="VARCHAR"/>
+        <result property="describe" column="describe" javaType="String" jdbcType="VARCHAR"/>
+        <result property="version" column="version" javaType="Long" jdbcType="DECIMAL"/>
+        <result property="creatorId" column="creator_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" javaType="Long" jdbcType="DECIMAL"/>
+        <result property="updateTime" column="update_time" javaType="Long" jdbcType="DECIMAL"/>
+        <result property="deployed" column="is_deployed" javaType="Boolean" jdbcType="DECIMAL"/>
+        <result property="alias" column="alias" javaType="String" jdbcType="VARCHAR"/>
+        <result property="triggers" column="triggers" javaType="String" jdbcType="CLOB"/>
+        <result property="correlations" column="correlations" javaType="String" jdbcType="CLOB"/>
+        <result property="dataSourceId" column="data_source_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="properties" column="properties" javaType="java.util.Map" jdbcType="CLOB"/>
+        <result property="type" column="type" javaType="String" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <!--用于动态生成sql所需的配置-->
+    <sql id="config">
+        <bind name="resultMapId" value="'DynamicFormResultMap'"/>
+        <bind name="tableName" value="'s_dyn_form'"/>
+    </sql>
+
+    <insert id="insert" parameterType="org.hswebframework.web.entity.form.SimpleDynamicFormEntity">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildInsertSql"/>
+    </insert>
+
+    <delete id="deleteByPk" parameterType="String">
+        delete from s_dyn_form where u_id =#{id}
+    </delete>
+
+    <delete id="delete" parameterType="org.hswebframework.web.commons.entity.Entity">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildDeleteSql"/>
+    </delete>
+
+    <update id="update" parameterType="org.hswebframework.web.commons.entity.Entity">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildUpdateSql"/>
+    </update>
+
+    <select id="query" parameterType="org.hswebframework.web.commons.entity.Entity" resultMap="DynamicFormResultMap">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildSelectSql"/>
+    </select>
+
+    <select id="count" parameterType="org.hswebframework.web.commons.entity.Entity" resultType="int">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildTotalSql"/>
+    </select>
+</mapper>

+ 19 - 1
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebfarmework/web/entity/form/DynamicFormColumnEntity.java

@@ -1,4 +1,4 @@
-package org.hswebfarmework.web.entity.form;
+package org.hswebframework.web.entity.form;
 
 import org.hswebframework.web.commons.entity.GenericEntity;
 
@@ -55,6 +55,17 @@ public interface DynamicFormColumnEntity extends GenericEntity<String> {
      * 小数点位数
      */
     String scale      = "scale";
+
+    /**
+     * 字典ID
+     */
+    String dictId = "dictId";
+
+    /**
+     * 字典解析器ID
+     */
+    String dictParserId = "dictParserId";
+
     /**
      * 其他配置
      */
@@ -170,4 +181,11 @@ public interface DynamicFormColumnEntity extends GenericEntity<String> {
      */
     void setScale(Integer scale);
 
+    String getDictId();
+
+    void setDictId(String dictId);
+
+    String getDictParserId();
+
+    void setDictParserId(String dictParserId);
 }

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

@@ -0,0 +1,75 @@
+package org.hswebframework.web.entity.form;
+
+import org.hswebframework.web.commons.entity.GenericEntity;
+
+/**
+ * 表单发布日志 实体
+ *
+ * @author hsweb-generator-online
+ */
+public interface DynamicFormDeployLogEntity extends GenericEntity<String> {
+ /*-------------------------------------------
+    |               属性名常量               |
+    ===========================================*/
+    /**
+     * 表单ID
+     */
+    String formId     = "formId";
+    /**
+     * 发布的版本
+     */
+    String version    = "version";
+    /**
+     * 发布时间
+     */
+    String deployTime = "deployTime";
+    /**
+     * 部署的元数据
+     */
+    String metaData   = "metaData";
+    String status     = "status";
+
+    /**
+     * @return 表单ID
+     */
+    String getFormId();
+
+    /**
+     * @param formId 表单ID
+     */
+    void setFormId(String formId);
+
+    /**
+     * @return 发布的版本
+     */
+    Long getVersion();
+
+    /**
+     * @param version 发布的版本
+     */
+    void setVersion(Long version);
+
+    /**
+     * @return 发布时间
+     */
+    Long getDeployTime();
+
+    /**
+     * @param deployTime 发布时间
+     */
+    void setDeployTime(Long deployTime);
+
+    /**
+     * @return 部署的元数据
+     */
+    String getMetaData();
+
+    /**
+     * @param metaData 部署的元数据
+     */
+    void setMetaData(String metaData);
+
+    Byte getStatus();
+
+    void setStatus(Byte status);
+}

+ 1 - 1
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebfarmework/web/entity/form/DynamicFormEntity.java

@@ -1,4 +1,4 @@
-package org.hswebfarmework.web.entity.form;
+package org.hswebframework.web.entity.form;
 
 import org.hswebframework.web.commons.entity.GenericEntity;
 

+ 28 - 10
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebfarmework/web/entity/form/SimpleDynamicFormColumnEntity.java

@@ -1,4 +1,4 @@
-package org.hswebfarmework.web.entity.form;
+package org.hswebframework.web.entity.form;
 
 import org.hswebframework.web.commons.entity.SimpleGenericEntity;
 
@@ -9,21 +9,21 @@ import org.hswebframework.web.commons.entity.SimpleGenericEntity;
  */
 public class SimpleDynamicFormColumnEntity extends SimpleGenericEntity<String> implements DynamicFormColumnEntity {
     //表单ID
-    private String formId;
+    private String  formId;
     //字段名称
-    private String name;
+    private String  name;
     //数据库列
-    private String columnName;
+    private String  columnName;
     //备注
-    private String describe;
+    private String  describe;
     //别名
-    private String alias;
+    private String  alias;
     //java类型
-    private String javaType;
+    private String  javaType;
     //jdbc类型
-    private String jdbcType;
+    private String  jdbcType;
     //数据类型
-    private String dataType;
+    private String  dataType;
     //长度
     private Integer length;
     //精度
@@ -31,7 +31,9 @@ public class SimpleDynamicFormColumnEntity extends SimpleGenericEntity<String> i
     //小数点位数
     private Integer scale;
     //其他配置
-    private String properties;
+    private String  properties;
+    private String  dictId;
+    private String  dictParserId;
 
     /**
      * @return 表单ID
@@ -186,4 +188,20 @@ public class SimpleDynamicFormColumnEntity extends SimpleGenericEntity<String> i
     public void setScale(Integer scale) {
         this.scale = scale;
     }
+
+    public String getDictId() {
+        return dictId;
+    }
+
+    public void setDictId(String dictId) {
+        this.dictId = dictId;
+    }
+
+    public String getDictParserId() {
+        return dictParserId;
+    }
+
+    public void setDictParserId(String dictParserId) {
+        this.dictParserId = dictParserId;
+    }
 }

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

@@ -0,0 +1,85 @@
+package org.hswebframework.web.entity.form;
+
+import org.hswebframework.web.commons.entity.SimpleGenericEntity;
+
+/**
+ * 表单发布日志
+ *
+ * @author hsweb-generator-online
+ */
+public class SimpleDynamicFormDeployLogEntity extends SimpleGenericEntity<String> implements DynamicFormDeployLogEntity {
+    //表单ID
+    private String formId;
+    //发布的版本
+    private Long   version;
+    //发布时间
+    private Long   deployTime;
+    //部署的元数据
+    private String metaData;
+    //部署状态
+    private Byte status;
+
+    /**
+     * @return 表单ID
+     */
+    public String getFormId() {
+        return this.formId;
+    }
+
+    /**
+     * @param formId 表单ID
+     */
+    public void setFormId(String formId) {
+        this.formId = formId;
+    }
+
+    /**
+     * @return 发布的版本
+     */
+    public Long getVersion() {
+        return this.version;
+    }
+
+    /**
+     * @param version 发布的版本
+     */
+    public void setVersion(Long version) {
+        this.version = version;
+    }
+
+    /**
+     * @return 发布时间
+     */
+    public Long getDeployTime() {
+        return this.deployTime;
+    }
+
+    /**
+     * @param deployTime 发布时间
+     */
+    public void setDeployTime(Long deployTime) {
+        this.deployTime = deployTime;
+    }
+
+    /**
+     * @return 部署的元数据
+     */
+    public String getMetaData() {
+        return this.metaData;
+    }
+
+    /**
+     * @param metaData 部署的元数据
+     */
+    public void setMetaData(String metaData) {
+        this.metaData = metaData;
+    }
+
+    public Byte getStatus() {
+        return status;
+    }
+
+    public void setStatus(Byte status) {
+        this.status = status;
+    }
+}

+ 1 - 1
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebfarmework/web/entity/form/SimpleDynamicFormEntity.java

@@ -1,4 +1,4 @@
-package org.hswebfarmework.web.entity.form;
+package org.hswebframework.web.entity.form;
 import org.hswebframework.web.commons.entity.SimpleGenericEntity;
 
 /**

+ 0 - 34
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-api/src/main/java/org/hswebfarmework/web/service/form/DynamicFormService.java

@@ -1,34 +0,0 @@
-package org.hswebfarmework.web.service.form;
-
-import org.hsweb.ezorm.core.Insert;
-import org.hsweb.ezorm.core.dsl.Delete;
-import org.hsweb.ezorm.core.dsl.Query;
-import org.hsweb.ezorm.core.dsl.Update;
-import org.hsweb.ezorm.core.param.InsertParam;
-import org.hswebfarmework.web.entity.form.DynamicFormEntity;
-import org.hswebframework.web.commons.entity.param.DeleteParamEntity;
-import org.hswebframework.web.commons.entity.param.QueryParamEntity;
-import org.hswebframework.web.commons.entity.param.UpdateParamEntity;
-import org.hswebframework.web.service.CrudService;
-
-/**
- * 动态表单 服务类
- *
- * @author hsweb-generator-online
- */
-public interface DynamicFormService extends CrudService<DynamicFormEntity, String> {
-
-    void deploy(String formId);
-
-    void unDeploy(String formId);
-
-    <T> Query<T, QueryParamEntity> createQuery(String formName);
-
-    <T> Update<T, UpdateParamEntity<T>> createUpdate(String formName);
-
-    <T> Insert<T> createInsert(String formName);
-
-    Delete<DeleteParamEntity> createDelete(String formName);
-
-
-}

+ 18 - 0
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/DatabaseRepository.java

@@ -0,0 +1,18 @@
+package org.hswebframework.web.service.form;
+
+import org.hsweb.ezorm.rdb.RDBDatabase;
+
+/**
+ * 数据库仓库,用于获取默认数据库信息,指定数据源的信息以及当前激活的数据库信息
+ *
+ * @author zhouhao
+ * @see RDBDatabase
+ * @since 3.0
+ */
+public interface DatabaseRepository {
+    RDBDatabase getDefaultDatabase();
+
+    RDBDatabase getDatabase(String datasourceId);
+
+    RDBDatabase getActiveDatabase();
+}

+ 2 - 2
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-api/src/main/java/org/hswebfarmework/web/service/form/DynamicFormColumnService.java

@@ -1,6 +1,6 @@
-package org.hswebfarmework.web.service.form;
+package org.hswebframework.web.service.form;
 
-import org.hswebfarmework.web.entity.form.DynamicFormColumnEntity;
+import org.hswebframework.web.entity.form.DynamicFormColumnEntity;
 import org.hswebframework.web.service.CrudService;
 
 /**

+ 20 - 0
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/DynamicFormDeployLogService.java

@@ -0,0 +1,20 @@
+package org.hswebframework.web.service.form;
+
+import org.hswebframework.web.entity.form.DynamicFormDeployLogEntity;
+import org.hswebframework.web.service.CrudService;
+
+/**
+ * 表单发布日志 服务类
+ *
+ * @author hsweb-generator-online
+ */
+public interface DynamicFormDeployLogService extends CrudService<DynamicFormDeployLogEntity, String> {
+    DynamicFormDeployLogEntity selectLastDeployed(String formId);
+
+    DynamicFormDeployLogEntity selectDeployed(String formId, long version);
+
+    void cancelDeployed(String formId);
+    
+    void cancelDeployed(String formId, long version);
+
+}

+ 24 - 0
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/DynamicFormOperationService.java

@@ -0,0 +1,24 @@
+package org.hswebframework.web.service.form;
+
+import org.hswebframework.web.commons.entity.PagerResult;
+import org.hswebframework.web.commons.entity.param.DeleteParamEntity;
+import org.hswebframework.web.commons.entity.param.QueryParamEntity;
+import org.hswebframework.web.commons.entity.param.UpdateParamEntity;
+
+/**
+ * TODO 完成注释
+ *
+ * @author zhouhao
+ */
+public interface DynamicFormOperationService {
+    <T> PagerResult<T> selectPager(String formId, QueryParamEntity paramEntity);
+
+    <T> T selectSingle(String formId, QueryParamEntity paramEntity);
+
+    int count(String formId, QueryParamEntity paramEntity);
+
+    <T> int update(String formId, UpdateParamEntity<T> paramEntity);
+
+    int delete(String formId, DeleteParamEntity paramEntity);
+
+}

+ 19 - 0
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/DynamicFormService.java

@@ -0,0 +1,19 @@
+package org.hswebframework.web.service.form;
+
+import org.hswebframework.web.entity.form.DynamicFormEntity;
+import org.hswebframework.web.service.CrudService;
+
+/**
+ * 动态表单 服务类
+ *
+ * @author hsweb-generator-online
+ */
+public interface DynamicFormService extends CrudService<DynamicFormEntity, String> {
+
+    void deployAll();
+
+    void deploy(String formId);
+
+    void unDeploy(String formId);
+
+}

+ 12 - 0
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

@@ -0,0 +1,12 @@
+package org.hswebframework.web.service.form;
+
+import org.hsweb.ezorm.core.OptionConverter;
+
+/**
+ * TODO 完成注释
+ *
+ * @author zhouhao
+ */
+public interface OptionalConvertBuilder {
+    OptionConverter buildFromDict(String dictId, String dictParserId);
+}

+ 5 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/pom.xml

@@ -27,5 +27,10 @@
             <artifactId>hsweb-concurrent-lock-api</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.hswebframework.web</groupId>
+            <artifactId>hsweb-system-dictionary-service-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 </project>

+ 0 - 73
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebfarmework/web/service/form/simple/SimpleDynamicFormService.java

@@ -1,73 +0,0 @@
-package org.hswebfarmework.web.service.form.simple;
-
-import org.hsweb.ezorm.core.Insert;
-import org.hsweb.ezorm.core.dsl.Delete;
-import org.hsweb.ezorm.core.dsl.Query;
-import org.hsweb.ezorm.core.dsl.Update;
-import org.hswebfarmework.web.dao.form.DynamicFormDao;
-import org.hswebfarmework.web.entity.form.DynamicFormEntity;
-import org.hswebframework.web.commons.entity.param.DeleteParamEntity;
-import org.hswebframework.web.commons.entity.param.QueryParamEntity;
-import org.hswebframework.web.commons.entity.param.UpdateParamEntity;
-import org.hswebframework.web.concurrent.lock.annotation.WriteLock;
-import org.hswebframework.web.service.GenericEntityService;
-import org.hswebframework.web.id.IDGenerator;
-import org.hswebfarmework.web.service.form.DynamicFormService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-/**
- * 默认的服务实现
- *
- * @author hsweb-generator-online
- */
-@Service("dynamicFormService")
-public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEntity, String>
-        implements DynamicFormService {
-    @Autowired
-    private DynamicFormDao dynamicFormDao;
-
-    @Override
-    protected IDGenerator<String> getIDGenerator() {
-        return IDGenerator.MD5;
-    }
-
-    @Override
-    public DynamicFormDao getDao() {
-        return dynamicFormDao;
-    }
-
-    @Override
-    public int updateByPk(String s, DynamicFormEntity entity) {
-        return super.updateByPk(s, entity);
-    }
-
-    public void deploy(String formId) {
-
-    }
-
-    @Override
-    public void unDeploy(String formId) {
-
-    }
-
-    @Override
-    public <T> Query<T, QueryParamEntity> createQuery(String formName) {
-        return null;
-    }
-
-    @Override
-    public <T> Update<T, UpdateParamEntity<T>> createUpdate(String formName) {
-        return null;
-    }
-
-    @Override
-    public <T> Insert<T> createInsert(String formName) {
-        return null;
-    }
-
-    @Override
-    public Delete<DeleteParamEntity> createDelete(String formName) {
-        return null;
-    }
-}

+ 4 - 4
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebfarmework/web/service/form/simple/SimpleDynamicFormColumnService.java

@@ -1,10 +1,10 @@
-package org.hswebfarmework.web.service.form.simple;
+package org.hswebframework.web.service.form.simple;
 
-import org.hswebfarmework.web.dao.form.DynamicFormColumnDao;
-import org.hswebfarmework.web.entity.form.DynamicFormColumnEntity;
+import org.hswebframework.web.dao.form.DynamicFormColumnDao;
+import org.hswebframework.web.entity.form.DynamicFormColumnEntity;
 import org.hswebframework.web.service.GenericEntityService;
 import org.hswebframework.web.id.IDGenerator;
-import org.hswebfarmework.web.service.form.DynamicFormColumnService;
+import org.hswebframework.web.service.form.DynamicFormColumnService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 

+ 86 - 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/SimpleDynamicFormDeployLogService.java

@@ -0,0 +1,86 @@
+package org.hswebframework.web.service.form.simple;
+
+import org.hswebframework.web.commons.entity.DataStatus;
+import org.hswebframework.web.dao.form.DynamicFormDeployLogDao;
+import org.hswebframework.web.entity.form.DynamicFormDeployLogEntity;
+import org.hswebframework.web.service.GenericEntityService;
+import org.hswebframework.web.id.IDGenerator;
+import org.hswebframework.web.service.form.DynamicFormDeployLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Objects;
+
+/**
+ * 默认的服务实现
+ *
+ * @author hsweb-generator-online
+ */
+@Service("dynamicFormDeployLogService")
+public class SimpleDynamicFormDeployLogService extends GenericEntityService<DynamicFormDeployLogEntity, String>
+        implements DynamicFormDeployLogService {
+    @Autowired
+    private DynamicFormDeployLogDao dynamicFormDeployLogDao;
+
+    @Override
+    protected IDGenerator<String> getIDGenerator() {
+        return IDGenerator.MD5;
+    }
+
+    @Override
+    public DynamicFormDeployLogDao getDao() {
+        return dynamicFormDeployLogDao;
+    }
+
+    @Override
+    public DynamicFormDeployLogEntity selectLastDeployed(String formId) {
+        Objects.requireNonNull(formId);
+        DynamicFormDeployLogEntity deployed = createQuery()
+                .where(DynamicFormDeployLogEntity.formId, formId)
+                .orderByDesc(DynamicFormDeployLogEntity.deployTime)
+                .single();
+        if (null != deployed && DataStatus.STATUS_ENABLED.equals(deployed.getStatus())) {
+            return deployed;
+        }
+        return null;
+    }
+
+    @Override
+    public DynamicFormDeployLogEntity selectDeployed(String formId, long version) {
+        Objects.requireNonNull(formId);
+        DynamicFormDeployLogEntity deployed = createQuery()
+                .where(DynamicFormDeployLogEntity.formId, formId)
+                .and(DynamicFormDeployLogEntity.version, version)
+                .orderByDesc(DynamicFormDeployLogEntity.deployTime)
+                .single();
+        if (null != deployed && DataStatus.STATUS_ENABLED.equals(deployed.getStatus())) {
+            return deployed;
+        }
+        return null;
+    }
+
+    @Override
+    public void cancelDeployed(String formId) {
+        Objects.requireNonNull(formId);
+        DynamicFormDeployLogEntity deployed = createQuery()
+                .where(DynamicFormDeployLogEntity.formId, formId)
+                .orderByDesc(DynamicFormDeployLogEntity.deployTime)
+                .single();
+        if (deployed != null) {
+            createUpdate()
+                    .set(DynamicFormDeployLogEntity.status, DataStatus.STATUS_DISABLED)
+                    .where(DynamicFormDeployLogEntity.id, deployed.getId())
+                    .exec();
+        }
+    }
+
+    @Override
+    public void cancelDeployed(String formId, long version) {
+        Objects.requireNonNull(formId);
+        createUpdate()
+                .set(DynamicFormDeployLogEntity.status, DataStatus.STATUS_DISABLED)
+                .where(DynamicFormDeployLogEntity.formId, formId)
+                .and(DynamicFormDeployLogEntity.version, version)
+                .exec();
+    }
+}

+ 231 - 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/SimpleDynamicFormService.java

@@ -0,0 +1,231 @@
+package org.hswebframework.web.service.form.simple;
+
+import org.hsweb.ezorm.core.ValueConverter;
+import org.hsweb.ezorm.rdb.RDBDatabase;
+import org.hsweb.ezorm.rdb.meta.RDBColumnMetaData;
+import org.hsweb.ezorm.rdb.meta.RDBTableMetaData;
+import org.hsweb.ezorm.rdb.meta.converter.*;
+import org.hsweb.ezorm.rdb.render.dialect.Dialect;
+import org.hswebframework.web.concurrent.lock.annotation.WriteLock;
+import org.hswebframework.web.dao.form.DynamicFormColumnDao;
+import org.hswebframework.web.dao.form.DynamicFormDao;
+import org.hswebframework.web.entity.form.DynamicFormColumnEntity;
+import org.hswebframework.web.entity.form.DynamicFormEntity;
+import org.hswebframework.web.id.IDGenerator;
+import org.hswebframework.web.service.DefaultDSLQueryService;
+import org.hswebframework.web.service.GenericEntityService;
+import org.hswebframework.web.service.form.DatabaseRepository;
+import org.hswebframework.web.service.form.DynamicFormDeployLogService;
+import org.hswebframework.web.service.form.DynamicFormService;
+import org.hswebframework.web.service.form.OptionalConvertBuilder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.sql.JDBCType;
+import java.sql.SQLException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 默认的服务实现
+ *
+ * @author hsweb-generator-online
+ */
+@Service("dynamicFormService")
+public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEntity, String>
+        implements DynamicFormService {
+    @Autowired
+    private DynamicFormDao dynamicFormDao;
+
+    @Autowired
+    private DynamicFormColumnDao formColumnDao;
+
+    @Autowired
+    private DatabaseRepository databaseRepository;
+
+    @Autowired
+    private DynamicFormDeployLogService dynamicFormDeployLogService;
+
+    @Autowired
+    private OptionalConvertBuilder optionalConvertBuilder;
+
+    @Override
+    protected IDGenerator<String> getIDGenerator() {
+        return IDGenerator.MD5;
+    }
+
+    @Override
+    public DynamicFormDao getDao() {
+        return dynamicFormDao;
+    }
+
+    @Override
+    public int updateByPk(String s, DynamicFormEntity entity) {
+        return super.updateByPk(s, entity);
+    }
+
+    @Override
+    public void deployAll() {
+
+    }
+
+    @WriteLock("dynamic-form:${#formId}")
+    public void deploy(String formId) {
+        DynamicFormEntity formEntity = selectByPk(formId);
+        assertNotNull(formEntity);
+        List<DynamicFormColumnEntity> columns = DefaultDSLQueryService.createQuery(formColumnDao)
+                .where(DynamicFormColumnEntity.formId, formId)
+                .listNoPaging();
+        deploy(formEntity, columns);
+    }
+
+    protected void deploy(DynamicFormEntity form, List<DynamicFormColumnEntity> columns) {
+        RDBDatabase database = StringUtils.isEmpty(form.getDataSourceId())
+                ? databaseRepository.getDefaultDatabase()
+                : databaseRepository.getDatabase(form.getDataSourceId());
+        RDBTableMetaData metaData = buildTable(database, form, columns);
+        try {
+            if (null == database.getTable(metaData.getName())) {
+                database.createTable(metaData);
+            } else {
+                database.alterTable(metaData);
+            }
+        } catch (SQLException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    protected RDBTableMetaData buildTable(RDBDatabase database, DynamicFormEntity form, List<DynamicFormColumnEntity> columns) {
+        RDBTableMetaData metaData = new RDBTableMetaData();
+        metaData.setComment(form.getDescribe());
+        metaData.setName(form.getTableName());
+        metaData.setProperties(form.getProperties());
+        metaData.setAlias(form.getAlias());
+        columns.stream().map(column -> {
+            RDBColumnMetaData columnMeta = new RDBColumnMetaData();
+            columnMeta.setName(column.getName());
+            columnMeta.setAlias(column.getAlias());
+            columnMeta.setComment(column.getDescribe());
+            columnMeta.setProperties(column.getProperties());
+            columnMeta.setLength(column.getLength());
+            columnMeta.setPrecision(column.getPrecision());
+            columnMeta.setScale(column.getScale());
+            columnMeta.setJdbcType(JDBCType.valueOf(column.getJdbcType()));
+            columnMeta.setJavaType(getJavaType(column.getJavaType()));
+            if (!StringUtils.isEmpty(column.getDataType())) {
+                Dialect dialect = database.getMeta().getDialect();
+                columnMeta.setDataType(dialect.buildDataType(columnMeta));
+            } else {
+                columnMeta.setDataType(column.getDataType());
+            }
+            columnMeta.setValueConverter(initColumnValueConvert(columnMeta.getJdbcType(), columnMeta.getJavaType()));
+            if (!StringUtils.isEmpty(column.getDictId())) {
+                columnMeta.setOptionConverter(optionalConvertBuilder.buildFromDict(column.getDictId(), column.getDictParserId()));
+            }
+            customColumnSetting(database, form, metaData, column, columnMeta);
+            return columnMeta;
+        }).forEach(metaData::addColumn);
+        customTableSetting(database, form, metaData);
+        return metaData;
+    }
+
+    protected void customTableSetting(RDBDatabase database
+            , DynamicFormEntity formEntity
+            , RDBTableMetaData table) {
+
+    }
+
+    protected void customColumnSetting(RDBDatabase database
+            , DynamicFormEntity formEntity
+            , RDBTableMetaData table
+            , DynamicFormColumnEntity columnEntity
+            , RDBColumnMetaData column) {
+
+    }
+
+    protected ValueConverter initColumnValueConvert(JDBCType jdbcType, Class javaType) {
+        boolean isBasicClass = !classMapping
+                .values()
+                .contains(javaType) || javaType != Map.class || javaType != List.class;
+
+        switch (jdbcType) {
+            case BLOB:
+                if (!isBasicClass) {
+                    return new JSONValueConverter(javaType, new BlobValueConverter());
+                }
+                return new BlobValueConverter();
+            case CLOB:
+                if (!isBasicClass) {
+                    return new JSONValueConverter(javaType, new ClobValueConverter());
+                }
+                return new ClobValueConverter();
+            case NUMERIC:
+                return new NumberValueConverter(javaType);
+            case DATE:
+            case TIMESTAMP:
+            case TIME:
+                return new DateTimeConverter("yyyy-MM-dd HH:mm:ss", javaType);
+            default:
+                if (!isBasicClass) {
+                    return new JSONValueConverter(javaType, new DefaultValueConverter());
+                }
+                return new DefaultValueConverter();
+        }
+
+    }
+
+    static final Map<String, Class> classMapping = new HashMap<>();
+
+    static {
+        classMapping.put("string", String.class);
+        classMapping.put("String", String.class);
+        classMapping.put("int", Integer.class);
+        classMapping.put("Integer", Integer.class);
+        classMapping.put("byte", Byte.class);
+        classMapping.put("Byte", Byte.class);
+        classMapping.put("short", Short.class);
+        classMapping.put("Short", Short.class);
+        classMapping.put("boolean", Boolean.class);
+        classMapping.put("Boolean", Boolean.class);
+        classMapping.put("double", Double.class);
+        classMapping.put("Double", Double.class);
+        classMapping.put("float", Float.class);
+        classMapping.put("Float", Float.class);
+        classMapping.put("long", Long.class);
+        classMapping.put("Long", Long.class);
+        classMapping.put("char", Character.class);
+        classMapping.put("Char", Character.class);
+        classMapping.put("Character", Character.class);
+        classMapping.put("map", Map.class);
+        classMapping.put("Map", Map.class);
+        classMapping.put("list", List.class);
+        classMapping.put("List", List.class);
+
+        classMapping.put("date", Date.class);
+        classMapping.put("Date", Date.class);
+
+    }
+
+    private Class getJavaType(String type) {
+        if (StringUtils.isEmpty(type)) return String.class;
+        Class clazz = classMapping.get(type);
+        if (clazz == null) {
+            try {
+                clazz = Class.forName(type);
+            } catch (ClassNotFoundException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        return clazz;
+    }
+
+    @Override
+    @WriteLock("dynamic-form:${#formId}")
+    public void unDeploy(String formId) {
+
+    }
+
+}

+ 11 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/src/main/resources/hsweb-starter.js

@@ -52,7 +52,18 @@ function install(context) {
         .addColumn().name("precision").alias("precision").comment("精度").jdbcType(java.sql.JDBCType.DECIMAL).length(4, 0).commit()
         .addColumn().name("scale").alias("scale").comment("小数点位数").jdbcType(java.sql.JDBCType.DECIMAL).length(4, 0).commit()
         .addColumn().name("properties").alias("properties").comment("其他配置").jdbcType(java.sql.JDBCType.CLOB).commit()
+        .addColumn().name("dict_id").alias("dictId").comment("字典ID").jdbcType(java.sql.JDBCType.VARCHAR).length(32).commit()
+        .addColumn().name("dict_parser_id").alias("dictParserId").comment("字典解析器ID").jdbcType(java.sql.JDBCType.VARCHAR).length(32).commit()
         .comment("动态表单列").commit();
+
+    database.createOrAlter("s_dyn_form_log")
+        .addColumn().name("u_id").alias("id").comment("ID").jdbcType(java.sql.JDBCType.VARCHAR).length(32).primaryKey().commit()
+        .addColumn().name("form_id").alias("formId").comment("表单ID").jdbcType(java.sql.JDBCType.VARCHAR).length(32).commit()
+        .addColumn().name("version").alias("version").comment("发布的版本").jdbcType(java.sql.JDBCType.NUMERIC).length(32).commit()
+        .addColumn().name("deploy_time").alias("deployTime").comment("发布时间").jdbcType(java.sql.JDBCType.TIMESTAMP).commit()
+        .addColumn().name("meta_data").alias("metaData").comment("部署的元数据").jdbcType(java.sql.JDBCType.CLOB).commit()
+        .addColumn().name("status").alias("status").comment("状态").jdbcType(java.sql.JDBCType.NUMERIC).length(4).commit()
+        .comment("表单发布日志").commit();
 }
 //设置依赖
 dependency.setup(info)