|
@@ -5,6 +5,7 @@ import cn.cslg.pas.common.model.cronModel.Personnel;
|
|
import cn.cslg.pas.common.model.cronModel.PersonnelVO;
|
|
import cn.cslg.pas.common.model.cronModel.PersonnelVO;
|
|
import cn.cslg.pas.common.model.cronModel.Records;
|
|
import cn.cslg.pas.common.model.cronModel.Records;
|
|
import cn.cslg.pas.common.model.cronModel.SystemFile;
|
|
import cn.cslg.pas.common.model.cronModel.SystemFile;
|
|
|
|
+import cn.cslg.pas.common.model.projectTask.*;
|
|
import cn.cslg.pas.common.model.request.GroupRequest;
|
|
import cn.cslg.pas.common.model.request.GroupRequest;
|
|
import cn.cslg.pas.common.model.request.QueryRequest;
|
|
import cn.cslg.pas.common.model.request.QueryRequest;
|
|
import cn.cslg.pas.common.model.request.StringRequest;
|
|
import cn.cslg.pas.common.model.request.StringRequest;
|
|
@@ -1352,4 +1353,217 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public ProjectTask addTaskByTaskFormDTO(TaskFormDTO taskFormDTO, Integer projectId) {
|
|
|
|
+ String name = taskFormDTO.getName();
|
|
|
|
+ Integer handleType = taskFormDTO.getHandlerType();
|
|
|
|
+ String handleName = taskFormDTO.getHandler();
|
|
|
|
+ Date deadLineTime = taskFormDTO.getDeadLineTime();
|
|
|
|
+ ProjectTask projectTask = new ProjectTask();
|
|
|
|
+ projectTask.setName(name);
|
|
|
|
+ projectTask.setHandlerType(handleType);
|
|
|
|
+ projectTask.setHandler(handleName);
|
|
|
|
+ projectTask.setDeadLineTime(deadLineTime);
|
|
|
|
+ projectTask.setProjectId(projectId);
|
|
|
|
+ //任务状态置为处理中
|
|
|
|
+ projectTask.setStatus(2);
|
|
|
|
+ //获取登录人信息
|
|
|
|
+ PersonnelVO personnelVO = new PersonnelVO();
|
|
|
|
+ personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
|
|
+ //设置任务的发起人
|
|
|
|
+ projectTask.setCreateId(personnelVO.getId());
|
|
|
|
+ projectTask.insert();
|
|
|
|
+ return projectTask;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void addProjectTaskFileByFormDTO(FileFormDTO fileFormDTO, Integer taskId) {
|
|
|
|
+ List<FileDTO> fileDTOS = fileFormDTO.getFiles();
|
|
|
|
+ List<String> fileGuids = fileDTOS.stream().map(FileDTO::getGuid).collect(Collectors.toList());
|
|
|
|
+ if (fileGuids != null && fileGuids.size() > 0) {
|
|
|
|
+ AssoTaskFileDTO assoTaskFileDTO = new AssoTaskFileDTO();
|
|
|
|
+ assoTaskFileDTO.setTaskId(taskId);
|
|
|
|
+ assoTaskFileDTO.setFileGuids(fileGuids);
|
|
|
|
+ assoTaskFileService.addTaskFile(assoTaskFileDTO);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public Integer addFileExamineTask(AddFileExamineTaskDTO addFileExamineTaskDTO) {
|
|
|
|
+ FileFormDTO fileFormDTO = addFileExamineTaskDTO.getFileForm();
|
|
|
|
+ TaskFormDTO taskFormDTO = addFileExamineTaskDTO.getTaskForm();
|
|
|
|
+ Integer projectId = fileFormDTO.getProjectId();
|
|
|
|
+ ProjectTask projectTask = this.addTaskByTaskFormDTO(taskFormDTO, projectId);
|
|
|
|
+ Integer taskId = projectTask.getId();
|
|
|
|
+ this.addProjectTaskFileByFormDTO(fileFormDTO, taskId);
|
|
|
|
+
|
|
|
|
+ //如果是内部人员
|
|
|
|
+ if (projectTask.getHandlerType().equals(0)) {
|
|
|
|
+ this.checkProjectPerson(1, projectTask.getHandler(), projectTask.getProjectId(), projectTask.getId());
|
|
|
|
+ }
|
|
|
|
+ return projectTask.getId();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 根据任务id查询任务详情以及处理结果以及审核历史
|
|
|
|
+ *
|
|
|
|
+ * @param taskId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public TaskDetailsVO getExamineHistory(GetExamineHistoryDTO getExamineHistoryDTO) throws IOException {
|
|
|
|
+ Integer taskId = getExamineHistoryDTO.getTaskId();
|
|
|
|
+ String fileGuid = getExamineHistoryDTO.getFileGuid();
|
|
|
|
+ String rootGuid = fileGuid;
|
|
|
|
+ if (fileGuid != null) {
|
|
|
|
+ AssoTaskFile assoTaskFile = assoTaskFileService.getAssoTaskFileByGuid(fileGuid);
|
|
|
|
+ if (taskId == null) {
|
|
|
|
+ taskId = assoTaskFile.getTaskId();
|
|
|
|
+ }
|
|
|
|
+ if (assoTaskFile.getRootFileGuid() != null) {
|
|
|
|
+ rootGuid = assoTaskFile.getRootFileGuid();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //根据taskId 查询任务
|
|
|
|
+ ProjectTask projectTask = this.getById(taskId);
|
|
|
|
+ Integer rootTaskId = projectTask.getAssoTaskId();
|
|
|
|
+ if (rootTaskId == null) {
|
|
|
|
+ rootTaskId = projectTask.getId();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper.eq(ProjectTask::getAssoTaskId, rootTaskId)
|
|
|
|
+ .orderByAsc(ProjectTask::getCreateTime);
|
|
|
|
+ List<ProjectTask> projectTasks = this.list(queryWrapper);
|
|
|
|
+ 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->{
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+ //新建返回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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //审核历史返回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());
|
|
|
|
+
|
|
|
|
+ taskDetailsVO.setAuditHistoryVOS(auditHistoryVOS);
|
|
|
|
+ }
|
|
|
|
+ //全部的文件信息(获取所有的任务的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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ taskDetailsVO.setSystemFileList(handleResultFileVOS.stream()
|
|
|
|
+ .sorted(Comparator.comparing(HandleResultFileVO::getCreateTime).reversed())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ //装载名称
|
|
|
|
+ this.loadTaskDetails(taskDetailsVO);
|
|
|
|
+ return taskDetailsVO;
|
|
|
|
+ }
|
|
}
|
|
}
|