xiexiang 1 年之前
父节点
当前提交
f87c5b2627

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

@@ -16,6 +16,8 @@ public class TortCompareRecordDTO {
      */
     private Integer projectId;
 
+    private Integer taskId;
+
     /**
      * 特征与侵权分析对比结果DTO
      */

+ 1 - 0
src/main/java/cn/cslg/pas/common/dto/business/TortDTO.java

@@ -22,6 +22,7 @@ public class TortDTO {
      * 侵权分析对比结果字段
      */
     private Integer id;
+
     /**
      * 标的说明
      */

+ 14 - 0
src/main/java/cn/cslg/pas/common/dto/business/TortReportTaskDTO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+/**
+ * 侵权分析报告审核任务
+ * @Author xiexiang
+ * @Date 2023/12/12
+ */
+@Data
+public class TortReportTaskDTO {
+    private ReportProjectDTO reportProjectDTO;
+    private ProjectTaskDTO projectTaskDTO;
+}

+ 0 - 16
src/main/java/cn/cslg/pas/common/dto/business/TortTaskResultDTO.java

@@ -1,16 +0,0 @@
-package cn.cslg.pas.common.dto.business;
-
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * 侵权分析协同任务对比结果DTO
- * @Author xiexiang
- * @Date 2023/12/11
- */
-@Data
-public class TortTaskResultDTO {
-    private Integer taskId;
-    private List<TortDTO> tortDTOS;
-}

+ 2 - 0
src/main/java/cn/cslg/pas/common/vo/business/TortVO.java

@@ -43,6 +43,8 @@ public class TortVO {
 
     private FTOCompareRecordVO currentRecordVO;
 
+    private FTOCompareRecordVO finalRecordVO;
+
     /**
      * 创建人id
      */

+ 8 - 1
src/main/java/cn/cslg/pas/controller/ProjectTaskController.java

@@ -39,7 +39,7 @@ public class ProjectTaskController {
     @Autowired
     private TaskHandleResultService taskHandleResultService;
 
-    @Operation(summary = "添加项目开卷审核任务")
+    @Operation(summary = "添加挖掘项目开卷审核任务")
     @PostMapping("/addProjectOpenAuditTask")
     public Response addProjectOpenAuditTask(@RequestBody PatentDigProjectTaskDTO patentDigProjectTaskDTO) throws Exception {
         Integer id = (Integer) projectTaskService.addProjectOpenAuditTask(patentDigProjectTaskDTO);
@@ -108,4 +108,11 @@ public class ProjectTaskController {
         String patentNo = projectTaskService.getPatentNoByTaskId(taskId);
         return Response.success(patentNo);
     }
+
+    @Operation(summary = "添加报告开卷审核任务")
+    @PostMapping("/addReportOpenAuditTask")
+    public Response addReportOpenAuditTask(@RequestBody TortReportTaskDTO tortReportTaskDTO) throws Exception {
+        Integer id = (Integer) projectTaskService.addReportOpenAuditTask(tortReportTaskDTO);
+        return Response.success(id);
+    }
 }

+ 13 - 4
src/main/java/cn/cslg/pas/controller/TortController.java

@@ -96,8 +96,8 @@ public class TortController {
 
     @Operation(summary = "保存侵权分析协同任务对比结果")
     @PostMapping("/addTortTaskResult")
-    public Response addTortTaskResult(@RequestBody TortTaskResultDTO tortTaskResultDTO){
-        List<Integer> ids = tortCompareRecordService.addTortTaskResult(tortTaskResultDTO);
+    public Response addTortTaskResult(@RequestBody TortCompareRecordDTO tortCompareRecordDTO){
+        List<Integer> ids = tortCompareRecordService.addTortTaskResult(tortCompareRecordDTO);
         Records records = new Records();
         records.setData(ids);
         return Response.success(records);
@@ -106,11 +106,12 @@ public class TortController {
     @Operation(summary = "查询侵权分析协同前后对比结果")
     @GetMapping("/getAllTortTaskResult")
     public Response getAllTortTaskResult(Integer taskId){
-        TortCompareRecordVO tortCompareRecordVO = tortCompareRecordService.getAllTortTaskResult(taskId);
+        Integer type = 1;
+        TortCompareRecordVO tortCompareRecordVO = tortCompareRecordService.getAllTortTaskResult(null, taskId, type);
         return Response.success(tortCompareRecordVO);
     }
 
-    @Operation(summary = "发起人保存侵权分析协同后最终的对比结果")
+    @Operation(summary = "确认侵权分析对比结果")
     @PostMapping("/addFinalTortResult")
     public Response addFinalTortResult(@RequestBody TortCompareRecordDTO tortCompareRecordDTO){
         List<Integer> ids = tortCompareRecordService.addFinalTortResult(tortCompareRecordDTO);
@@ -118,4 +119,12 @@ public class TortController {
         records.setData(ids);
         return Response.success(records);
     }
+
+    @Operation(summary = "查询最终结果")
+    @GetMapping("/getTortFinalResult")
+    public Response getTortFinalResult(Integer projectId, Integer taskId){
+        Integer type = 2;
+        TortCompareRecordVO tortCompareRecordVO = tortCompareRecordService.getAllTortTaskResult(projectId, taskId, type);
+        return Response.success(tortCompareRecordVO);
+    }
 }

+ 17 - 0
src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.domain.business.FTOCompareRecord;
+import cn.cslg.pas.mapper.FTOCompareRecordMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * FTO
+ * @Author xiexiang
+ * @Date 2023/12/13
+ */
+@Slf4j
+@Service
+public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper, FTOCompareRecord> {
+}

+ 122 - 44
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -557,11 +557,9 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         //处理人直接完成任务
         LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ProjectTask::getId, taskId);
-        List<ProjectTask> projectTasks = this.list(queryWrapper);
-        ProjectTask projectTask = new ProjectTask();
-        if (!projectTasks.isEmpty()) {
+        ProjectTask projectTask = this.getOne(queryWrapper, false);
+        if (projectTask != null) {
             //查询出当前任务的类型
-            projectTask = projectTasks.get(0);
             //如果是分配任务
             if (projectTask.getType() == 6) {
                 //类型为0,需要完成任务
@@ -592,33 +590,69 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                         }
                     }
                 }
-                //开卷审核项目
+                //开卷审核项目(判断是报告还是挖掘项目)
             } else if (projectTask.getType() == 1) {
-                LambdaQueryWrapper<PatentDigProject> queryWrapper1 = new LambdaQueryWrapper<>();
-                queryWrapper1.eq(PatentDigProject::getProjectId, projectTask.getProjectId());
-                List<PatentDigProject> patentDigProjects = patentDigProjectService.list(queryWrapper1);
-                PatentDigProject patentDigProject = new PatentDigProject();
-                if (!patentDigProjects.isEmpty()) {
-                    patentDigProject = patentDigProjects.get(0);
-                }
-                if (type == 0) {
-                    //直接同意
-                    projectTask.setStatus(3);
-                    projectTask.updateById();
-                    patentDigProject.setState(2);
-                    patentDigProject.updateById();
-                } else if (type == 1) {
-                    //取消
-                    projectTask.setStatus(5);
-                    projectTask.updateById();
-                    patentDigProject.setState(4);
-                    patentDigProject.updateById();
-                } else if (type == 2) {
-                    //缺少资料
-                    projectTask.setStatus(4);
-                    projectTask.updateById();
-                    patentDigProject.setState(5);
-                    patentDigProject.updateById();
+                Integer projectId = projectTask.getProjectId();
+                //根据projectId查询类型
+                LambdaQueryWrapper<Project> getType = new LambdaQueryWrapper<>();
+                getType.eq(Project::getId, projectId);
+                Project project = projectService.getOne(getType, false);
+                Integer projectType = project.getType();
+                //挖掘项目
+                if (projectType != null && projectType.equals(3)) {
+                    LambdaQueryWrapper<PatentDigProject> queryWrapper1 = new LambdaQueryWrapper<>();
+                    queryWrapper1.eq(PatentDigProject::getProjectId, projectId);
+                    PatentDigProject patentDigProject = patentDigProjectService.getOne(queryWrapper1, false);
+                    if (patentDigProject != null) {
+                        if (type == 0) {
+                            //直接同意
+                            projectTask.setStatus(3);
+                            projectTask.updateById();
+                            patentDigProject.setState(2);
+                            patentDigProject.updateById();
+                        } else if (type == 1) {
+                            //取消
+                            projectTask.setStatus(5);
+                            projectTask.updateById();
+                            patentDigProject.setState(4);
+                            patentDigProject.updateById();
+                        } else if (type == 2) {
+                            //缺少资料
+                            projectTask.setStatus(4);
+                            projectTask.updateById();
+                            patentDigProject.setState(5);
+                            patentDigProject.updateById();
+                        }
+                    } else {
+                        throw new XiaoShiException("未查询到专利挖掘项目");
+                    }
+                } else if (projectType != null && projectType.equals(2)) {//报告
+                    LambdaQueryWrapper<ReportProject> queryWrapper1 = new LambdaQueryWrapper<>();
+                    queryWrapper1.eq(ReportProject::getProjectId, projectId);
+                    ReportProject reportProject = reportProjectService.getOne(queryWrapper1, false);
+                    if (reportProject != null) {
+                        if (type == 0) {
+                            //直接同意
+                            projectTask.setStatus(3);
+                            projectTask.updateById();
+                            reportProject.setStatus(2);
+                            reportProject.updateById();
+                        } else if (type == 1) {
+                            //取消
+                            projectTask.setStatus(5);
+                            projectTask.updateById();
+                            reportProject.setStatus(4);
+                            reportProject.updateById();
+                        } else if (type == 2) {
+                            //缺少资料
+                            projectTask.setStatus(4);
+                            projectTask.updateById();
+                            reportProject.setStatus(5);
+                            reportProject.updateById();
+                        }
+                    } else {
+                        throw new XiaoShiException("未查询到报告");
+                    }
                 }
             }
         } else {
@@ -721,6 +755,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         //3.从侵权分析中获得对比结果,并复制保存
         tortCompareRecordService.copyTortCompareRecords(tortTaskDTO.getProjectId(), taskId, personnelVO.getId());
         //4.发送邮件通知协同人和抄送人
+        //TODO
         return projectTask.getId();
     }
 
@@ -751,25 +786,68 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         }
     }
 
+    /**
+     * 根据任务id查询专利号
+     * @param taskId
+     * @return
+     */
     public String getPatentNoByTaskId(Integer taskId) {
         //根据任务id查询报告id
-        LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ProjectTask::getId, taskId);
-        ProjectTask projectTask = this.getOne(queryWrapper, false);
-        if (projectTask != null) {
-            Integer projectId = projectTask.getProjectId();
-            //根据报告id查询专利号
-            LambdaQueryWrapper<ReportProject> queryWrapper1 = new LambdaQueryWrapper<>();
-            queryWrapper1.eq(ReportProject::getProjectId, projectId);
-            ReportProject reportProject = reportProjectService.getOne(queryWrapper1, false);
-            if (reportProject != null) {
-                String patentNo = reportProject.getSignPatentNo();
-                return patentNo;
+        if (taskId == null) {
+            throw new XiaoShiException("taskId不能为空");
+        }
+        Integer projectId = tortCompareRecordService.getProjectIdByTaskId(taskId);
+        String patentNo = this.getPatentNoByProjectId(projectId);
+        return patentNo;
+    }
+
+    /**
+     * 根据projectId查询专利号
+     * @param projectId
+     * @return
+     */
+    public String getPatentNoByProjectId(Integer projectId){
+        //根据报告id查询专利号
+        LambdaQueryWrapper<ReportProject> queryWrapper1 = new LambdaQueryWrapper<>();
+        queryWrapper1.eq(ReportProject::getProjectId, projectId);
+        ReportProject reportProject = reportProjectService.getOne(queryWrapper1, false);
+        if (reportProject != null) {
+            String patentNo = reportProject.getSignPatentNo();
+            return patentNo;
+        } else {
+            throw new XiaoShiException("报告为空");
+        }
+    }
+
+    /**
+     * 侵权分析报告开卷审核任务
+     *
+     * @param tortReportTaskDTO
+     * @return
+     */
+    public Object addReportOpenAuditTask(TortReportTaskDTO tortReportTaskDTO) {
+        ReportProjectDTO reportProjectDTO = tortReportTaskDTO.getReportProjectDTO();
+        ProjectTaskDTO projectTaskDTO = tortReportTaskDTO.getProjectTaskDTO();
+        //如果报告DTO不为空,则需要先建立报告
+        if (reportProjectDTO != null) {
+            Integer projectId = (Integer) reportProjectService.addMessage(reportProjectDTO);
+            if (projectId != null) {
+                projectTaskDTO.setProjectId(projectId);
+                Integer projectTaskId = this.addTask(projectTaskDTO);
+                if (projectTaskId != null) {
+                    //将侵权分析报告置为开卷审核
+                    LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+                    queryWrapper.eq(ReportProject::getProjectId, projectId);
+                    ReportProject reportProject = reportProjectService.getOne(queryWrapper, false);
+                    reportProject.setStatus(0);
+                    reportProject.updateById();
+                }
+                return projectTaskId;
             } else {
-                throw new XiaoShiException("报告为空");
+                throw new XiaoShiException("侵权分析报告新增失败");
             }
         } else {
-            throw new XiaoShiException("projectTask为空");
+            throw new XiaoShiException("侵权分析报告数据不能为空!");
         }
     }
 }

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

@@ -299,10 +299,10 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         BeanUtils.copyProperties(reportProjectDTO, reportProject);
         reportProject.setProjectId(project.getId());
         //根据是否直接完成设置报告的状态
-        if (reportProjectDTO.getIfFinish() == true) {
-            reportProject.setStatus(3);
-        } else {
+        if (reportProjectDTO.getIfFinish() == null) {
             reportProject.setStatus(2);
+        } else if (reportProjectDTO.getIfFinish() == true) {
+            reportProject.setStatus(3);
         }
         reportProject.insert();
 

+ 213 - 102
src/main/java/cn/cslg/pas/service/business/TortCompareRecordService.java

@@ -3,7 +3,6 @@ package cn.cslg.pas.service.business;
 import cn.cslg.pas.common.dto.business.GetFeatureSplitDTO;
 import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
 import cn.cslg.pas.common.dto.business.TortDTO;
-import cn.cslg.pas.common.dto.business.TortTaskResultDTO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
@@ -112,7 +111,7 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
                 feature.insert();
                 //获取特征id
                 Integer featureId = feature.getId();
-                if (tortDTO.getCompareResult() != null || tortDTO.getCompareDescription() != null || tortDTO.getTargetDescription() != null) {
+                if (tortDTO.getCompareResult() != null || StringUtils.isNotBlank(tortDTO.getCompareDescription()) || StringUtils.isNotBlank(tortDTO.getTargetDescription())) {
                     //插入侵权分析对比结果
                     FTOCompareRecord ftoCompareRecord = new FTOCompareRecord();
                     ftoCompareRecord.setProjectId(projectId);
@@ -159,10 +158,7 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
         TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
         tortCompareRecordVO.setProjectId(projectId);
         //根据projectId查询专利号
-        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ReportProject::getProjectId, projectId);
-        ReportProject reportProject = reportProjectService.getOne(queryWrapper, false);
-        String patentNo = reportProject.getSignPatentNo();
+        String patentNo = projectTaskService.getPatentNoByProjectId(projectId);
         //新建查询拆分特征DTO
         SplitVO splitVO = new SplitVO();
         BeanUtils.copyProperties(getFeatureSplitDTO, splitVO);
@@ -204,7 +200,7 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
                 LambdaQueryWrapper<FTOCompareRecord> queryWrapper2 = new LambdaQueryWrapper<>();
                 queryWrapper2.eq(FTOCompareRecord::getProjectId, projectId);
                 List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper2);
-                tortVOS = this.loadTortVO(features, ftoCompareRecords);
+                tortVOS = this.loadTortVO2(null, features, ftoCompareRecords);
                 tortRightVO.setTortVOS(tortVOS);
                 tortRightVOS.add(tortRightVO);
             });
@@ -249,19 +245,17 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
     }
 
     /**
-     * 保存侵权分析协同任务结果
-     * @param tortTaskResultDTO
+     * 保存协同任务结果
+     * @param tortCompareRecordDTO
      */
-    public List<Integer> addTortTaskResult(TortTaskResultDTO tortTaskResultDTO){
-        if (tortTaskResultDTO == null) {
+    public List<Integer> addTortTaskResult(TortCompareRecordDTO tortCompareRecordDTO){
+        if (tortCompareRecordDTO == null) {
             throw new XiaoShiException("入参不能为空");
         }
         Integer projectId = null;
-        if (tortTaskResultDTO.getTaskId() != null) {
-            LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(ProjectTask::getId, tortTaskResultDTO.getTaskId());
-            ProjectTask projectTask = projectTaskService.getOne(queryWrapper, false);
-            projectId = projectTask.getProjectId();
+        Integer taskId = tortCompareRecordDTO.getTaskId();
+        if (taskId != null) {
+            projectId = this.getProjectIdByTaskId(taskId);
         } else {
             throw new XiaoShiException("任务id不能为空");
         }
@@ -272,7 +266,7 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
         } catch (Exception e) {
             throw new UnLoginException("未登录");
         }
-        List<TortDTO> tortDTOS = tortTaskResultDTO.getTortDTOS();
+        List<TortDTO> tortDTOS = tortCompareRecordDTO.getTortDTOS();
         List<Integer> ids = new ArrayList<>();
         if (tortDTOS != null && !tortDTOS.isEmpty()) {
             List<FTOCompareRecord> ftoCompareRecords = new ArrayList<>();
@@ -284,7 +278,7 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
                     ftoCompareRecord.setTargetDescription(item.getTargetDescription());
                     ftoCompareRecord.setFeatureId(item.getFeatureId());
                     ftoCompareRecord.setProjectId(projectId);
-                    ftoCompareRecord.setProjectTaskId(tortTaskResultDTO.getTaskId());
+                    ftoCompareRecord.setProjectTaskId(taskId);
                     ftoCompareRecord.setCreateId(personnelVO.getId());
                     ftoCompareRecord.setIfOriginal(false);
                     ftoCompareRecord.setIfFinal(false);
@@ -296,7 +290,7 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
                 LambdaQueryWrapper<FTOCompareRecord> deleteWrapper = new LambdaQueryWrapper<>();
                 deleteWrapper.eq(FTOCompareRecord::getIfOriginal, false)
                         .eq(FTOCompareRecord::getCreateId, personnelVO.getId())
-                        .eq(FTOCompareRecord::getProjectTaskId, tortTaskResultDTO.getTaskId());
+                        .eq(FTOCompareRecord::getProjectTaskId, taskId);
                 this.remove(deleteWrapper);
                 //再更新
                 this.saveBatch(ftoCompareRecords);
@@ -311,47 +305,39 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
      * @param taskId
      * @return
      */
-    public TortCompareRecordVO getAllTortTaskResult(Integer taskId) {
+    public TortCompareRecordVO getAllTortTaskResult(Integer projectId, Integer taskId, Integer type) {
         //新建返回VO
         TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
         //根据任务id查询报告id
-        LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ProjectTask::getId, taskId);
-        ProjectTask projectTask = projectTaskService.getOne(queryWrapper, false);
-        if (projectTask != null) {
-            Integer projectId = projectTask.getProjectId();
-            tortCompareRecordVO.setProjectId(projectId);
-            //根据报告id查询专利号
-            LambdaQueryWrapper<ReportProject> queryWrapper1 = new LambdaQueryWrapper<>();
-            queryWrapper1.eq(ReportProject::getProjectId, projectId);
-            ReportProject reportProject = reportProjectService.getOne(queryWrapper1, false);
-            if (reportProject != null) {
-                String patentNo = reportProject.getSignPatentNo();
-                //根据专利号查询权要
-                try {
-                    List<PatentRightVo> patentRightVos = new ArrayList<>();
-                    List<RePatentClaim> patentRights = featureService.getRightListByNo(patentNo);
-                    LambdaQueryWrapper<Feature> wrapper = new LambdaQueryWrapper<>();
-                    wrapper.eq(Feature::getProjectId, projectId)
-                            .eq(Feature::getPatentNo, patentNo);
-                    List<Feature> allFeatures = featureService.list(wrapper);
-                    patentRightVos = featureService.loadPatentRightVO(patentRights, allFeatures, projectId, patentNo);
-                    List<TortRightVO> tortRightVOS = this.loadTortRightVOS(taskId, projectId, patentRightVos);
-                    tortCompareRecordVO.setTortRightVOS(tortRightVOS);
-                } catch (Exception e) {
-                    throw new XiaoShiException("未查询到拆分下的权要");
-                }
-            } else {
-                throw new XiaoShiException("未查询到报告");
+        if (projectId == null && taskId != null) {
+            projectId = this.getProjectIdByTaskId(taskId);
+        }
+        tortCompareRecordVO.setProjectId(projectId);
+        String patentNo = projectTaskService.getPatentNoByProjectId(projectId);
+        //根据专利号查询权要
+        try {
+            List<PatentRightVo> patentRightVos = new ArrayList<>();
+            List<RePatentClaim> patentRights = featureService.getRightListByNo(patentNo);
+            LambdaQueryWrapper<Feature> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(Feature::getProjectId, projectId)
+                    .eq(Feature::getPatentNo, patentNo);
+            List<Feature> allFeatures = featureService.list(wrapper);
+            patentRightVos = featureService.loadPatentRightVO(patentRights, allFeatures, projectId, patentNo);
+            List<TortRightVO> tortRightVOS = new ArrayList<>();
+            if (type == 1) {//查询侵权分析协同前后对比结果
+                tortRightVOS = this.loadTortRightVOS(taskId, projectId, patentRightVos);
+            } else if (type == 2) {//发起人的查询
+                tortRightVOS = this.loadTortRightVOS2(taskId, projectId, patentRightVos);
             }
-        } else {
-            throw new XiaoShiException("未查询到协同任务");
+            tortCompareRecordVO.setTortRightVOS(tortRightVOS);
+        } catch (Exception e) {
+            throw new XiaoShiException("未查询到拆分下的权要");
         }
         return tortCompareRecordVO;
     }
 
     /**
-     * 根据projectId和权要集合装载返回侵权分析对比结果页面VO
+     * 协同前后对比结果
      * @param projectId
      * @param taskId
      * @param patentRightVos
@@ -369,8 +355,7 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
                 List<Feature> features = item.getFeatures();
                 LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
                 queryWrapper.eq(FTOCompareRecord::getProjectId, projectId)
-                        .eq(FTOCompareRecord::getProjectTaskId, taskId)
-                        .eq(FTOCompareRecord::getIfFinal, false);
+                        .eq(FTOCompareRecord::getProjectTaskId, taskId);
                 List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
                 List<TortVO> tortVOS = this.loadTortVO(features, ftoCompareRecords);
                 tortRightVO.setTortVOS(tortVOS);
@@ -383,6 +368,37 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
     }
 
     /**
+     * 根据projectId和权要集合装载返回侵权分析对比结果页面VO
+     * @param taskId
+     * @param projectId
+     * @param patentRightVos
+     * @return
+     */
+    public List<TortRightVO> loadTortRightVOS2(Integer taskId, Integer projectId, List<PatentRightVo> patentRightVos){
+        if (patentRightVos != null && !patentRightVos.isEmpty()) {
+            //新建权要层信息
+            List<TortRightVO> tortRightVOS = new ArrayList<>();
+            //遍历装载权要层信息
+            patentRightVos.forEach(item -> {
+                TortRightVO tortRightVO = new TortRightVO();
+                BeanUtils.copyProperties(item, tortRightVO);
+                //新建特征与侵权分析对比结果VOS
+                List<Feature> features = item.getFeatures();
+                LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(FTOCompareRecord::getProjectId, projectId);
+                List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
+                List<TortVO> tortVOS = this.loadTortVO2(taskId, features, ftoCompareRecords);
+                tortRightVO.setTortVOS(tortVOS);
+                tortRightVOS.add(tortRightVO);
+            });
+            return tortRightVOS;
+        } else {
+            throw new XiaoShiException("传入权要为空");
+        }
+    }
+
+    /**
+     * 协同前后对比结果
      * 装载特征与对比结果
      * @param features
      * @param ftoCompareRecords
@@ -392,51 +408,111 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
         List<TortVO> tortVOS = new ArrayList<>();
         for (Feature feature : features) {
             //新建特征与侵权分析对比结果VO
-            TortVO tortVO = new TortVO();
             //装载特征部分的信息
-            tortVO.setFeatureId(feature.getId());
-            tortVO.setContent(feature.getContent());
-            tortVO.setPatentNo(feature.getPatentNo());
-            tortVO.setRightSort(feature.getRightSort());
-            tortVO.setRightType(feature.getRightType());
-            tortVO.setExplainText(feature.getExplainText());
-            tortVO.setFormId(feature.getFromId());
-            tortVO.setSysOrder(feature.getSysOrder());
-            //装载侵权分析对比结果的部分(可能为空)
+            TortVO tortVO = this.loadFeature(feature);
+            //装载侵权分析对比结果的部分
+            FTOCompareRecordVO originalRecordVO = new FTOCompareRecordVO();
+            FTOCompareRecordVO currentRecordVO = new FTOCompareRecordVO();
+            if (!ftoCompareRecords.isEmpty()) {
+                //协同前
+                FTOCompareRecord originalRecord = ftoCompareRecords
+                        .stream()
+                        .filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId()) && item.getIfOriginal().equals(true))
+                        .findFirst()
+                        .orElse(null);
+                if (originalRecord != null) {
+                    //装载
+                    originalRecordVO.setId(originalRecord.getId());
+                    originalRecordVO.setCompareResult(originalRecord.getCompareResult());
+                    originalRecordVO.setCompareDescription(originalRecord.getCompareDescription());
+                    originalRecordVO.setTargetDescription(originalRecord.getTargetDescription());
+                }
+                //协同后
+                FTOCompareRecord currentRecord = ftoCompareRecords
+                        .stream()
+                        .filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId()) && item.getIfOriginal().equals(false) && item.getIfFinal().equals(false))
+                        .findFirst()
+                        .orElse(null);
+                if (currentRecord != null) {
+                    //装载
+                    currentRecordVO.setId(currentRecord.getId());
+                    currentRecordVO.setCompareResult(currentRecord.getCompareResult());
+                    currentRecordVO.setCompareDescription(currentRecord.getCompareDescription());
+                    currentRecordVO.setTargetDescription(currentRecord.getTargetDescription());
+                } else {
+                    currentRecordVO = originalRecordVO;
+                }
+            }
+            tortVO.setOriginalRecordVO(originalRecordVO);
+            tortVO.setCurrentRecordVO(currentRecordVO);
+            tortVOS.add(tortVO);
+        }
+        return tortVOS;
+    }
+
+    /**
+     * 发起人查询
+     * 装载特征与对比结果
+     * @param taskId
+     * @param features
+     * @param ftoCompareRecords
+     * @return
+     */
+    public List<TortVO> loadTortVO2(Integer taskId, List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
+        List<TortVO> tortVOS = new ArrayList<>();
+        for (Feature feature : features) {
+            //新建特征与侵权分析对比结果VO
+            //装载特征部分的信息
+            TortVO tortVO = this.loadFeature(feature);
+            //装载侵权分析对比结果的部分
+            FTOCompareRecordVO originalRecordVO = new FTOCompareRecordVO();
+            FTOCompareRecordVO currentRecordVO = new FTOCompareRecordVO();
+            FTOCompareRecordVO finalRecordVO = new FTOCompareRecordVO();
             if (!ftoCompareRecords.isEmpty()) {
-                FTOCompareRecord originalRecord = ftoCompareRecords.stream().filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId()) && item.getIfOriginal() == true).findFirst().orElse(null);
+                //原始数据or最终数据
+                FTOCompareRecord originalRecord = ftoCompareRecords
+                        .stream()
+                        .filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId()) && item.getIfFinal().equals(true))
+                        .findFirst()
+                        .orElse(null);
+
                 if (originalRecord != null) {
-                    FTOCompareRecordVO originalRecordVO = new FTOCompareRecordVO();
+                    //装载
                     originalRecordVO.setId(originalRecord.getId());
                     originalRecordVO.setCompareResult(originalRecord.getCompareResult());
                     originalRecordVO.setCompareDescription(originalRecord.getCompareDescription());
                     originalRecordVO.setTargetDescription(originalRecord.getTargetDescription());
-                    tortVO.setOriginalRecordVO(originalRecordVO);
-                    //过滤
-                    FTOCompareRecord currentRecord = ftoCompareRecords.stream().filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId()) && item.getIfOriginal() == false).findFirst().orElse(null);
-                    if (currentRecord != null) {
-                        FTOCompareRecordVO currentRecordVO = new FTOCompareRecordVO();
-                        currentRecordVO.setId(currentRecord.getId());
-                        currentRecordVO.setCompareResult(currentRecord.getCompareResult());
-                        currentRecordVO.setCompareDescription(currentRecord.getCompareDescription());
-                        currentRecordVO.setTargetDescription(currentRecord.getTargetDescription());
-                        tortVO.setCurrentRecordVO(currentRecordVO);
-                    } else {
-                        tortVO.setCurrentRecordVO(originalRecordVO);
-                    }
-                } else {//没有查出来ifOriginal为true的就说明没有新建协同任务,则查询原来的数据
-                    FTOCompareRecord finalRecord = ftoCompareRecords.stream().filter(item -> item.getFeatureId().equals(feature.getId()) && item.getProjectTaskId() == null && item.getIfOriginal() == false && item.getIfFinal() == true).findFirst().orElse(null);
-                    if (finalRecord != null) {
-                        FTOCompareRecordVO originalRecordVO = new FTOCompareRecordVO();
-                        originalRecordVO.setId(finalRecord.getId());
-                        originalRecordVO.setCompareResult(finalRecord.getCompareResult());
-                        originalRecordVO.setCompareDescription(finalRecord.getCompareDescription());
-                        originalRecordVO.setTargetDescription(finalRecord.getTargetDescription());
-                        tortVO.setOriginalRecordVO(originalRecordVO);
-                        tortVO.setCurrentRecordVO(originalRecordVO);
-                    }
+                }
+                //协同人处理的数据
+                FTOCompareRecord currentRecord = ftoCompareRecords
+                        .stream()
+                        .filter(item -> item.getFeatureId() != null && item.getProjectTaskId() != null && item.getFeatureId().equals(feature.getId()) && item.getProjectTaskId().equals(taskId) && item.getIfOriginal().equals(false) && item.getIfFinal().equals(false))
+                        .findFirst()
+                        .orElse(null);
+                if (currentRecord != null) {
+                    //装载
+                    currentRecordVO.setId(currentRecord.getId());
+                    currentRecordVO.setCompareResult(currentRecord.getCompareResult());
+                    currentRecordVO.setCompareDescription(currentRecord.getCompareDescription());
+                    currentRecordVO.setTargetDescription(currentRecord.getTargetDescription());
+                }
+
+                FTOCompareRecord finalRecord = ftoCompareRecords
+                        .stream()
+                        .filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId()) && item.getIfFinal().equals(true))
+                        .findFirst()
+                        .orElse(null);
+                if (finalRecord != null) {
+                    //装载
+                    finalRecordVO.setId(finalRecord.getId());
+                    finalRecordVO.setCompareResult(finalRecord.getCompareResult());
+                    finalRecordVO.setCompareDescription(finalRecord.getCompareDescription());
+                    finalRecordVO.setTargetDescription(finalRecord.getTargetDescription());
                 }
             }
+            tortVO.setOriginalRecordVO(originalRecordVO);
+            tortVO.setCurrentRecordVO(currentRecordVO);
+            tortVO.setFinalRecordVO(finalRecordVO);
             tortVOS.add(tortVO);
         }
         return tortVOS;
@@ -450,14 +526,11 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
     public List<Integer> addFinalTortResult(TortCompareRecordDTO tortCompareRecordDTO){
         List<Integer> ids = new ArrayList<>();
         //判空
-        Integer projectId = tortCompareRecordDTO.getProjectId();
-        if (projectId == null) {
-            throw new XiaoShiException("projectId不能为空");
-        }
+        Integer taskId = tortCompareRecordDTO.getTaskId();
+        Integer projectId = this.getProjectIdByTaskId(taskId);
         //首先是根据projectId,以及任务id为空,以及ifOriginal为false,ifFinal为true这几个条件删除表中的数据
         LambdaQueryWrapper<FTOCompareRecord> removeWrapper = new LambdaQueryWrapper<>();
         removeWrapper.eq(FTOCompareRecord::getProjectId, projectId)
-                .eq(FTOCompareRecord::getProjectTaskId, null)
                 .eq(FTOCompareRecord::getIfOriginal, false)
                 .eq(FTOCompareRecord::getIfFinal, true);
         this.remove(removeWrapper);
@@ -473,14 +546,16 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
         }
         if (tortDTOS != null && !tortDTOS.isEmpty()) {
             for (TortDTO item : tortDTOS) {
-                FTOCompareRecord tortFinal = new FTOCompareRecord();
-                tortFinal.setFeatureId(item.getFeatureId());
-                tortFinal.setProjectId(projectId);
-                tortFinal.setCompareResult(item.getCompareResult());
-                tortFinal.setCompareDescription(item.getCompareDescription());
-                tortFinal.setTargetDescription(item.getTargetDescription());
-                tortFinal.setCreateId(personnelVO.getId());
-                ftoCompareRecords.add(tortFinal);
+                if (item.getCompareResult() != null || StringUtils.isNotBlank(item.getCompareDescription()) || StringUtils.isNotBlank(item.getTargetDescription())) {
+                    FTOCompareRecord tortFinal = new FTOCompareRecord();
+                    tortFinal.setFeatureId(item.getFeatureId());
+                    tortFinal.setProjectId(projectId);
+                    tortFinal.setCompareResult(item.getCompareResult());
+                    tortFinal.setCompareDescription(item.getCompareDescription());
+                    tortFinal.setTargetDescription(item.getTargetDescription());
+                    tortFinal.setCreateId(personnelVO.getId());
+                    ftoCompareRecords.add(tortFinal);
+                }
             }
         }
         if (!ftoCompareRecords.isEmpty()) {
@@ -490,4 +565,40 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
         return ids;
     }
 
+    /**
+     * 根据taskId查询projectId
+     * @param taskId
+     * @return
+     */
+    public Integer getProjectIdByTaskId(Integer taskId){
+        if (taskId == null) {
+            throw new XiaoShiException("taskId不能为空");
+        }
+        LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ProjectTask::getId, taskId);
+        ProjectTask projectTask = projectTaskService.getOne(queryWrapper, false);
+        Integer projectId = null;
+        if (projectTask != null) {
+            projectId = projectTask.getProjectId();
+        }
+        return projectId;
+    }
+
+    /**
+     * 装载权要
+     * @param feature
+     * @return
+     */
+    public TortVO loadFeature(Feature feature){
+        TortVO tortVO = new TortVO();
+        tortVO.setFeatureId(feature.getId());
+        tortVO.setContent(feature.getContent());
+        tortVO.setPatentNo(feature.getPatentNo());
+        tortVO.setRightSort(feature.getRightSort());
+        tortVO.setRightType(feature.getRightType());
+        tortVO.setExplainText(feature.getExplainText());
+        tortVO.setFormId(feature.getFromId());
+        tortVO.setSysOrder(feature.getSysOrder());
+        return tortVO;
+    }
 }