瀏覽代碼

自定义流程接口新增-流程审批历史

wangliang 3 年之前
父節點
當前提交
1bac639092
共有 13 個文件被更改,包括 226 次插入26 次删除
  1. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowApproveListResult.java
  2. 55 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowViewResult.java
  3. 60 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowViewTaskResult.java
  4. 0 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/TFFlowLogResult.java
  5. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/TaskInfoResult.java
  6. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowApprove.java
  7. 10 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ActivitiService.java
  8. 8 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TExamTaskFlowService.java
  9. 67 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java
  10. 13 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TExamTaskFlowServiceImpl.java
  11. 1 1
      distributed-print-business/src/main/resources/mapper/TFFlowLogMapper.xml
  12. 7 11
      distributed-print/src/main/java/com/qmth/distributed/print/api/TFCustomFlowController.java
  13. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FlowStatusEnum.java

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowApproveListResult.java

@@ -51,10 +51,10 @@ public class FlowApproveListResult implements Serializable {
     @ApiModelProperty(value = "下一级处理人id/当前处理人")
     private String pendApproveUserName;
 
-    @ApiModelProperty(value = "状态,START:待审批,AUDITING:审核中,REJECT:已驳回,END:已终止,FINISH:已结束")
+    @ApiModelProperty(value = "状态,START:已开始,AUDITING:审核中,REJECT:已驳回,END:已终止,FINISH:已结束")
     private FlowStatusEnum status;
 
-    @ApiModelProperty(value = "状态,START:待审批,AUDITING:审核中,REJECT:已驳回,END:已终止,FINISH:已结束")
+    @ApiModelProperty(value = "状态,START:已开始,AUDITING:审核中,REJECT:已驳回,END:已终止,FINISH:已结束")
     private String statusStr;
 
     @ApiModelProperty(value = "当前节点")

+ 55 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowViewResult.java

@@ -0,0 +1,55 @@
+package com.qmth.distributed.print.business.bean.result;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: 流程查看result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/8/6
+ */
+public class FlowViewResult extends FlowTaskResult implements Serializable {
+
+    @ApiModelProperty(value = "流程节点步骤")
+    List<FlowViewTaskResult> flowTaskResultList;
+
+    @ApiModelProperty(value = "流程审批信息")
+    List<TFFlowLogResult> tfFlowLogResultList;
+
+    public FlowViewResult() {
+
+    }
+
+    public FlowViewResult(String taskName, String taskKey, Integer setup) {
+        setTaskName(taskName);
+        setTaskKey(taskKey);
+        setSetup(setup);
+    }
+
+    public FlowViewResult(Long flowId, String taskName, String taskKey, Integer setup) {
+        setFlowId(flowId);
+        setTaskName(taskName);
+        setTaskKey(taskKey);
+        setSetup(setup);
+    }
+
+    public List<TFFlowLogResult> getTfFlowLogResultList() {
+        return tfFlowLogResultList;
+    }
+
+    public void setTfFlowLogResultList(List<TFFlowLogResult> tfFlowLogResultList) {
+        this.tfFlowLogResultList = tfFlowLogResultList;
+    }
+
+    public List<FlowViewTaskResult> getFlowTaskResultList() {
+        return flowTaskResultList;
+    }
+
+    public void setFlowTaskResultList(List<FlowViewTaskResult> flowTaskResultList) {
+        this.flowTaskResultList = flowTaskResultList;
+    }
+}

+ 60 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowViewTaskResult.java

@@ -0,0 +1,60 @@
+package com.qmth.distributed.print.business.bean.result;
+
+import com.qmth.distributed.print.business.enums.CustomFlowMultipleUserApproveTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 流程节点result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/8/6
+ */
+public class FlowViewTaskResult extends FlowTaskResult implements Serializable {
+
+    @ApiModelProperty(value = "自定义流程审核类型")
+    CustomFlowMultipleUserApproveTypeEnum multipleUserApproveType;
+
+    @ApiModelProperty(value = "流程审批人")
+    private String pendApproveUsers;
+
+    @ApiModelProperty(value = "流程已审人")
+    private String approveUsers;
+
+    @ApiModelProperty(value = "是否当前节点")
+    private boolean currentTask;
+
+    public CustomFlowMultipleUserApproveTypeEnum getMultipleUserApproveType() {
+        return multipleUserApproveType;
+    }
+
+    public void setMultipleUserApproveType(CustomFlowMultipleUserApproveTypeEnum multipleUserApproveType) {
+        this.multipleUserApproveType = multipleUserApproveType;
+    }
+
+    public String getPendApproveUsers() {
+        return pendApproveUsers;
+    }
+
+    public void setPendApproveUsers(String pendApproveUsers) {
+        this.pendApproveUsers = pendApproveUsers;
+    }
+
+    public String getApproveUsers() {
+        return approveUsers;
+    }
+
+    public void setApproveUsers(String approveUsers) {
+        this.approveUsers = approveUsers;
+    }
+
+    public boolean isCurrentTask() {
+        return currentTask;
+    }
+
+    public void setCurrentTask(boolean currentTask) {
+        this.currentTask = currentTask;
+    }
+}

+ 0 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/TFFlowLogResult.java

@@ -4,11 +4,9 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.enums.FlowApproveOperationEnum;
-import com.qmth.teachcloud.common.enums.FlowApproveSetupEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
-import java.util.Objects;
 
 /**
  * @Description: TFFlowLogResult

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/TaskInfoResult.java

@@ -6,7 +6,7 @@ import java.io.Serializable;
 import java.util.List;
 
 /**
- * @Description: 流程节点result
+ * @Description: 流程信息result
  * @Param:
  * @return:
  * @Author: wangliang

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowApprove.java

@@ -42,7 +42,7 @@ public class TFFlowApprove extends BaseEntity implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long approveId;
 
-    @ApiModelProperty(value = "状态,START:待审批,AUDITING:审核中,REJECT:已驳回,END:已终止,FINISH:已结束")
+    @ApiModelProperty(value = "状态,START:已开始,AUDITING:审核中,REJECT:已驳回,END:已终止,FINISH:已结束")
     private FlowStatusEnum status;
 
     @ApiModelProperty(value = "计划步骤")

+ 10 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ActivitiService.java

@@ -1,10 +1,7 @@
 package com.qmth.distributed.print.business.service;
 
 import com.qmth.distributed.print.business.bean.flow.CustomFlowSaveDto;
-import com.qmth.distributed.print.business.bean.result.FlowTaskApprovePeopleAllResult;
-import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
-import com.qmth.distributed.print.business.bean.result.FlowTaskSubmitPeopleAllResult;
-import com.qmth.distributed.print.business.bean.result.TaskInfoResult;
+import com.qmth.distributed.print.business.bean.result.*;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.springframework.web.multipart.MultipartFile;
@@ -166,5 +163,13 @@ public interface ActivitiService {
      * @param taskId
      * @return
      */
-    public TaskInfoResult taskInfo(Long taskId);
+    public TaskInfoResult getTaskInfo(Long taskId);
+
+    /**
+     * 获取当前流程信息
+     *
+     * @param flowId
+     * @return
+     */
+    public FlowViewResult getFlowView(Long flowId);
 }

+ 8 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TExamTaskFlowService.java

@@ -46,4 +46,12 @@ public interface TExamTaskFlowService extends IService<TExamTaskFlow> {
      * @return
      */
     public TExamTaskFlow findByRootLevel(Long flowId);
+
+    /**
+     * 根据自定义流程实体id查询
+     *
+     * @param flowEntityId
+     * @return
+     */
+    public List<TExamTaskFlow> findByFlowEntityId(Long flowEntityId);
 }

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

@@ -757,6 +757,17 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Override
     public List<FlowTaskResult> getTaskAll(String flowId) {
         TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.findByFlowId(SystemConstant.convertIdToLong(flowId));
+        Optional.ofNullable(tfCustomFlowEntity).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程实体数据为空"));
+        return this.getFlowTaskResult(tfCustomFlowEntity);
+    }
+
+    /**
+     * 获取流程节点信息
+     *
+     * @param tfCustomFlowEntity
+     * @return
+     */
+    protected List<FlowTaskResult> getFlowTaskResult(TFCustomFlowEntity tfCustomFlowEntity) {
         Map<String, Object> flowProcessVarMap = this.getFlowProcessVarMap(tfCustomFlowEntity);
         Map<String, FlowTaskResult> setupMap = (Map<String, FlowTaskResult>) flowProcessVarMap.get(SystemConstant.SETUP_MAP);
         Optional.ofNullable(setupMap).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程没有步骤数据!"));
@@ -765,7 +776,7 @@ public class ActivitiServiceImpl implements ActivitiService {
         Gson gson = new Gson();
         for (Map.Entry<String, FlowTaskResult> entry : setupMap.entrySet()) {
             FlowTaskResult FlowTaskResult = gson.fromJson(gson.toJson(entry.getValue()), FlowTaskResult.class);
-            FlowTaskResult.setFlowId(SystemConstant.convertIdToLong(flowId));
+            FlowTaskResult.setFlowId(tfCustomFlowEntity.getFlowId());
             flowTaskResultList.add(FlowTaskResult);
         }
         return flowTaskResultList;
@@ -2198,7 +2209,7 @@ public class ActivitiServiceImpl implements ActivitiService {
      * @return
      */
     @Override
-    public TaskInfoResult taskInfo(Long taskId) {
+    public TaskInfoResult getTaskInfo(Long taskId) {
         Task task = taskService.createTaskQuery().taskId(String.valueOf(taskId)).singleResult();
         Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空或该流程已被他人审核,请刷新再试!"));
         Long flowId = SystemConstant.convertIdToLong(task.getProcessInstanceId());
@@ -2228,6 +2239,60 @@ public class ActivitiServiceImpl implements ActivitiService {
         return taskInfoResult;
     }
 
+    /**
+     * 获取当前流程信息
+     *
+     * @param flowId
+     * @return
+     */
+    @Override
+    public FlowViewResult getFlowView(Long flowId) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.findByFlowId(flowId);
+        Optional.ofNullable(tfCustomFlowEntity).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程实体数据为空"));
+
+        Gson gson = new Gson();
+        List<FlowTaskResult> flowTaskResultList = this.getFlowTaskResult(tfCustomFlowEntity);
+        List<FlowViewTaskResult> flowViewTaskResultList = gson.fromJson(gson.toJson(flowTaskResultList), new TypeToken<List<FlowViewTaskResult>>() {
+        }.getType());
+
+        //获取流程id
+        List<TExamTaskFlow> tExamTaskFlowList = tExamTaskFlowService.findByFlowEntityId(tfCustomFlowEntity.getId());
+        Optional.ofNullable(tExamTaskFlowList).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程数据为空"));
+
+        //获取当前流程节点
+        TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId, sysUser.getSchoolId());
+        Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程审核数据为空"));
+
+        Map<String, Object> flowProcessVarMap = this.getFlowProcessVarMap(tfCustomFlowEntity);
+        Map<String, FlowTaskResult> setupMap = (Map<String, FlowTaskResult>) flowProcessVarMap.get(SystemConstant.SETUP_MAP);
+
+        FlowViewResult flowViewResult = null;
+        for (Map.Entry<String, FlowTaskResult> entry : setupMap.entrySet()) {
+            FlowTaskResult customFlowVarDto = gson.fromJson(gson.toJson(entry.getValue()), FlowTaskResult.class);
+            if (Objects.nonNull(tfFlowApprove.getSetup()) && customFlowVarDto.getSetup().intValue() == tfFlowApprove.getSetup().intValue()) {
+                flowViewResult = new FlowViewResult(flowId, customFlowVarDto.getTaskName(), customFlowVarDto.getTaskKey(), customFlowVarDto.getSetup());
+            }
+        }
+        flowViewResult = Objects.isNull(flowViewResult) ? new FlowViewResult() : flowViewResult;
+        //获取流程待审批人
+        Map<String, CustomFlowVarDto> agginessMap = (Map<String, CustomFlowVarDto>) flowProcessVarMap.get(SystemConstant.AGGINESS_MAP);
+        if (Objects.nonNull(tfFlowApprove.getTransferAssignee())) {
+            agginessMap = JacksonUtil.readJson(tfFlowApprove.getTransferAssignee(), Map.class);
+        }
+//        Map<String, Object> varMap = new HashMap<>();
+//        for (Map.Entry<String, CustomFlowVarDto> entry : agginessMap.entrySet()) {
+//            CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(entry.getValue()), CustomFlowVarDto.class);
+//            varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> customFlowVarDto.getApproveIds().size() == 1 ? customFlowVarDto.getApproveIds().get(0) : customFlowVarDto.getApproveIds());
+//        }
+
+        //获取流程审批历史
+        List<TFFlowLogResult> tfFlowLogResultList = tfFlowLogService.findByExamTaskId(tExamTaskFlowList.get(0).getTaskId());
+        flowViewResult.setFlowTaskResultList(flowViewTaskResultList);
+        flowViewResult.setTfFlowLogResultList(tfFlowLogResultList);
+        return flowViewResult;
+    }
+
     /**
      * 获取流程变量
      *

+ 13 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TExamTaskFlowServiceImpl.java

@@ -130,4 +130,17 @@ public class TExamTaskFlowServiceImpl extends ServiceImpl<TExamTaskFlowMapper, T
                 .eq(TExamTaskFlow::getLevel, level);
         return this.getOne(tExamTaskFlowQueryWrapper);
     }
+
+    /**
+     * 根据自定义流程实体id查询
+     *
+     * @param flowEntityId
+     * @return
+     */
+    @Override
+    public List<TExamTaskFlow> findByFlowEntityId(Long flowEntityId) {
+        QueryWrapper<TExamTaskFlow> tExamTaskFlowQueryWrapper = new QueryWrapper<>();
+        tExamTaskFlowQueryWrapper.lambda().eq(TExamTaskFlow::getFlowEntityId, flowEntityId);
+        return this.list(tExamTaskFlowQueryWrapper);
+    }
 }

+ 1 - 1
distributed-print-business/src/main/resources/mapper/TFFlowLogMapper.xml

@@ -39,7 +39,7 @@
             tffl.task_id = #{taskId}
             and tffl.enable = 1
         order by
-            tffl.create_time desc
+            tffl.create_time
     </select>
 
     <select id="findByLast" resultType="com.qmth.distributed.print.business.entity.TFFlowLog">

+ 7 - 11
distributed-print/src/main/java/com/qmth/distributed/print/api/TFCustomFlowController.java

@@ -9,9 +9,7 @@ import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.flow.CustomFlowSaveDto;
 import com.qmth.distributed.print.business.bean.params.FlowTaskApproveParam;
 import com.qmth.distributed.print.business.bean.params.customFlowParam;
-import com.qmth.distributed.print.business.bean.result.FlowApproveListResult;
-import com.qmth.distributed.print.business.bean.result.FlowTaskApprovePeopleAllResult;
-import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
+import com.qmth.distributed.print.business.bean.result.*;
 import com.qmth.distributed.print.business.entity.TFCustomFlow;
 import com.qmth.distributed.print.business.entity.TFCustomFlowEntity;
 import com.qmth.distributed.print.business.entity.TFFlowApprove;
@@ -253,13 +251,11 @@ public class TFCustomFlowController {
         return ResultUtil.ok(tfCustomFlowService.updateById(tfCustomFlow));
     }
 
-    @ApiOperation(value = "流程审批记录逻辑查看")
-    @ApiResponses({@ApiResponse(code = 200, message = "流程信息", response = ResultUtil.class)})
+    @ApiOperation(value = "查看审批流程")
+    @ApiResponses({@ApiResponse(code = 200, message = "审批流程信息", response = FlowViewResult.class)})
     @RequestMapping(value = "/view", method = RequestMethod.POST)
-    public Result view(@ApiParam(value = "自定义流程实体id", required = true) @RequestParam String flowEntityId) {
-        TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.getById(SystemConstant.convertIdToLong(flowEntityId));
-        Optional.ofNullable(tfCustomFlowEntity).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程实体数据为空"));
-        return ResultUtil.ok(true);
+    public Result view(@ApiParam(value = "流程id", required = true) @RequestParam String flowId) {
+        return ResultUtil.ok(activitiService.getFlowView(SystemConstant.convertIdToLong(flowId)));
     }
 
     @ApiOperation(value = "流程审批记录逻辑删除")
@@ -322,9 +318,9 @@ public class TFCustomFlowController {
 //    }
 
     @ApiOperation(value = "获取当前流程节点信息")
-    @ApiResponses({@ApiResponse(code = 200, message = "流程提交记录", response = FlowTaskApprovePeopleAllResult.class)})
+    @ApiResponses({@ApiResponse(code = 200, message = "当前流程节点信息", response = TaskInfoResult.class)})
     @RequestMapping(value = "/task/info", method = RequestMethod.POST)
     public Result taskInfo(@ApiParam(value = "流程节点id", required = true) @RequestParam String taskId) {
-        return ResultUtil.ok(activitiService.taskInfo(SystemConstant.convertIdToLong(taskId)));
+        return ResultUtil.ok(activitiService.getTaskInfo(SystemConstant.convertIdToLong(taskId)));
     }
 }

+ 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 {
 
-    START("待审批"),
+    START("已开始"),
 
     AUDITING("审核中"),