|
@@ -31,6 +31,7 @@ import cn.cslg.pas.service.permissions.PermissionService;
|
|
|
import cn.cslg.pas.service.query.FormatQueryService;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -41,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -150,7 +152,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
LambdaUpdateWrapper<PatentDigProject> queryWrapper = new LambdaUpdateWrapper<>();
|
|
|
queryWrapper.eq(PatentDigProject::getProjectId, projectId);
|
|
|
queryWrapper.set(PatentDigProject::getState, 0);
|
|
|
- patentDigProjectService.updateMessage(queryWrapper);
|
|
|
+ patentDigProjectService.update(queryWrapper);
|
|
|
}
|
|
|
return projectTaskId;
|
|
|
} else {
|
|
@@ -167,7 +169,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
* @param projectTaskDTO
|
|
|
* @return
|
|
|
*/
|
|
|
- public Integer addTask(ProjectTaskDTO projectTaskDTO) {
|
|
|
+ public Integer addTask(ProjectTaskDTO projectTaskDTO) throws Exception {
|
|
|
//判断专题库id不为空
|
|
|
if (projectTaskDTO.getProjectId() == null) {
|
|
|
throw new XiaoShiException("专题库id不能为空!");
|
|
@@ -193,16 +195,9 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (projectTaskDTO.getLastTaskId() != null) {
|
|
|
- ProjectTask projectTask = this.getById(projectTaskDTO.getLastTaskId());
|
|
|
- if (projectTask.getTaskPath() == null) {
|
|
|
- projectTaskDTO.setTaskPath(projectTask.getId().toString());
|
|
|
- } else {
|
|
|
- projectTaskDTO.setTaskPath(projectTask.getTaskPath() + "/" + projectTask.getId().toString());
|
|
|
- }
|
|
|
- }
|
|
|
ProjectTask projectTask = new ProjectTask();
|
|
|
BeanUtils.copyProperties(projectTaskDTO, projectTask);
|
|
|
+ projectTask.setLastTaskId(null);
|
|
|
//任务状态置为处理中
|
|
|
projectTask.setStatus(2);
|
|
|
//获取登录人信息
|
|
@@ -213,13 +208,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
//设置任务的发起人
|
|
|
projectTask.setCreateId(personnelVO.getId());
|
|
|
projectTask.insert();
|
|
|
- //如果assoTaskId为空,就设置
|
|
|
- if (projectTask.getAssoTaskId() == null) {
|
|
|
- if (projectTask.getType() == 1 || projectTask.getType() == 6 || projectTask.getType() == 7) {
|
|
|
- projectTask.setAssoTaskId(projectTask.getId());
|
|
|
- projectTask.updateById();
|
|
|
- }
|
|
|
- }
|
|
|
+ Integer taskId = projectTask.getId();
|
|
|
//新增任务可能会上传附件,如果附件不为空,则添加任务与附件关联
|
|
|
if (projectTaskDTO.getFileGuids() != null) {
|
|
|
AssoTaskFileDTO assoTaskFileDTO = new AssoTaskFileDTO();
|
|
@@ -227,16 +216,29 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
assoTaskFileDTO.setFileGuids(projectTaskDTO.getFileGuids());
|
|
|
assoTaskFileService.addTaskFile(assoTaskFileDTO);
|
|
|
}
|
|
|
+
|
|
|
+ if (projectTaskDTO.getLastTaskId() != null) {
|
|
|
+ LambdaQueryWrapper<TaskHandleResult> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(TaskHandleResult::getTaskId, projectTaskDTO.getLastTaskId());
|
|
|
+ TaskHandleResult taskHandleResult = taskHandleResultService.getOne(queryWrapper, false);
|
|
|
+ if (taskHandleResult != null) {
|
|
|
+ Integer resultId = taskHandleResult.getId();
|
|
|
+ LambdaQueryWrapper<AssoHandleResultFile> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(AssoHandleResultFile::getTaskHandleResultId, resultId);
|
|
|
+ List<AssoHandleResultFile> assoHandleResultFiles = assoHandleResultFileService.list(queryWrapper1);
|
|
|
+ List<FileDTO> fileDTOS = new ArrayList<>();
|
|
|
+ this.getCopyFileDTOs(assoHandleResultFiles, fileDTOS);
|
|
|
+ FileFormDTO fileFormDTO = new FileFormDTO();
|
|
|
+ fileFormDTO.setFiles(fileDTOS);
|
|
|
+ this.addProjectTaskFileByFormDTO(fileFormDTO, taskId);
|
|
|
+ }
|
|
|
+ }
|
|
|
//根据新增的审核任务的lastTaskId,将上一级任务状态改为审核中
|
|
|
if (projectTask.getLastTaskId() != null && projectTask.getType().equals(5)) {
|
|
|
- LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ LambdaUpdateWrapper<ProjectTask> queryWrapper = new LambdaUpdateWrapper<>();
|
|
|
queryWrapper.eq(ProjectTask::getId, projectTask.getLastTaskId());
|
|
|
- List<ProjectTask> projectTasks = this.list(queryWrapper);
|
|
|
- if (projectTasks != null && projectTasks.size() != 0) {
|
|
|
- ProjectTask projectTask1 = projectTasks.get(0);
|
|
|
- projectTask1.setStatus(1);
|
|
|
- projectTask1.updateById();
|
|
|
- }
|
|
|
+ queryWrapper.set(ProjectTask::getStatus, 1);
|
|
|
+ this.update(queryWrapper);
|
|
|
}
|
|
|
//项目可见人检验
|
|
|
//如果是内部人员
|
|
@@ -1362,6 +1364,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
String handleName = taskFormDTO.getHandler();
|
|
|
Date deadLineTime = taskFormDTO.getDeadLineTime();
|
|
|
Integer lastTaskId = taskFormDTO.getLastTaskId();
|
|
|
+ Integer assoTaskId = taskFormDTO.getAssoTaskId();
|
|
|
ProjectTask projectTask = new ProjectTask();
|
|
|
projectTask.setName(name);
|
|
|
projectTask.setHandlerType(handleType);
|
|
@@ -1369,6 +1372,8 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
projectTask.setDeadLineTime(deadLineTime);
|
|
|
projectTask.setProjectId(projectId);
|
|
|
projectTask.setType(taskFormDTO.getTaskType());
|
|
|
+ projectTask.setAssoTaskId(assoTaskId);
|
|
|
+
|
|
|
//任务状态置为处理中
|
|
|
projectTask.setStatus(2);
|
|
|
//获取登录人信息
|
|
@@ -1379,29 +1384,26 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
String lastName = projectTask1.getName();
|
|
|
projectTask.setLastTaskId(lastTaskId);
|
|
|
projectTask.setProjectId(projectTask1.getProjectId());
|
|
|
- Integer rootTaskId = projectTask1.getAssoTaskId();
|
|
|
- if (rootTaskId == null) {
|
|
|
- rootTaskId = projectTask1.getId();
|
|
|
- }
|
|
|
- projectTask.setAssoTaskId(rootTaskId);
|
|
|
+ projectTask.setProcessId(projectTask1.getProcessId());
|
|
|
+ projectTask.setType(projectTask1.getType());
|
|
|
String lastPath = projectTask1.getTaskPath();
|
|
|
if (lastPath == null) {
|
|
|
- lastPath = "";
|
|
|
+ lastPath = projectTask1.getId() + "";
|
|
|
} else {
|
|
|
- lastPath += "/";
|
|
|
+ lastPath += "/" + projectTask1.getId();
|
|
|
}
|
|
|
-
|
|
|
+ projectTask.setTaskPath(lastPath);
|
|
|
Integer b = 1;
|
|
|
if (!lastPath.equals("")) {
|
|
|
String[] a = lastPath.split("/");
|
|
|
b = a.length + 1;
|
|
|
}
|
|
|
- String newName = lastName.substring(0, lastName.lastIndexOf("-"));
|
|
|
- newName = newName + "-" + b + "级审核";
|
|
|
+
|
|
|
+ String newName = lastName + "-" + b + "级审核";
|
|
|
projectTask.setName(newName);
|
|
|
- projectTask.setTaskPath(lastPath + projectTask1.getId());
|
|
|
|
|
|
}
|
|
|
+
|
|
|
//设置任务的发起人
|
|
|
projectTask.setCreateId(personnelVO.getId());
|
|
|
projectTask.insert();
|
|
@@ -1423,15 +1425,16 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
public Integer addFileExamineTask(AddFileExamineTaskDTO addFileExamineTaskDTO) {
|
|
|
FileFormDTO fileFormDTO = addFileExamineTaskDTO.getFileForm();
|
|
|
TaskFormDTO taskFormDTO = addFileExamineTaskDTO.getTaskForm();
|
|
|
+ taskFormDTO.setTaskType(taskFormDTO.getTaskType());
|
|
|
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());
|
|
|
- }
|
|
|
+// if (projectTask.getHandlerType().equals(0)) {
|
|
|
+// this.checkProjectPerson(1, projectTask.getHandler(), projectTask.getProjectId(), projectTask.getId());
|
|
|
+// }
|
|
|
return projectTask.getId();
|
|
|
}
|
|
|
|
|
@@ -1445,9 +1448,13 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
List<TaskResultVO> taskDetailsVOs = new ArrayList<>();
|
|
|
Integer taskId = getExamineHistoryDTO.getTaskId();
|
|
|
String fileGuid = getExamineHistoryDTO.getFileGuid();
|
|
|
+ Boolean ifGetLast = getExamineHistoryDTO.getIfGetLast();
|
|
|
String rootGuid = fileGuid;
|
|
|
if (fileGuid != null && !fileGuid.equals("")) {
|
|
|
AssoTaskFile assoTaskFile = assoTaskFileService.getAssoTaskFileByGuid(fileGuid);
|
|
|
+ if (assoTaskFile == null) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
if (taskId == null) {
|
|
|
taskId = assoTaskFile.getTaskId();
|
|
|
}
|
|
@@ -1456,16 +1463,37 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
}
|
|
|
}
|
|
|
//根据taskId 查询任务
|
|
|
+
|
|
|
+ LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
ProjectTask projectTask = this.getById(taskId);
|
|
|
Integer rootTaskId = projectTask.getAssoTaskId();
|
|
|
if (rootTaskId == null) {
|
|
|
- rootTaskId = projectTask.getId();
|
|
|
+ String path = projectTask.getTaskPath();
|
|
|
+ String key = null;
|
|
|
+ if (path == null) {
|
|
|
+ key = projectTask.getId() + "";
|
|
|
+ } else {
|
|
|
+ String[] paths = path.split("/");
|
|
|
+ key = paths[0];
|
|
|
+ }
|
|
|
+
|
|
|
+ queryWrapper.apply("id=" + key + " or find_in_set(" + key + ",REPLACE(task_path, '/', ',')) ");
|
|
|
+ } else {
|
|
|
+ queryWrapper.eq(ProjectTask::getAssoTaskId, rootTaskId);
|
|
|
+ }
|
|
|
+ List<ProjectTask> projectTasks = new ArrayList<>();
|
|
|
+ if (ifGetLast != null && ifGetLast) {
|
|
|
+ queryWrapper.orderByDesc(ProjectTask::getCreateTime);
|
|
|
+ ProjectTask projectTask1 = this.getOne(queryWrapper,false);
|
|
|
+ if (projectTask1 != null) {
|
|
|
+ projectTasks.add(projectTask1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ queryWrapper.orderByAsc(ProjectTask::getCreateTime);
|
|
|
+ projectTasks = this.list(queryWrapper);
|
|
|
}
|
|
|
|
|
|
- LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(ProjectTask::getAssoTaskId, rootTaskId).or().eq(ProjectTask::getId, rootTaskId)
|
|
|
- .orderByAsc(ProjectTask::getCreateTime);
|
|
|
- List<ProjectTask> projectTasks = this.list(queryWrapper);
|
|
|
+
|
|
|
List<Integer> taskIds = projectTasks.stream().map(ProjectTask::getId).collect(Collectors.toList());
|
|
|
|
|
|
if (taskIds == null || taskIds.size() == 0) {
|
|
@@ -1474,17 +1502,18 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
LambdaQueryWrapper<TaskHandleResult> resultLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
resultLambdaQueryWrapper.in(TaskHandleResult::getTaskId, taskIds);
|
|
|
List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(resultLambdaQueryWrapper);
|
|
|
-
|
|
|
+ List<AssoHandleResultFile> resultFiles = new ArrayList<>();
|
|
|
List<Integer> resultIds = taskHandleResults.stream().map(TaskHandleResult::getId).collect(Collectors.toList());
|
|
|
- if (resultIds == null || resultIds.size() == 0) {
|
|
|
- return taskDetailsVOs;
|
|
|
- }
|
|
|
- LambdaQueryWrapper<AssoHandleResultFile> resultFileWrapper = new LambdaQueryWrapper<>();
|
|
|
- resultFileWrapper.in(AssoHandleResultFile::getTaskHandleResultId, resultIds);
|
|
|
- if (fileGuid != null && !fileGuid.equals("")) {
|
|
|
- resultFileWrapper.eq(AssoHandleResultFile::getRootFileGuid, rootGuid);
|
|
|
+ if (resultIds != null && resultIds.size() > 0) {
|
|
|
+ LambdaQueryWrapper<AssoHandleResultFile> resultFileWrapper = new LambdaQueryWrapper<>();
|
|
|
+ resultFileWrapper.in(AssoHandleResultFile::getTaskHandleResultId, resultIds);
|
|
|
+ if (fileGuid != null && !fileGuid.equals("")) {
|
|
|
+ resultFileWrapper.eq(AssoHandleResultFile::getRootFileGuid, rootGuid);
|
|
|
+ }
|
|
|
+ resultFiles = assoHandleResultFileService.list(resultFileWrapper);
|
|
|
}
|
|
|
- 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()) {
|
|
@@ -1492,17 +1521,33 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
systemFiles = JSONObject.parseArray(res, SystemFile.class);
|
|
|
}
|
|
|
|
|
|
- for (TaskHandleResult taskHandleResult : taskHandleResults) {
|
|
|
- Integer id = taskHandleResult.getId();
|
|
|
+ for (ProjectTask projectTask1 : projectTasks) {
|
|
|
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);
|
|
|
+ Integer status = projectTask1.getStatus();
|
|
|
+ Integer taskId1 = projectTask1.getId();
|
|
|
+ Integer handleType = projectTask1.getHandlerType();
|
|
|
+ String handler = projectTask1.getHandler();
|
|
|
+ TaskHandleResult taskHandleResult = taskHandleResults.stream().filter(item -> item.getTaskId().equals(taskId1)).findFirst().orElse(null);
|
|
|
+ if (taskHandleResult != null) {
|
|
|
+ BeanUtils.copyProperties(taskHandleResult, taskResultVO);
|
|
|
+ List<String> temGuids = resultFiles.stream().filter(item -> item.getTaskHandleResultId().equals(taskHandleResult.getId())).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);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ taskResultVO.setNextAuditor(projectTask1.getCreateId());
|
|
|
}
|
|
|
+ if (handleType.equals(0)) {
|
|
|
+ taskResultVO.setCreateId(handler);
|
|
|
+ } else {
|
|
|
+ taskResultVO.setCreateName(handler);
|
|
|
+ }
|
|
|
+ taskResultVO.setStatus(status);
|
|
|
taskDetailsVOs.add(taskResultVO);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
//装载名称
|
|
|
this.loadTaskResultVos(taskDetailsVOs);
|
|
|
return taskDetailsVOs;
|
|
@@ -1528,11 +1573,13 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
|
|
|
//装载所有审查历史中的人员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信息");
|
|
|
+ if (taskResultVO.getCreateName() == null) {
|
|
|
+ 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信息");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return;
|
|
@@ -1548,4 +1595,30 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
|
taskFormDTO.setDescription(projectTaskDTO.getDescription());
|
|
|
return taskFormDTO;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 从审核结果文件中,复制文件
|
|
|
+ *
|
|
|
+ * @param assoHandleResultFiles
|
|
|
+ * @param fileDTOS
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public void getCopyFileDTOs(List<AssoHandleResultFile> assoHandleResultFiles, List<FileDTO> fileDTOS) throws Exception {
|
|
|
+ List<File> files = new ArrayList<>();
|
|
|
+ for (AssoHandleResultFile assoHandleResultFile : assoHandleResultFiles) {
|
|
|
+ String rootFileGuid = assoHandleResultFile.getFileGuid();
|
|
|
+ File file = fileManagerService.getOrgTempFileByGuid(assoHandleResultFile.getFileGuid());
|
|
|
+ files.add(file);
|
|
|
+ if (fileDTOS != null) {
|
|
|
+ List<String> guid2s = fileManagerService.uploadFileGetGuid2(Arrays.asList(file));
|
|
|
+ if (guid2s != null && guid2s.size() > 0) {
|
|
|
+ FileDTO fileDTO = new FileDTO();
|
|
|
+ fileDTO.setGuid(guid2s.get(0));
|
|
|
+ fileDTO.setRootGuid(rootFileGuid);
|
|
|
+ fileDTOS.add(fileDTO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ files.forEach(item -> item.delete());
|
|
|
+ }
|
|
|
}
|