|
@@ -1358,6 +1358,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
Integer handleType = taskFormDTO.getHandlerType();
|
|
Integer handleType = taskFormDTO.getHandlerType();
|
|
String handleName = taskFormDTO.getHandler();
|
|
String handleName = taskFormDTO.getHandler();
|
|
Date deadLineTime = taskFormDTO.getDeadLineTime();
|
|
Date deadLineTime = taskFormDTO.getDeadLineTime();
|
|
|
|
+ Integer lastTaskId = taskFormDTO.getLastTaskId();
|
|
ProjectTask projectTask = new ProjectTask();
|
|
ProjectTask projectTask = new ProjectTask();
|
|
projectTask.setName(name);
|
|
projectTask.setName(name);
|
|
projectTask.setHandlerType(handleType);
|
|
projectTask.setHandlerType(handleType);
|
|
@@ -1369,6 +1370,24 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
//获取登录人信息
|
|
//获取登录人信息
|
|
PersonnelVO personnelVO = new PersonnelVO();
|
|
PersonnelVO personnelVO = new PersonnelVO();
|
|
personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
|
|
+ if (lastTaskId != null) {
|
|
|
|
+ ProjectTask projectTask1 = this.getById(lastTaskId);
|
|
|
|
+ projectTask.setLastTaskId(lastTaskId);
|
|
|
|
+ projectTask.setProjectId(projectTask1.getProjectId());
|
|
|
|
+ Integer rootTaskId = projectTask.getAssoTaskId();
|
|
|
|
+ if (rootTaskId == null) {
|
|
|
|
+ rootTaskId = projectTask1.getId();
|
|
|
|
+ }
|
|
|
|
+ projectTask.setAssoTaskId(rootTaskId);
|
|
|
|
+ String lastPath = projectTask1.getTaskPath();
|
|
|
|
+ if (lastPath == null) {
|
|
|
|
+ lastPath = "";
|
|
|
|
+ } else {
|
|
|
|
+ lastPath += "/";
|
|
|
|
+ }
|
|
|
|
+ projectTask.setTaskPath(lastPath + projectTask1.getId());
|
|
|
|
+
|
|
|
|
+ }
|
|
//设置任务的发起人
|
|
//设置任务的发起人
|
|
projectTask.setCreateId(personnelVO.getId());
|
|
projectTask.setCreateId(personnelVO.getId());
|
|
projectTask.insert();
|
|
projectTask.insert();
|
|
@@ -1404,10 +1423,11 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
/**
|
|
/**
|
|
* 根据任务id查询任务详情以及处理结果以及审核历史
|
|
* 根据任务id查询任务详情以及处理结果以及审核历史
|
|
*
|
|
*
|
|
- * @param taskId
|
|
|
|
|
|
+ * @param getExamineHistoryDTO
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- public TaskDetailsVO getExamineHistory(GetExamineHistoryDTO getExamineHistoryDTO) throws IOException {
|
|
|
|
|
|
+ public List<TaskResultVO> getExamineHistory(GetExamineHistoryDTO getExamineHistoryDTO) throws IOException {
|
|
|
|
+ List<TaskResultVO> taskDetailsVOs = new ArrayList<>();
|
|
Integer taskId = getExamineHistoryDTO.getTaskId();
|
|
Integer taskId = getExamineHistoryDTO.getTaskId();
|
|
String fileGuid = getExamineHistoryDTO.getFileGuid();
|
|
String fileGuid = getExamineHistoryDTO.getFileGuid();
|
|
String rootGuid = fileGuid;
|
|
String rootGuid = fileGuid;
|
|
@@ -1433,137 +1453,70 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
List<ProjectTask> projectTasks = this.list(queryWrapper);
|
|
List<ProjectTask> projectTasks = this.list(queryWrapper);
|
|
List<Integer> taskIds = projectTasks.stream().map(ProjectTask::getId).collect(Collectors.toList());
|
|
List<Integer> taskIds = projectTasks.stream().map(ProjectTask::getId).collect(Collectors.toList());
|
|
|
|
|
|
- LambdaQueryWrapper<AssoTaskFile> taskFileQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- taskFileQueryWrapper.in(AssoTaskFile::getTaskId, taskIds);
|
|
|
|
- if (fileGuid != null) {
|
|
|
|
- taskFileQueryWrapper.eq(AssoTaskFile::getRootFileGuid, rootGuid);
|
|
|
|
- }
|
|
|
|
- List<AssoTaskFile> assoTaskFiles =assoTaskFileService.list(taskFileQueryWrapper);
|
|
|
|
- List<String> fileGuids =assoTaskFiles.stream().map(AssoTaskFile::getFileGuid).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- LambdaQueryWrapper<TaskHandleResult> resultLambdaQueryWrapper=new LambdaQueryWrapper<>();
|
|
|
|
- resultLambdaQueryWrapper.in(TaskHandleResult::getTaskId,taskIds);
|
|
|
|
- List<TaskHandleResult> taskHandleResults =taskHandleResultService.list(resultLambdaQueryWrapper);
|
|
|
|
|
|
|
|
- taskHandleResults.forEach(item->{
|
|
|
|
|
|
+ LambdaQueryWrapper<TaskHandleResult> resultLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ resultLambdaQueryWrapper.in(TaskHandleResult::getTaskId, taskIds);
|
|
|
|
+ List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(resultLambdaQueryWrapper);
|
|
|
|
|
|
- });
|
|
|
|
- //新建返回VO类
|
|
|
|
- TaskDetailsVO taskDetailsVO = new TaskDetailsVO();
|
|
|
|
- List<HandleResultFileVO> handleResultFileVOS = new ArrayList<>();
|
|
|
|
- List<AuditHistoryVO> auditHistoryVOS = new ArrayList<>();
|
|
|
|
- //根据taskId查询此条任务详情
|
|
|
|
- ProjectTask currentTask = this.getById(taskId);
|
|
|
|
- //根据此条任务详情获取assoTaskId
|
|
|
|
- //使用Optional避免空指针异常:使用Optional来处理可能为空的变量,例如currentTask和assoTask。
|
|
|
|
- Optional<ProjectTask> currentTaskOptional = Optional.ofNullable(currentTask);
|
|
|
|
- Integer assoTaskId = currentTaskOptional.map(ProjectTask::getAssoTaskId).orElse(null);
|
|
|
|
- String taskPath = currentTaskOptional.map(ProjectTask::getTaskPath).orElse(null);
|
|
|
|
- List<ProjectTask> allProjectTasks = new ArrayList<>();
|
|
|
|
- if (assoTaskId != null) {
|
|
|
|
- //根据assoTaskId获取最初任务的详情
|
|
|
|
- ProjectTaskVO projectTaskVO = new ProjectTaskVO();
|
|
|
|
- ProjectTask assoTask = this.getById(assoTaskId);
|
|
|
|
- if (assoTask != null) {
|
|
|
|
- //装载最初任务详情
|
|
|
|
- BeanUtils.copyProperties(assoTask, projectTaskVO);
|
|
|
|
- taskDetailsVO.setProjectTaskVO(projectTaskVO);
|
|
|
|
- //根据assoTaskId查询所有任务的id
|
|
|
|
- List<Integer> ids = new ArrayList<>();
|
|
|
|
- ids.add(taskId);
|
|
|
|
- if (taskPath != null) {
|
|
|
|
- List<String> a = Arrays.asList(taskPath.split("/"));
|
|
|
|
- List<Integer> b = FormatUtil.StringTOIntegerList(a);
|
|
|
|
- ids.addAll(b);
|
|
|
|
- }
|
|
|
|
- LambdaQueryWrapper<ProjectTask> allTaskWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- allTaskWrapper.in(ProjectTask::getId, ids);
|
|
|
|
- allProjectTasks = this.list(allTaskWrapper);
|
|
|
|
|
|
+ List<Integer> resultIds = taskHandleResults.stream().map(TaskHandleResult::getId).collect(Collectors.toList());
|
|
|
|
+ LambdaQueryWrapper<AssoHandleResultFile> resultFileWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ resultFileWrapper.in(AssoHandleResultFile::getTaskHandleResultId, resultIds);
|
|
|
|
+ if (fileGuid != null) {
|
|
|
|
+ resultFileWrapper.eq(AssoHandleResultFile::getRootFileGuid, rootGuid);
|
|
|
|
+ }
|
|
|
|
+ List<AssoHandleResultFile> resultFiles = assoHandleResultFileService.list(resultFileWrapper);
|
|
|
|
+ List<String> fileGuids = resultFiles.stream().map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
|
|
|
|
+ List<SystemFile> systemFiles = new ArrayList<>();
|
|
|
|
+ if (!fileGuids.isEmpty()) {
|
|
|
|
+ String res = fileManagerService.getSystemFileFromFMS(fileGuids);
|
|
|
|
+ systemFiles = JSONObject.parseArray(res, SystemFile.class);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (TaskHandleResult taskHandleResult : taskHandleResults) {
|
|
|
|
+ Integer id = taskHandleResult.getId();
|
|
|
|
+ TaskResultVO taskResultVO = new TaskResultVO();
|
|
|
|
+ BeanUtils.copyProperties(taskHandleResult, taskResultVO);
|
|
|
|
+ List<String> temGuids = resultFiles.stream().filter(item -> item.getTaskHandleResultId().equals(id)).map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
|
|
|
|
+ if (temGuids != null && temGuids.size() > 0) {
|
|
|
|
+ List<SystemFile> systemFileList = systemFiles.stream().filter(item -> temGuids.contains(item.getGuid())).collect(Collectors.toList());
|
|
|
|
+ taskResultVO.setFiles(systemFileList);
|
|
|
|
+ taskDetailsVOs.add(taskResultVO);
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
|
|
+ }
|
|
|
|
+ //装载名称
|
|
|
|
+ this.loadTaskResultVos(taskDetailsVOs);
|
|
|
|
+ return taskDetailsVOs;
|
|
|
|
+ }
|
|
|
|
|
|
- //审核历史返回VO以及集合
|
|
|
|
- if (allProjectTasks != null) {
|
|
|
|
- auditHistoryVOS = allProjectTasks.stream()
|
|
|
|
- //过滤筛选掉分配任务的信息
|
|
|
|
- .filter(item -> item.getId() != item.getAssoTaskId())
|
|
|
|
- .map(item -> {
|
|
|
|
- //新建VO
|
|
|
|
- AuditHistoryVO auditHistoryVO = new AuditHistoryVO();
|
|
|
|
- ProjectTaskVO auditHistoryTaskVO = new ProjectTaskVO();
|
|
|
|
- BeanUtils.copyProperties(item, auditHistoryTaskVO);
|
|
|
|
- //处理结果VO
|
|
|
|
- TaskHandleResultVO taskHandleResultVO = new TaskHandleResultVO();
|
|
|
|
- LambdaQueryWrapper<TaskHandleResult> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- queryWrapper.eq(TaskHandleResult::getTaskId, item.getId());
|
|
|
|
- List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(queryWrapper);
|
|
|
|
- if (taskHandleResults.size() != 0) {
|
|
|
|
- TaskHandleResult taskHandleResult = taskHandleResults.get(0);
|
|
|
|
- if (taskHandleResult != null) {
|
|
|
|
- BeanUtils.copyProperties(taskHandleResult, taskHandleResultVO);
|
|
|
|
- auditHistoryVO.setProjectTaskVO(auditHistoryTaskVO);
|
|
|
|
- auditHistoryVO.setTaskHandleResultVO(taskHandleResultVO);
|
|
|
|
- return auditHistoryVO;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return null;//返回空值不装到列表中
|
|
|
|
- })
|
|
|
|
- //过滤掉空对象
|
|
|
|
- .filter(Objects::nonNull)
|
|
|
|
- .sorted(Comparator.comparing(
|
|
|
|
- a -> a.getTaskHandleResultVO(),
|
|
|
|
- Comparator.nullsLast(Comparator.comparing(TaskHandleResultVO::getCreateTime, Comparator.reverseOrder()))))
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 装载任务详情的集合
|
|
|
|
+ *
|
|
|
|
+ * @param taskResultVOs
|
|
|
|
+ * @throws IOException
|
|
|
|
+ */
|
|
|
|
+ public void loadTaskResultVos(List<TaskResultVO> taskResultVOs) throws IOException {
|
|
|
|
+ //装载项目名称
|
|
|
|
+ List<String> createIds = taskResultVOs.stream().map(TaskResultVO::getCreateId).collect(Collectors.toList());
|
|
|
|
|
|
- taskDetailsVO.setAuditHistoryVOS(auditHistoryVOS);
|
|
|
|
|
|
+ List<Personnel> personnels = new ArrayList<>();
|
|
|
|
+ //查询创建人名称
|
|
|
|
+ if (createIds.size() != 0) {
|
|
|
|
+ String res = permissionService.getPersonnelByIdsFromPCS(createIds);
|
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(res);
|
|
|
|
+ personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
|
|
}
|
|
}
|
|
- //全部的文件信息(获取所有的任务的id,查出所有的结果id)
|
|
|
|
- List<Integer> allTaskIds = allProjectTasks.stream().map(ProjectTask::getId).collect(Collectors.toList());
|
|
|
|
- LambdaQueryWrapper<TaskHandleResult> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- queryWrapper.in(TaskHandleResult::getTaskId, allTaskIds);
|
|
|
|
- List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(queryWrapper);
|
|
|
|
|
|
|
|
- List<Integer> resultIds = new ArrayList<>();
|
|
|
|
- if (taskHandleResults != null && !taskHandleResults.isEmpty()) {
|
|
|
|
- resultIds = taskHandleResults.stream().map(TaskHandleResult::getId).collect(Collectors.toList());
|
|
|
|
- }
|
|
|
|
- //根据所有的结果ids查询所有fileGuids
|
|
|
|
- if (resultIds != null && !resultIds.isEmpty()) {
|
|
|
|
- LambdaQueryWrapper<AssoHandleResultFile> allGuidsWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- allGuidsWrapper.in(AssoHandleResultFile::getTaskHandleResultId, resultIds);
|
|
|
|
- List<AssoHandleResultFile> assoHandleResultFiles = assoHandleResultFileService.list(allGuidsWrapper);
|
|
|
|
- List<String> fileGuids = new ArrayList<>();
|
|
|
|
- List<SystemFile> systemFiles = new ArrayList<>();
|
|
|
|
- if (!assoHandleResultFiles.isEmpty()) {
|
|
|
|
- fileGuids = assoHandleResultFiles.stream().map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
|
|
|
|
- }
|
|
|
|
- //调用文件系统查询文件信息接口
|
|
|
|
- if (!fileGuids.isEmpty()) {
|
|
|
|
- String res = fileManagerService.getSystemFileFromFMS(fileGuids);
|
|
|
|
- systemFiles = JSONObject.parseArray(res, SystemFile.class);
|
|
|
|
- }
|
|
|
|
- if (!systemFiles.isEmpty()) {
|
|
|
|
- for (AssoHandleResultFile assoHandleResultFile : assoHandleResultFiles) {
|
|
|
|
- HandleResultFileVO handleResultFileVO = new HandleResultFileVO();
|
|
|
|
- //装载文件信息
|
|
|
|
- SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(assoHandleResultFile.getFileGuid())).findFirst().orElse(null);
|
|
|
|
- if (systemFile != null) {
|
|
|
|
- BeanUtils.copyProperties(assoHandleResultFile, handleResultFileVO);
|
|
|
|
- handleResultFileVO.setGuid(assoHandleResultFile.getFileGuid());
|
|
|
|
- handleResultFileVO.setSource(2);
|
|
|
|
- handleResultFileVO.setType(systemFile.getType());
|
|
|
|
- handleResultFileVO.setOriginalName(systemFile.getOriginalName());
|
|
|
|
- }
|
|
|
|
- handleResultFileVOS.add(handleResultFileVO);
|
|
|
|
- }
|
|
|
|
|
|
+ //装载所有审查历史中的人员name
|
|
|
|
+ for (TaskResultVO taskResultVO : taskResultVOs) {
|
|
|
|
+ Personnel personnel = personnels.stream().filter(item -> item.getId().equals(taskResultVO.getCreateId())).findFirst().orElse(null);
|
|
|
|
+ if (personnel != null) {
|
|
|
|
+ taskResultVO.setCreateName(personnel.getPersonnelName());
|
|
|
|
+ } else {
|
|
|
|
+ throw new XiaoShiException("未获取到分配任务的负责人id信息");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- taskDetailsVO.setSystemFileList(handleResultFileVOS.stream()
|
|
|
|
- .sorted(Comparator.comparing(HandleResultFileVO::getCreateTime).reversed())
|
|
|
|
- .collect(Collectors.toList()));
|
|
|
|
- //装载名称
|
|
|
|
- this.loadTaskDetails(taskDetailsVO);
|
|
|
|
- return taskDetailsVO;
|
|
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
+
|
|
}
|
|
}
|