xiangpei
2025-01-03 da6e6e862645952683533a7a6a95d9080fe151e9
首页流程待办查询service更换
5个文件已修改
1个文件已添加
153 ■■■■■ 已修改文件
business/src/main/java/com/ycl/controller/ProjectProcessController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/ProjectProcessService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/resources/mapper/ProjectProcessMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/controller/ProjectProcessController.java
@@ -97,7 +97,7 @@
    public Result getAllTodoTask(ProjectProcessQuery query) {
        Result result = Result.ok();
        projectProcessService.getAllTodoTask("", (int) query.getPageSize(), (int) query.getCurrentPage(), result);
        projectProcessService.getIndexTodoTask("", (int) query.getPageSize(), (int) query.getCurrentPage(), result);
        return result;
    }
business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java
New file
@@ -0,0 +1,31 @@
package com.ycl.domain.vo;
import com.ycl.common.enums.business.HandlerTypeEnum;
import com.ycl.common.enums.business.TaskStatusEnum;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * 任务回显内容
 *
 * @author:xp
 * @date:2024/11/29 10:59
 */
@Data
public class IndexCustomerTaskVO extends CustomerTaskVO {
    /**
     * 项目id
     */
    private Long projectId;
    /**
     * 项目名称
     */
    private String projectName;
}
business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java
@@ -1,5 +1,6 @@
package com.ycl.mapper;
import com.ycl.domain.entity.ProjectInfo;
import com.ycl.domain.entity.ProjectProcess;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -31,4 +32,11 @@
    */
    IPage getPage(IPage page, @Param("query") ProjectProcessQuery query);
    /**
     * 通过流程实例id获取项目id、名称
     *
     * @param processInstanceId
     * @return
     */
    ProjectInfo getProjectInfo(@Param("processInsId") String processInstanceId);
}
business/src/main/java/com/ycl/service/ProjectProcessService.java
@@ -70,6 +70,16 @@
     */
    void getAllTodoTask(String taskName, int pageSize, int pageNum, Result result);
    /**
     * 首页--获取分页查询待办任务
     *
     * @param taskName
     * @param pageSize
     * @param pageNum
     * @param result
     */
    void getIndexTodoTask(String taskName, int pageSize, int pageNum, Result result);
    Result detailByProcessInsId(TaskQuery query);
    /**
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -25,6 +25,7 @@
import com.ycl.domain.form.TaskDelegationForm;
import com.ycl.domain.json.TaskDelegateData;
import com.ycl.domain.vo.CustomerTaskVO;
import com.ycl.domain.vo.IndexCustomerTaskVO;
import com.ycl.domain.vo.ProjectProcessDetailVO;
import com.ycl.mapper.ProjectInfoMapper;
import com.ycl.mapper.ProjectProcessMapper;
@@ -254,6 +255,97 @@
        }
        return ok;
    }
    @Override
    public void getIndexTodoTask(String taskName, int pageSize, int pageNum, Result result) {
        TaskQuery taskQuery = taskService.createTaskQuery()
                .active()
                .includeProcessVariables()
                .includeIdentityLinks()
                .orderByTaskCreateTime().desc();
        if (StringUtils.isNotBlank(taskName)) {
            taskQuery.processDefinitionNameLike(taskName);
        }
        result.total(taskQuery.count());
        List<Task> taskList = taskQuery.listPage(pageSize * (pageNum - 1), pageSize);
        List<IndexCustomerTaskVO> vos = new ArrayList<>();
        for (Task task : taskList) {
            IndexCustomerTaskVO taskVO = new IndexCustomerTaskVO();
            // 当前流程信息
            taskVO.setTaskId(task.getId());
            taskVO.setCreateTime(task.getCreateTime());
            taskVO.setProcessDefId(task.getProcessDefinitionId());
            taskVO.setExecutionId(task.getExecutionId());
            taskVO.setTaskName(task.getName());
            taskVO.setTaskStatus(TaskStatusEnum.TODO);
            // 流程定义信息
            ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
                    .processDefinitionId(task.getProcessDefinitionId())
                    .singleResult();
            taskVO.setDeployId(pd.getDeploymentId());
            taskVO.setProcessName(pd.getName());
            taskVO.setProcessInsId(task.getProcessInstanceId());
            taskVO.setTaskDefinitionKey(task.getTaskDefinitionKey());
            // 流程项目信息
            ProjectInfo project = baseMapper.getProjectInfo(task.getProcessInstanceId());
            if (Objects.nonNull(project)) {
                taskVO.setProjectId(project.getId());
                taskVO.setProjectName(project.getProjectName());
            }
            // 流程发起人信息
            this.setPromoterInfo(taskVO);
            // 一个任务可能有多个候选人/组,所以需要使用list
            List<Long> handlerIds = new ArrayList<>(2);
            List<String> handlerNames = new ArrayList<>(2);
            List<Long> handlerUnitIds = new ArrayList<>(2);
            List<String> handlerUnitNames = new ArrayList<>(2);
            // 流程处理人信息
            List<? extends IdentityLinkInfo> identityLinks = task.getIdentityLinks();
            for (IdentityLinkInfo identityLink : identityLinks) {
                // 绑定的是用户,查出用户姓名、部门
                if (StringUtils.isNotBlank(identityLink.getUserId())) {
                    taskVO.setHandlerType(HandlerTypeEnum.USER);
                    SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId()));
                    if (Objects.nonNull(sysUser)) {
                        handlerIds.add(sysUser.getUserId());
                        handlerNames.add(sysUser.getNickName());
                        if (Objects.nonNull(sysUser.getDept())) {
                            handlerUnitIds.add(sysUser.getDept().getDeptId());
                            handlerUnitNames.add(sysUser.getDept().getDeptName());
                        }
                    }
                    // 绑定的是角色或者部门
                } else if (StringUtils.isNotBlank(identityLink.getGroupId())) {
                    if (identityLink.getGroupId().startsWith("dept")) {   // 部门的id是加了前缀的如:dept:1
                        taskVO.setHandlerType(HandlerTypeEnum.DEPT);
                        String[] split = identityLink.getGroupId().split(":");
                        if (split.length > 1) {
                            // 部门
                            SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1]));
                            if (Objects.nonNull(dept)) {
                                handlerUnitIds.add(dept.getDeptId());
                                handlerUnitNames.add(dept.getDeptName());
                            }
                        }
                    } else {
                        taskVO.setHandlerType(HandlerTypeEnum.ROLE);
                        SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId()));
                        if (Objects.nonNull(role)) {
                            handlerUnitIds.add(role.getRoleId());
                            handlerUnitNames.add(role.getRoleName());
                        }
                    }
                }
            }
            vos.add(taskVO);
        }
        result.put("taskList", vos);
    }
    @Override
@@ -529,6 +621,7 @@
                        SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId()));
                        if (Objects.nonNull(role)) {
                            handlerUnitIds.add(Long.parseLong(identityLink.getGroupId()));
                            handlerUnitNames.add(role.getRoleName());
                        }
                    }
                }
business/src/main/resources/mapper/ProjectProcessMapper.xml
@@ -76,4 +76,13 @@
    </select>
    <select id="getProjectInfo" parameterType="string" resultType="com.ycl.domain.entity.ProjectInfo">
        SELECT
               PI.id, PI.project_name
        FROM
             t_project_process PP
                 INNER JOIN t_project_info PI ON PP.project_id = PI.id AND PI.deleted = 0 AND PP.process_ins_id = #{processInsId}
    </select>
</mapper>