浏览代码

增加流程处理记录

zhouhao 6 年之前
父节点
当前提交
3d8ee2e0fe
共有 12 个文件被更改,包括 239 次插入8 次删除
  1. 4 0
      hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/AbstractSqlTermCustomer.java
  2. 11 0
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/dao/ProcessHistoryDao.java
  3. 59 0
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/dao/entity/ProcessHistoryEntity.java
  4. 12 0
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/ProcessHistoryService.java
  5. 40 0
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/imp/ProcessHistoryServiceImpl.java
  6. 6 2
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ClaimSqlTerm.java
  7. 6 2
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/CompletedSqlTerm.java
  8. 3 1
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ProcessParticipateSqlTerm.java
  9. 7 2
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/TodoSqlTerm.java
  10. 17 1
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/web/FlowableProcessController.java
  11. 14 0
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/resources/hsweb-starter.js
  12. 60 0
      hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/workflow/ProcessHistoryMapper.xml

+ 4 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/mapper/AbstractSqlTermCustomer.java

@@ -6,6 +6,7 @@ import org.hswebframework.ezorm.core.param.Term;
 import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData;
 import org.hswebframework.ezorm.rdb.render.SqlAppender;
 import org.hswebframework.ezorm.rdb.render.dialect.Dialect;
+import org.springframework.util.StringUtils;
 
 import java.util.List;
 
@@ -25,6 +26,9 @@ public abstract class AbstractSqlTermCustomer implements SqlTermCustomer {
     }
 
     protected String createColumnName(RDBColumnMetaData column, String tableAlias) {
+        if (StringUtils.isEmpty(tableAlias)) {
+            tableAlias = column.getTableMetaData().getAlias();
+        }
         return column.getTableMetaData()
                 .getDatabaseMetaData()
                 .getDialect()

+ 11 - 0
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/dao/ProcessHistoryDao.java

@@ -0,0 +1,11 @@
+package org.hswebframework.web.workflow.dao;
+
+import org.hswebframework.web.dao.CrudDao;
+import org.hswebframework.web.workflow.dao.entity.ProcessHistoryEntity;
+
+/**
+ * @author zhouhao
+ * @since 3.0.0-RC
+ */
+public interface ProcessHistoryDao extends CrudDao<ProcessHistoryEntity, String> {
+}

+ 59 - 0
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/dao/entity/ProcessHistoryEntity.java

@@ -0,0 +1,59 @@
+package org.hswebframework.web.workflow.dao.entity;
+
+import lombok.*;
+import org.hibernate.validator.constraints.NotBlank;
+import org.hswebframework.web.commons.entity.SimpleGenericEntity;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @author zhouhao
+ * @since 3.0.0-RC
+ */
+@Getter
+@Setter
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ProcessHistoryEntity extends SimpleGenericEntity<String> {
+
+    private static final long serialVersionUID = 1413072102870937450L;
+
+    @NotBlank(message = "[type]不能为空")
+    private String type;
+
+    @NotBlank(message = "[typeText]不能为空")
+    private String typeText;
+
+    @NotBlank(message = "[processDefineId]不能为空")
+    private String processDefineId;
+
+    @NotBlank(message = "[processInstanceId]不能为空")
+    private String processInstanceId;
+
+    @NotBlank(message = "[taskId]不能为空")
+    private String taskId;
+
+    @NotBlank(message = "[taskDefineKey]不能为空")
+    private String taskDefineKey;
+
+    @NotBlank(message = "[taskName]不能为空")
+    private String taskName;
+
+    @NotBlank(message = "[businessKey]不能为空")
+    private String businessKey;
+
+    private Map<String, Object> data;
+
+    @NotNull(message = "[createTime]不能为空")
+    private Date createTime;
+
+    @NotBlank(message = "[creatorId]不能为空")
+    private String creatorId;
+
+    @NotBlank(message = "[creatorName]不能为空")
+    private String creatorName;
+
+}

+ 12 - 0
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/ProcessHistoryService.java

@@ -0,0 +1,12 @@
+package org.hswebframework.web.workflow.service;
+
+import org.hswebframework.web.service.CrudService;
+import org.hswebframework.web.workflow.dao.entity.ProcessHistoryEntity;
+
+/**
+ * @author zhouhao
+ * @since 3.0.0-RC
+ */
+public interface ProcessHistoryService extends CrudService<ProcessHistoryEntity, String> {
+
+}

+ 40 - 0
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/imp/ProcessHistoryServiceImpl.java

@@ -0,0 +1,40 @@
+package org.hswebframework.web.workflow.service.imp;
+
+import org.hswebframework.web.dao.CrudDao;
+import org.hswebframework.web.id.IDGenerator;
+import org.hswebframework.web.service.GenericEntityService;
+import org.hswebframework.web.workflow.dao.ProcessHistoryDao;
+import org.hswebframework.web.workflow.dao.entity.ProcessHistoryEntity;
+import org.hswebframework.web.workflow.service.ProcessHistoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * @author zhouhao
+ * @since 3.0.0-RC
+ */
+@Component
+public class ProcessHistoryServiceImpl extends GenericEntityService<ProcessHistoryEntity, String> implements ProcessHistoryService {
+
+    @Autowired
+    private ProcessHistoryDao processHistoryDao;
+
+    @Override
+    protected IDGenerator<String> getIDGenerator() {
+        return IDGenerator.MD5;
+    }
+
+    @Override
+    public CrudDao<ProcessHistoryEntity, String> getDao() {
+        return processHistoryDao;
+    }
+
+    @Override
+    public String insert(ProcessHistoryEntity entity) {
+        entity.setCreateTime(new Date());
+
+        return super.insert(entity);
+    }
+}

+ 6 - 2
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ClaimSqlTerm.java

@@ -24,12 +24,16 @@ public class ClaimSqlTerm extends AbstractSqlTermCustomer {
     public SqlAppender accept(String wherePrefix, Term term, RDBColumnMetaData column, String tableAlias) {
         ChangedTermValue termValue = createChangedTermValue(term);
         RDBColumnMetaData processInstanceId = column.getTableMetaData().findColumn("processInstanceId");
-
+        if (processInstanceId == null) {
+            throw new UnsupportedOperationException("未获取到属性:[processInstanceId]对应的列");
+        }
         List<Object> val = BoostTermTypeMapper.convertList(column, termValue.getOld());
 
         termValue.setValue(val);
         SqlAppender appender = new SqlAppender();
-        appender.add("exists(select 1 from ACT_RU_TASK RES inner join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_ WHERE ", createColumnName(processInstanceId, tableAlias), "=RES.PROC_INST_ID_ and RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and I.USER_ID_  ");
+        appender.add("exists(select 1 from ACT_RU_TASK RES inner join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_ WHERE ",
+                createColumnName(processInstanceId, tableAlias),
+                "=RES.PROC_INST_ID_ and RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and I.USER_ID_  ");
         appendCondition(val, wherePrefix, appender);
         appender.add(")");
 

+ 6 - 2
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/CompletedSqlTerm.java

@@ -24,12 +24,16 @@ public class CompletedSqlTerm extends AbstractSqlTermCustomer {
     public SqlAppender accept(String wherePrefix, Term term, RDBColumnMetaData column, String tableAlias) {
         ChangedTermValue termValue = createChangedTermValue(term);
         RDBColumnMetaData processInstanceId = column.getTableMetaData().findColumn("processInstanceId");
-
+        if (processInstanceId == null) {
+            throw new UnsupportedOperationException("未获取到属性:[processInstanceId]对应的列");
+        }
         List<Object> val = BoostTermTypeMapper.convertList(column, termValue.getOld());
 
         termValue.setValue(val);
         SqlAppender appender = new SqlAppender();
-        appender.add("exists(select 1 from ACT_HI_TASKINST RES WHERE ", createColumnName(processInstanceId, tableAlias), "= RES.PROC_INST_ID_ and RES.ASSIGNEE_ ");
+        appender.add("exists(select 1 from ACT_HI_TASKINST RES WHERE ",
+                createColumnName(processInstanceId, tableAlias),
+                "= RES.PROC_INST_ID_ and RES.ASSIGNEE_ ");
         appendCondition(val, wherePrefix, appender);
         appender.add(")");
 

+ 3 - 1
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/ProcessParticipateSqlTerm.java

@@ -24,7 +24,9 @@ public class ProcessParticipateSqlTerm extends AbstractSqlTermCustomer {
     public SqlAppender accept(String wherePrefix, Term term, RDBColumnMetaData column, String tableAlias) {
         ChangedTermValue termValue = createChangedTermValue(term);
         RDBColumnMetaData processInstanceId = column.getTableMetaData().findColumn("processInstanceId");
-
+        if (processInstanceId == null) {
+            throw new UnsupportedOperationException("未获取到属性:[processInstanceId]对应的列");
+        }
         List<Object> val = BoostTermTypeMapper.convertList(column, termValue.getOld());
 
         termValue.setValue(val);

+ 7 - 2
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/terms/TodoSqlTerm.java

@@ -11,6 +11,7 @@ import java.util.List;
 
 /**
  * 代办的任务查询条件
+ *
  * @author zhouhao
  * @since 3.0.0-RC
  */
@@ -23,12 +24,16 @@ public class TodoSqlTerm extends AbstractSqlTermCustomer {
     public SqlAppender accept(String wherePrefix, Term term, RDBColumnMetaData column, String tableAlias) {
         ChangedTermValue termValue = createChangedTermValue(term);
         RDBColumnMetaData processInstanceId = column.getTableMetaData().findColumn("processInstanceId");
-
+        if (processInstanceId == null) {
+            throw new UnsupportedOperationException("未获取到属性:[processInstanceId]对应的列");
+        }
         List<Object> val = BoostTermTypeMapper.convertList(column, termValue.getOld());
 
         termValue.setValue(val);
         SqlAppender appender = new SqlAppender();
-        appender.add("exists(select 1 from ACT_RU_TASK RES WHERE ", createColumnName(processInstanceId, tableAlias), "= RES.PROC_INST_ID_ and RES.ASSIGNEE_ ");
+        appender.add("exists(select 1 from ACT_RU_TASK RES WHERE ",
+                createColumnName(processInstanceId, tableAlias),
+                "= RES.PROC_INST_ID_ and RES.ASSIGNEE_ ");
         appendCondition(val, wherePrefix, appender);
         appender.add(")");
 

+ 17 - 1
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/web/FlowableProcessController.java

@@ -249,7 +249,6 @@ public class FlowableProcessController {
                                                             Authentication authentication) {
         Query.empty(query)
                 .nest()
-                //只能看到自己待办理
                 .when(type != null, q -> type.applyQueryTerm(q, authentication.getUser().getId()))
                 .end();
         return ResponseMessage.ok(workFlowFormService.selectProcessForm(processDefineId, query));
@@ -314,6 +313,23 @@ public class FlowableProcessController {
         return ResponseMessage.ok();
     }
 
+    @PutMapping("/reject/{taskId}")
+    @Authorize(merge = false)
+    @ApiOperation("驳回")
+    public ResponseMessage<Void> reject(@PathVariable String taskId,
+                                          @RequestBody(required = false) Map<String, Object> formData,
+                                          Authentication authentication) {
+//        bpmTaskService.reject();
+        // 办理
+        bpmTaskService.complete(CompleteTaskRequest.builder()
+                .taskId(taskId)
+                .completeUserId(authentication.getUser().getId())
+                .completeUserName(authentication.getUser().getName())
+                .formData(formData)
+                .build());
+        return ResponseMessage.ok();
+    }
+
     @PostMapping("/next-task-candidate/{taskId}")
     @Authorize(merge = false)
     public ResponseMessage<List<CandidateDetail>> candidateList(@PathVariable String taskId,

+ 14 - 0
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/resources/hsweb-starter.js

@@ -47,6 +47,20 @@ function install(context) {
         .addColumn().name("status").alias("status").comment("状态").jdbcType(java.sql.JDBCType.TINYINT).commit()
         .comment("工作流环节自定义配置")
         .commit();
+
+    database.createOrAlter("s_wf_proc_his")
+        .addColumn().name("u_id").alias("id").comment("ID").jdbcType(java.sql.JDBCType.VARCHAR).length(32).primaryKey().commit()
+        .addColumn().name("proc_def_key").alias("processDefineKey").comment("模板定义KEY").jdbcType(java.sql.JDBCType.VARCHAR).length(32).commit()
+        .addColumn().name("proc_def_id").alias("processDefineId").comment("模板定义ID").jdbcType(java.sql.JDBCType.VARCHAR).length(32).commit()
+        .addColumn().name("act_id").alias("activityId").comment("元图ID").jdbcType(java.sql.JDBCType.VARCHAR).length(32).commit()
+        .addColumn().name("form_id").alias("formId").comment("表单ID").length(32).jdbcType(java.sql.JDBCType.VARCHAR).commit()
+        .addColumn().name("template_id").alias("formTemplateId").length(32).comment("前端模板配置").jdbcType(java.sql.JDBCType.VARCHAR).commit()
+        .addColumn().name("candidate_dimension").alias("candidateDimension").comment("候选人维度").jdbcType(java.sql.JDBCType.CLOB).length(32).commit()
+        .addColumn().name("create_time").alias("createTime").comment("创建时间").datetime().commit()
+        .addColumn().name("update_time").alias("updateTime").comment("修改时间").datetime().commit()
+        .addColumn().name("status").alias("status").comment("状态").jdbcType(java.sql.JDBCType.TINYINT).commit()
+        .comment("工作流环节自定义配置")
+        .commit();
 }
 
 //设置依赖

+ 60 - 0
hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/workflow/ProcessHistoryMapper.xml

@@ -0,0 +1,60 @@
+<?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.workflow.dao.ProcessHistoryDao">
+    <resultMap id="ProcessHistoryEntityResultMap" type="org.hswebframework.web.workflow.dao.entity.ProcessHistoryEntity">
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <result property="type" column="type" javaType="String" jdbcType="VARCHAR"/>
+        <result property="typeText" column="type_text" javaType="String" jdbcType="VARCHAR"/>
+        <result property="processDefineId" column="proc_def_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="processInstanceId" column="proc_ins_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="taskId" column="task_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="taskDefineKey" column="task_def_key" javaType="String" jdbcType="VARCHAR"/>
+
+        <result property="taskName" column="task_name" javaType="String" jdbcType="VARCHAR"/>
+
+        <result property="businessKey" column="biz_key" javaType="String" jdbcType="VARCHAR"/>
+        <result property="data" column="biz_data" javaType="java.util.Map" jdbcType="CLOB"/>
+
+        <result property="createTime" column="create_time" javaType="date" jdbcType="TIMESTAMP"/>
+        <result property="creatorId" column="creator_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="creatorName" column="creator_name" javaType="String" jdbcType="VARCHAR"/>
+
+    </resultMap>
+
+    <!--用于动态生成sql所需的配置-->
+    <sql id="config">
+        <bind name="resultMapId" value="'ProcessHistoryEntityResultMap'"/>
+        <bind name="tableName" value="'s_wf_proc_his'"/>
+    </sql>
+
+    <insert id="insert" parameterType="org.hswebframework.web.workflow.dao.entity.ProcessHistoryEntity">
+        <include refid="config"/>
+        <include refid="BasicMapper.buildInsertSql"/>
+    </insert>
+
+    <delete id="deleteByPk" parameterType="String">
+        delete from s_wf_proc_his 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="ProcessHistoryEntityResultMap">
+        <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>