|
@@ -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.GetFeatureSplitDTO;
|
|
import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
|
|
import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
|
|
import cn.cslg.pas.common.dto.business.TortDTO;
|
|
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.model.cronModel.PersonnelVO;
|
|
import cn.cslg.pas.common.utils.CacheUtils;
|
|
import cn.cslg.pas.common.utils.CacheUtils;
|
|
import cn.cslg.pas.common.utils.LoginUtils;
|
|
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.PatentRightVo;
|
|
import cn.cslg.pas.common.vo.RePatentClaim;
|
|
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.FTOCompareRecord;
|
|
import cn.cslg.pas.domain.business.Feature;
|
|
import cn.cslg.pas.domain.business.Feature;
|
|
import cn.cslg.pas.domain.business.ProjectTask;
|
|
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.beans.factory.annotation.Autowired;
|
|
import org.springframework.context.annotation.Lazy;
|
|
import org.springframework.context.annotation.Lazy;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -213,38 +215,11 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
|
|
return tortCompareRecordVO;
|
|
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){
|
|
public void copyTortCompareRecords(Integer projectId, Integer taskId, String createId){
|
|
if (projectId != null && taskId != null) {
|
|
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
|
|
* @param taskId
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- public TortCompareRecordVO getTortTaskResult(Integer taskId){
|
|
|
|
|
|
+ public TortCompareRecordVO getAllTortTaskResult(Integer taskId) {
|
|
//新建返回VO
|
|
//新建返回VO
|
|
TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
|
|
TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
|
|
//根据任务id查询报告id
|
|
//根据任务id查询报告id
|
|
@@ -333,13 +366,13 @@ public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper
|
|
TortRightVO tortRightVO = new TortRightVO();
|
|
TortRightVO tortRightVO = new TortRightVO();
|
|
BeanUtils.copyProperties(item, tortRightVO);
|
|
BeanUtils.copyProperties(item, tortRightVO);
|
|
//新建特征与侵权分析对比结果VOS
|
|
//新建特征与侵权分析对比结果VOS
|
|
- List<TortVO> tortVOS = new ArrayList<>();
|
|
|
|
- //特征信息
|
|
|
|
List<Feature> features = item.getFeatures();
|
|
List<Feature> features = item.getFeatures();
|
|
LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
|
|
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);
|
|
List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
|
|
- tortVOS = this.loadTortVO(features, ftoCompareRecords);
|
|
|
|
|
|
+ List<TortVO> tortVOS = this.loadTortVO(features, ftoCompareRecords);
|
|
tortRightVO.setTortVOS(tortVOS);
|
|
tortRightVO.setTortVOS(tortVOS);
|
|
tortRightVOS.add(tortRightVO);
|
|
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
|
|
|
|
}
|
|
}
|