Explorar el Código

Merge branch 'release/v1.0.2-flow-update' into 'develop'

v1.0.2 合并代码

See merge request dcuc-tjdsj/approve-core!19
黄建赢 hace 4 años
padre
commit
04e42219ed
Se han modificado 20 ficheros con 585 adiciones y 77 borrados
  1. 1 1
      approve-api/pom.xml
  2. 48 0
      approve-api/src/main/java/com/dragonsoft/dcuc/approve/enumresources/ApproveResultEnum.java
  3. 4 0
      approve-api/src/main/java/com/dragonsoft/dcuc/approve/facade/IApiApproveFacade.java
  4. 13 2
      approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/req/ApprovalInfoDTO.java
  5. 13 0
      approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/req/ApprovalInfoUpdateDTO.java
  6. 29 12
      approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/req/ApproveOperateDTO.java
  7. 50 0
      approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/resp/TaskOutgoingVo.java
  8. 2 2
      approve-core-service/pom.xml
  9. 14 3
      approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/api/facade/ApiApproveFacade.java
  10. 1 1
      approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/facade/ApproveFacade.java
  11. 17 0
      approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/mapper/TaskAssignRecordMapper.java
  12. 5 0
      approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/model/ApprovalInfo.java
  13. 127 0
      approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/model/TaskAssignRecord.java
  14. 9 2
      approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/IApproveService.java
  15. 19 0
      approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/ITaskAssignRecordService.java
  16. 150 53
      approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/impl/ApproveService.java
  17. 36 0
      approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/impl/TaskAssignRecordService.java
  18. 15 0
      approve-core-service/src/main/resources/config/mysql/V1_1_0002__INITIAL.sql
  19. 31 0
      approve-core-service/src/main/resources/config/oracle/V1_1_0002__INITIAL.sql
  20. 1 1
      pom.xml

+ 1 - 1
approve-api/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>approve-core</artifactId>
         <groupId>com.dragoninfo.dcuc</groupId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.0.2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 48 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/enumresources/ApproveResultEnum.java

@@ -0,0 +1,48 @@
+package com.dragonsoft.dcuc.approve.enumresources;
+
+import com.dragonsoft.duceap.base.enums.ICodeEnum;
+
+/**
+ * 代码千万行,注释第一行,编码不规范,同事两行泪
+ *
+ * @author huang(jy)
+ * @version 1.0
+ * @date 2021/2/5 8:59
+ */
+public enum ApproveResultEnum implements ICodeEnum {
+    APPROVEING("APPROVEING", "审批中"),
+    DELETED("DELETED", "已删除"),
+    SUCCESS("SUCCESS", "成功"),
+    FAIL("FAIL", "失败"),
+    ;
+
+    public final String desc;
+    public final String code;
+
+    private ApproveResultEnum(String code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public String getValue() {
+        return this.code;
+    }
+
+    public String getLabel() {
+        return this.desc;
+    }
+
+    public static ApproveResultEnum getValue(String code) {
+        ApproveResultEnum[] var1 = values();
+        int var2 = var1.length;
+
+        for(int var3 = 0; var3 < var2; ++var3) {
+            ApproveResultEnum opEnum = var1[var3];
+            if (opEnum.getValue().equals(code)) {
+                return opEnum;
+            }
+        }
+
+        return null;
+    }
+}

+ 4 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/facade/IApiApproveFacade.java

@@ -64,4 +64,8 @@ public interface IApiApproveFacade {
     @ApiOperation(value = "同步应用,服务资源", notes = "同步应用,服务资源")
     @RequestMapping(value = "api/v1/sync-resource", method = RequestMethod.GET)
     ResponseStatus syncResource();
+
+    @ApiOperation(value = "根据任务ID查询任务分支(运行时任务)", notes = "根据任务ID查询任务分支(运行时任务)")
+    @RequestMapping(value = "api/v1/apply/tasks/task-out/{taskId}", method = RequestMethod.GET)
+    ResponseStatus taskOut(@PathVariable(value = "taskId") String taskId);
 }

+ 13 - 2
approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/req/ApprovalInfoDTO.java

@@ -1,16 +1,16 @@
 package com.dragonsoft.dcuc.approve.model.req;
 
+import com.dragonsoft.duceap.duwf.api.model.ActivitiHolder;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.hibernate.validator.constraints.Length;
-import org.springframework.validation.annotation.Validated;
 
 import javax.validation.Valid;
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.util.Date;
+import java.util.List;
 
 /**
  * Created by lidr on 2021/2/3
@@ -130,6 +130,9 @@ public class ApprovalInfoDTO {
         this.flowType = flowType;
     }
 
+    @ApiModelProperty(value = "下一任务对象信息")
+    private List<ActivitiHolder> activitiHolderList;
+
     public String getProcessTitle() {
         return processTitle;
     }
@@ -305,4 +308,12 @@ public class ApprovalInfoDTO {
     public void setMessageId(String messageId) {
         this.messageId = messageId;
     }
+
+    public List<ActivitiHolder> getActivitiHolderList() {
+        return activitiHolderList;
+    }
+
+    public void setActivitiHolderList(List<ActivitiHolder> activitiHolderList) {
+        this.activitiHolderList = activitiHolderList;
+    }
 }

+ 13 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/req/ApprovalInfoUpdateDTO.java

@@ -1,5 +1,6 @@
 package com.dragonsoft.dcuc.approve.model.req;
 
+import com.dragonsoft.duceap.duwf.api.model.ActivitiHolder;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -8,6 +9,7 @@ import javax.validation.Valid;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.util.Date;
+import java.util.List;
 
 /**
  * Created by lidr on 2021/2/3
@@ -105,6 +107,9 @@ public class ApprovalInfoUpdateDTO {
     @NotNull
     private ResourceInfoDTO resourceInfoDTO;
 
+    @ApiModelProperty(value = "下一任务对象信息")
+    private List<ActivitiHolder> activitiHolderList;
+
     public String getProcessTitle() {
         return processTitle;
     }
@@ -272,4 +277,12 @@ public class ApprovalInfoUpdateDTO {
     public void setEndTime(Date endTime) {
         this.endTime = endTime;
     }
+
+    public List<ActivitiHolder> getActivitiHolderList() {
+        return activitiHolderList;
+    }
+
+    public void setActivitiHolderList(List<ActivitiHolder> activitiHolderList) {
+        this.activitiHolderList = activitiHolderList;
+    }
 }

+ 29 - 12
approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/req/ApproveOperateDTO.java

@@ -1,6 +1,10 @@
 package com.dragonsoft.dcuc.approve.model.req;
 
+import com.dragonsoft.duceap.duwf.api.model.ActivitiHolder;
+import io.swagger.annotations.ApiModelProperty;
+
 import javax.validation.constraints.NotBlank;
+import java.util.List;
 
 /**
  * 代码千万行,注释第一行,编码不规范,同事两行泪
@@ -25,6 +29,23 @@ public class ApproveOperateDTO {
      */
     private String message;
 
+    /**
+     * 审批人信息
+     */
+    private String idCard;
+
+    private String userName;
+
+    /**
+     * 流程实例ID
+     */
+    private String processInstanceId;
+
+    @ApiModelProperty(value = "下一任务对象信息")
+    private List<ActivitiHolder> activitiHolderList;
+
+
+
     public String getIdCard() {
         return idCard;
     }
@@ -41,13 +62,6 @@ public class ApproveOperateDTO {
         this.userName = userName;
     }
 
-    /**
-     * 审批人信息
-     */
-    private String idCard;
-
-    private String userName;
-
     public String getProcessInstanceId() {
         return processInstanceId;
     }
@@ -56,11 +70,6 @@ public class ApproveOperateDTO {
         this.processInstanceId = processInstanceId;
     }
 
-    /**
-     * 流程实例ID
-     */
-    private String processInstanceId;
-
     public String getOperateType() {
         return operateType;
     }
@@ -84,4 +93,12 @@ public class ApproveOperateDTO {
     public void setMessage(String message) {
         this.message = message;
     }
+
+    public List<ActivitiHolder> getActivitiHolderList() {
+        return activitiHolderList;
+    }
+
+    public void setActivitiHolderList(List<ActivitiHolder> activitiHolderList) {
+        this.activitiHolderList = activitiHolderList;
+    }
 }

+ 50 - 0
approve-api/src/main/java/com/dragonsoft/dcuc/approve/model/resp/TaskOutgoingVo.java

@@ -0,0 +1,50 @@
+package com.dragonsoft.dcuc.approve.model.resp;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 代码千万行,注释第一行,编码不规范,同事两行泪
+ *
+ * @author huang(jy)
+ * @version 1.0
+ * @date 2021/5/18 11:02
+ */
+public class TaskOutgoingVo {
+    /**
+     * 任务定义id
+     */
+    @ApiModelProperty(value = "任务定义id")
+    private String taskDefinitionKey;
+    /**
+     * 任务名称
+     */
+    @ApiModelProperty(value = "任务名称")
+    private String name;
+
+    @ApiModelProperty(value = "任务标识码")
+    private String taskCode;
+
+    public String getTaskDefinitionKey() {
+        return taskDefinitionKey;
+    }
+
+    public void setTaskDefinitionKey(String taskDefinitionKey) {
+        this.taskDefinitionKey = taskDefinitionKey;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getTaskCode() {
+        return taskCode;
+    }
+
+    public void setTaskCode(String taskCode) {
+        this.taskCode = taskCode;
+    }
+}

+ 2 - 2
approve-core-service/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>approve-core</artifactId>
         <groupId>com.dragoninfo.dcuc</groupId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.0.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>approve-core-service</artifactId>
@@ -126,7 +126,7 @@
         <dependency>
             <groupId>com.dragoninfo.dcuc</groupId>
             <artifactId>approve-api</artifactId>
-            <version>1.0.1-SNAPSHOT</version>
+            <version>1.0.2-SNAPSHOT</version>
             <scope>compile</scope>
         </dependency>
         <dependency>

+ 14 - 3
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/facade/ApiApproveFacade.java → approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/api/facade/ApiApproveFacade.java

@@ -1,8 +1,9 @@
-package com.dragonsoft.dcuc.approve.facade;
+package com.dragonsoft.dcuc.approve.api.facade;
 
 import com.dragoninfo.dcuc.app.dto.ResourceRequestParamDTO;
 import com.dragoninfo.dcuc.app.facade.IResourceFacade;
 import com.dragonsoft.dcuc.approve.enumresources.ApproveWorkFlowOprationEnum;
+import com.dragonsoft.dcuc.approve.facade.IApiApproveFacade;
 import com.dragonsoft.dcuc.approve.model.req.ApprovalInfoDTO;
 import com.dragonsoft.dcuc.approve.model.req.ApprovalInfoUpdateDTO;
 import com.dragonsoft.dcuc.approve.model.req.ApproveOperateDTO;
@@ -23,7 +24,7 @@ import java.util.List;
 import java.util.Map;
 
 @RestController
-public class ApiApproveFacade implements IApiApproveFacade{
+public class ApiApproveFacade implements IApiApproveFacade {
     @Autowired
     private IApproveService approveService;
     @Autowired
@@ -65,6 +66,16 @@ public class ApiApproveFacade implements IApiApproveFacade{
         return ResponseDTO.success();
     }
 
+    /**
+     * 根据任务ID查询任务分支(运行时任务)
+     * @param taskId
+     * @return
+     */
+    @Override
+    public ResponseStatus taskOut(String taskId) {
+        return approveService.taskOut(taskId);
+    }
+
     @Override
     public ResponseStatus approveOperate(ApproveOperateDTO approveOperateDTO) {
         TaskRequest taskRequest = new TaskRequest();
@@ -78,7 +89,7 @@ public class ApiApproveFacade implements IApiApproveFacade{
         userData.put("userName",approveOperateDTO.getUserName());
         return approveService.approveOperate(approveOperateDTO.getTaskId(),approveOperateDTO.getProcessInstanceId(),
                 EnumUtils.enumOf(ApproveWorkFlowOprationEnum.class, approveOperateDTO.getOperateType()),
-                taskRequest,approveOperateDTO.getIdCard(),userData);
+                taskRequest,approveOperateDTO.getIdCard(),userData, approveOperateDTO.getActivitiHolderList());
     }
 
     @Override

+ 1 - 1
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/facade/ApproveFacade.java

@@ -86,7 +86,7 @@ public class ApproveFacade implements IApproveFacade {
         userData.put("userName",approveOperateDTO.getUserName());
         return approveService.approveOperate(approveOperateDTO.getTaskId(),approveOperateDTO.getProcessInstanceId(),
                 EnumUtils.enumOf(ApproveWorkFlowOprationEnum.class, approveOperateDTO.getOperateType()),
-                taskRequest,null,userData);
+                taskRequest,approveOperateDTO.getIdCard(),userData, approveOperateDTO.getActivitiHolderList());
     }
 
     /**

+ 17 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/mapper/TaskAssignRecordMapper.java

@@ -0,0 +1,17 @@
+package com.dragonsoft.dcuc.approve.mapper;
+
+import com.dragonsoft.dcuc.approve.model.TaskAssignRecord;
+import com.dragonsoft.duceap.mybaitsplus.core.BaseMybatisMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+
+/**
+ * 代码千万行,注释第一行,编码不规范,同事两行泪
+ *
+ * @author huang(jy)
+ * @version 1.0
+ * @date 2021/5/20 9:55
+ */
+@Mapper
+public interface TaskAssignRecordMapper extends BaseMybatisMapper<TaskAssignRecord> {
+}

+ 5 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/model/ApprovalInfo.java

@@ -205,6 +205,11 @@ public class ApprovalInfo extends IdEntity implements Serializable {
     //@Column(name =  "UPDATE_USER")
     private String updateUser;
 
+    /**
+     * 审批结果
+     */
+    private String approveResult;
+
     @Override
     public String toString(){
         return "ApprovalInfo{" +

+ 127 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/model/TaskAssignRecord.java

@@ -0,0 +1,127 @@
+package com.dragonsoft.dcuc.approve.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 代码千万行,注释第一行,编码不规范,同事两行泪
+ * 任务指派记录表
+ * @author huang(jy)
+ * @version 1.0
+ * @date 2021/5/20 9:55
+ */
+@TableName(value = "T_TASK_ASSIGN_RECORD")
+public class TaskAssignRecord extends IdEntity implements Serializable {
+
+    private static final long serialVersionUID = 5454155825318885342L;
+
+    /**
+     * 当前任务定义id
+     */
+    private String currentActivityId;
+
+    /**
+     * 当前任务名称
+     */
+    private String currentActivityName;
+
+    /**
+     * 下一任务定义id
+     */
+    private String nextActivityId;
+
+    /**
+     * 下一任务名称
+     */
+    private String nextActivityName;
+
+    /**
+     * 指派人
+     */
+    private String assignUser;
+
+    /**
+     * 指派人
+     */
+    private String operateType;
+
+    /**
+     * 创建人
+     */
+    private String createUser;
+
+    /**
+     * 创建时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date createTime;
+
+    public String getCurrentActivityId() {
+        return currentActivityId;
+    }
+
+    public void setCurrentActivityId(String currentActivityId) {
+        this.currentActivityId = currentActivityId;
+    }
+
+    public String getCurrentActivityName() {
+        return currentActivityName;
+    }
+
+    public void setCurrentActivityName(String currentActivityName) {
+        this.currentActivityName = currentActivityName;
+    }
+
+    public String getNextActivityId() {
+        return nextActivityId;
+    }
+
+    public void setNextActivityId(String nextActivityId) {
+        this.nextActivityId = nextActivityId;
+    }
+
+    public String getNextActivityName() {
+        return nextActivityName;
+    }
+
+    public void setNextActivityName(String nextActivityName) {
+        this.nextActivityName = nextActivityName;
+    }
+
+    public String getAssignUser() {
+        return assignUser;
+    }
+
+    public void setAssignUser(String assignUser) {
+        this.assignUser = assignUser;
+    }
+
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getOperateType() {
+        return operateType;
+    }
+
+    public void setOperateType(String operateType) {
+        this.operateType = operateType;
+    }
+}

+ 9 - 2
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/IApproveService.java

@@ -12,7 +12,6 @@ import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.core.search.Searchable;
 import com.dragonsoft.duceap.duwf.api.model.*;
 import org.springframework.data.domain.Page;
-import org.springframework.scheduling.annotation.EnableAsync;
 
 import java.util.List;
 import java.util.Map;
@@ -58,10 +57,11 @@ public interface IApproveService {
      * recall:撤回
      * @param taskId
      * @param taskRequest
+     * @param activitiHolderList
      */
     ResponseStatus approveOperate(String taskId, String processInstanceId,
                                   ApproveWorkFlowOprationEnum approveWorkFlowOprationEnum,
-                                  TaskRequest taskRequest, String idCard, Map<String,String> userData);
+                                  TaskRequest taskRequest, String idCard, Map<String, String> userData, List<ActivitiHolder> activitiHolderList);
 
     /**
      * 转办
@@ -147,4 +147,11 @@ public interface IApproveService {
      * @return
      */
     TaskOperateVo taskOperate(String taskId,String pageType);
+
+    /**
+     * 根据任务ID查询任务分支(运行时任务)
+     * @param taskId
+     * @return
+     */
+    ResponseStatus taskOut(String taskId);
 }

+ 19 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/ITaskAssignRecordService.java

@@ -0,0 +1,19 @@
+package com.dragonsoft.dcuc.approve.service;
+
+import com.dragonsoft.dcuc.approve.model.TaskAssignRecord;
+
+/**
+ * 代码千万行,注释第一行,编码不规范,同事两行泪
+ *
+ * @author huang(jy)
+ * @version 1.0
+ * @date 2021/2/3 19:43
+ */
+public interface ITaskAssignRecordService {
+
+    /**
+     * 保存任务指派记录
+     * @param assignRecord
+     */
+    void insertTaskAssignRecord(TaskAssignRecord assignRecord);
+}

+ 150 - 53
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/impl/ApproveService.java

@@ -16,21 +16,19 @@ import com.dragonsoft.approve.common.ErrorCode;
 import com.dragonsoft.dcuc.approve.componet.DcucHelper;
 import com.dragonsoft.dcuc.approve.config.ApproveConfig;
 import com.dragonsoft.dcuc.approve.config.KafkaConfig;
+import com.dragonsoft.dcuc.approve.enumresources.ApproveResultEnum;
 import com.dragonsoft.dcuc.approve.enumresources.ApproveWorkFlowOprationEnum;
 import com.dragonsoft.dcuc.approve.enumresources.OperateOptionEnum;
 import com.dragonsoft.dcuc.approve.enumresources.YesNoEnum;
 import com.dragonsoft.dcuc.approve.mapper.ApprovalInfoMapper;
 import com.dragonsoft.dcuc.approve.mapper.ApprovalResourceInfoMapper;
-import com.dragonsoft.dcuc.approve.model.ApprovalInfo;
-import com.dragonsoft.dcuc.approve.model.ApprovalResourceInfo;
-import com.dragonsoft.dcuc.approve.model.ApproveTaskRequestVo;
-import com.dragonsoft.dcuc.approve.model.IdEntity;
+import com.dragonsoft.dcuc.approve.model.*;
 import com.dragonsoft.dcuc.approve.model.req.AgentDTO;
 import com.dragonsoft.dcuc.approve.model.req.ApprovalInfoDTO;
 import com.dragonsoft.dcuc.approve.model.req.ApprovalInfoUpdateDTO;
-import com.dragonsoft.dcuc.approve.model.req.ApproveOperateDTO;
 import com.dragonsoft.dcuc.approve.model.resp.*;
 import com.dragonsoft.dcuc.approve.service.IApproveService;
+import com.dragonsoft.dcuc.approve.service.ITaskAssignRecordService;
 import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
 import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
@@ -47,8 +45,8 @@ import com.dragonsoft.duceap.core.entity.page.PageRequest;
 import com.dragonsoft.duceap.core.search.Searchable;
 import com.dragonsoft.duceap.core.search.enums.SearchOperator;
 import com.dragonsoft.duceap.duwf.api.enums.StateTypeEnum;
-import com.dragonsoft.duceap.duwf.api.model.ActivityNodeInfoVo;
 import com.dragonsoft.duceap.duwf.api.model.*;
+import com.dragonsoft.duceap.duwf.api.model.ActivityNodeInfoVo;
 import com.dragonsoft.duceap.workflow.client.WorkflowClientFactory;
 import com.dragonsoft.duceap.workflow.enums.WorkFlowOprationEnum;
 import com.dragonsoft.mq.client.model.entity.MessageInfoVo;
@@ -111,6 +109,8 @@ public class ApproveService implements IApproveService {
     private KafkaConfig kafkaConfig;
     @Autowired
     private ApproveConfig approveConfig;
+    @Autowired
+    private ITaskAssignRecordService taskAssignRecordService;
 
     /**
      * 工作流审批流程类型编码
@@ -240,8 +240,10 @@ public class ApproveService implements IApproveService {
             Map<String,String> userData = new HashMap<>();
             userData.put("idCard",approvalInfoDTO.getApplicantIdcard());
             userData.put("userName",approvalInfoDTO.getApplicantName());
-            this.buildTaskRequest(taskRequest,approvalInfo,userData);
+
+            this.buildTaskRequest(taskRequest,approvalInfo,userData, approvalInfoDTO.getActivitiHolderList(), vo.getTaskRunDetailVos().get(0).getId());
             boolean sendMessageFlag = true;
+            String approveResult = ApproveResultEnum.APPROVEING.getValue();
             if(CollectionUtils.isNotEmpty(vo.getTaskRunDetailVos())){
                 for(TaskHistoryDetailVo taskDetailVo: vo.getTaskRunDetailVos()){
                     vo = baseApproveOperate(taskDetailVo.getId(), ApproveWorkFlowOprationEnum.COMPLETE_AGREE,
@@ -254,8 +256,10 @@ public class ApproveService implements IApproveService {
                 logger.info("===发送消息标志:{}====",sendMessageFlag);
                 if(sendMessageFlag){
                     sendApproveResultMessage(vo.getProcessInstanceId(),approvalInfo.getMessageId(),ApproveWorkFlowOprationEnum.COMPLETE_AGREE);
+                    approveResult = ApproveResultEnum.SUCCESS.getValue();
                 }
             }
+            approvalInfo.setApproveResult(approveResult);
             approvalInfo = this.buildTaskInfoByProcessInstanceId(approvalInfo, vo.getTaskRunDetailVos());
             logger.info("===保存表单信息====");
             approvalInfoMapper.insert(approvalInfo);
@@ -358,7 +362,7 @@ public class ApproveService implements IApproveService {
                 Map<String,String> userData = new HashMap<>();
                 userData.put("idCard",approvalInfoDTO.getApplicantIdcard());
                 userData.put("userName",approvalInfoDTO.getApplicantName());
-                this.buildTaskRequest(taskRequest,approvalInfo,userData);
+                this.buildTaskRequest(taskRequest,approvalInfo,userData, approvalInfoDTO.getActivitiHolderList(), null);
                 boolean sendMessageFlag = true;
                 for(TaskHistoryDetailVo taskDetailVo: list){
                     ProcessInstanceVO vo = baseApproveOperate(taskDetailVo.getId(),
@@ -372,6 +376,7 @@ public class ApproveService implements IApproveService {
                 logger.info("====发送结果标志:{}",sendMessageFlag);
                 if(sendMessageFlag){
                     sendApproveResultMessage(approvalInfo.getProcessInstanceId(),approvalInfo.getMessageId(),ApproveWorkFlowOprationEnum.COMPLETE_AGREE);
+                    approvalInfo.setApproveResult(ApproveResultEnum.SUCCESS.getValue());
                 }
                 logger.info("===保存表单信息====");
                 //approvalInfoMapper.updateById(approvalInfo);
@@ -408,9 +413,13 @@ public class ApproveService implements IApproveService {
     /**
      * 构建工作流请求体
      * @param taskRequest
+     * @param approvalInfo
+     * @param userData
+     * @param activitiHolderList
+     * @param taskId     任务id,新增时需要手动传(因为新增的时候没有任务id可以查询)
      * @return
      */
-    private TaskRequest buildTaskRequest(TaskRequest taskRequest,ApprovalInfo approvalInfo,Map<String,String> userData) {
+    private TaskRequest buildTaskRequest(TaskRequest taskRequest, ApprovalInfo approvalInfo, Map<String, String> userData, List<ActivitiHolder> activitiHolderList, String taskId) {
         String idCard = "";
         if(null != approvalInfo && StringUtils.isNotEmpty(approvalInfo.getApplicantIdcard())){
             idCard = approvalInfo.getApplicantIdcard();
@@ -435,6 +444,18 @@ public class ApproveService implements IApproveService {
         approveTaskRequestVo.setHandleUser(userInfo == null?userData.get("idCard"):userInfo.getIdcard());
         approveTaskRequestVo.setHandleUserName(userInfo == null?userData.get("userName"):userInfo.getUserName());
         taskRequest.setData(approveTaskRequestVo);
+        if (CollectionUtils.isNotEmpty(activitiHolderList)){
+            TransMessage transMessage = new TransMessage();
+            if (StringUtils.isNotEmpty(taskId)){
+                //通过任务id获取任务分支
+                List<TaskOutgoingVo> list = buildTaskOutgoingVoList(taskId);
+                for (ActivitiHolder activitiHolder: activitiHolderList){
+                    activitiHolder.setTaskDefinitionKey(list.get(0).getTaskDefinitionKey());
+                }
+            }
+            transMessage.setActivitiHolders(activitiHolderList);
+            taskRequest.setTransMessage(transMessage);
+        }
         return  taskRequest;
     }
 
@@ -446,11 +467,12 @@ public class ApproveService implements IApproveService {
      * @param taskId                      任务id
      * @param approveWorkFlowOprationEnum
      * @param taskRequest
+     * @param activitiHolderList
      * @return
      */
     @Override
-    public ResponseStatus approveOperate(String taskId,String processInstanceId, ApproveWorkFlowOprationEnum
-            approveWorkFlowOprationEnum, TaskRequest taskRequest,String idcard,Map<String,String> userData) {
+    public ResponseStatus approveOperate(String taskId, String processInstanceId, ApproveWorkFlowOprationEnum
+            approveWorkFlowOprationEnum, TaskRequest taskRequest, String idcard, Map<String, String> userData, List<ActivitiHolder> activitiHolderList) {
         ApprovalInfo approvalInfo = null;
         LambdaQueryWrapper<ApprovalInfo> where = null;
         if(approvalInfo == null){
@@ -488,7 +510,7 @@ public class ApproveService implements IApproveService {
                 }
             }
         }
-        this.buildTaskRequest(taskRequest,approvalInfo,userData);
+        this.buildTaskRequest(taskRequest,approvalInfo,userData, activitiHolderList, null);
         String idCard = getCurrentUserId(idcard);
         ProcessInstanceVO processInstanceVO= baseApproveOperate(taskId,approveWorkFlowOprationEnum,
                 taskRequest, approvalInfo,idCard,userData);
@@ -498,7 +520,18 @@ public class ApproveService implements IApproveService {
         }
         logger.info("====是否发送消息标志位:{}====",sendMessageFlag);
         if(sendMessageFlag){
-            sendApproveResultMessage(processInstanceVO.getProcessInstanceId(),approvalInfo.getMessageId(),ApproveWorkFlowOprationEnum.COMPLETE_AGREE);
+            sendApproveResultMessage(processInstanceVO.getProcessInstanceId(),approvalInfo.getMessageId(), approveWorkFlowOprationEnum);
+            switch (approveWorkFlowOprationEnum){
+                case COMPLETE_AGREE:
+                    approvalInfo.setApproveResult(ApproveResultEnum.SUCCESS.getValue());
+                    break;
+                case COMPLETE_DISAGREE:
+                    approvalInfo.setApproveResult(ApproveResultEnum.FAIL.getValue());
+                    break;
+                default:
+                    break;
+            }
+
         }
        /* where = new LambdaQueryWrapper<>();
         where.eq(ApprovalInfo::getProcessInstanceId,processInstanceVO.getProcessInstanceId());
@@ -521,7 +554,7 @@ public class ApproveService implements IApproveService {
      */
     public ProcessInstanceVO baseApproveOperate(String taskId, ApproveWorkFlowOprationEnum
             approveWorkFlowOprationEnum, TaskRequest taskRequest, ApprovalInfo approvalInfo,String idCard,Map<String,String> userData) {
-        taskRequest = buildTaskRequest(taskRequest,approvalInfo,userData);
+        taskRequest = buildTaskRequest(taskRequest,approvalInfo,userData, null, null);
         if (null == taskRequest.getApproveMessage()) {
             ApproveMessage approveMessage = new ApproveMessage();
             approveMessage.setApproveState(approveWorkFlowOprationEnum.getValue());
@@ -535,9 +568,11 @@ public class ApproveService implements IApproveService {
         switch (approveWorkFlowOprationEnum) {
             case COMPLETE_AGREE:
                 vo = workflowClientFactory.getWorkflowTaskClient().commitTask(taskId, taskRequest, WorkFlowOprationEnum.COMPLETE_AGREE, idCard);
+                insertTaskAssignRecord(vo, approveWorkFlowOprationEnum, idCard, taskRequest);
                 break;
             case COMPLETE_DISAGREE:
                 vo = workflowClientFactory.getWorkflowTaskClient().commitTask(taskId, taskRequest, WorkFlowOprationEnum.COMPLETE_DISAGREE, idCard);
+                insertTaskAssignRecord(vo, approveWorkFlowOprationEnum, idCard, taskRequest);
                 break;
             case BACK:
                 vo = workflowClientFactory.getWorkflowTaskClient().backTask(taskId,taskRequest, idCard);
@@ -550,6 +585,25 @@ public class ApproveService implements IApproveService {
         }
         return vo;
     }
+
+    private void insertTaskAssignRecord(ProcessInstanceVO vo, ApproveWorkFlowOprationEnum oprationEnum, String idCard, TaskRequest taskRequest) {
+        if (taskRequest.getTransMessage() != null && CollectionUtils.isNotEmpty(vo.getTaskRunDetailVos())){
+            for (TaskHistoryDetailVo taskHistoryDetailVo: vo.getTaskRunDetailVos()){
+                TaskAssignRecord assignRecord = new TaskAssignRecord();
+                assignRecord.setAssignUser(taskHistoryDetailVo.getAssignee());
+                assignRecord.setNextActivityId(taskHistoryDetailVo.getTaskDefinitionKey());
+                assignRecord.setNextActivityName(taskHistoryDetailVo.getName());
+                assignRecord.setCurrentActivityId(vo.getTaskHistoryDetailVo().getTaskDefinitionKey());
+                assignRecord.setCurrentActivityName(vo.getTaskHistoryDetailVo().getName());
+                assignRecord.setOperateType(oprationEnum.getValue());
+                assignRecord.setCreateTime(new Date());
+                assignRecord.setCreateUser(idCard);
+                taskAssignRecordService.insertTaskAssignRecord(assignRecord);
+            }
+        }
+
+    }
+
     /**
      * 任务转办
      * @param agentDTO
@@ -728,7 +782,6 @@ public class ApproveService implements IApproveService {
                 Map<String,String> userData = new HashMap<>();
                 userData.put("idCard",approvalInfo.getApplicantIdcard());
                 userData.put("userName",approvalInfo.getApplicantName());
-                TaskRequest taskRequest = this.buildTaskRequest(null, approvalInfo,userData);
                 for(String taskId : arrTaskId){
                     //执行流程撤销操作,撤销会删除流程
                     workflowClientFactory.getWorkflowTaskClient().handleTaskForRedo(taskId,getCurrentUserId());
@@ -745,6 +798,7 @@ public class ApproveService implements IApproveService {
             LambdaUpdateWrapper<ApprovalInfo> updateWrapper = new LambdaUpdateWrapper<>();
             updateWrapper.eq(IdEntity::getId,id);
             updateWrapper.set(ApprovalInfo::getIsDeleted,YesNoEnum.YES.getValue());
+            updateWrapper.set(ApprovalInfo::getApproveResult, ApproveResultEnum.DELETED.getValue());
             approvalInfoMapper.update(null,updateWrapper);
             sendApproveResultMessage(approvalInfo.getProcessInstanceId(),approvalInfo.getMessageId(),ApproveWorkFlowOprationEnum.RECALL);
         }
@@ -774,7 +828,6 @@ public class ApproveService implements IApproveService {
         approvalInfoVo.setResourceInfoVo(resourceInfoVo);
         return ResponseDTO.newInstance(approvalInfoVo);
     }
-
     /**
      * 设置是否显示撤回按钮
      * @param taskOperateVo
@@ -783,20 +836,28 @@ public class ApproveService implements IApproveService {
      */
     private void appendShowBack(TaskOperateVo taskOperateVo, String taskId, String processInstanceId,OutgoingVo outgoingVo,String pageType) {
         ApprovalInfo approvalInfo = this.findApprovalInfo(processInstanceId, "");
+
+        List<String> taskDefinitionKeyList = new ArrayList<>();
+        for (TaskDefinitionVo taskDefinitionVo: outgoingVo.getTaskDefinitionVoList()){
+            taskDefinitionKeyList.add(taskDefinitionVo.getTaskDefinitionKey());
+        }
+
         if(approvalInfo.getTaskId().equalsIgnoreCase(endStr)){
             //流程结束不能撤回
             taskOperateVo.setShowBack(false);
             return;
         }else {
-            String HistoryTaskDefinitionKey = "";
+            String historyTaskDefinitionKey = "";
             if (pageType.equalsIgnoreCase(myRequestPage)) {
-                Map<String, String> out = outgoingVo.getOutgoingTransitions();
-                Set<String> strings = out.keySet();
-                String next = strings.iterator().next();
-                HistoryTaskDefinitionKey = next;
+//                Map<String, String> out = outgoingVo.getOutgoingTransitions();
+//                Set<String> strings = out.keySet();
+//                String next = strings.iterator().next();
+//                historyTaskDefinitionKey = next;
+                historyTaskDefinitionKey = outgoingVo.getTaskDefinitionVoList().get(0).getTaskDefinitionKey();
+
             }else {
                 TaskHistoryDetailVo currentTask = workflowClientFactory.getWorkflowTaskClient().queryTaskDetail(taskId);
-                HistoryTaskDefinitionKey = currentTask.getTaskDefinitionKey();
+                historyTaskDefinitionKey = currentTask.getTaskDefinitionKey();
             }
             /**
              * 1. 判断是否为第一个节点,是则不能撤回
@@ -806,7 +867,7 @@ public class ApproveService implements IApproveService {
             //1.判断是否为第一个节点,是则不能撤回
             TaskHistoryDetailVo taskHistoryDetailVo = workflowClientFactory.getWorkflowTaskClient().queryTaskDetail(approvalInfo.getTaskId());
             String taskDefinitionKey = taskHistoryDetailVo.getTaskDefinitionKey();
-            if(outgoingVo.getOutgoingTransitions().containsKey(taskDefinitionKey)){
+            if(taskDefinitionKeyList.contains(taskDefinitionKey)){
                 taskOperateVo.setShowBack(false);
                 return;
             }
@@ -841,7 +902,7 @@ public class ApproveService implements IApproveService {
                 if(approveCommentVo.getId().equalsIgnoreCase(taskDefinitionKey)){
                     finishTaskIndexPosition = index;
                 }
-                if(approveCommentVo.getId().equalsIgnoreCase(HistoryTaskDefinitionKey)){
+                if(approveCommentVo.getId().equalsIgnoreCase(historyTaskDefinitionKey)){
                     currentTaskIndexPosition = index;
                 }
                 index++;
@@ -929,6 +990,39 @@ public class ApproveService implements IApproveService {
         return taskOperateVo;
     }
 
+    /**
+     * 根据任务ID查询任务分支(运行时任务)
+     * @param taskId
+     * @return
+     */
+    @Override
+    public ResponseStatus taskOut(String taskId) {
+        List<TaskOutgoingVo> list = buildTaskOutgoingVoList(taskId);
+        return ResponseDTO.newInstance(list);
+    }
+
+    /**
+     * 查询任务分支(运行时任务)
+     * @param taskId
+     * @return
+     */
+    private List<TaskOutgoingVo> buildTaskOutgoingVoList(String taskId) {
+        OutgoingVo outgoingVo = workflowClientFactory.getWorkflowTaskClient().queryTaskOutgoing(taskId);
+        List<TaskOutgoingVo> list = new ArrayList<>();
+
+        for (TaskDefinitionVo taskDefinitionVo: outgoingVo.getTaskDefinitionVoList()){
+            if (!"end".equalsIgnoreCase(taskDefinitionVo.getTaskDefinitionKey())){
+                TaskOutgoingVo taskOutgoingVo = new TaskOutgoingVo();
+                taskOutgoingVo.setTaskDefinitionKey(taskDefinitionVo.getTaskDefinitionKey());
+                taskOutgoingVo.setName(taskDefinitionVo.getName());
+                taskOutgoingVo.setTaskCode(taskDefinitionVo.getTaskCode());
+                list.add(taskOutgoingVo);
+            }
+        }
+        return list;
+    }
+
+
     /**
      * 判断是否为第一个节点,是则允许编辑
      * @param taskOperateVo
@@ -936,7 +1030,12 @@ public class ApproveService implements IApproveService {
      * @param taskDefinitionKey
      */
     private void appendShowEdit(TaskOperateVo taskOperateVo, OutgoingVo outgoingVo, String taskDefinitionKey) {
-        Boolean showEdit = outgoingVo.getOutgoingTransitions().get(taskDefinitionKey) != null;
+        List<String> taskDefinitionKeyList = new ArrayList<>();
+        for (TaskDefinitionVo taskDefinitionVo: outgoingVo.getTaskDefinitionVoList()){
+            taskDefinitionKeyList.add(taskDefinitionVo.getTaskDefinitionKey());
+        }
+//        Boolean showEdit = outgoingVo.getOutgoingTransitions().get(taskDefinitionKey) != null;
+        Boolean showEdit = taskDefinitionKeyList.contains(taskDefinitionKey);
         taskOperateVo.setShowEdit(showEdit);
     }
 
@@ -1158,34 +1257,32 @@ public class ApproveService implements IApproveService {
     private void sendApproveResultMessage(String processInstanceId,String messageId, ApproveWorkFlowOprationEnum approveWorkFlowOprationEnum){
         logger.info("====任务结束,开始发送消息====");
         //流程结束且是同意操作才发消息
-        if(approveWorkFlowOprationEnum.getValue().equalsIgnoreCase(ApproveWorkFlowOprationEnum.COMPLETE_AGREE.getValue())){
-            RequestVo requestVo = new RequestVo();
-            MessageInfoVo messageInfoVo = new MessageInfoVo();
-            Map map = new HashMap();
-            map.put("processInstanceId", processInstanceId);
-            map.put("approveResult",approveWorkFlowOprationEnum.getValue());
-            map.put("messageId",messageId);
-            List<Map<String,String>> infoSet = new ArrayList<>();
-            infoSet.add(map);
-            messageInfoVo.setTitle("审批系统-权限申请审批");
-            messageInfoVo.setCreateTime(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
-            messageInfoVo.setInfoSet(infoSet);
-            messageInfoVo.setContent(processInstanceId);
-            messageInfoVo.setUserSystem("审批系统");
-            messageInfoVo.setUserSystemCode(businessSystem);
-            messageInfoVo.setUserName("审批系统");
-            messageInfoVo.setMessageId(UUIDUtils.getUUID());
-            messageInfoVo.setInfoType(kafkaConfig.getAuthServiceApplyTopic());
-            List<MessageInfoVo> messageInfoVos = new ArrayList<>();
-            messageInfoVos.add(messageInfoVo);
-            //设置消息
-            requestVo.setMessages(messageInfoVos);
-            requestVo.setTopic(kafkaConfig.getAuthServiceApplyTopic());
-            requestVo.setAppKey(kafkaConfig.getAppKey());
-            requestVo.setAppSecret(kafkaConfig.getAppSecret());
-            logger.info("====kafka开始推送结果,实例ID{}====", processInstanceId);
-            kafkaService.send(requestVo, kafkaConfig.getKafkaServers());
-        }
+        RequestVo requestVo = new RequestVo();
+        MessageInfoVo messageInfoVo = new MessageInfoVo();
+        Map map = new HashMap();
+        map.put("processInstanceId", processInstanceId);
+        map.put("approveResult",approveWorkFlowOprationEnum.getValue());
+        map.put("messageId",messageId);
+        List<Map<String,String>> infoSet = new ArrayList<>();
+        infoSet.add(map);
+        messageInfoVo.setTitle("审批系统-权限申请审批");
+        messageInfoVo.setCreateTime(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
+        messageInfoVo.setInfoSet(infoSet);
+        messageInfoVo.setContent(processInstanceId);
+        messageInfoVo.setUserSystem("审批系统");
+        messageInfoVo.setUserSystemCode(businessSystem);
+        messageInfoVo.setUserName("审批系统");
+        messageInfoVo.setMessageId(UUIDUtils.getUUID());
+        messageInfoVo.setInfoType(kafkaConfig.getAuthServiceApplyTopic());
+        List<MessageInfoVo> messageInfoVos = new ArrayList<>();
+        messageInfoVos.add(messageInfoVo);
+        //设置消息
+        requestVo.setMessages(messageInfoVos);
+        requestVo.setTopic(kafkaConfig.getAuthServiceApplyTopic());
+        requestVo.setAppKey(kafkaConfig.getAppKey());
+        requestVo.setAppSecret(kafkaConfig.getAppSecret());
+        logger.info("====kafka开始推送结果,实例ID{}====,消息体为:{}", processInstanceId, JSON.toJSONString(requestVo));
+        kafkaService.send(requestVo, kafkaConfig.getKafkaServers());
     }
 
     private void updateApprovalById(ApprovalInfo approvalInfo){

+ 36 - 0
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/impl/TaskAssignRecordService.java

@@ -0,0 +1,36 @@
+package com.dragonsoft.dcuc.approve.service.impl;
+
+import com.dragonsoft.dcuc.approve.mapper.TaskAssignRecordMapper;
+import com.dragonsoft.dcuc.approve.model.TaskAssignRecord;
+import com.dragonsoft.dcuc.approve.service.ITaskAssignRecordService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 代码千万行,注释第一行,编码不规范,同事两行泪
+ *
+ * @author huang(jy)
+ * @version 1.0
+ * @date 2021/2/3 19:43
+ */
+@Service
+@Transactional
+@EnableAsync
+public class TaskAssignRecordService implements ITaskAssignRecordService {
+
+    private static final Logger logger = LoggerFactory.getLogger(TaskAssignRecordService.class);
+
+
+    @Autowired
+    private TaskAssignRecordMapper taskAssignRecordMapper;
+
+
+    @Override
+    public void insertTaskAssignRecord(TaskAssignRecord assignRecord) {
+        taskAssignRecordMapper.insert(assignRecord);
+    }
+}

+ 15 - 0
approve-core-service/src/main/resources/config/mysql/V1_1_0002__INITIAL.sql

@@ -0,0 +1,15 @@
+ALTER TABLE `t_approval_info`
+ADD COLUMN `APPROVE_RESULT`  varchar(50) NULL COMMENT '审批结果(成功:SUCCESS;失败:FAIL)' AFTER `UPDATE_TIME`;
+
+CREATE TABLE `t_task_assign_record` (
+  `id` varchar(32) NOT NULL COMMENT '主键ID',
+  `current_activity_id` varchar(100) NOT NULL COMMENT '当前任务定义id',
+  `current_activity_name` varchar(100) DEFAULT NULL COMMENT '当前任务名称',
+  `next_activity_id` varchar(100) NOT NULL COMMENT '下一任务定义id',
+  `next_activity_name` varchar(100) DEFAULT NULL COMMENT '下一任务名称',
+  `assign_user` varchar(32) DEFAULT NULL COMMENT '指定人',
+  `operate_type` varchar(50) DEFAULT NULL COMMENT '操作类型(详见ApproveWorkFlowOprationEnum枚举)',
+  `create_time` datetime NOT NULL COMMENT '创建时间',
+  `create_user` varchar(50) NOT NULL COMMENT '创建人',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='任务指派记录表';

+ 31 - 0
approve-core-service/src/main/resources/config/oracle/V1_1_0002__INITIAL.sql

@@ -0,0 +1,31 @@
+ALTER TABLE "T_APPROVAL_INFO"
+ADD ( "APPROVE_RESULT" VARCHAR2(50) DEFAULT NULL  ) ;
+
+COMMENT ON COLUMN "T_APPROVAL_INFO"."APPROVE_RESULT" IS '审批结果(成功:SUCCESS;失败:FAIL)';
+
+
+
+create table T_TASK_ASSIGN_RECORD
+(
+  ID                      VARCHAR2(32) NOT NULL,
+  CURRENT_ACTIVITY_ID           VARCHAR2(100) NOT NULL,
+  CURRENT_ACTIVITY_NAME            VARCHAR2(100),
+  NEXT_ACTIVITY_ID       varchar2(100) NOT NULL,
+  NEXT_ACTIVITY_NAME           VARCHAR2(100),
+  ASSIGN_USER            VARCHAR2(32) NOT NULL,
+  OPERATE_TYPE            VARCHAR2(50) NOT NULL,
+  CREATE_USER             VARCHAR2(32) NOT NULL,
+  CREATE_TIME             TIMESTAMP(6) NOT NULL,
+  PRIMARY KEY ("ID")
+);
+COMMENT ON TABLE "T_TASK_ASSIGN_RECORD" IS '任务指派记录表';
+COMMENT ON COLUMN "T_TASK_ASSIGN_RECORD"."ID" IS '';
+COMMENT ON COLUMN "T_TASK_ASSIGN_RECORD"."CURRENT_ACTIVITY_ID" IS '当前任务定义id';
+COMMENT ON COLUMN "T_TASK_ASSIGN_RECORD"."CURRENT_ACTIVITY_NAME" IS '当前任务名称';
+COMMENT ON COLUMN "T_TASK_ASSIGN_RECORD"."NEXT_ACTIVITY_ID" IS '下一任务定义id';
+COMMENT ON COLUMN "T_TASK_ASSIGN_RECORD"."NEXT_ACTIVITY_NAME" IS '下一任务名称';
+COMMENT ON COLUMN "T_TASK_ASSIGN_RECORD"."ASSIGN_USER" IS '指定人';
+COMMENT ON COLUMN "T_TASK_ASSIGN_RECORD"."OPERATE_TYPE" IS '操作类型(详见ApproveWorkFlowOprationEnum枚举)';
+COMMENT ON COLUMN "T_TASK_ASSIGN_RECORD"."CREATE_USER" IS '创建人';
+COMMENT ON COLUMN "T_TASK_ASSIGN_RECORD"."CREATE_TIME" IS '创建时间';
+

+ 1 - 1
pom.xml

@@ -5,7 +5,7 @@
 
 
     <groupId>com.dragoninfo.dcuc</groupId>
-    <version>1.0.1-SNAPSHOT</version>
+    <version>1.0.2-SNAPSHOT</version>
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>approve-core</artifactId>