Browse Source

流程修改

wangliang 4 năm trước cách đây
mục cha
commit
3d6fa81600

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTask.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -115,6 +116,7 @@ public class ExamTask extends BaseEntity implements Serializable {
 
     @ApiModelProperty(value = "流程id")
     @JsonSerialize(using = ToStringSerializer.class)
+    @TableField(value = "flow_id", updateStrategy = FieldStrategy.IGNORED)
     private Long flowId;
 
     public Long getFlowId() {

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowApproveLog.java

@@ -66,6 +66,9 @@ public class TFFlowApproveLog extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "是否启用,0:停用,1:启用")
     private Boolean enable;
 
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
     public TFFlowApproveLog() {
 
     }
@@ -80,6 +83,14 @@ public class TFFlowApproveLog extends BaseEntity implements Serializable {
         insertInfo(userId);
     }
 
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
     public Long getSchoolId() {
         return schoolId;
     }

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

@@ -1,7 +1,9 @@
 package com.qmth.distributed.print.business.service;
 
 import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
+import org.activiti.bpmn.model.FlowNode;
 import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Task;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;

+ 52 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -7,6 +7,7 @@ import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.entity.TFFlowApprove;
 import com.qmth.distributed.print.business.entity.TFFlowApproveLog;
 import com.qmth.distributed.print.business.entity.TFFlowLog;
+import com.qmth.distributed.print.business.enums.ExamStatusEnum;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -15,8 +16,8 @@ import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
-import org.activiti.bpmn.model.*;
 import org.activiti.bpmn.model.Process;
+import org.activiti.bpmn.model.*;
 import org.activiti.engine.HistoryService;
 import org.activiti.engine.RepositoryService;
 import org.activiti.engine.RuntimeService;
@@ -175,6 +176,7 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Override
     @Transactional
     public void flowEnd(String flowId) {
+        Task task = taskService.createTaskQuery().processInstanceId(flowId).singleResult();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         runtimeService.deleteProcessInstance(flowId, FlowGdykdxApproveSetupEnum.END.getTitle());
         //流程审批
@@ -186,6 +188,7 @@ public class ActivitiServiceImpl implements ActivitiService {
         } else {
             tfFlowApprove.setStatus(FlowStatusEnum.END);
             tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.END.getSetup());
+            tfFlowApprove.updateInfo(sysUser.getId());
         }
         tfFlowApproveService.saveOrUpdate(tfFlowApprove);
 
@@ -194,7 +197,54 @@ public class ActivitiServiceImpl implements ActivitiService {
         examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, Long.parseLong(flowId));
         ExamTask examTask = examTaskService.getOne(examTaskQueryWrapper);
         TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId(), FlowGdykdxApproveSetupEnum.END.getTitle());
+        tfFlowLog.setApproveOperation(FlowApproveOperationEnum.END);
+        tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.END.getSetup());
         tfFlowLogService.save(tfFlowLog);
+
+        if (Objects.nonNull(task)) {
+            String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(flowId).singleResult().getProcessDefinitionId();
+            ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionId);
+            //获取当前流程节点
+            String currActivityId = task.getTaskDefinitionKey();
+            BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
+            FlowNode currFlow = (FlowNode) bpmnModel.getMainProcess().getFlowElement(currActivityId);
+            if (currFlow instanceof UserTask) {
+                UserTask userTask = (UserTask) currFlow;
+                //广东医科大学流程
+                if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                    //流程审批记录
+                    QueryWrapper<TFFlowApproveLog> tfFlowApproveLogQueryWrapper = new QueryWrapper<>();
+                    tfFlowApproveLogQueryWrapper.lambda().eq(TFFlowApproveLog::getFlowId, Long.parseLong(flowId))
+                            .eq(TFFlowApproveLog::getTaskId, examTask.getId());
+                    TFFlowApproveLog tfFlowApproveLog = tfFlowApproveLogService.getOne(tfFlowApproveLogQueryWrapper);
+                    if (Objects.isNull(tfFlowApproveLog)) {
+                        tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId());
+                    }
+
+                    FlowGdykdxApproveSetupEnum setupEnum = FlowGdykdxApproveSetupEnum.convertToInstance(userTask.getId());
+                    if (setupEnum == FlowGdykdxApproveSetupEnum.SUBMIT) {//命题
+                        tfFlowApproveLog.setStartId(sysUser.getId());
+                        tfFlowApproveLog.setRemark(FlowGdykdxApproveSetupEnum.SUBMIT.getTitle() + FlowApproveOperationEnum.END.getTitle());
+                    } else if (setupEnum == FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE) {//主任
+                        tfFlowApproveLog.setPrimaryApproveId(sysUser.getId());
+                        tfFlowApproveLog.setPrimaryApproveOperation(FlowApproveOperationEnum.END);
+                        tfFlowApproveLog.setPrimaryApproveRemark(FlowApproveOperationEnum.END.getTitle());
+                    } else if (setupEnum == FlowGdykdxApproveSetupEnum.SECOND_APPROVE) {//院长
+                        tfFlowApproveLog.setSecondApproveId(sysUser.getId());
+                        tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.END);
+                        tfFlowApproveLog.setSecondApproveRemark(FlowApproveOperationEnum.END.getTitle());
+                    }
+                    tfFlowApproveLog.updateInfo(sysUser.getId());
+                    tfFlowApproveLogService.saveOrUpdate(tfFlowApproveLog);
+                }
+            }
+        }
+
+        //命题任务修改
+        examTask.setFlowId(null);
+        examTask.setStatus(ExamStatusEnum.DRAFT);
+        examTask.updateInfo(sysUser.getId());
+        examTaskService.updateById(examTask);
     }
 
     /**
@@ -243,7 +293,7 @@ public class ActivitiServiceImpl implements ActivitiService {
                 }
                 String processInstanceId = task.getProcessInstanceId();
                 QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
-                examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, Long.parseLong(processInstanceId));
+                examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, Long.parseLong(task.getProcessInstanceId()));
                 ExamTask examTask = examTaskService.getOne(examTaskQueryWrapper);
 
                 String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().getProcessDefinitionId();

+ 0 - 25
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -664,31 +664,6 @@
     </sql>
 
     <select id="getFlowTaskReadyList" resultType="com.qmth.distributed.print.business.bean.result.WorkResult">
-        /*select
-        *
-        from
-        ACT_RU_TASK art
-        join
-        (
-        select
-        ari.USER_ID_ as userId,
-        ari.PROC_INST_ID_ as procInstId,
-        (
-        select
-        t.TASK_ID_
-        from
-        ACT_RU_IDENTITYLINK t
-        where
-        t.TYPE_ = 'candidate'
-        and t.USER_ID_ = '153080457649455104') as taskId
-        from
-        ACT_RU_IDENTITYLINK ari
-        where
-        ari.TYPE_ = 'participant'
-        and ari.USER_ID_ = '153080457649455104') temp on
-        art.PROC_INST_ID_ = temp.procInstId*/
-
-
         select
         et.id,
         et.school_id schoolId,