xiexiang před 1 rokem
rodič
revize
b322b87d64

+ 2 - 2
src/main/java/cn/cslg/pas/controller/FTOController.java

@@ -117,7 +117,7 @@ public class FTOController {
     @Operation(summary = "查询报告专利最新对比结果")
     @GetMapping("/getLastRecord")
     public Response getLastRecord(Integer projectId, String patentNo){
-        ftoCompareRecordService.getLastRecord(projectId, patentNo);
-        return null;
+        TortCompareRecordVO tortCompareRecordVO = ftoCompareRecordService.getLastRecord(projectId, patentNo);
+        return Response.success(tortCompareRecordVO);
     }
 }

+ 96 - 9
src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java

@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.spire.pdf.packages.sprcxq;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -444,7 +445,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
             if (type == 1) {//查询协同前后对比结果
                 tortRightVOS = this.loadBeforeAndAfter(taskId, patentNo, patentRightVos);
             } else if (type == 2) {//发起人的查询
-                tortRightVOS = this.loadTortRightVOS2(taskId, projectId, patentRightVos);
+                tortRightVOS = this.loadTortRightVOS2(taskId, patentRightVos);
             }
             tortCompareRecordVO.setTortRightVOS(tortRightVOS);
         } catch (Exception e) {
@@ -532,11 +533,10 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     /**
      * 根据projectId和权要集合装载返回侵权分析对比结果页面VO
      * @param taskId
-     * @param projectId
      * @param patentRightVos
      * @return
      */
-    public List<TortRightVO> loadTortRightVOS2(Integer taskId, Integer projectId, List<PatentRightVo> patentRightVos){
+    public List<TortRightVO> loadTortRightVOS2(Integer taskId, List<PatentRightVo> patentRightVos){
         if (patentRightVos != null && !patentRightVos.isEmpty()) {
             //新建权要层信息
             List<TortRightVO> tortRightVOS = new ArrayList<>();
@@ -549,7 +549,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
                 LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
                 queryWrapper.eq(FTOCompareRecord::getProjectTaskId, taskId);
                 List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
-                List<TortVO> tortVOS = this.loadTortVO2(taskId, features, ftoCompareRecords);
+                List<TortVO> tortVOS = this.loadTortVO2(features, ftoCompareRecords);
                 tortRightVO.setTortVOS(tortVOS);
                 tortRightVOS.add(tortRightVO);
             });
@@ -562,12 +562,11 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     /**
      * 发起人查询
      * 装载特征与对比结果
-     * @param taskId
      * @param features
      * @param ftoCompareRecords
      * @return
      */
-    public List<TortVO> loadTortVO2(Integer taskId, List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
+    public List<TortVO> loadTortVO2(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
         List<TortVO> tortVOS = new ArrayList<>();
         for (Feature feature : features) {
             //新建特征与侵权分析对比结果VO
@@ -723,15 +722,103 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         }
     }
 
-    public void getLastRecord(Integer projectId, String patentNo){
+    /**
+     * 根据报告id和专利号查询最新的对比结果
+     * @param projectId
+     * @param patentNo
+     * @return
+     */
+    public TortCompareRecordVO getLastRecord(Integer projectId, String patentNo){
+        TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
+        tortCompareRecordVO.setProjectId(projectId);
+        //根据报告id,专利号,ifFinal为true,createTime为最新的查询一条最新的结果
         LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(FTOCompareRecord::getCompareFileNumber, patentNo)
+        queryWrapper
+                .eq(FTOCompareRecord::getCompareFileNumber, patentNo)
                 .eq(FTOCompareRecord::getProjectId, projectId)
                 .eq(FTOCompareRecord::getIfFinal, true)
                 .eq(FTOCompareRecord::getIfOriginal, false)
                 .orderByDesc(FTOCompareRecord::getCreateTime);
-        List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
+        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错误,多个或者没有");
+        }
+        //根据专利号查询权要
+        try {
+            List<PatentRightVo> patentRightVos = new ArrayList<>();
+            List<RePatentClaim> patentRights = featureService.getRightListByNo(patentNo);
+            LambdaQueryWrapper<Feature> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(Feature::getProjectTaskId, taskId)
+                    .eq(Feature::getPatentNo, patentNo);
+            List<Feature> allFeatures = featureService.list(wrapper);
+            patentRightVos = featureService.loadPatentRightVO(patentRights, allFeatures, projectId, patentNo);
+            //装载权要层下的特征与对比结果
+            List<TortRightVO> tortRightVOS = new ArrayList<>();
+            tortRightVOS = this.loadLastRecord(lastFTORecords, patentRightVos);
+            tortCompareRecordVO.setTortRightVOS(tortRightVOS);
+            return tortCompareRecordVO;
+        } catch (Exception e) {
+            throw new XiaoShiException("根据专利号查询权要失败");
+        }
+    }
 
+    /**
+     * 查询最新的对比结果
+     * @param lastFTORecords
+     * @param patentRightVos
+     * @return
+     */
+    public List<TortRightVO> loadLastRecord(List<FTOCompareRecord> lastFTORecords, 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();
+                List<TortVO> tortVOS = this.loadLastVO(features, lastFTORecords);
+                tortRightVO.setTortVOS(tortVOS);
+                tortRightVOS.add(tortRightVO);
+            });
+            return tortRightVOS;
+        } else {
+            throw new XiaoShiException("传入权要为空");
+        }
+    }
+
+    public List<TortVO> loadLastVO(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
+        List<TortVO> tortVOS = new ArrayList<>();
+        for (Feature feature : features) {
+            //新建特征与侵权分析对比结果VO
+            //装载特征部分的信息
+            TortVO tortVO = tortCompareRecordService.loadFeature(feature);
+            //装载侵权分析对比结果的部分
+            FTOCompareRecordVO originalRecordVO = new FTOCompareRecordVO();
+            if (!ftoCompareRecords.isEmpty()) {
+                // 原始数据的装载
+                // 原始数据应该是ifOriginal为true的数据
+                FTOCompareRecord originalRecord = ftoCompareRecords
+                        .stream()
+                        .filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId()))
+                        .findFirst()
+                        .orElse(null);
+                if (originalRecord != null) {
+                    originalRecordVO = tortCompareRecordService.loadVO(originalRecord);
+                }
+            }
+            tortVO.setOriginalRecordVO(originalRecordVO);
+            tortVOS.add(tortVO);
+        }
+        return tortVOS;
     }
 
 }