xiexiang hace 1 año
padre
commit
31a3c27766

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

@@ -56,6 +56,12 @@ public class FTOCompareRecord extends BaseEntity<FTOCompareRecord> {
     private Integer projectTaskId;
 
     /**
+     * 来源任务id
+     */
+    @TableField(value = "asso_task_id")
+    private Integer assoTaskId;
+
+    /**
      * 是否原始
      */
     @TableField(value = "if_original")

+ 71 - 19
src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java

@@ -454,21 +454,13 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         try {
             List<PatentRightVo> patentRightVos = new ArrayList<>();
             //根据专利号和报告id查询权要
-            Integer lastTaskId = this.getLastTaskId(projectId, patentNo);
+            Integer compareTaskId = this.getAssoTaskId(patentNo, taskId);
             List<RePatentClaim> patentRights = featureService.getRightListByNo(patentNo);
-            LambdaQueryWrapper<PatentSplitMessage> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(PatentSplitMessage::getPatentNo, patentNo)
-                    .eq(PatentSplitMessage::getProjectId, projectId)
-                    .eq(PatentSplitMessage::getTaskId, lastTaskId)
-                    .orderByDesc(PatentSplitMessage::getCreateTime);
-            List<PatentSplitMessage> patentSplitMessages = patentSplitMessageService.list(queryWrapper);
-            Integer splitMessageId = null;
-            if (!patentSplitMessages.isEmpty()) {
-                PatentSplitMessage patentSplitMessage = patentSplitMessages.get(0);
-                splitMessageId = patentSplitMessage.getId();
-            }
+
+            Integer splitMessageId = this.getSplitId(projectId, patentNo, compareTaskId);
             LambdaQueryWrapper<Feature> wrapper = new LambdaQueryWrapper<>();
             wrapper
+                    .eq(Feature::getProjectId, projectId)
                     .eq(Feature::getSplitMessageId, splitMessageId)
                     .eq(Feature::getPatentNo, patentNo);
             List<Feature> allFeatures = featureService.list(wrapper);
@@ -776,8 +768,10 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     public TortCompareRecordVO getLastRecord(Integer projectId, String patentNo) {
         TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
         tortCompareRecordVO.setProjectId(projectId);
-        //根据报告id,专利号,ifFinal为true,createTime为最新的查询一条最新的结果
-        Integer taskId = this.getLastTaskId(projectId, patentNo);
+        //根据报告id,专利号,ifFinal为true,createTime为最新的去对比结果表中查询最新的一条对比结果
+        //根据这个对比结果的任务id以及别的条件去查询所有的对比结果
+        Integer taskId = this.getLastTaskIdFromRecords(projectId, patentNo);
+        Integer splitId = this.getSplitId(projectId, patentNo, taskId);
         if (taskId != null) {
             List<FTOCompareRecord> lastFTORecords = this.getLastFTORecord(projectId, patentNo, taskId);
             //根据专利号查询权要
@@ -785,7 +779,8 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
                 List<PatentRightVo> patentRightVos = new ArrayList<>();
                 List<RePatentClaim> patentRights = featureService.getRightListByNo(patentNo);
                 LambdaQueryWrapper<Feature> wrapper = new LambdaQueryWrapper<>();
-                wrapper.eq(Feature::getProjectTaskId, taskId)
+                wrapper.eq(Feature::getSplitMessageId, splitId)
+                        .eq(Feature::getProjectId, projectId)
                         .eq(Feature::getPatentNo, patentNo);
                 List<Feature> allFeatures = featureService.list(wrapper);
                 patentRightVos = featureService.loadPatentRightVO(patentRights, allFeatures, projectId, patentNo);
@@ -925,10 +920,11 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         map.put("mainRightNum", mainRightNum);
         return map;
     }
+
     /**
      * 从FTO中获得对比结果,并复制保存
      * @param projectId
-     * @param taskId
+     * @param taskId 有可能是协同任务id
      * @param createId
      * @param patentNos
      */
@@ -937,7 +933,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         if (projectId != null && taskId != null) {
             patentNos.forEach(patentNo -> {
                 //根据报告id和专利号查询最新的对比结果的任务id
-                Integer lastTaskId = this.getLastTaskId(projectId, patentNo);
+                Integer lastTaskId = this.getLastTaskIdFromRecords(projectId, patentNo);
                 if (lastTaskId != null) {
                     //根据projectId lastTaskId patentNo查询最新的对比结果集合并复制
                     List<FTOCompareRecord> ftoCompareRecords1 = this.getLastFTORecord(projectId, patentNo, lastTaskId);
@@ -950,6 +946,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
                             newTort.setCompareFileNumber(patentNo);
                             newTort.setProjectId(projectId);
                             newTort.setProjectTaskId(taskId);
+                            newTort.setAssoTaskId(lastTaskId);
                             newTort.setFeatureId(item.getFeatureId());
                             newTort.setTargetDescription(item.getTargetDescription());
                             newTort.setIfOriginal(true);
@@ -967,7 +964,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     }
 
     /**
-     * 根据两个参数查询taskId
+     * 根据两个参数从拆分信息表中查询taskId
      * @param projectId
      * @param patentNo
      * @return
@@ -988,7 +985,30 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     }
 
     /**
-     * 根据三个参数查询最新对比结果
+     * 根据projectId和patentNo从对比结果表中查询最终结果,肯定不为空!
+     * @param projectId
+     * @param patentNo
+     * @return
+     */
+    public Integer getLastTaskIdFromRecords(Integer projectId, String patentNo){
+        //根据报告id和专利号查询最新的对比结果的任务id
+        LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .eq(FTOCompareRecord::getProjectId, projectId)
+                .eq(FTOCompareRecord::getCompareFileNumber, patentNo)
+                .eq(FTOCompareRecord::getIfFinal, true)
+                .eq(FTOCompareRecord::getIfOriginal, false)
+                .orderByDesc(FTOCompareRecord::getCreateTime);
+        List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
+        Integer lastTaskId = null;
+        if (!ftoCompareRecords.isEmpty()) {
+            lastTaskId = ftoCompareRecords.get(0).getProjectTaskId();
+        }
+        return lastTaskId;
+    }
+
+    /**
+     * 查询最新对比结果
      * @param projectId
      * @param patentNo
      * @param taskId
@@ -1006,5 +1026,37 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         return ftoCompareRecords;
     }
 
+    /**
+     * 根据两个参数查询splitId
+     * @param projectId
+     * @param patentNo
+     * @return
+     */
+    public Integer getSplitId(Integer projectId, String patentNo, Integer taskId){
+        //根据报告id和专利号查询最新的对比结果的任务id
+        LambdaQueryWrapper<PatentSplitMessage> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .eq(PatentSplitMessage::getProjectId, projectId)
+                .eq(PatentSplitMessage::getPatentNo, patentNo)
+                .orderByDesc(PatentSplitMessage::getCreateTime);
+        if (taskId != null) {
+            queryWrapper.eq(PatentSplitMessage::getTaskId, taskId);
+        }
+        List<PatentSplitMessage> patentSplitMessages = patentSplitMessageService.list(queryWrapper);
+        Integer splitId = null;
+        if (!patentSplitMessages.isEmpty()) {
+            splitId = patentSplitMessages.get(0).getId();
+        }
+        return splitId;
+    }
 
+    public Integer getAssoTaskId(String patentNo, Integer assitTaskId){
+        LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(FTOCompareRecord::getCompareFileNumber, patentNo)
+                .eq(FTOCompareRecord::getProjectTaskId, assitTaskId)
+                .eq(FTOCompareRecord::getIfOriginal, true);
+        FTOCompareRecord ftoCompareRecord = this.getOne(queryWrapper ,false);
+        Integer assoTaskId = ftoCompareRecord.getAssoTaskId();
+        return  assoTaskId;
+    }
 }

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

@@ -42,7 +42,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 /**
- * 专利挖掘任务模块
+ * 任务模块
  *
  * @Author xiexiang
  * @Date 2023/11/21
@@ -120,7 +120,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     private MailSendService mailSendService;
 
     /**
-     * 项目开卷审核任务
+     * 挖掘项目开卷审核任务
      *
      * @param patentDigProjectTaskDTO
      * @return
@@ -1058,6 +1058,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
             try {
                 this.addCompareLiteratureByNosToEs(patentNos, taskId, projectId);
                 //3.从侵权分析中获得对比结果,并复制保存
+                //taskId是协同任务id
                 ftoCompareRecordService.copyFTOCompareRecords(tortTaskDTO.getProjectId(), taskId, personnelVO.getId(), patentNos);
             } catch (Exception e) {
                 throw new XiaoShiException(e.toString());