xiangpei
2025-03-06 e7243b4e61a96249bbe17173682a243c9a591609
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
@@ -399,13 +398,28 @@
            taskVO.setTaskDefinitionKey(task.getTaskDefinitionKey());
            // 流程项目信息
            ProjectInfo project = baseMapper.getProjectInfo(task.getProcessInstanceId());
            if (Objects.nonNull(project)) {
                taskVO.setProjectId(project.getId());
                taskVO.setProjectName(project.getProjectName());
            } else {
                continue;
            ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(baseMapper)
                    .eq(ProjectProcess::getProcessInsId, task.getProcessInstanceId())
                    .one();
            String projectId = "";
            String projectName = "";
            if (Objects.nonNull(projectProcess)) {
                if (projectProcess.getProjectType().equals(ProjectProcessTypeEnum.PROJECT)) {
                    ProjectInfo project = projectInfoMapper.selectById(projectProcess.getProjectId());
                    if (Objects.nonNull(project)) {
                        projectId = projectProcess.getProjectId();
                        projectName = project.getProjectName();
                    }
                } else if (projectProcess.getProjectType().equals(ProjectProcessTypeEnum.ENGINEERING)) {
                    ProjectEngineering engineering = projectEngineeringMapper.selectById(projectProcess.getProjectId());
                    if (Objects.nonNull(engineering)) {
                        projectId = projectProcess.getProjectId();
                        projectName = engineering.getProjectName();
                    }
                }
            }
            taskVO.setProjectId(projectId);
            taskVO.setProjectName(projectName);
            // 流程发起人信息
            this.setPromoterInfo(taskVO);
@@ -468,15 +482,13 @@
            }
            // 计算办理时间
            ProcessCoding processCoding = processCodingService.getByTaskId(task.getId());
            if (processCoding != null) {
                if (StringUtils.isNotBlank(processCoding.getOvertime())) {
                    Long overtime = getTime(processCoding.getOvertime());
            ProcessCoding processCoding = processCodingService.getByTaskId(task.getId(), task.getProcessInstanceId());
            if (Objects.nonNull(processCoding)) {
                if (StringUtils.isNotBlank(processCoding.getRedTime())) {
                    Long overtime = getTime(processCoding.getRedTime());
                    long durationTime = 0l;
                    if (Objects.nonNull(processCoding.getStartTaskTime())) {
                        durationTime = ((new Date()).getTime() - processCoding.getStartTaskTime().getTime()) / 1000;
                    } else {
                        taskVO.setRemainingTime("未设置办理时间");
                    }
                    if (overtime > durationTime) {
                        taskVO.setRemainingTime((overtime - durationTime) / 3600 + "小时");
@@ -486,6 +498,8 @@
                } else {
                    taskVO.setRemainingTime("-");
                }
            } else {
                taskVO.setRemainingTime("-");
            }
            this.distinctVo(taskVO);
            vos.add(taskVO);
@@ -723,7 +737,7 @@
                }
            }
            // 完成任务
            flowTaskService.completeSubmitForm(form.getTaskId(), data);
            flowTaskService.completeSubmitForm(form.getTaskId(), data, Boolean.FALSE);
        }
        return Result.ok("操作成功");
    }
@@ -746,7 +760,7 @@
        ProcessLog processLog = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper())
                .eq(ProcessLog::getTaskId, form.getTaskId())
                .eq(ProcessLog::getEventType, ProcessLogEventTypeEnum.SUPERVISE)
                .eq(ProcessLog::getProcessInsId, form.getProcessInsId())
                .eq(ProcessLog::getProcessInsId, task.getProcessInstanceId())
                .one();
        List<SuperviseData> dataList;
        if (processLog != null) {
@@ -763,7 +777,7 @@
                processLog.getId(),
                processLog.getUserId(),
                form.getProjectId(),
                form.getProcessInsId(),
                task.getProcessInstanceId(),
                form.getTaskId(),
                task.getTaskDefinitionKey(),
                task.getName(),
@@ -993,11 +1007,11 @@
                        vo.setHandlerType(HandlerTypeEnum.USER);
                        SysUser sysUser = sysUserService.selectUserById(Long.parseLong(userTask.getAssignee()));
                        if (Objects.nonNull(sysUser)) {
                            handlerIds.add(sysUser.getUserId());
                            handlerNames.add(this.getUserShowName(sysUser));
                            vo.getHandlerId().add(sysUser.getUserId());
                            vo.getHandlerName().add(this.getUserShowName(sysUser));
                            if (Objects.nonNull(sysUser.getDept())) {
                                handlerUnitIds.add(sysUser.getDept().getDeptId());
                                handlerUnitNames.add(sysUser.getDept().getDeptName());
                                vo.getHandlerUnitId().add(sysUser.getDept().getDeptId());
                                vo.getHandlerUnitName().add(sysUser.getDept().getDeptName());
                            }
                        }
                    } else if (CollectionUtil.isNotEmpty(userTask.getCandidateGroups())) {
@@ -1014,17 +1028,17 @@
                                    // 部门
                                    SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1]));
                                    if (Objects.nonNull(dept)) {
                                        handlerUnitIds.add(dept.getDeptId());
                                        handlerUnitNames.add(dept.getDeptName());
                                        handlerNames.add(this.getDeptLeaderShowName(dept));
                                        vo.getHandlerUnitId().add(dept.getDeptId());
                                        vo.getHandlerUnitName().add(dept.getDeptName());
                                        vo.getHandlerName().add(this.getDeptLeaderShowName(dept));
                                    }
                                }
                            } else {
                                vo.setHandlerType(HandlerTypeEnum.ROLE);
                                SysRole role = sysRoleService.selectRoleById(Long.parseLong(groupId));
                                if (Objects.nonNull(role)) {
                                    handlerUnitIds.add(role.getRoleId());
                                    handlerUnitNames.add(role.getRoleName());
                                    vo.getHandlerUnitId().add(role.getRoleId());
                                    vo.getHandlerUnitName().add(role.getRoleName());
                                }
                            }
                        }
@@ -1038,18 +1052,19 @@
                    vo.setCreateTime(historicTasks.get(0).getStartTime());
                    // 查询实际处理人
                    long handlerUserId = Long.parseLong(historicTasks.get(0).getAssignee());
                    SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
                    if (Objects.nonNull(handlerUser)) {
                        handlerIds.add(handlerUserId);
                        handlerNames.add(this.getUserShowName(handlerUser));
                        if (Objects.nonNull(handlerUser.getDept())) {
                            handlerUnitNames.add(handlerUser.getDept().getDeptName());
                            handlerUnitIds.add(handlerUser.getDept().getDeptId());
                    if (StringUtils.isNotBlank(historicTasks.get(0).getAssignee())) {
                        long handlerUserId = Long.parseLong(historicTasks.get(0).getAssignee());
                        SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
                        if (Objects.nonNull(handlerUser)) {
                            vo.getHandlerId().add(handlerUserId);
                            vo.getHandlerName().add(this.getUserShowName(handlerUser));
                            if (Objects.nonNull(handlerUser.getDept())) {
                                vo.getHandlerUnitName().add(handlerUser.getDept().getDeptName());
                                vo.getHandlerUnitId().add(handlerUser.getDept().getDeptId());
                            }
                        }
                    }
                    vo.setTaskDefinitionKey(historicTasks.get(0).getTaskDefinitionKey());
                    this.setPromoterAndHandler(vo, historicTasks.get(0).getIdentityLinks());
                }
            } else {
                vo.setTaskStatus(TaskStatusEnum.TODO);
@@ -1113,25 +1128,27 @@
                    .orderByHistoricTaskInstanceStartTime()
                    .desc()
                    .list();
            vo.setTaskStatus(TaskStatusEnum.FINISHED);
            // 如果是已完成的,信息需要单独赋值
            vo.setTaskId(hisTaskList.get(0).getId());
            vo.setExecutionId(hisTaskList.get(0).getExecutionId());
            vo.setCreateTime(hisTaskList.get(0).getStartTime());
            // 查询实际处理人
            long handlerUserId = Long.parseLong(hisTaskList.get(0).getAssignee());
            SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
            if (Objects.nonNull(handlerUser)) {
                vo.setActualHandlerUserId(hisTaskList.get(0).getAssignee());
                vo.setActualHandlerUserName(handlerUser.getNickName());
            // 如果未找到历史任务,说明这个任务可能处于某个互斥网关下,实际并未执行
            if (CollectionUtils.isEmpty(hisTaskList)) {
                vo.setTaskStatus(TaskStatusEnum.NOT_START);
            } else {
                vo.setTaskStatus(TaskStatusEnum.FINISHED);
                // 如果是已完成的,信息需要单独赋值
                vo.setTaskId(hisTaskList.get(0).getId());
                vo.setExecutionId(hisTaskList.get(0).getExecutionId());
                vo.setCreateTime(hisTaskList.get(0).getStartTime());
                // 查询实际处理人
                long handlerUserId = Long.parseLong(hisTaskList.get(0).getAssignee());
                SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
                if (Objects.nonNull(handlerUser)) {
                    vo.setActualHandlerUserId(hisTaskList.get(0).getAssignee());
                    vo.setActualHandlerUserName(handlerUser.getNickName());
                }
                vo.setTaskDefinitionKey(hisTaskList.get(0).getTaskDefinitionKey());
                this.setPromoterAndHandler(vo, hisTaskList.get(0).getIdentityLinks());
            }
            vo.setTaskDefinitionKey(hisTaskList.get(0).getTaskDefinitionKey());
            this.setPromoterAndHandler(vo, hisTaskList.get(0).getIdentityLinks());
            return vo;
        }).collect(Collectors.toList());
        }).filter(Objects::nonNull).collect(Collectors.toList());
        return vos;
    }
@@ -1392,9 +1409,12 @@
                if (Objects.nonNull(handlerUser)) {
                    vo.getHandlerId().add(handlerUserId);
                    vo.getHandlerName().add(this.getUserShowName(handlerUser));
                    if (Objects.nonNull(handlerUser.getDept())) {
                        vo.getHandlerUnitId().add(handlerUser.getDept().getDeptId());
                        vo.getHandlerUnitName().add(handlerUser.getDept().getDeptName());
                    }
                }
                vo.setTaskDefinitionKey(hisTask.getTaskDefinitionKey());
                this.setPromoterAndHandler(vo, hisTask.getIdentityLinks());
            }
            this.distinctVo(vo);
@@ -1929,17 +1949,6 @@
     * @param identityLinkInfos 如果是已完成的任务,用这个去取关联的用户/用户组
     */
    private void setPromoterAndHandler(CustomerTaskVO taskVO, List<? extends IdentityLinkInfo> identityLinkInfos) {
//        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);
        taskVO.setHandlerId(handlerIds);
        taskVO.setHandlerName(handlerNames);
        taskVO.setHandlerUnitId(handlerUnitIds);
        taskVO.setHandlerUnitName(handlerUnitNames);
        // 流程处理人信息
        if (TaskStatusEnum.TODO.equals(taskVO.getTaskStatus())) {
@@ -1953,11 +1962,11 @@
                    SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId()));
                    if (Objects.nonNull(sysUser)) {
                        taskVO.setHandlerType(HandlerTypeEnum.USER);
                        handlerIds.add(sysUser.getUserId());
                        handlerNames.add(this.getUserShowName(sysUser));
                        taskVO.getHandlerId().add(sysUser.getUserId());
                        taskVO.getHandlerName().add(this.getUserShowName(sysUser));
                        if (Objects.nonNull(sysUser.getDept())) {
                            handlerUnitIds.add(sysUser.getDept().getDeptId());
                            handlerUnitNames.add(sysUser.getDept().getDeptName());
                            taskVO.getHandlerUnitId().add(sysUser.getDept().getDeptId());
                            taskVO.getHandlerUnitName().add(sysUser.getDept().getDeptName());
                        }
                    }
                    // 绑定的是角色或者是部门,需要根据id判断
@@ -1969,16 +1978,16 @@
                            // 部门
                            SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1]));
                            if (Objects.nonNull(dept)) {
                                handlerUnitIds.add(dept.getDeptId());
                                handlerUnitNames.add(dept.getDeptName());
                                taskVO.getHandlerUnitId().add(dept.getDeptId());
                                taskVO.getHandlerUnitName().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());
                            taskVO.getHandlerUnitId().add(role.getRoleId());
                            taskVO.getHandlerUnitName().add(role.getRoleName());
                        }
                    }
                }
@@ -1990,11 +1999,11 @@
                    taskVO.setHandlerType(HandlerTypeEnum.USER);
                    SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId()));
                    if (Objects.nonNull(sysUser)) {
                        handlerIds.add(sysUser.getUserId());
                        handlerNames.add(this.getUserShowName(sysUser));
                        taskVO.getHandlerId().add(sysUser.getUserId());
                        taskVO.getHandlerName().add(this.getUserShowName(sysUser));
                        if (Objects.nonNull(sysUser.getDept())) {
                            handlerUnitIds.add(sysUser.getDept().getDeptId());
                            handlerUnitNames.add(sysUser.getDept().getDeptName());
                            taskVO.getHandlerUnitId().add(sysUser.getDept().getDeptId());
                            taskVO.getHandlerUnitName().add(sysUser.getDept().getDeptName());
                        }
                    }
                    // 绑定的是角色,查出角色名称
@@ -2006,16 +2015,16 @@
                            // 部门
                            SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1]));
                            if (Objects.nonNull(dept)) {
                                handlerUnitIds.add(dept.getDeptId());
                                handlerUnitNames.add(dept.getDeptName());
                                taskVO.getHandlerUnitId().add(dept.getDeptId());
                                taskVO.getHandlerUnitName().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());
                            taskVO.getHandlerUnitId().add(role.getRoleId());
                            taskVO.getHandlerUnitName().add(role.getRoleName());
                        }
                    }
                }