瀏覽代碼

feature: 服务授权申请流程调整(添加任务指派记录表及代码)

huangjy 4 年之前
父節點
當前提交
6772da2c10

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

@@ -5,11 +5,9 @@ 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;

+ 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> {
+}

+ 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;
+    }
+}

+ 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);
+}

+ 26 - 5
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/service/impl/ApproveService.java

@@ -22,15 +22,13 @@ 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.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;
 
     /**
      * 工作流审批流程类型编码
@@ -566,9 +566,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);
@@ -581,6 +583,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

+ 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);
+    }
+}

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

@@ -1,3 +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='任务指派记录表';

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

@@ -3,3 +3,29 @@ 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 '创建时间';
+