xiexiang 1 tahun lalu
induk
melakukan
ff4534c08c

+ 1 - 1
src/main/java/cn/cslg/pas/common/dto/FollowUpUpdateDTO.java

@@ -40,6 +40,6 @@ public class FollowUpUpdateDTO {
      */
     private Date deadline;
 
-    private String   description;
+    private String description;
 
 }

+ 86 - 18
src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java

@@ -72,6 +72,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     private EsPatentService esPatentService;
     @Autowired
     private EsFamilyService esFamilyService;
+
     /**
      * 查询FTO对比结果VO
      * @param getFeatureSplitDTO
@@ -742,24 +743,8 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
         tortCompareRecordVO.setProjectId(projectId);
         //根据报告id,专利号,ifFinal为true,createTime为最新的查询一条最新的结果
-        LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper
-                .eq(FTOCompareRecord::getCompareFileNumber, patentNo)
-                .eq(FTOCompareRecord::getProjectId, projectId)
-                .eq(FTOCompareRecord::getIfFinal, true)
-                .eq(FTOCompareRecord::getIfOriginal, false)
-                .orderByDesc(FTOCompareRecord::getCreateTime);
-        List<FTOCompareRecord> lastFTORecords = this.list(queryWrapper);
-        List<Integer> taskIds = lastFTORecords.stream()
-                .map(FTOCompareRecord::getProjectTaskId)
-                .distinct()  // 去除重复的任务ID
-                .collect(Collectors.toList());
-        Integer taskId = null;
-        if (taskIds.size() == 1) {
-            taskId = taskIds.get(0);  // 获取唯一的任务ID
-        } else {
-            throw new XiaoShiException("查询任务id错误,多个或者没有");
-        }
+        Integer taskId = this.getLastTaskId(projectId, patentNo);
+        List<FTOCompareRecord> lastFTORecords = this.getLastFTORecord(projectId, patentNo, taskId);
         //根据专利号查询权要
         try {
             List<PatentRightVo> patentRightVos = new ArrayList<>();
@@ -856,4 +841,87 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         return comparedPatentVOS;
     }
 
+    /**
+     * 从FTO中获得对比结果,并复制保存
+     * @param projectId
+     * @param taskId
+     * @param createId
+     * @param patentNos
+     */
+    public void copyFTOCompareRecords(Integer projectId, Integer taskId, String createId, List<String> patentNos){
+        //判断参数不为空
+        if (projectId != null && taskId != null) {
+            patentNos.forEach(patentNo -> {
+                //根据报告id和专利号查询最新的对比结果的任务id
+                Integer lastTaskId = this.getLastTaskId(projectId, patentNo);
+                //根据projectId lastTaskId patentNo查询最新的对比结果集合并复制
+                List<FTOCompareRecord> ftoCompareRecords1 = this.getLastFTORecord(projectId, patentNo, lastTaskId);
+                if (!ftoCompareRecords1.isEmpty()) {
+                    List<FTOCompareRecord> newTorts = new ArrayList<>();
+                    ftoCompareRecords1.forEach(item -> {
+                        FTOCompareRecord newTort = new FTOCompareRecord();
+                        newTort.setCompareResult(item.getCompareResult());
+                        newTort.setCompareDescription(item.getCompareDescription());
+                        newTort.setProjectId(projectId);
+                        newTort.setProjectTaskId(taskId);
+                        newTort.setFeatureId(item.getFeatureId());
+                        newTort.setTargetDescription(item.getTargetDescription());
+                        newTort.setIfOriginal(true);
+                        newTort.setIfFinal(false);
+                        newTort.setCreateId(createId);
+                        newTorts.add(newTort);
+                    });
+                    this.saveBatch(newTorts);
+                }
+            });
+        } else {
+            throw new XiaoShiException("projectId或者taskId不能为空");
+        }
+    }
+
+    /**
+     * 根据两个参数查询taskId
+     * @param projectId
+     * @param patentNo
+     * @return
+     */
+    public Integer getLastTaskId(Integer projectId, String patentNo){
+        //根据报告id和专利号查询最新的对比结果的任务id
+        LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .eq(FTOCompareRecord::getProjectId, projectId)
+                .eq(FTOCompareRecord::getCompareFileNumber, patentNo)
+                .eq(FTOCompareRecord::getIfOriginal, false)
+                .eq(FTOCompareRecord::getIfFinal, true)
+                .orderByDesc(FTOCompareRecord::getCreateTime);
+        List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
+        Integer lastTaskId = null;
+        if (!ftoCompareRecords.isEmpty()) {
+            lastTaskId = ftoCompareRecords.get(0).getProjectTaskId();
+        } else {
+            throw new XiaoShiException("查询错误");
+        }
+        return lastTaskId;
+    }
+
+    /**
+     * 根据三个参数查询最新对比结果
+     * @param projectId
+     * @param patentNo
+     * @param taskId
+     * @return
+     */
+    public List<FTOCompareRecord> getLastFTORecord(Integer projectId, String patentNo, Integer taskId){
+        LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .eq(FTOCompareRecord::getProjectId, projectId)
+                .eq(FTOCompareRecord::getCompareFileNumber, patentNo)
+                .eq(FTOCompareRecord::getProjectTaskId, taskId)
+                .eq(FTOCompareRecord::getIfOriginal, false)
+                .eq(FTOCompareRecord::getIfFinal, true);
+        List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
+        return ftoCompareRecords;
+    }
+
+
 }

+ 11 - 20
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -962,7 +962,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     }
 
     //添加对比文献和专利号关联
-    private void addCompareLiteratureByNos(List<String> patentNos, Integer taskId) {
+    private void addCompareLiteratureByNos(List<String> patentNos, Integer taskId, Integer projectId) {
         List<CompareLiterature> compareLiteratures = new ArrayList<>();
         if (patentNos == null || patentNos.size() == 0) {
             return;
@@ -970,6 +970,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
             patentNos.forEach(item -> {
                 CompareLiterature compareLiterature = new CompareLiterature();
                 compareLiterature.setLiteratureNo(item);
+                compareLiterature.setProjectId(projectId);
                 compareLiterature.setName(item);
                 compareLiterature.setProjectTaskId(taskId);
                 compareLiteratures.add(compareLiterature);
@@ -980,7 +981,9 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
 
     /**
-     * 添加侵权分析协同任务
+     * 添加FTO协同任务
+     * @param tortTaskDTO
+     * @return
      */
     public Integer addFTOAssitTask(TortTaskDTO tortTaskDTO) {
         //1.保存任务信息 project_task表
@@ -1023,31 +1026,19 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         } else {
             throw new XiaoShiException("创建任务失败,未读取到任务id");
         }
+
+        //3.compareLiterature入库
         List<String> patentNos = tortTaskDTO.getPatentNos();
         if (!patentNos.isEmpty()) {
-//            List<CompareLiterature> compareLiteratures = new ArrayList<>();
-//            //3.从侵权分析中获得对比结果,并复制保存
-//            for (String patentNo : patentNos) {
-//                ftoCompareRecordService.copyTortCompareRecords(projectId, taskId, personnelVO.getId(), patentNo);
-//                //4.新增CompareLiterature
-//                CompareLiterature compareLiterature = new CompareLiterature();
-//                compareLiterature.setLiteratureNo(patentNo);
-//                compareLiterature.setType(1);
-//                compareLiterature.setProjectId(projectId);
-//                compareLiterature.setProjectTaskId(taskId);
-//                compareLiterature.setCreateId(personnelVO.getId());
-//                compareLiteratures.add(compareLiterature);
-//            }
-//            if (!compareLiteratures.isEmpty()) {
-//                compareLiteratureService.saveBatch(compareLiteratures);
-//            }
             try {
-                this.addCompareLiteratureByNosToEs(patentNos, taskId, projectId);
+                this.addCompareLiteratureByNos(patentNos, taskId, projectId);
+                //4.从侵权分析中获得对比结果,并复制保存
+                ftoCompareRecordService.copyFTOCompareRecords(tortTaskDTO.getProjectId(), taskId, personnelVO.getId(), patentNos);
             } catch (Exception e) {
                 throw new XiaoShiException(e.toString());
             }
         }
-        //4.发送邮件通知协同人和抄送人
+        //5.发送邮件通知协同人和抄送人
         //TODO
         return projectTask.getId();
     }

+ 6 - 2
src/main/java/cn/cslg/pas/service/business/TortCompareRecordService.java

@@ -362,9 +362,13 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
      * @param createId
      */
     public void copyTortCompareRecords(Integer projectId, Integer taskId, String createId){
+        //判断参数不为空
         if (projectId != null && taskId != null) {
+            //根据报告id查询最新的对比结果
             LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(FTOCompareRecord::getProjectId, projectId);
+            queryWrapper.eq(FTOCompareRecord::getProjectId, projectId)
+                    .eq(FTOCompareRecord::getIfOriginal, false)
+                    .eq(FTOCompareRecord::getIfFinal, true);
             List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
             if (!ftoCompareRecords.isEmpty()) {
                 List<FTOCompareRecord> newTorts = new ArrayList<>();
@@ -384,7 +388,7 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
                 this.saveBatch(newTorts);
             }
         } else {
-            throw new XiaoShiException("projectId不能为空");
+            throw new XiaoShiException("projectId或者taskId不能为空");
         }
     }