| | |
| | | |
| | | 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; |
| | |
| | | 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); |
| | |
| | | } |
| | | |
| | | // 计算办理时间 |
| | | 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 + "小时"); |
| | |
| | | } else { |
| | | taskVO.setRemainingTime("-"); |
| | | } |
| | | } else { |
| | | taskVO.setRemainingTime("-"); |
| | | } |
| | | this.distinctVo(taskVO); |
| | | vos.add(taskVO); |
| | |
| | | } |
| | | } |
| | | // 完成任务 |
| | | flowTaskService.completeSubmitForm(form.getTaskId(), data); |
| | | flowTaskService.completeSubmitForm(form.getTaskId(), data, Boolean.FALSE); |
| | | } |
| | | return Result.ok("操作成功"); |
| | | } |
| | |
| | | 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) { |
| | |
| | | processLog.getId(), |
| | | processLog.getUserId(), |
| | | form.getProjectId(), |
| | | form.getProcessInsId(), |
| | | task.getProcessInstanceId(), |
| | | form.getTaskId(), |
| | | task.getTaskDefinitionKey(), |
| | | task.getName(), |
| | |
| | | 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())) { |
| | |
| | | // 部门 |
| | | 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()); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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); |
| | |
| | | .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; |
| | | } |
| | | |
| | |
| | | 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); |
| | |
| | | * @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())) { |
| | |
| | | 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判断 |
| | |
| | | // 部门 |
| | | 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()); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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()); |
| | | } |
| | | } |
| | | // 绑定的是角色,查出角色名称 |
| | |
| | | // 部门 |
| | | 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()); |
| | | } |
| | | } |
| | | } |