wangliang 3 жил өмнө
parent
commit
3f27dd1430

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/WorkResult.java

@@ -86,6 +86,17 @@ public class WorkResult implements Serializable {
     @ApiModelProperty(value = "任务节点id")
     String taskId;
 
+    @ApiModelProperty(value = "流程步骤")
+    Integer setup;
+
+    public Integer getSetup() {
+        return setup;
+    }
+
+    public void setSetup(Integer setup) {
+        this.setup = setup;
+    }
+
     public FlowStatusEnum getStatus() {
         return status;
     }

+ 2 - 13
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowLog.java

@@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.enums.FlowApproveOperationEnum;
-import com.qmth.teachcloud.common.enums.FlowApprovePassEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -47,17 +46,15 @@ public class TFFlowLog extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "审批操作,SUBMIT:提交,APPROVE:审批,REJECT:驳回,END:终止")
     private FlowApproveOperationEnum approveOperation;
 
-    @ApiModelProperty(value = "审批是否通过,PASS:通过,NO_PASS:不通过")
-    private FlowApprovePassEnum approvePass;
-
     public TFFlowLog() {
 
     }
 
-    public TFFlowLog(Long flowId, Long taskId, Long approveId, Long userId) {
+    public TFFlowLog(Long flowId, Long taskId, Long approveId, Long userId, String approveRemark) {
         this.flowId = flowId;
         this.approveId = approveId;
         this.taskId = taskId;
+        this.approveRemark = approveRemark;
         insertInfo(userId);
     }
 
@@ -69,14 +66,6 @@ public class TFFlowLog extends BaseEntity implements Serializable {
         this.approveOperation = approveOperation;
     }
 
-    public FlowApprovePassEnum getApprovePass() {
-        return approvePass;
-    }
-
-    public void setApprovePass(FlowApprovePassEnum approvePass) {
-        this.approvePass = approvePass;
-    }
-
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }

+ 0 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ActivitiService.java

@@ -63,13 +63,6 @@ public interface ActivitiService {
      */
     public void flowStart(Map<String, Object> map);
 
-    /**
-     * 记录流程日志
-     *
-     * @param map
-     */
-    public void flowLog(Map<String, Object> map);
-
     /**
      * 审批任务
      *

+ 35 - 41
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -1,32 +1,33 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.entity.TFFlowApprove;
 import com.qmth.distributed.print.business.entity.TFFlowLog;
 import com.qmth.distributed.print.business.service.ActivitiService;
+import com.qmth.distributed.print.business.service.ExamTaskService;
 import com.qmth.distributed.print.business.service.TFFlowApproveService;
 import com.qmth.distributed.print.business.service.TFFlowLogService;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.FlowApproveOperationEnum;
 import com.qmth.teachcloud.common.enums.FlowGdykdxApproveSetupEnum;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.util.ServletUtil;
-import org.activiti.bpmn.model.*;
-import org.activiti.bpmn.model.Process;
+import org.activiti.bpmn.model.BpmnModel;
+import org.activiti.bpmn.model.FlowNode;
+import org.activiti.bpmn.model.UserTask;
 import org.activiti.engine.HistoryService;
 import org.activiti.engine.RepositoryService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.TaskService;
 import org.activiti.engine.impl.RepositoryServiceImpl;
-import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
 import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
-import org.activiti.engine.impl.persistence.entity.TaskEntity;
 import org.activiti.engine.repository.DeploymentBuilder;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Task;
-import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -36,7 +37,10 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * @Description: activiti service impl
@@ -67,6 +71,9 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Resource
     HistoryService historyService;
 
+    @Resource
+    ExamTaskService examTaskService;
+
     /**
      * 注册流程
      *
@@ -139,7 +146,7 @@ public class ActivitiServiceImpl implements ActivitiService {
         log.info("流程id:{},processInstanceId:{},processDefinitionId:{},processDefinitionKey:{}", processInstance.getId(), processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(), processInstance.getProcessDefinitionKey());
         ProcessInstance finalProcessInstance = processInstance;
         map.computeIfAbsent(SystemConstant.FLOW_ID, v -> finalProcessInstance.getId());
-        map.computeIfAbsent(SystemConstant.FLOW_STATUS, v -> FlowStatusEnum.TO_BE_SUBMIT);
+        map.computeIfAbsent(SystemConstant.FLOW_STATUS, v -> FlowStatusEnum.START);
         ActivitiService activitiService = SpringContextHolder.getBean(ActivitiService.class);
         activitiService.flowStart(map);
         return processInstance;
@@ -182,7 +189,7 @@ public class ActivitiServiceImpl implements ActivitiService {
         if (Objects.isNull(map.get(SystemConstant.FLOW_ID))) {
             throw ExceptionResultEnum.ERROR.exception("流程id不能为空");
         }
-        Long flowId = (Long) map.get(SystemConstant.FLOW_ID);
+        Long flowId = Long.parseLong(map.get(SystemConstant.FLOW_ID).toString());
 
         if (Objects.isNull(map.get(SystemConstant.FLOW_STATUS))) {
             throw ExceptionResultEnum.ERROR.exception("流程状态不能为空");
@@ -193,37 +200,6 @@ public class ActivitiServiceImpl implements ActivitiService {
         tfFlowApproveService.save(new TFFlowApprove(flowId, approveId, flowStatusEnum, sysUser.getId()));
     }
 
-    /**
-     * 记录流程日志
-     *
-     * @param map
-     */
-    @Override
-    @Transactional
-    public void flowLog(Map<String, Object> map) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-
-        if (Objects.isNull(map.get(SystemConstant.FLOW_ID))) {
-            throw ExceptionResultEnum.ERROR.exception("流程id不能为空");
-        }
-        Long flowId = (Long) map.get(SystemConstant.FLOW_ID);
-
-        Long taskId = null;
-        if (Objects.nonNull(map.get(SystemConstant.TASK_ID))) {
-            taskId = (Long) map.get(SystemConstant.TASK_ID);
-        }
-
-        if (Objects.isNull(map.get(SystemConstant.FLOW_STATUS))) {
-            throw ExceptionResultEnum.ERROR.exception("流程状态不能为空");
-        }
-        FlowStatusEnum flowStatusEnum = (FlowStatusEnum) map.get(SystemConstant.FLOW_STATUS);
-
-        Long approveId = Objects.nonNull(map.get(SystemConstant.APPROVE_ID)) ? Long.parseLong(String.valueOf(map.get(SystemConstant.APPROVE_ID))) : null;
-        //增加流水
-        ActivitiService activitiService = SpringContextHolder.getBean(ActivitiService.class);
-        TFFlowLog tfFlowLog = new TFFlowLog(flowId, taskId, approveId, sysUser.getId());
-    }
-
     /**
      * 审批任务
      *
@@ -239,6 +215,10 @@ public class ActivitiServiceImpl implements ActivitiService {
         String flowTaskId = (String) map.get(SystemConstant.FLOW_TASK_ID);
         Task task = taskService.createTaskQuery().taskId(flowTaskId).singleResult();
         String processInstanceId = task.getProcessInstanceId();
+        QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
+        examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, Long.parseLong(processInstanceId));
+        ExamTask examTask = examTaskService.getOne(examTaskQueryWrapper);
+
         String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().getProcessDefinitionId();
         ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionId);
         String currActivityId = task.getTaskDefinitionKey();
@@ -247,12 +227,17 @@ public class ActivitiServiceImpl implements ActivitiService {
         QueryWrapper<TFFlowApprove> tfFlowApproveQueryWrapper = new QueryWrapper<>();
         tfFlowApproveQueryWrapper.lambda().eq(TFFlowApprove::getFlowId, processInstanceId);
         TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(tfFlowApproveQueryWrapper);
+        TFFlowLog tfFlowLog = null;
         if (currFlow instanceof UserTask) {
             UserTask userTask = (UserTask) currFlow;
             //广东医科大学流程
             if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                String remark = Objects.nonNull(map.get(SystemConstant.APPROVE_REMARK)) ? map.get(SystemConstant.APPROVE_REMARK).toString() : null;
+                tfFlowLog = new TFFlowLog(Long.parseLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId(), remark);
                 FlowGdykdxApproveSetupEnum setupEnum = FlowGdykdxApproveSetupEnum.convertToInstance(userTask.getId());
                 if (setupEnum == FlowGdykdxApproveSetupEnum.SUBMIT) {//命题提交
+                    tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup());
+                    tfFlowLog.setApproveOperation(FlowApproveOperationEnum.SUBMIT);
                     tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
                     tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup());
                 } else if (setupEnum == FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE) {//主任提交
@@ -260,10 +245,13 @@ public class ActivitiServiceImpl implements ActivitiService {
                         throw ExceptionResultEnum.ERROR.exception("流程变量不能为空");
                     }
                     String approve = map.get(SystemConstant.APPROVE).toString();
+                    tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup());
                     if (Objects.equals(approve, "0")) {//驳回命题
+                        tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
                         tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
                         tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup());
                     } else if (Objects.equals(approve, "1")) {//提交
+                        tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
                         tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
                         tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup());
                     } else {
@@ -274,13 +262,17 @@ public class ActivitiServiceImpl implements ActivitiService {
                         throw ExceptionResultEnum.ERROR.exception("流程变量不能为空");
                     }
                     String approve = map.get(SystemConstant.APPROVE).toString();
+                    tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup());
                     if (Objects.equals(approve, "0")) {//驳回命题
+                        tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
                         tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
                         tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup());
                     } else if (Objects.equals(approve, "1")) {//驳回主任
+                        tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
                         tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
                         tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup());
                     } else if (Objects.equals(approve, "2")) {//提交
+                        tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
                         tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
                         tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.END.getSetup());
                     } else {
@@ -290,10 +282,12 @@ public class ActivitiServiceImpl implements ActivitiService {
                 tfFlowApprove.updateInfo(sysUser.getId());
             }
         }
+        tfFlowApprove.setApproveId(sysUser.getId());
         //当前实例的执行到哪个节点
         taskService.complete(String.valueOf(flowTaskId), map);
         tfFlowApproveService.saveOrUpdate(tfFlowApprove);
-//        ActivitiService activitiService = SpringContextHolder.getBean(ActivitiService.class);
-//        activitiService.flowLog(map);
+        if (Objects.nonNull(tfFlowLog)) {
+            tfFlowLogService.save(tfFlowLog);
+        }
     }
 }

+ 18 - 35
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -688,44 +688,27 @@
         et.flow_id as flowId,
         art.NAME_ as taskName,
         art.TASK_DEF_KEY_ as taskDefKey,
-        art.ID_ as taskId
+        art.ID_ as taskId,
+        tffa.setup
         from
         (
-        SELECT
-        ari.USER_ID_ AS userId,
-        art.ID_ AS taskId,
-        art.PROC_INST_ID_ AS procInstId,
-        art.PROC_DEF_ID_ AS procDefId,
-        art.REV_ AS rev
-        FROM
-        act_ru_identitylink ari
-        left join ACT_RU_TASK art
-        on art.PROC_INST_ID_ = ari.PROC_INST_ID_
-        WHERE
-        EXISTS (
-        SELECT
-        t.PROC_INST_ID_
-        FROM
-        ACT_RU_TASK t
-        LEFT JOIN exam_task et ON
-        et.flow_id = t.PROC_INST_ID_
-        WHERE
-        ari.PROC_INST_ID_ = t.PROC_INST_ID_)
-        AND ari.USER_ID_ = #{userId}) flow
-        left join exam_task et
-        on
-        et.flow_id = flow.procInstId
-        LEFT JOIN
-        basic_card_rule b ON
-        et.card_rule_id = b.id
+        select
+        t.USER_ID_ as userId,
+        t.TASK_ID_ as taskId
+        from act_ru_identitylink t
+        where
+            EXISTS(
+            select art.ID_ from exam_task et
+            left join ACT_RU_TASK art on art.PROC_INST_ID_ = et.flow_id
+            where art.ID_ = t.TASK_ID_
+            )
+        and t.USER_ID_ = #{userId}) flow
+        left join ACT_RU_TASK art on art.ID_ = flow.taskId
+        left join exam_task et on et.flow_id = art.PROC_INST_ID_
         LEFT JOIN
-        sys_user c ON
-        flow.userId = c.id
-        left join t_f_flow_approve tffa
-        on
-        tffa.flow_id = et.flow_id
-        left join ACT_RU_TASK art on
-        art.PROC_INST_ID_ = et.flow_id
+        basic_card_rule b ON et.card_rule_id = b.id
+        LEFT JOIN sys_user c ON flow.userId = c.id
+        left join t_f_flow_approve tffa on tffa.flow_id = et.flow_id
         <where>
             <if test="schoolId != null and schoolId != ''">
                 and et.school_id = #{schoolId}

+ 0 - 5
distributed-print/src/main/java/com/qmth/distributed/print/api/TFFlowController.java

@@ -1,7 +1,6 @@
 package com.qmth.distributed.print.api;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
@@ -12,8 +11,6 @@ import com.qmth.distributed.print.business.entity.TFFlow;
 import com.qmth.distributed.print.business.service.ActivitiService;
 import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.distributed.print.business.service.TFFlowService;
-import com.qmth.teachcloud.common.base.BaseListPage;
-import com.qmth.teachcloud.common.base.BasePage;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -27,7 +24,6 @@ import com.qmth.teachcloud.common.util.ServletUtil;
 import io.swagger.annotations.*;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.TaskService;
-import org.activiti.engine.task.Task;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.dao.DuplicateKeyException;
@@ -40,7 +36,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -189,6 +189,7 @@ public class SystemConstant {
     public static final String FLOW_TASK_ID = "flowTaskId";//流程任务id
     public static final String APPROVE = "approve";//流程审核变量
     public static final String FLOW_STATUS = "flowStatus";//流程状态
+    public static final String APPROVE_REMARK = "approveRemark";//流程审批意见
 
     /**
      * 初始化附件文件路径

+ 0 - 42
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FlowApprovePassEnum.java

@@ -1,42 +0,0 @@
-package com.qmth.teachcloud.common.enums;
-
-import java.util.Objects;
-
-/**
- * @Description: 流程是否通过操作 enum
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2021/8/2
- */
-public enum FlowApprovePassEnum {
-
-    PASS("通过"),
-
-    NO_PASS("不通过");
-
-    private String title;
-
-    private FlowApprovePassEnum(String title) {
-        this.title = title;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    /**
-     * 状态转换 toName
-     *
-     * @param title
-     * @return
-     */
-    public static String convertToName(String title) {
-        for (FlowApprovePassEnum e : FlowApprovePassEnum.values()) {
-            if (Objects.equals(title, e.getTitle())) {
-                return e.name();
-            }
-        }
-        return null;
-    }
-}

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FlowStatusEnum.java

@@ -11,7 +11,7 @@ import java.util.Objects;
  */
 public enum FlowStatusEnum {
 
-    TO_BE_SUBMIT("待提交"),
+    START("START"),
 
     AUDITING("审核中"),