xiexiang пре 1 година
родитељ
комит
8fc0ba082b

+ 2 - 0
src/main/java/cn/cslg/pas/common/dto/business/ProjectTaskDTO.java

@@ -3,6 +3,7 @@ package cn.cslg.pas.common.dto.business;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 项目任务DTO
@@ -83,4 +84,5 @@ public class ProjectTaskDTO {
      */
     private Integer processId;
 
+    private List<String> fileGuids;
 }

+ 21 - 0
src/main/java/cn/cslg/pas/common/vo/business/AuditHistoryVO.java

@@ -0,0 +1,21 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+/**
+ * 审核历史VO
+ * @Author xiexiang
+ * @Date 2023/11/28
+ */
+@Data
+public class AuditHistoryVO {
+    /**
+     * 处理结果VO
+     */
+    private TaskHandleResultVO taskHandleResultVO;
+
+    /**
+     * 任务详情VO
+     */
+    private ProjectTaskVO projectTaskVO;
+}

+ 40 - 0
src/main/java/cn/cslg/pas/common/vo/business/HandleResultFileVO.java

@@ -0,0 +1,40 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 处理结果文件VO
+ * @Author xiexiang
+ * @Date 2023/11/28
+ */
+@Data
+public class HandleResultFileVO {
+    /**
+     * 文件guid
+     */
+    private String fileGuid;
+
+    /**
+     * 文件名称
+     */
+    private String fileName;
+
+    /**
+     * 文件类型
+     */
+    private String fileType;
+
+    private String createId;
+
+    /**
+     * 上传人
+     */
+    private String createName;
+
+    /**
+     * 上传时间
+     */
+    private Date createTime;
+}

+ 30 - 0
src/main/java/cn/cslg/pas/common/vo/business/TaskDetailsVO.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 任务详情页面
+ * @Author xiexiang
+ * @Date 2023/11/27
+ */
+@Data
+public class TaskDetailsVO {
+
+    /**
+     * 最初的任务的详情
+     */
+    private ProjectTaskVO projectTaskVO;
+
+    /**
+     * 所有任务的处理结果关联的文件信息
+     */
+    private List<HandleResultFileVO> systemFileList;
+
+    /**
+     * 审核历史(关联任务详情)
+     */
+    private List<AuditHistoryVO> auditHistoryVOS;
+}

+ 59 - 0
src/main/java/cn/cslg/pas/common/vo/business/TaskHandleResultVO.java

@@ -0,0 +1,59 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 任务处理结果VO
+ * @Author xiexiang
+ * @Date 2023/11/22
+ */
+@Data
+public class TaskHandleResultVO {
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 任务处理结果
+     */
+    private String handleResult;
+
+    /**
+     * 描述/说明
+     */
+    private String description;
+
+    /**
+     * 下一个审核人
+     */
+    private String nextAuditor;
+
+    /**
+     * 是否内部人员
+     */
+    private Boolean ifInner;
+
+    /**
+     * 任务id
+     */
+    private Integer taskId;
+
+    /**
+     * 创建人
+     */
+    private String createId;
+
+    /**
+     * 创建人名称
+     */
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+}

+ 24 - 28
src/main/java/cn/cslg/pas/controller/ProjectTaskController.java

@@ -6,22 +6,16 @@ import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.business.AssoTaskFileVO;
-import cn.cslg.pas.domain.business.AssoTaskFile;
-import cn.cslg.pas.exception.ConditionException;
-import cn.cslg.pas.exception.UnLoginException;
-import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.common.vo.business.TaskDetailsVO;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.factorys.businessFactory.BusinessFactory;
 import cn.cslg.pas.service.business.AssoTaskFileService;
 import cn.cslg.pas.service.business.ProjectTaskService;
-import cn.cslg.pas.service.business.TaskAuditResultService;
+import cn.cslg.pas.service.business.TaskHandleResultService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
 import java.util.List;
@@ -42,22 +36,15 @@ public class ProjectTaskController {
     private ProjectTaskService projectTaskService;
 
     @Autowired
-    private TaskAuditResultService taskAuditResultService;
+    private TaskHandleResultService taskHandleResultService;
 
     @Autowired
     private AssoTaskFileService assoTaskFileService;
 
     @Operation(summary = "添加项目开卷审核任务")
-    @PostMapping("/addProjectOpenExamineTask")
-    public Response addProjectOpenExamineTask(@RequestBody PatentDigProjectTaskDTO patentDigProjectTaskDTO) throws Exception {
-        Integer id = (Integer) projectTaskService.addProjectOpenExamineTask(patentDigProjectTaskDTO);
-        return Response.success(id);
-    }
-
-    @Operation(summary = "处理审核任务,添加审核结果")
-    @PostMapping("/addTaskAuditResult")
-    public Response addTaskAuditResult(@RequestBody TaskAuditResultDTO taskAuditResultDTO) throws Exception {
-        Integer id = taskAuditResultService.addTaskAuditResult(taskAuditResultDTO);
+    @PostMapping("/addProjectOpenAuditTask")
+    public Response addProjectOpenAuditTask(@RequestBody PatentDigProjectTaskDTO patentDigProjectTaskDTO) throws Exception {
+        Integer id = (Integer) projectTaskService.addProjectOpenAuditTask(patentDigProjectTaskDTO);
         return Response.success(id);
     }
 
@@ -68,6 +55,13 @@ public class ProjectTaskController {
         return Response.success(id);
     }
 
+    @Operation(summary = "添加任务处理结果")
+    @PostMapping("/addTaskAuditResult")
+    public Response addTaskAuditResult(@RequestBody TaskAuditResultDTO taskAuditResultDTO) throws Exception {
+        Integer id = taskHandleResultService.addTaskAuditResult(taskAuditResultDTO);
+        return Response.success(id);
+    }
+
     @Operation(summary = "查询任务")
     @PostMapping("/queryProjectTask")
     public Response queryProjectTask(@RequestBody StringRequest stringRequest) throws Exception {
@@ -76,6 +70,14 @@ public class ProjectTaskController {
         return Response.success(records);
     }
 
+    @Operation(summary = "查询审核历史")
+    @GetMapping("/queryAuditHistory")
+    public Response queryAuditHistory(Integer taskId) throws IOException {
+        //查询审核历史就是根据taskId,查询所有关联任务的信息
+        TaskDetailsVO taskDetailsVO =  projectTaskService.queryAuditHistory(taskId);
+        return Response.success(taskDetailsVO);
+    }
+
     @Operation(summary = "删除任务")
     @PostMapping("/deleteProjectTask")
     public String deleteProjectTask(@RequestBody List<Integer> ids) throws IOException {
@@ -84,21 +86,15 @@ public class ProjectTaskController {
         return Response.success();
     }
 
-    @Operation(summary = "添加任务与文件关联")
-    @PostMapping("/addAssoTaskFile")
-    public Response addAssoTaskFile(@RequestBody AssoTaskFileDTO assoTaskFileDTO) throws Exception {
-        List<Integer> ids = assoTaskFileService.addTaskFile(assoTaskFileDTO);
-        return Response.success(ids);
-    }
 
-    @Operation(summary = "查询任务与件关联")
+    @Operation(summary = "查询任务与附件关联")
     @PostMapping("/getAssoTaskFile")
     public Response getAssoTaskFile(@RequestBody GetAssoTaskFileDTO getAssoTaskFileDTO) throws IOException {
         List<AssoTaskFileVO> assoTaskFileVOS = assoTaskFileService.getAssoTaskFile(getAssoTaskFileDTO.getTaskId());
         return Response.success(assoTaskFileVOS);
     }
 
-    @Operation(summary = "删除任务与件关联")
+    @Operation(summary = "删除任务与件关联")
     @PostMapping("/deleteAssoTaskFile")
     public String deleteAssoTaskFile(@RequestBody List<Integer> ids){
         assoTaskFileService.deleteAssoTaskFile(ids);

+ 6 - 6
src/main/java/cn/cslg/pas/domain/business/AssoAuditResultFile.java

@@ -8,18 +8,18 @@ import lombok.Data;
 import java.util.Date;
 
 /**
- * 任务审核结果与文件关联表
+ * 任务处理结果与文件关联表
  * @Author xiexiang
  * @Date 2023/11/22
  */
 @Data
-@TableName("asso_audit_result_file")
-public class AssoAuditResultFile extends BaseEntity<AssoAuditResultFile> {
+@TableName("asso_handle_result_file")
+public class AssoHandleResultFile extends BaseEntity<AssoHandleResultFile> {
     /**
-     * 审核结果id
+     * 任务处理结果id
      */
-    @TableField(value = "task_audit_result_id")
-    private Integer taskAuditResultId;
+    @TableField(value = "task_handle_result_id")
+    private Integer taskHandleResultId;
 
     /**
      * 文件guid

+ 6 - 6
src/main/java/cn/cslg/pas/domain/business/TaskAuditResult.java

@@ -8,18 +8,18 @@ import lombok.Data;
 import java.util.Date;
 
 /**
- * 任务审核结果
+ * 任务处理结果
  * @Author xiexiang
  * @Date 2023/11/22
  */
 @Data
-@TableName("task_audit_result")
-public class TaskAuditResult extends BaseEntity<TaskAuditResult> {
+@TableName("task_handle_result")
+public class TaskHandleResult extends BaseEntity<TaskHandleResult> {
     /**
-     * 审核结果
+     * 任务处理结果
      */
-    @TableField(value = "audit_result")
-    private String auditResult;
+    @TableField(value = "handle_result")
+    private String handleResult;
 
     /**
      * 描述/说明

+ 2 - 2
src/main/java/cn/cslg/pas/mapper/AssoAuditResultFileMapper.java

@@ -1,6 +1,6 @@
 package cn.cslg.pas.mapper;
 
-import cn.cslg.pas.domain.business.AssoAuditResultFile;
+import cn.cslg.pas.domain.business.AssoHandleResultFile;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
@@ -10,5 +10,5 @@ import org.springframework.stereotype.Repository;
  * @Date 2023/11/22
  */
 @Repository
-public interface AssoAuditResultFileMapper extends BaseMapper<AssoAuditResultFile> {
+public interface AssoHandleResultFileMapper extends BaseMapper<AssoHandleResultFile> {
 }

+ 2 - 0
src/main/java/cn/cslg/pas/mapper/ProjectTaskMapper.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.mapper;
 
+import cn.cslg.pas.common.dto.business.ProjectTaskDTO;
 import cn.cslg.pas.common.vo.GroupReVO;
 import cn.cslg.pas.common.vo.business.ProjectTaskVO;
 import cn.cslg.pas.domain.business.ProjectTask;
@@ -15,6 +16,7 @@ import java.util.List;
  */
 @Repository
 public interface ProjectTaskMapper extends BaseMapper<ProjectTask> {
+    public Integer addTask(ProjectTaskDTO projectTaskDTO);
     public List<ProjectTaskVO> getProjectTask(String sql1, String sql2, String sql3);
     public Long getProjectTaskCount(String sql);
     public List<GroupReVO> getGroups(List<String> sqls, String tableName, String groupField, String selectField);

+ 2 - 2
src/main/java/cn/cslg/pas/mapper/TaskAuditResultMapper.java

@@ -1,6 +1,6 @@
 package cn.cslg.pas.mapper;
 
-import cn.cslg.pas.domain.business.TaskAuditResult;
+import cn.cslg.pas.domain.business.TaskHandleResult;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
@@ -10,5 +10,5 @@ import org.springframework.stereotype.Repository;
  * @Date 2023/11/22
  */
 @Repository
-public interface TaskAuditResultMapper extends BaseMapper<TaskAuditResult> {
+public interface TaskHandleResultMapper extends BaseMapper<TaskHandleResult> {
 }

+ 3 - 3
src/main/java/cn/cslg/pas/service/business/AssoAuditResultFileService.java

@@ -1,7 +1,7 @@
 package cn.cslg.pas.service.business;
 
-import cn.cslg.pas.domain.business.AssoAuditResultFile;
-import cn.cslg.pas.mapper.AssoAuditResultFileMapper;
+import cn.cslg.pas.domain.business.AssoHandleResultFile;
+import cn.cslg.pas.mapper.AssoHandleResultFileMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
@@ -11,5 +11,5 @@ import org.springframework.stereotype.Service;
  * @Date 2023/11/22
  */
 @Service
-public class AssoAuditResultFileService extends ServiceImpl<AssoAuditResultFileMapper, AssoAuditResultFile> {
+public class AssoHandleResultFileService extends ServiceImpl<AssoHandleResultFileMapper, AssoHandleResultFile> {
 }

+ 11 - 9
src/main/java/cn/cslg/pas/service/business/AssoTaskFileService.java

@@ -1,13 +1,15 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.AssoTaskFileDTO;
-import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.business.AssoTaskFileVO;
+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.TaskHandleResult;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AssoTaskFileMapper;
@@ -40,6 +42,7 @@ public class AssoTaskFileService extends ServiceImpl<AssoTaskFileMapper, AssoTas
     @Autowired
     private FileManagerService fileManagerService;
 
+
     /**
      * 添加任务与文件关联
      * @param assoTaskFileDTO
@@ -79,30 +82,29 @@ public class AssoTaskFileService extends ServiceImpl<AssoTaskFileMapper, AssoTas
      * @return
      */
     public List<AssoTaskFileVO> getAssoTaskFile(Integer taskId) throws IOException {
+        List<AssoTaskFileVO> assoTaskFileVOS = new ArrayList<>();
+        List<String> fileGuids = new ArrayList<>();
+        List<SystemFile> systemFiles = new ArrayList<>();
         LambdaQueryWrapper<AssoTaskFile> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(AssoTaskFile::getTaskId, taskId);
         List<AssoTaskFile> assoTaskFiles = this.list(queryWrapper);
-
-        List<String> fileGuids = assoTaskFiles.stream().map(AssoTaskFile::getFileGuid).collect(Collectors.toList());
-
-        List<SystemFile> systemFiles = new ArrayList<>();
-        //调用文件系统查询文件信息接口
+        if (assoTaskFiles.size() != 0) {
+            fileGuids = assoTaskFiles.stream().map(AssoTaskFile::getFileGuid).collect(Collectors.toList());
+        }
         if (fileGuids.size() != 0) {
             String res = fileManagerService.getSystemFileFromFMS(fileGuids);
             systemFiles = JSONObject.parseArray(res, SystemFile.class);
         }
-        List<AssoTaskFileVO> assoTaskFileVOS = new ArrayList<>();
         if (systemFiles.size() != 0) {
             for (AssoTaskFile assoTaskFile : assoTaskFiles) {
                 AssoTaskFileVO assoTaskFileVO = new AssoTaskFileVO();
-                //装载文件信息
                 SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(assoTaskFile.getFileGuid())).findFirst().orElse(null);
                 if (systemFile != null) {
                     BeanUtils.copyProperties(assoTaskFile, assoTaskFileVO);
                     assoTaskFileVO.setFileType(systemFile.getType());
                     assoTaskFileVO.setFileName(systemFile.getOriginalName());
+                    assoTaskFileVOS.add(assoTaskFileVO);
                 }
-                assoTaskFileVOS.add(assoTaskFileVO);
             }
         }
         return assoTaskFileVOS;

+ 133 - 95
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -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.PersonnelVO;
 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.QueryRequest;
 import cn.cslg.pas.common.utils.CacheUtils;
 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.TaskHandleResult;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 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.query.FormatQueryService;
 import com.alibaba.fastjson.JSONObject;
@@ -28,6 +32,7 @@ import org.springframework.web.multipart.MultipartFile;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 专利挖掘任务模块
@@ -55,70 +60,50 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     @Autowired
     private PermissionService permissionService;
 
+    @Autowired
+    private AssoTaskFileService assoTaskFileService;
+
+    @Autowired
+    private TaskHandleResultService taskHandleResultService;
+
+    @Autowired
+    private AssoHandleResultFileService assoHandleResultFileService;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+
+
     /**
      * 项目开卷审核任务
      * @param patentDigProjectTaskDTO
      * @return
      */
-    public Object addProjectOpenExamineTask(PatentDigProjectTaskDTO patentDigProjectTaskDTO){
+    public Object addProjectOpenAuditTask(PatentDigProjectTaskDTO patentDigProjectTaskDTO){
         PatentDigProjectDTO patentDigProjectDTO = patentDigProjectTaskDTO.getPatentDigProjectDTO();
         ProjectTaskDTO projectTaskDTO = patentDigProjectTaskDTO.getProjectTaskDTO();
         //如果专利挖掘项目DTO不为空,则需要先建立专利挖掘项目
         if (patentDigProjectDTO != null) {
             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 {
             throw new XiaoShiException("挖掘项目数据不能为空!");
         }
     }
 
-
     /**
-     * 添加任务
+     * 新建任务
+     * @param projectTaskDTO
+     * @return
      */
     public Integer addTask(ProjectTaskDTO projectTaskDTO){
         //判断专题库id不为空
         if (projectTaskDTO.getProjectId() == null) {
             throw new XiaoShiException("专题库id不能为空!");
         }
-        Integer type = projectTaskDTO.getType();
-        if (type == null) {
+        //判断任务类型不为空
+        if (projectTaskDTO.getType() == null) {
             throw new XiaoShiException("任务类型不能为空!");
         }
         //判断任务名称不为空
@@ -127,19 +112,13 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         if (name == null || name.equals("")) {
             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();
         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();
@@ -148,54 +127,25 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         } catch (Exception e) {
             throw new UnLoginException("未登录");
         }
+        //设置任务的发起人
         projectTask.setCreateId(personnelVO.getId());
         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();
     }
 
-
     /**
-     * 任务审核任务
-     * @param taskAuditTaskDTO
+     * 查询任务
+     * @param queryRequest
      * @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
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
         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
     public Object addMessage(Object object, List<MultipartFile> files) {
         return null;

+ 30 - 25
src/main/java/cn/cslg/pas/service/business/TaskAuditResultService.java

@@ -5,27 +5,28 @@ import cn.cslg.pas.common.dto.business.TaskAuditResultDTO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
-import cn.cslg.pas.domain.business.AssoAuditResultFile;
+import cn.cslg.pas.domain.business.AssoHandleResultFile;
 import cn.cslg.pas.domain.business.ProjectTask;
-import cn.cslg.pas.domain.business.TaskAuditResult;
+import cn.cslg.pas.domain.business.TaskHandleResult;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
-import cn.cslg.pas.mapper.TaskAuditResultMapper;
+import cn.cslg.pas.mapper.TaskHandleResultMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
 
 /**
- * 任务审核结果Service层
+ * 任务处理结果Service层
  * @Author xiexiang
  * @Date 2023/11/22
  */
 @Service
-public class TaskAuditResultService extends ServiceImpl<TaskAuditResultMapper, TaskAuditResult> {
+public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper, TaskHandleResult> {
 
     @Autowired
     private CacheUtils cacheUtils;
@@ -34,22 +35,23 @@ public class TaskAuditResultService extends ServiceImpl<TaskAuditResultMapper, T
     private LoginUtils loginUtils;
 
     @Autowired
-    private AssoAuditResultFileService assoAuditResultFileService;
+    private AssoHandleResultFileService assoHandleResultFileService;
 
     @Autowired
+    @Lazy
     private ProjectTaskService projectTaskService;
 
     /**
-     * 新增任务审核结果
+     * 添加任务处理结果
      * @param taskAuditResultDTO
      * @return
      */
     public Integer addTaskAuditResult(TaskAuditResultDTO taskAuditResultDTO){
-        TaskAuditResult taskAuditResult = new TaskAuditResult();
+        TaskHandleResult taskHandleResult = new TaskHandleResult();
         if (taskAuditResultDTO.getTaskId() == null) {
             throw new XiaoShiException("任务id不能为空");
         }
-        BeanUtils.copyProperties(taskAuditResultDTO, taskAuditResult);
+        BeanUtils.copyProperties(taskAuditResultDTO, taskHandleResult);
         //获取登录人信息
         PersonnelVO personnelVO = new PersonnelVO();
         try {
@@ -57,31 +59,33 @@ public class TaskAuditResultService extends ServiceImpl<TaskAuditResultMapper, T
         } catch (Exception e) {
             throw new UnLoginException("未登录");
         }
-        taskAuditResult.setCreateId(personnelVO.getId());
-        //任务审核结果入库
-        taskAuditResult.insert();
+        taskHandleResult.setCreateId(personnelVO.getId());
+        //任务处理结果入库
+        taskHandleResult.insert();
+        //如果任务处理结果中文件集合不为空,则需要将文件与处理结果关联
         List<String> fileGuids = taskAuditResultDTO.getFileGuids();
-        Integer taskAuditResultId = taskAuditResult.getId();
+        Integer taskAuditResultId = taskHandleResult.getId();
         if (fileGuids != null && fileGuids.size() != 0) {
-            List<AssoAuditResultFile> assoAuditResultFiles = new ArrayList<>();
+            List<AssoHandleResultFile> assoHandleResultFiles = new ArrayList<>();
+            //遍历装载处理结果与文件关联对象集合
             for (String item : fileGuids) {
-                AssoAuditResultFile assoAuditResultFile = new AssoAuditResultFile();
-                assoAuditResultFile.setTaskAuditResultId(taskAuditResultId);
-                assoAuditResultFile.setFileGuid(item);
-                assoAuditResultFile.setCreateId(personnelVO.getId());
-                assoAuditResultFiles.add(assoAuditResultFile);
+                AssoHandleResultFile assoHandleResultFile = new AssoHandleResultFile();
+                assoHandleResultFile.setTaskHandleResultId(taskAuditResultId);
+                assoHandleResultFile.setFileGuid(item);
+                assoHandleResultFile.setCreateId(personnelVO.getId());
+                assoHandleResultFiles.add(assoHandleResultFile);
             }
-            assoAuditResultFileService.saveBatch(assoAuditResultFiles);
+            assoHandleResultFileService.saveBatch(assoHandleResultFiles);
         }
-        //如果下一个审核人不为空,则需要新建一个新的审核任务
-        if (taskAuditResult.getNextAuditor() != null && taskAuditResult.getNextAuditor() != "") {
-            Integer taskId = taskAuditResult.getTaskId();
+        //如果下一个审核人不为空,则需要新建一个审核任务
+        if (taskHandleResult.getNextAuditor() != null && taskHandleResult.getNextAuditor() != "") {
+            Integer taskId = taskHandleResult.getTaskId();
             ProjectTask projectTask = projectTaskService.getById(taskId);
             ProjectTaskDTO projectTaskDTO = new ProjectTaskDTO();
             projectTaskDTO.setName(projectTask.getName() + "-审核任务");
             projectTaskDTO.setProjectId(projectTask.getProjectId());
             projectTaskDTO.setType(5);
-            if (taskAuditResult.getIfInner() == true) {
+            if (taskHandleResult.getIfInner() == true) {
                 projectTaskDTO.setHandlerType(0);
             } else {
                 projectTaskDTO.setHandlerType(1);
@@ -90,6 +94,7 @@ public class TaskAuditResultService extends ServiceImpl<TaskAuditResultMapper, T
             projectTaskDTO.setAssoTaskId(projectTask.getAssoTaskId());
             projectTaskService.addTask(projectTaskDTO);
         }
-        return taskAuditResult.getId();
+        return taskHandleResult.getId();
     }
+
 }