|
@@ -4,17 +4,21 @@ import cn.cslg.pas.common.dto.business.*;
|
|
import cn.cslg.pas.common.model.cronModel.Personnel;
|
|
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.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.utils.CacheUtils;
|
|
import cn.cslg.pas.common.utils.CacheUtils;
|
|
import cn.cslg.pas.common.utils.LoginUtils;
|
|
import cn.cslg.pas.common.utils.LoginUtils;
|
|
-import cn.cslg.pas.common.vo.business.ProjectTaskVO;
|
|
|
|
-import cn.cslg.pas.domain.business.Project;
|
|
|
|
|
|
+import cn.cslg.pas.common.vo.business.*;
|
|
|
|
+import cn.cslg.pas.domain.business.AssoHandleResultFile;
|
|
|
|
+import cn.cslg.pas.domain.business.AssoTaskFile;
|
|
import cn.cslg.pas.domain.business.ProjectTask;
|
|
import cn.cslg.pas.domain.business.ProjectTask;
|
|
|
|
+import cn.cslg.pas.domain.business.TaskHandleResult;
|
|
import cn.cslg.pas.exception.UnLoginException;
|
|
import cn.cslg.pas.exception.UnLoginException;
|
|
import cn.cslg.pas.exception.XiaoShiException;
|
|
import cn.cslg.pas.exception.XiaoShiException;
|
|
import cn.cslg.pas.factorys.businessFactory.Business;
|
|
import cn.cslg.pas.factorys.businessFactory.Business;
|
|
import cn.cslg.pas.mapper.ProjectTaskMapper;
|
|
import cn.cslg.pas.mapper.ProjectTaskMapper;
|
|
|
|
+import cn.cslg.pas.service.common.FileManagerService;
|
|
import cn.cslg.pas.service.permissions.PermissionService;
|
|
import cn.cslg.pas.service.permissions.PermissionService;
|
|
import cn.cslg.pas.service.query.FormatQueryService;
|
|
import cn.cslg.pas.service.query.FormatQueryService;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
@@ -28,6 +32,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 专利挖掘任务模块
|
|
* 专利挖掘任务模块
|
|
@@ -55,70 +60,50 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
@Autowired
|
|
@Autowired
|
|
private PermissionService permissionService;
|
|
private PermissionService permissionService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private AssoTaskFileService assoTaskFileService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private TaskHandleResultService taskHandleResultService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private AssoHandleResultFileService assoHandleResultFileService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private FileManagerService fileManagerService;
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 项目开卷审核任务
|
|
* 项目开卷审核任务
|
|
* @param patentDigProjectTaskDTO
|
|
* @param patentDigProjectTaskDTO
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- public Object addProjectOpenExamineTask(PatentDigProjectTaskDTO patentDigProjectTaskDTO){
|
|
|
|
|
|
+ public Object addProjectOpenAuditTask(PatentDigProjectTaskDTO patentDigProjectTaskDTO){
|
|
PatentDigProjectDTO patentDigProjectDTO = patentDigProjectTaskDTO.getPatentDigProjectDTO();
|
|
PatentDigProjectDTO patentDigProjectDTO = patentDigProjectTaskDTO.getPatentDigProjectDTO();
|
|
ProjectTaskDTO projectTaskDTO = patentDigProjectTaskDTO.getProjectTaskDTO();
|
|
ProjectTaskDTO projectTaskDTO = patentDigProjectTaskDTO.getProjectTaskDTO();
|
|
//如果专利挖掘项目DTO不为空,则需要先建立专利挖掘项目
|
|
//如果专利挖掘项目DTO不为空,则需要先建立专利挖掘项目
|
|
if (patentDigProjectDTO != null) {
|
|
if (patentDigProjectDTO != null) {
|
|
Integer projectId = (Integer) patentDigProjectService.addMessage(patentDigProjectDTO);
|
|
Integer projectId = (Integer) patentDigProjectService.addMessage(patentDigProjectDTO);
|
|
- //判断专题库id不为空
|
|
|
|
- if (projectId == null) {
|
|
|
|
- throw new XiaoShiException("专题库id不能为空!");
|
|
|
|
- }
|
|
|
|
- Integer type = projectTaskDTO.getType();
|
|
|
|
- if (type == null) {
|
|
|
|
- throw new XiaoShiException("任务类型不能为空!");
|
|
|
|
- }
|
|
|
|
- //判断任务名称不为空
|
|
|
|
- projectTaskDTO.setName(projectTaskDTO.getName().trim());
|
|
|
|
- String name = projectTaskDTO.getName();
|
|
|
|
- if (name == null || name.equals("")) {
|
|
|
|
- throw new XiaoShiException("任务名称不能为空!");
|
|
|
|
- }
|
|
|
|
- LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- queryWrapper.eq(ProjectTask::getName, name);
|
|
|
|
- queryWrapper.eq(ProjectTask::getProjectId, projectId);
|
|
|
|
- List<ProjectTask> projectTasks = this.list(queryWrapper);
|
|
|
|
- if (projectTasks != null && projectTasks.size() != 0) {
|
|
|
|
- throw new XiaoShiException("任务名称不能重复!");
|
|
|
|
- }
|
|
|
|
- ProjectTask projectTask = new ProjectTask();
|
|
|
|
- BeanUtils.copyProperties(projectTaskDTO, projectTask);
|
|
|
|
- if (projectTask.getStatus() == null) {
|
|
|
|
- projectTask.setStatus(1);
|
|
|
|
- }
|
|
|
|
- projectTask.setProjectId(projectId);
|
|
|
|
- //获取登录人信息
|
|
|
|
- PersonnelVO personnelVO = new PersonnelVO();
|
|
|
|
- try {
|
|
|
|
- personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- throw new UnLoginException("未登录");
|
|
|
|
- }
|
|
|
|
- projectTask.setCreateId(personnelVO.getId());
|
|
|
|
- projectTask.insert();
|
|
|
|
- return projectTask.getId();
|
|
|
|
|
|
+ projectTaskDTO.setProjectId(projectId);
|
|
|
|
+ Integer projectTaskId = this.addTask(projectTaskDTO);
|
|
|
|
+ return projectTaskId;
|
|
} else {
|
|
} else {
|
|
throw new XiaoShiException("挖掘项目数据不能为空!");
|
|
throw new XiaoShiException("挖掘项目数据不能为空!");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
- * 添加任务
|
|
|
|
|
|
+ * 新建任务
|
|
|
|
+ * @param projectTaskDTO
|
|
|
|
+ * @return
|
|
*/
|
|
*/
|
|
public Integer addTask(ProjectTaskDTO projectTaskDTO){
|
|
public Integer addTask(ProjectTaskDTO projectTaskDTO){
|
|
//判断专题库id不为空
|
|
//判断专题库id不为空
|
|
if (projectTaskDTO.getProjectId() == null) {
|
|
if (projectTaskDTO.getProjectId() == null) {
|
|
throw new XiaoShiException("专题库id不能为空!");
|
|
throw new XiaoShiException("专题库id不能为空!");
|
|
}
|
|
}
|
|
- Integer type = projectTaskDTO.getType();
|
|
|
|
- if (type == null) {
|
|
|
|
|
|
+ //判断任务类型不为空
|
|
|
|
+ if (projectTaskDTO.getType() == null) {
|
|
throw new XiaoShiException("任务类型不能为空!");
|
|
throw new XiaoShiException("任务类型不能为空!");
|
|
}
|
|
}
|
|
//判断任务名称不为空
|
|
//判断任务名称不为空
|
|
@@ -127,19 +112,13 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
if (name == null || name.equals("")) {
|
|
if (name == null || name.equals("")) {
|
|
throw new XiaoShiException("任务名称不能为空!");
|
|
throw new XiaoShiException("任务名称不能为空!");
|
|
}
|
|
}
|
|
- LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- queryWrapper.eq(ProjectTask::getName, name);
|
|
|
|
- queryWrapper.eq(ProjectTask::getProjectId, projectTaskDTO.getProjectId());
|
|
|
|
- List<ProjectTask> projectTasks = this.list(queryWrapper);
|
|
|
|
- if (projectTasks != null && projectTasks.size() != 0) {
|
|
|
|
- throw new XiaoShiException("任务名称不能重复!");
|
|
|
|
- }
|
|
|
|
ProjectTask projectTask = new ProjectTask();
|
|
ProjectTask projectTask = new ProjectTask();
|
|
BeanUtils.copyProperties(projectTaskDTO, projectTask);
|
|
BeanUtils.copyProperties(projectTaskDTO, projectTask);
|
|
- if (projectTask.getType() == 1 || projectTask.getType() == 5) {
|
|
|
|
- projectTask.setStatus(1);
|
|
|
|
- } else if (projectTask.getType() == 6) {
|
|
|
|
- projectTask.setStatus(2);
|
|
|
|
|
|
+ //任务状态置为处理中
|
|
|
|
+ projectTask.setStatus(2);
|
|
|
|
+ //任务类型为审核任务
|
|
|
|
+ if (projectTaskDTO.getType() == 5) {
|
|
|
|
+ projectTask.setType(5);
|
|
}
|
|
}
|
|
//获取登录人信息
|
|
//获取登录人信息
|
|
PersonnelVO personnelVO = new PersonnelVO();
|
|
PersonnelVO personnelVO = new PersonnelVO();
|
|
@@ -148,54 +127,25 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
throw new UnLoginException("未登录");
|
|
throw new UnLoginException("未登录");
|
|
}
|
|
}
|
|
|
|
+ //设置任务的发起人
|
|
projectTask.setCreateId(personnelVO.getId());
|
|
projectTask.setCreateId(personnelVO.getId());
|
|
projectTask.insert();
|
|
projectTask.insert();
|
|
|
|
+ //新增任务可能会上传附件,如果附件不为空,则添加任务与附件关联
|
|
|
|
+ if (projectTaskDTO.getFileGuids().size() != 0) {
|
|
|
|
+ AssoTaskFileDTO assoTaskFileDTO = new AssoTaskFileDTO();
|
|
|
|
+ assoTaskFileDTO.setTaskId(projectTask.getId());
|
|
|
|
+ assoTaskFileDTO.setFileGuids(projectTaskDTO.getFileGuids());
|
|
|
|
+ assoTaskFileService.addTaskFile(assoTaskFileDTO);
|
|
|
|
+ }
|
|
return projectTask.getId();
|
|
return projectTask.getId();
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
- * 任务审核任务
|
|
|
|
- * @param taskAuditTaskDTO
|
|
|
|
|
|
+ * 查询任务
|
|
|
|
+ * @param queryRequest
|
|
* @return
|
|
* @return
|
|
|
|
+ * @throws Exception
|
|
*/
|
|
*/
|
|
- public Object addAuditTask(TaskAuditTaskDTO taskAuditTaskDTO){
|
|
|
|
- Integer type = taskAuditTaskDTO.getType();
|
|
|
|
- if (type == null && type > 5) {
|
|
|
|
- throw new XiaoShiException("任务类型不能为空!");
|
|
|
|
- }
|
|
|
|
- //判断专题库id不为空
|
|
|
|
- Integer projectId = taskAuditTaskDTO.getProjectId();
|
|
|
|
- if (projectId == null) {
|
|
|
|
- throw new XiaoShiException("专题库id不能为空!");
|
|
|
|
- }
|
|
|
|
- //判断任务名称不为空
|
|
|
|
- taskAuditTaskDTO.setName(taskAuditTaskDTO.getName().trim());
|
|
|
|
- String name = taskAuditTaskDTO.getName();
|
|
|
|
- if (name == null || name.equals("")) {
|
|
|
|
- throw new XiaoShiException("任务名称不能为空!");
|
|
|
|
- }
|
|
|
|
- LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- queryWrapper.eq(ProjectTask::getName, name);
|
|
|
|
- queryWrapper.eq(ProjectTask::getProjectId, projectId);
|
|
|
|
- List<ProjectTask> projectTasks = this.list(queryWrapper);
|
|
|
|
- if (projectTasks != null && projectTasks.size() != 0) {
|
|
|
|
- throw new XiaoShiException("任务名称不能重复!");
|
|
|
|
- }
|
|
|
|
- ProjectTask projectTask = new ProjectTask();
|
|
|
|
- BeanUtils.copyProperties(taskAuditTaskDTO, projectTask);
|
|
|
|
- //获取登录人信息
|
|
|
|
- PersonnelVO personnelVO = new PersonnelVO();
|
|
|
|
- try {
|
|
|
|
- personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- throw new UnLoginException("未登录");
|
|
|
|
- }
|
|
|
|
- projectTask.setCreateId(personnelVO.getId());
|
|
|
|
- projectTask.insert();
|
|
|
|
- return projectTask.getId();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public Object queryMessage(QueryRequest queryRequest) throws Exception {
|
|
public Object queryMessage(QueryRequest queryRequest) throws Exception {
|
|
List<String> sqls = formatQueryService.reSqls(queryRequest,"projectTask");
|
|
List<String> sqls = formatQueryService.reSqls(queryRequest,"projectTask");
|
|
@@ -259,6 +209,94 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 根据任务id查询任务详情以及处理结果以及审核历史
|
|
|
|
+ * @param taskId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public TaskDetailsVO queryAuditHistory(Integer taskId) throws IOException {
|
|
|
|
+ //新建返回VO类
|
|
|
|
+ TaskDetailsVO taskDetailsVO = new TaskDetailsVO();
|
|
|
|
+ //根据taskId查询此条任务详情
|
|
|
|
+ LambdaQueryWrapper<ProjectTask> currentTaskWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ currentTaskWrapper.eq(ProjectTask::getId, taskId);
|
|
|
|
+ ProjectTask currentTask = this.list(currentTaskWrapper).get(0);
|
|
|
|
+ //根据此条任务详情获取assoTaskId
|
|
|
|
+ Integer assoTaskId = currentTask.getAssoTaskId();
|
|
|
|
+ //根据assoTaskId获取最初任务的详情
|
|
|
|
+ LambdaQueryWrapper<ProjectTask> assoTaskWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ assoTaskWrapper.eq(ProjectTask::getId, assoTaskId);
|
|
|
|
+ ProjectTask assoTask = this.list(assoTaskWrapper).get(0);
|
|
|
|
+ //装载最初任务详情
|
|
|
|
+ ProjectTaskVO projectTaskVO = new ProjectTaskVO();
|
|
|
|
+ BeanUtils.copyProperties(assoTask, projectTaskVO);
|
|
|
|
+ taskDetailsVO.setProjectTaskVO(projectTaskVO);
|
|
|
|
+ //根据assoTaskId查询所有任务的id
|
|
|
|
+ LambdaQueryWrapper<ProjectTask> allTaskWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ allTaskWrapper.eq(ProjectTask::getAssoTaskId, assoTaskId);
|
|
|
|
+ List<ProjectTask> allProjectTasks = this.list(allTaskWrapper);
|
|
|
|
+ //新建审核历史返回VO以及集合
|
|
|
|
+ List<AuditHistoryVO> auditHistoryVOS = new ArrayList<>();
|
|
|
|
+ AuditHistoryVO auditHistoryVO = new AuditHistoryVO();
|
|
|
|
+ if (allProjectTasks != null) {
|
|
|
|
+ for (ProjectTask item : allProjectTasks) {
|
|
|
|
+ if (item != null) {
|
|
|
|
+ //任务详情VO
|
|
|
|
+ ProjectTaskVO auditHistoryTaskVO = new ProjectTaskVO();
|
|
|
|
+ BeanUtils.copyProperties(item, auditHistoryTaskVO);
|
|
|
|
+ auditHistoryVO.setProjectTaskVO(auditHistoryTaskVO);
|
|
|
|
+ //处理结果VO
|
|
|
|
+ TaskHandleResultVO taskHandleResultVO = new TaskHandleResultVO();
|
|
|
|
+ LambdaQueryWrapper<TaskHandleResult> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper.eq(TaskHandleResult::getTaskId, item.getId());
|
|
|
|
+ TaskHandleResult taskHandleResult = taskHandleResultService.list(queryWrapper).get(0);
|
|
|
|
+ BeanUtils.copyProperties(taskHandleResult, taskHandleResultVO);
|
|
|
|
+ auditHistoryVO.setTaskHandleResultVO(taskHandleResultVO);
|
|
|
|
+ auditHistoryVOS.add(auditHistoryVO);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ 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<Integer> resultIds = taskHandleResultService.list(queryWrapper).stream().map(TaskHandleResult::getId).collect(Collectors.toList());
|
|
|
|
+ //根据所有的结果ids查询所有fileGuids
|
|
|
|
+ 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<>();
|
|
|
|
+ List<HandleResultFileVO> handleResultFileVOS = new ArrayList<>();
|
|
|
|
+ if (assoHandleResultFiles.size() != 0) {
|
|
|
|
+ fileGuids = assoHandleResultFiles.stream().map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
|
|
|
|
+ }
|
|
|
|
+ //调用文件系统查询文件信息接口
|
|
|
|
+ if (fileGuids.size() != 0) {
|
|
|
|
+ String res = fileManagerService.getSystemFileFromFMS(fileGuids);
|
|
|
|
+ systemFiles = JSONObject.parseArray(res, SystemFile.class);
|
|
|
|
+ }
|
|
|
|
+ if (systemFiles.size() != 0) {
|
|
|
|
+ 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.setFileType(systemFile.getType());
|
|
|
|
+ handleResultFileVO.setFileName(systemFile.getOriginalName());
|
|
|
|
+ }
|
|
|
|
+ handleResultFileVOS.add(handleResultFileVO);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ taskDetailsVO.setSystemFileList(handleResultFileVOS);
|
|
|
|
+ return taskDetailsVO;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public Object addMessage(Object object, List<MultipartFile> files) {
|
|
public Object addMessage(Object object, List<MultipartFile> files) {
|
|
return null;
|
|
return null;
|