Explorar o código

优化表单初始化字段

zhou-hao %!s(int64=6) %!d(string=hai) anos
pai
achega
715c9b0723

+ 184 - 4
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/imp/WorkFlowFormServiceImpl.java

@@ -2,7 +2,16 @@ package org.hswebframework.web.workflow.service.imp;
 
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Task;
+import org.hswebframework.ezorm.rdb.RDBTable;
+import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData;
+import org.hswebframework.ezorm.rdb.meta.RDBTableMetaData;
+import org.hswebframework.ezorm.rdb.meta.converter.DateTimeConverter;
+import org.hswebframework.ezorm.rdb.render.dialect.Dialect;
+import org.hswebframework.web.authorization.Authentication;
 import org.hswebframework.web.service.form.DynamicFormOperationService;
+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.workflow.service.config.ProcessConfigurationService;
 import org.hswebframework.web.workflow.service.WorkFlowFormService;
 import org.hswebframework.web.workflow.service.config.ActivityConfiguration;
@@ -12,6 +21,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.sql.JDBCType;
+import java.util.Date;
 import java.util.Map;
 
 /**
@@ -19,7 +30,7 @@ import java.util.Map;
  * @since 3.0.0-RC
  */
 @Service
-public class WorkFlowFormServiceImpl extends AbstractFlowableService implements WorkFlowFormService {
+public class WorkFlowFormServiceImpl extends AbstractFlowableService implements WorkFlowFormService, DynamicFormInitializeCustomer {
 
     @Autowired
     private ProcessConfigurationService processConfigurationService;
@@ -75,8 +86,9 @@ public class WorkFlowFormServiceImpl extends AbstractFlowableService implements
 
         acceptStartProcessFormData(instance, formData);
 
-        formData.put("taskId", task.getId());
-        formData.put("taskDefineKey", task.getTaskDefinitionKey());
+        formData.put("processTaskId", task.getId());
+        formData.put("processTaskDefineKey", task.getTaskDefinitionKey());
+        formData.put("processTaskName",task.getName());
 
     }
 
@@ -87,8 +99,176 @@ public class WorkFlowFormServiceImpl extends AbstractFlowableService implements
         formData.put("processDefineId", instance.getProcessDefinitionId());
         formData.put("processDefineKey", instance.getProcessDefinitionKey());
         formData.put("processDefineName", instance.getProcessDefinitionName());
-        formData.put("processDefineName", instance.getProcessDefinitionVersion());
+        formData.put("processDefineVersion", instance.getProcessDefinitionVersion());
         formData.put("processInstanceId", instance.getProcessInstanceId());
 
     }
+
+    @Override
+    public void customTableSetting(TableInitializeContext context) {
+        RDBTableMetaData table = context.getTable();
+        Dialect dialect = context.getDatabase().getMeta().getDialect();
+
+        //----------taskId--------------
+        {
+            RDBColumnMetaData processTaskId = new RDBColumnMetaData();
+            processTaskId.setJavaType(String.class);
+            processTaskId.setJdbcType(JDBCType.VARCHAR);
+            processTaskId.setLength(32);
+            processTaskId.setName("proc_task_id");
+            processTaskId.setAlias("processTaskId");
+            processTaskId.setDataType(dialect.buildDataType(processTaskId));
+            processTaskId.setComment("流程任务ID");
+            table.addColumn(processTaskId);
+        }
+
+        //----------taskDefineKey--------------
+        {
+            RDBColumnMetaData taskDefineKey = new RDBColumnMetaData();
+            taskDefineKey.setJavaType(String.class);
+            taskDefineKey.setJdbcType(JDBCType.VARCHAR);
+            taskDefineKey.setLength(128);
+            taskDefineKey.setName("proc_task_key");
+            taskDefineKey.setAlias("processTaskDefineKey");
+            taskDefineKey.setDataType(dialect.buildDataType(taskDefineKey));
+            taskDefineKey.setComment("流程任务定义KEY");
+            table.addColumn(taskDefineKey);
+        }
+
+        //----------taskName--------------
+        {
+            RDBColumnMetaData processTaskName = new RDBColumnMetaData();
+            processTaskName.setJavaType(String.class);
+            processTaskName.setJdbcType(JDBCType.VARCHAR);
+            processTaskName.setLength(128);
+            processTaskName.setName("proc_task_name");
+            processTaskName.setAlias("processTaskName");
+            processTaskName.setDataType(dialect.buildDataType(processTaskName));
+            processTaskName.setComment("流程任务定义名称");
+            table.addColumn(processTaskName);
+        }
+
+        //----------processDefineId--------------
+        {
+            RDBColumnMetaData processDefineId = new RDBColumnMetaData();
+            processDefineId.setJavaType(String.class);
+            processDefineId.setJdbcType(JDBCType.VARCHAR);
+            processDefineId.setLength(32);
+            processDefineId.setName("proc_def_id");
+            processDefineId.setAlias("processDefineId");
+            processDefineId.setDataType(dialect.buildDataType(processDefineId));
+            processDefineId.setProperty("read-only", true);
+            processDefineId.setComment("流程定义ID");
+            table.addColumn(processDefineId);
+        }
+        //----------processDefineKey--------------
+        {
+            RDBColumnMetaData processDefineKey = new RDBColumnMetaData();
+            processDefineKey.setJavaType(String.class);
+            processDefineKey.setJdbcType(JDBCType.VARCHAR);
+            processDefineKey.setLength(32);
+            processDefineKey.setName("proc_def_key");
+            processDefineKey.setAlias("processDefineKey");
+            processDefineKey.setDataType(dialect.buildDataType(processDefineKey));
+            processDefineKey.setProperty("read-only", true);
+            processDefineKey.setComment("流程定义KEY");
+            table.addColumn(processDefineKey);
+        } //----------processDefineName--------------
+        {
+            RDBColumnMetaData processDefineName = new RDBColumnMetaData();
+            processDefineName.setJavaType(String.class);
+            processDefineName.setJdbcType(JDBCType.VARCHAR);
+            processDefineName.setLength(128);
+            processDefineName.setName("proc_def_name");
+            processDefineName.setAlias("processDefineName");
+            processDefineName.setDataType(dialect.buildDataType(processDefineName));
+            processDefineName.setProperty("read-only", true);
+            processDefineName.setComment("流程定义Name");
+            table.addColumn(processDefineName);
+        }//----------processDefineVersion--------------
+        {
+            RDBColumnMetaData processDefineVersion = new RDBColumnMetaData();
+            processDefineVersion.setJavaType(Integer.class);
+            processDefineVersion.setJdbcType(JDBCType.INTEGER);
+            processDefineVersion.setLength(32);
+            processDefineVersion.setPrecision(32);
+            processDefineVersion.setScale(0);
+            processDefineVersion.setName("proc_def_ver");
+            processDefineVersion.setAlias("processDefineVersion");
+            processDefineVersion.setDataType(dialect.buildDataType(processDefineVersion));
+            processDefineVersion.setProperty("read-only", true);
+            processDefineVersion.setComment("流程定义版本");
+            table.addColumn(processDefineVersion);
+        }//----------processDefineVersion--------------
+        {
+            RDBColumnMetaData processInstanceId = new RDBColumnMetaData();
+            processInstanceId.setJavaType(String.class);
+            processInstanceId.setJdbcType(JDBCType.VARCHAR);
+            processInstanceId.setLength(32);
+            processInstanceId.setName("proc_ins_id");
+            processInstanceId.setAlias("processInstanceId");
+            processInstanceId.setDataType(dialect.buildDataType(processInstanceId));
+            processInstanceId.setProperty("read-only", true);
+            processInstanceId.setComment("流程实例ID");
+            table.addColumn(processInstanceId);
+        }//----------creatorUserId--------------
+        {
+            RDBColumnMetaData creatorUserId = new RDBColumnMetaData();
+            creatorUserId.setJavaType(String.class);
+            creatorUserId.setJdbcType(JDBCType.VARCHAR);
+            creatorUserId.setLength(32);
+            creatorUserId.setName("creator_id");
+            creatorUserId.setAlias("creatorId");
+            creatorUserId.setDataType(dialect.buildDataType(creatorUserId));
+            creatorUserId.setProperty("read-only", true);
+            creatorUserId.setComment("创建人ID");
+            creatorUserId.setDefaultValue(() -> Authentication.current().map(autz -> autz.getUser().getId()).orElse(null));
+            table.addColumn(creatorUserId);
+        }
+        {//-----------creatorName---------
+            RDBColumnMetaData creatorName = new RDBColumnMetaData();
+            creatorName.setJavaType(String.class);
+            creatorName.setJdbcType(JDBCType.VARCHAR);
+            creatorName.setLength(32);
+            creatorName.setName("creator_name");
+            creatorName.setAlias("creatorName");
+            creatorName.setDataType(dialect.buildDataType(creatorName));
+            creatorName.setProperty("read-only", true);
+            creatorName.setComment("创建人姓名");
+            creatorName.setDefaultValue(() -> Authentication.current().map(autz -> autz.getUser().getName()).orElse(null));
+            table.addColumn(creatorName);
+        }
+        {//-----------creatorName---------
+            RDBColumnMetaData createTime = new RDBColumnMetaData();
+            createTime.setJavaType(Date.class);
+            createTime.setJdbcType(JDBCType.TIMESTAMP);
+            createTime.setName("create_time");
+            createTime.setAlias("createTime");
+            createTime.setDataType(dialect.buildDataType(createTime));
+            createTime.setProperty("read-only", true);
+            createTime.setComment("创建时间");
+            createTime.setNotNull(true);
+            createTime.setValueConverter(new DateTimeConverter("yyyy-MM-dd HH:mm:ss",Date.class));
+            createTime.setDefaultValue(Date::new);
+            table.addColumn(createTime);
+        }
+        {//-----------lastUpdateTime---------
+            RDBColumnMetaData lastUpdateTime = new RDBColumnMetaData();
+            lastUpdateTime.setJavaType(Date.class);
+            lastUpdateTime.setJdbcType(JDBCType.TIMESTAMP);
+            lastUpdateTime.setName("last_update_time");
+            lastUpdateTime.setAlias("lastUpdateTime");
+            lastUpdateTime.setDataType(dialect.buildDataType(lastUpdateTime));
+            lastUpdateTime.setComment("最后一次修改时间");
+            lastUpdateTime.setNotNull(true);
+            lastUpdateTime.setValueConverter(new DateTimeConverter("yyyy-MM-dd HH:mm:ss",Date.class));
+            lastUpdateTime.setDefaultValue(Date::new);
+            table.addColumn(lastUpdateTime);
+        }
+    }
+
+    @Override
+    public void customTableColumnSetting(ColumnInitializeContext context) {
+
+    }
 }