gssong
2024-03-11 e30e4fe447c2eea8ea0a00915753e2f769d124cd
update 修改我的已办过滤抄送数据,添加已审批过得节点查询接口
已修改6个文件
118 ■■■■■ 文件已修改
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TaskVo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/ActTaskMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/ActTaskMapper.xml 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java
@@ -17,13 +17,13 @@
import org.dromara.workflow.domain.vo.VariableVo;
import org.dromara.workflow.service.IActTaskService;
import org.dromara.workflow.utils.QueryUtils;
import org.dromara.workflow.utils.WorkflowUtils;
import org.flowable.engine.TaskService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * 任务管理 控制层
@@ -257,4 +257,14 @@
    public R<List<VariableVo>> getProcessInstVariable(@PathVariable String taskId) {
        return R.ok(actTaskService.getInstanceVariable(taskId));
    }
    /**
     * 获取可驳回得任务节点
     *
     * @param processInstanceId 流程实例id
     */
    @GetMapping("/getTaskNodeList/{processInstanceId}")
    public R<Set<TaskVo>> getNodeList(@PathVariable String processInstanceId) {
        return R.ok(actTaskService.getTaskNodeList(processInstanceId));
    }
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TaskVo.java
@@ -82,6 +82,11 @@
    private Date createTime;
    /**
     * 已办任务-创建时间
     */
    private Date startTime;
    /**
     * 结束时间
     */
    private Date endTime;
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/ActTaskMapper.java
@@ -28,6 +28,15 @@
    Page<TaskVo> getTaskWaitByPage(@Param("page") Page<TaskVo> page, @Param(Constants.WRAPPER) Wrapper<TaskVo> queryWrapper);
    /**
     * 获取已办
     *
     * @param page         分页
     * @param queryWrapper 条件
     * @return 结果
     */
    Page<TaskVo> getTaskFinishByPage(@Param("page") Page<TaskVo> page, @Param(Constants.WRAPPER) Wrapper<TaskVo> queryWrapper);
    /**
     * 查询当前用户的抄送
     *
     * @param page         分页
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java
@@ -8,6 +8,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * 任务 服务层
@@ -142,4 +143,12 @@
     * @return 结果
     */
    List<VariableVo> getInstanceVariable(String taskId);
    /**
     * 获取可驳回得任务节点
     *
     * @param processInstanceId 流程实例id
     * @return 结果
     */
    Set<TaskVo> getTaskNodeList(String processInstanceId);
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java
@@ -336,39 +336,18 @@
    @Override
    public TableDataInfo<TaskVo> getPageByTaskFinish(TaskBo taskBo, PageQuery pageQuery) {
        String userId = String.valueOf(LoginHelper.getUserId());
        HistoricTaskInstanceQuery query = QueryUtils.hisTaskInstanceQuery();
        query.taskAssignee(userId).finished().orderByHistoricTaskInstanceStartTime().desc();
        if (StringUtils.isNotBlank(taskBo.getName())) {
            query.taskNameLike("%" + taskBo.getName() + "%");
        QueryWrapper<TaskVo> queryWrapper = new QueryWrapper<>();
        queryWrapper.like(StringUtils.isNotBlank(taskBo.getName()), "t.name_", taskBo.getName());
        queryWrapper.like(StringUtils.isNotBlank(taskBo.getProcessDefinitionName()), "t.processDefinitionName", taskBo.getProcessDefinitionName());
        queryWrapper.eq(StringUtils.isNotBlank(taskBo.getProcessDefinitionKey()), "t.processDefinitionKey", taskBo.getProcessDefinitionKey());
        queryWrapper.eq("t.assignee_", userId);
        Page<TaskVo> page = actTaskMapper.getTaskFinishByPage(pageQuery.build(), queryWrapper);
        List<TaskVo> taskList = page.getRecords();
        for (TaskVo task : taskList) {
            task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus()));
        }
        if (StringUtils.isNotBlank(taskBo.getProcessDefinitionName())) {
            query.processDefinitionNameLike("%" + taskBo.getProcessDefinitionName() + "%");
        }
        if (StringUtils.isNotBlank(taskBo.getProcessDefinitionKey())) {
            query.processDefinitionKey(taskBo.getProcessDefinitionKey());
        }
        List<HistoricTaskInstance> taskInstanceList = query.listPage(pageQuery.getFirstNum(), pageQuery.getPageSize());
        List<HistoricProcessInstance> historicProcessInstanceList = null;
        if (CollUtil.isNotEmpty(taskInstanceList)) {
            Set<String> processInstanceIds = StreamUtils.toSet(taskInstanceList, HistoricTaskInstance::getProcessInstanceId);
            historicProcessInstanceList = QueryUtils.hisInstanceQuery(processInstanceIds).list();
        }
        List<TaskVo> list = new ArrayList<>();
        for (HistoricTaskInstance task : taskInstanceList) {
            TaskVo taskVo = BeanUtil.toBean(task, TaskVo.class);
            if (CollUtil.isNotEmpty(historicProcessInstanceList)) {
                historicProcessInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> {
                    taskVo.setBusinessStatus(e.getBusinessStatus());
                    taskVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(taskVo.getBusinessStatus()));
                    taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey());
                    taskVo.setProcessDefinitionName(e.getProcessDefinitionName());
                });
            }
            taskVo.setAssignee(StringUtils.isNotBlank(task.getAssignee()) ? Long.valueOf(task.getAssignee()) : null);
            list.add(taskVo);
        }
        long count = query.count();
        return new TableDataInfo<>(list, count);
        return new TableDataInfo<>(taskList, page.getTotal());
    }
    /**
@@ -742,4 +721,24 @@
        }
        return variableVoList;
    }
    /**
     * 获取可驳回得任务节点
     *
     * @param processInstanceId 流程实例id
     */
    @Override
    public Set<TaskVo> getTaskNodeList(String processInstanceId) {
        Set<TaskVo> list = new HashSet<>();
        List<HistoricTaskInstance> historicTaskInstances = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list();
        for (HistoricTaskInstance historicTaskInstance : historicTaskInstances) {
            if (historicTaskInstance.getEndTime() != null) {
                TaskVo taskVo = new TaskVo();
                taskVo.setName(historicTaskInstance.getName());
                taskVo.setTaskDefinitionKey(historicTaskInstance.getTaskDefinitionKey());
                list.add(taskVo);
            }
        }
        return list;
    }
}
ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/ActTaskMapper.xml
@@ -3,7 +3,7 @@
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.workflow.mapper.ActTaskMapper">
    <resultMap type="org.dromara.workflow.domain.vo.TaskVo" id="TaskWaitingVoResult">
    <resultMap type="org.dromara.workflow.domain.vo.TaskVo" id="TaskVoResult">
        <result property="id" column="ID_"/>
        <result property="name" column="NAME_"/>
        <result property="description" column="DESCRIPTION_"/>
@@ -15,6 +15,7 @@
        <result property="taskDefinitionId" column="TASK_DEF_ID_"/>
        <result property="processDefinitionId" column="PROC_DEF_ID_"/>
        <result property="createTime" column="CREATE_TIME_"/>
        <result property="startTime" column="START_TIME_"/>
        <result property="endTime" column="END_TIME_"/>
        <result property="taskDefinitionKey" column="TASK_DEF_KEY_"/>
        <result property="dueDate" column="DUE_DATE_"/>
@@ -28,7 +29,7 @@
        <result property="processDefinitionKey" column="processDefinitionName"/>
    </resultMap>
    <select id="getTaskWaitByPage" resultMap="TaskWaitingVoResult">
    <select id="getTaskWaitByPage" resultMap="TaskVoResult">
        select *
        from (SELECT RES.*,
                     AHP.BUSINESS_STATUS_,
@@ -41,7 +42,20 @@
              ORDER BY RES.CREATE_TIME_ DESC) t ${ew.getCustomSqlSegment}
    </select>
    <select id="getTaskCopyByPage" resultMap="TaskWaitingVoResult">
    <select id="getTaskFinishByPage" resultMap="TaskVoResult">
        select *
        from (SELECT HTI.*,
                     AHP.BUSINESS_STATUS_,
                     ARP.NAME_ AS processDefinitionName,
                     ARP.KEY_  AS processDefinitionKey
              FROM ACT_HI_TASKINST HTI
                       INNER JOIN ACT_HI_PROCINST AHP ON HTI.PROC_INST_ID_ = AHP.PROC_INST_ID_
                       INNER JOIN ACT_RE_PROCDEF ARP ON ARP.ID_ = HTI.PROC_DEF_ID_
              WHERE HTI.PARENT_TASK_ID_ IS NULL
              ORDER BY HTI.START_TIME_ DESC) t ${ew.getCustomSqlSegment}
    </select>
    <select id="getTaskCopyByPage" resultMap="TaskVoResult">
        select *
        from (SELECT AHT.*,
                     AHP.BUSINESS_STATUS_,