xiexiang пре 1 година
родитељ
комит
7722de887c

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

@@ -38,5 +38,4 @@ public class TortDTO {
      */
     private Integer compareResult;
 
-
 }

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

@@ -0,0 +1,16 @@
+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;
+}

+ 32 - 0
src/main/java/cn/cslg/pas/common/vo/business/FTOCompareRecordVO.java

@@ -0,0 +1,32 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+/**
+ * fto对比记录VO
+ * @Author xiexiang
+ * @Date 2023/12/11
+ */
+@Data
+public class FTOCompareRecordVO {
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 标的说明
+     */
+    private String targetDescription;
+
+    /**
+     * 对比说明
+     */
+    private String compareDescription;
+
+    /**
+     * 对比结果
+     * 0字面相同 1等同 2不等同 3待确定
+     */
+    private Integer compareResult;
+}

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

@@ -39,26 +39,9 @@ public class TortVO {
 
     private Integer sysOrder;
 
-    /**
-     * id
-     */
-    private Integer id;
-
-    /**
-     * 标的说明
-     */
-    private String targetDescription;
+    private FTOCompareRecordVO originalRecordVO;
 
-    /**
-     * 对比说明
-     */
-    private String compareDescription;
-
-    /**
-     * 对比结果
-     * 0字面相同 1等同 2不等同 3待确定
-     */
-    private Integer compareResult;
+    private FTOCompareRecordVO currentRecordVO;
 
     /**
      * 创建人id

+ 23 - 9
src/main/java/cn/cslg/pas/controller/TortController.java

@@ -1,10 +1,7 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
-import cn.cslg.pas.common.dto.business.GetFeatureSplitDTO;
-import cn.cslg.pas.common.dto.business.ProductMessageDTO;
-import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
-import cn.cslg.pas.common.dto.business.TortTaskDTO;
+import cn.cslg.pas.common.dto.business.*;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.business.ProductMessageVO;
@@ -81,7 +78,7 @@ public class TortController {
         }
     }
 
-    @Operation(summary = "查询侵权分析对比结果")
+    @Operation(summary = "发起人查询侵权分析对比结果(包含拆分特征)")
     @PostMapping("/getTortCompareRecord")
     public Response getTortCompareRecord(@RequestBody GetFeatureSplitDTO getFeatureSplitDTO) throws Exception {
         TortCompareRecordVO tortCompareRecordVO = tortCompareRecordService.getTortCompareRecord(getFeatureSplitDTO);
@@ -97,11 +94,28 @@ public class TortController {
         return Response.success(records);
     }
 
-    @Operation(summary = "查询侵权分析协同任务对比结果")
-    @GetMapping("/getTortTaskResult")
-    public Response getTortTaskResult(Integer taskId) {
-        TortCompareRecordVO tortCompareRecordVO = tortCompareRecordService.getTortTaskResult(taskId);
+    @Operation(summary = "保存侵权分析协同任务对比结果")
+    @PostMapping("/addTortTaskResult")
+    public Response addTortTaskResult(@RequestBody TortTaskResultDTO tortTaskResultDTO){
+        List<Integer> ids = tortCompareRecordService.addTortTaskResult(tortTaskResultDTO);
+        Records records = new Records();
+        records.setData(ids);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询侵权分析协同前后对比结果")
+    @GetMapping("/getAllTortTaskResult")
+    public Response getAllTortTaskResult(Integer taskId){
+        TortCompareRecordVO tortCompareRecordVO = tortCompareRecordService.getAllTortTaskResult(taskId);
         return Response.success(tortCompareRecordVO);
     }
 
+    @Operation(summary = "发起人保存侵权分析协同后最终的对比结果")
+    @PostMapping("/addFinalTortResult")
+    public Response addFinalTortResult(@RequestBody TortCompareRecordDTO tortCompareRecordDTO){
+        List<Integer> ids = tortCompareRecordService.addFinalTortResult(tortCompareRecordDTO);
+        Records records = new Records();
+        records.setData(ids);
+        return Response.success(records);
+    }
 }

+ 0 - 2
src/main/java/cn/cslg/pas/service/business/ProductMessageService.java

@@ -190,8 +190,6 @@ public class ProductMessageService extends ServiceImpl<ProductMessageMapper, Pro
                 productMessageVO.setSystemFileList(systemFiles);
             }
             this.loadProductMessageVO(productMessageVO);
-        } else {
-            throw new XiaoShiException("未查询到产品");
         }
         return productMessageVO;
     }

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

@@ -676,7 +676,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     }
 
     /**
-     * TODO 添加侵权分析协同任务
+     * 添加侵权分析协同任务
      */
     public Integer addTortTask(TortTaskDTO tortTaskDTO) {
         //1.保存任务信息 project_task表

+ 179 - 42
src/main/java/cn/cslg/pas/service/business/TortCompareRecordService.java

@@ -3,15 +3,14 @@ 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;
+import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.common.vo.PatentRightVo;
 import cn.cslg.pas.common.vo.RePatentClaim;
-import cn.cslg.pas.common.vo.business.SplitVO;
-import cn.cslg.pas.common.vo.business.TortCompareRecordVO;
-import cn.cslg.pas.common.vo.business.TortRightVO;
-import cn.cslg.pas.common.vo.business.TortVO;
+import cn.cslg.pas.common.vo.business.*;
 import cn.cslg.pas.domain.business.FTOCompareRecord;
 import cn.cslg.pas.domain.business.Feature;
 import cn.cslg.pas.domain.business.ProjectTask;
@@ -26,9 +25,12 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -213,38 +215,11 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
         return tortCompareRecordVO;
     }
 
-    public List<TortVO> loadTortVO(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
-        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());
-            //装载侵权分析对比结果的部分(可能为空)
-            if (!ftoCompareRecords.isEmpty()) {
-                FTOCompareRecord ftoCompareRecord = ftoCompareRecords.stream().filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId())).findFirst().orElse(null);
-                if (ftoCompareRecord != null) {
-                    tortVO.setId(ftoCompareRecord.getId());
-                    tortVO.setCompareResult(ftoCompareRecord.getCompareResult());
-                    tortVO.setCompareDescription(ftoCompareRecord.getCompareDescription());
-                    tortVO.setTargetDescription(ftoCompareRecord.getTargetDescription());
-                }
-            }
-            tortVOS.add(tortVO);
-        }
-        return tortVOS;
-    }
-
-
     /**
      * 从侵权分析中获得对比结果,并复制保存
+     * @param projectId
+     * @param taskId
+     * @param createId
      */
     public void copyTortCompareRecords(Integer projectId, Integer taskId, String createId){
         if (projectId != null && taskId != null) {
@@ -274,11 +249,69 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
     }
 
     /**
-     * 查询侵权分析协同任务对比结果
+     * 保存侵权分析协同任务结果
+     * @param tortTaskResultDTO
+     */
+    public List<Integer> addTortTaskResult(TortTaskResultDTO tortTaskResultDTO){
+        if (tortTaskResultDTO == 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();
+        } else {
+            throw new XiaoShiException("任务id不能为空");
+        }
+        //获取登录人信息
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        List<TortDTO> tortDTOS = tortTaskResultDTO.getTortDTOS();
+        List<Integer> ids = new ArrayList<>();
+        if (tortDTOS != null && !tortDTOS.isEmpty()) {
+            List<FTOCompareRecord> ftoCompareRecords = new ArrayList<>();
+            for (TortDTO item : tortDTOS) {
+                if (item.getCompareResult() != null || StringUtils.isNotBlank(item.getCompareDescription()) || StringUtils.isNotBlank(item.getTargetDescription())) {
+                    FTOCompareRecord ftoCompareRecord = new FTOCompareRecord();
+                    ftoCompareRecord.setCompareResult(item.getCompareResult());
+                    ftoCompareRecord.setCompareDescription(item.getCompareDescription());
+                    ftoCompareRecord.setTargetDescription(item.getTargetDescription());
+                    ftoCompareRecord.setFeatureId(item.getFeatureId());
+                    ftoCompareRecord.setProjectId(projectId);
+                    ftoCompareRecord.setProjectTaskId(tortTaskResultDTO.getTaskId());
+                    ftoCompareRecord.setCreateId(personnelVO.getId());
+                    ftoCompareRecord.setIfOriginal(false);
+                    ftoCompareRecord.setIfFinal(false);
+                    ftoCompareRecords.add(ftoCompareRecord);
+                }
+            }
+            if (!ftoCompareRecords.isEmpty()) {
+                //先删除表中原来的
+                LambdaQueryWrapper<FTOCompareRecord> deleteWrapper = new LambdaQueryWrapper<>();
+                deleteWrapper.eq(FTOCompareRecord::getIfOriginal, false)
+                        .eq(FTOCompareRecord::getCreateId, personnelVO.getId())
+                        .eq(FTOCompareRecord::getProjectTaskId, tortTaskResultDTO.getTaskId());
+                this.remove(deleteWrapper);
+                //再更新
+                this.saveBatch(ftoCompareRecords);
+                ids = ftoCompareRecords.stream().map(FTOCompareRecord::getId).collect(Collectors.toList());
+            }
+        }
+        return ids;
+    }
+
+    /**
+     * 查询侵权分析协同前后对比结果
      * @param taskId
      * @return
      */
-    public TortCompareRecordVO getTortTaskResult(Integer taskId){
+    public TortCompareRecordVO getAllTortTaskResult(Integer taskId) {
         //新建返回VO
         TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
         //根据任务id查询报告id
@@ -333,13 +366,13 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
                 TortRightVO tortRightVO = new TortRightVO();
                 BeanUtils.copyProperties(item, tortRightVO);
                 //新建特征与侵权分析对比结果VOS
-                List<TortVO> tortVOS = new ArrayList<>();
-                //特征信息
                 List<Feature> features = item.getFeatures();
                 LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
-                queryWrapper.eq(FTOCompareRecord::getProjectId, projectId).eq(FTOCompareRecord::getProjectTaskId, taskId);
+                queryWrapper.eq(FTOCompareRecord::getProjectId, projectId)
+                        .eq(FTOCompareRecord::getProjectTaskId, taskId)
+                        .eq(FTOCompareRecord::getIfFinal, false);
                 List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
-                tortVOS = this.loadTortVO(features, ftoCompareRecords);
+                List<TortVO> tortVOS = this.loadTortVO(features, ftoCompareRecords);
                 tortRightVO.setTortVOS(tortVOS);
                 tortRightVOS.add(tortRightVO);
             });
@@ -349,8 +382,112 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
         }
     }
 
+    /**
+     * 装载特征与对比结果
+     * @param features
+     * @param ftoCompareRecords
+     * @return
+     */
+    public List<TortVO> loadTortVO(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
+        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());
+            //装载侵权分析对比结果的部分(可能为空)
+            if (!ftoCompareRecords.isEmpty()) {
+                FTOCompareRecord originalRecord = ftoCompareRecords.stream().filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId()) && item.getIfOriginal() == 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);
+                    }
+                }
+            }
+            tortVOS.add(tortVO);
+        }
+        return tortVOS;
+    }
 
+    /**
+     * 保存最终对比结果接口
+     * @param tortCompareRecordDTO
+     * @return
+     */
+    public List<Integer> addFinalTortResult(TortCompareRecordDTO tortCompareRecordDTO){
+        List<Integer> ids = new ArrayList<>();
+        //判空
+        Integer projectId = tortCompareRecordDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("projectId不能为空");
+        }
+        //首先是根据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);
+        //其次是添加一批新的数据
+        List<FTOCompareRecord> ftoCompareRecords = new ArrayList<>();
+        List<TortDTO> tortDTOS = tortCompareRecordDTO.getTortDTOS();
+        //获取登录人信息
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        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 (!ftoCompareRecords.isEmpty()) {
+            this.saveBatch(ftoCompareRecords);
+            ids = ftoCompareRecords.stream().map(FTOCompareRecord::getId).collect(Collectors.toList());
+        }
+        return ids;
+    }
 
-    //保存侵权分析协同任务结果
-    //[{ 特征id,fto对比记录}],任务id
 }