|
@@ -1,19 +1,20 @@
|
|
|
package cn.cslg.pas.service.business;
|
|
|
|
|
|
-import cn.cslg.pas.common.dto.business.GetAvoidDesignDTO;
|
|
|
+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.model.cronModel.PersonnelVO;
|
|
|
import cn.cslg.pas.common.utils.CacheUtils;
|
|
|
import cn.cslg.pas.common.utils.LoginUtils;
|
|
|
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.domain.business.AvoidDesign;
|
|
|
import cn.cslg.pas.domain.business.FTOCompareRecord;
|
|
|
import cn.cslg.pas.domain.business.Feature;
|
|
|
+import cn.cslg.pas.domain.business.ProjectTask;
|
|
|
import cn.cslg.pas.domain.business.ReportProject;
|
|
|
import cn.cslg.pas.exception.UnLoginException;
|
|
|
import cn.cslg.pas.exception.XiaoShiException;
|
|
@@ -23,6 +24,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
@@ -36,7 +38,7 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
-public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper, FTOCompareRecord> {
|
|
|
+public class TortCompareRecordService extends ServiceImpl<FTOCompareRecordMapper, FTOCompareRecord> {
|
|
|
@Autowired
|
|
|
private CacheUtils cacheUtils;
|
|
|
|
|
@@ -49,6 +51,10 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
|
|
|
@Autowired
|
|
|
private ReportProjectService reportProjectService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ @Lazy
|
|
|
+ private ProjectTaskService projectTaskService;
|
|
|
+
|
|
|
/**
|
|
|
* 新增侵权对比结果
|
|
|
*
|
|
@@ -127,19 +133,24 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public TortCompareRecordVO getTortCompareRecord(GetAvoidDesignDTO getAvoidDesignDTO){
|
|
|
+ /**
|
|
|
+ * 查询侵权分析对比结果VO
|
|
|
+ * @param getFeatureSplitDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public TortCompareRecordVO getTortCompareRecord(GetFeatureSplitDTO getFeatureSplitDTO){
|
|
|
//判断参数不能为空
|
|
|
- Integer projectId = getAvoidDesignDTO.getProjectId();
|
|
|
+ Integer projectId = getFeatureSplitDTO.getProjectId();
|
|
|
if (projectId == null) {
|
|
|
throw new XiaoShiException("projectId为空");
|
|
|
}
|
|
|
- if (getAvoidDesignDTO.getIfReSplit() == null) {
|
|
|
+ if (getFeatureSplitDTO.getIfReSplit() == null) {
|
|
|
throw new XiaoShiException("ifReSplit不能为空");
|
|
|
}
|
|
|
- if (getAvoidDesignDTO.getSplitBy() == null) {
|
|
|
+ if (getFeatureSplitDTO.getSplitBy() == null) {
|
|
|
throw new XiaoShiException("splitBy不能为空");
|
|
|
}
|
|
|
- if (getAvoidDesignDTO.getSplitType() == null) {
|
|
|
+ if (getFeatureSplitDTO.getSplitType() == null) {
|
|
|
throw new XiaoShiException("splitType不能为空");
|
|
|
}
|
|
|
//返回的VO类
|
|
@@ -152,11 +163,11 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
|
|
|
String patentNo = reportProject.getSignPatentNo();
|
|
|
//新建查询拆分特征DTO
|
|
|
SplitVO splitVO = new SplitVO();
|
|
|
- BeanUtils.copyProperties(getAvoidDesignDTO, splitVO);
|
|
|
+ BeanUtils.copyProperties(getFeatureSplitDTO, splitVO);
|
|
|
splitVO.setPatentNo(patentNo);
|
|
|
List<PatentRightVo> patentRightVos = new ArrayList<>();
|
|
|
//判断是否重拆
|
|
|
- if (getAvoidDesignDTO.getIfReSplit() == true) {//重拆
|
|
|
+ if (getFeatureSplitDTO.getIfReSplit() == true) {//重拆
|
|
|
//重拆需要清空原有特征表、对比结果表
|
|
|
LambdaQueryWrapper<FTOCompareRecord> deleteWrapper = new LambdaQueryWrapper<>();
|
|
|
deleteWrapper.eq(FTOCompareRecord::getProjectId, projectId);
|
|
@@ -188,7 +199,10 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
|
|
|
List<TortVO> tortVOS = new ArrayList<>();
|
|
|
//特征信息
|
|
|
List<Feature> features = item.getFeatures();
|
|
|
- tortVOS = this.loadTortVO(projectId, features);
|
|
|
+ LambdaQueryWrapper<FTOCompareRecord> queryWrapper2 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper2.eq(FTOCompareRecord::getProjectId, projectId);
|
|
|
+ List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper2);
|
|
|
+ tortVOS = this.loadTortVO(features, ftoCompareRecords);
|
|
|
tortRightVO.setTortVOS(tortVOS);
|
|
|
tortRightVOS.add(tortRightVO);
|
|
|
});
|
|
@@ -199,14 +213,8 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
|
|
|
return tortCompareRecordVO;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- public List<TortVO> loadTortVO(Integer projectId, List<Feature> features){
|
|
|
+ public List<TortVO> loadTortVO(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
|
|
|
List<TortVO> tortVOS = new ArrayList<>();
|
|
|
- LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(FTOCompareRecord::getProjectId, projectId);
|
|
|
- List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
|
|
|
for (Feature feature : features) {
|
|
|
//新建特征与侵权分析对比结果VO
|
|
|
TortVO tortVO = new TortVO();
|
|
@@ -233,4 +241,116 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
|
|
|
}
|
|
|
return tortVOS;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 从侵权分析中获得对比结果,并复制保存
|
|
|
+ */
|
|
|
+ public void copyTortCompareRecords(Integer projectId, Integer taskId, String createId){
|
|
|
+ if (projectId != null && taskId != null) {
|
|
|
+ LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(FTOCompareRecord::getProjectId, projectId);
|
|
|
+ List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
|
|
|
+ if (!ftoCompareRecords.isEmpty()) {
|
|
|
+ List<FTOCompareRecord> newTorts = new ArrayList<>();
|
|
|
+ ftoCompareRecords.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不能为空");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询侵权分析协同任务对比结果
|
|
|
+ * @param taskId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public TortCompareRecordVO getTortTaskResult(Integer taskId){
|
|
|
+ //新建返回VO
|
|
|
+ TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
|
|
|
+ //根据任务id查询报告id
|
|
|
+ LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(ProjectTask::getId, taskId);
|
|
|
+ ProjectTask projectTask = projectTaskService.getOne(queryWrapper, false);
|
|
|
+ if (projectTask != null) {
|
|
|
+ Integer projectId = projectTask.getProjectId();
|
|
|
+ tortCompareRecordVO.setProjectId(projectId);
|
|
|
+ //根据报告id查询专利号
|
|
|
+ LambdaQueryWrapper<ReportProject> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(ReportProject::getProjectId, projectId);
|
|
|
+ ReportProject reportProject = reportProjectService.getOne(queryWrapper1, false);
|
|
|
+ if (reportProject != null) {
|
|
|
+ String patentNo = reportProject.getSignPatentNo();
|
|
|
+ //根据专利号查询权要
|
|
|
+ try {
|
|
|
+ List<PatentRightVo> patentRightVos = new ArrayList<>();
|
|
|
+ List<RePatentClaim> patentRights = featureService.getRightListByNo(patentNo);
|
|
|
+ LambdaQueryWrapper<Feature> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(Feature::getProjectId, projectId)
|
|
|
+ .eq(Feature::getPatentNo, patentNo);
|
|
|
+ List<Feature> allFeatures = featureService.list(wrapper);
|
|
|
+ patentRightVos = featureService.loadPatentRightVO(patentRights, allFeatures, projectId, patentNo);
|
|
|
+ List<TortRightVO> tortRightVOS = this.loadTortRightVOS(taskId, projectId, patentRightVos);
|
|
|
+ tortCompareRecordVO.setTortRightVOS(tortRightVOS);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new XiaoShiException("未查询到拆分下的权要");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new XiaoShiException("未查询到报告");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new XiaoShiException("未查询到协同任务");
|
|
|
+ }
|
|
|
+ return tortCompareRecordVO;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据projectId和权要集合装载返回侵权分析对比结果页面VO
|
|
|
+ * @param projectId
|
|
|
+ * @param taskId
|
|
|
+ * @param patentRightVos
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<TortRightVO> loadTortRightVOS(Integer taskId, Integer projectId, 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<TortVO> tortVOS = new ArrayList<>();
|
|
|
+ //特征信息
|
|
|
+ List<Feature> features = item.getFeatures();
|
|
|
+ LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(FTOCompareRecord::getProjectId, projectId).eq(FTOCompareRecord::getProjectTaskId, taskId);
|
|
|
+ List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
|
|
|
+ tortVOS = this.loadTortVO(features, ftoCompareRecords);
|
|
|
+ tortRightVO.setTortVOS(tortVOS);
|
|
|
+ tortRightVOS.add(tortRightVO);
|
|
|
+ });
|
|
|
+ return tortRightVOS;
|
|
|
+ } else {
|
|
|
+ throw new XiaoShiException("传入权要为空");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //保存侵权分析协同任务结果
|
|
|
+ //[{ 特征id,fto对比记录}],任务id
|
|
|
}
|