|
@@ -0,0 +1,469 @@
|
|
|
+package cn.cslg.pas.service.business.stabilityReport;
|
|
|
+
|
|
|
+import cn.cslg.pas.common.dto.stabilityReport.AddCompareRecordDTO;
|
|
|
+import cn.cslg.pas.common.dto.stabilityReport.QueryAllCompareGroupDTO;
|
|
|
+import cn.cslg.pas.common.dto.stabilityReport.QueryAllCompareRecordDTO;
|
|
|
+import cn.cslg.pas.common.dto.stabilityReport.QueryCompareRecordDTO;
|
|
|
+import cn.cslg.pas.common.model.importTaskModel.PatentRight;
|
|
|
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
|
|
|
+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.stabilityReport.AllCompareGroupVO;
|
|
|
+import cn.cslg.pas.common.vo.stabilityReport.AllCompareRecordVO;
|
|
|
+import cn.cslg.pas.common.vo.stabilityReport.CompareRecordVO;
|
|
|
+import cn.cslg.pas.domain.business.*;
|
|
|
+import cn.cslg.pas.exception.XiaoShiException;
|
|
|
+import cn.cslg.pas.service.business.CompareLiteratureService;
|
|
|
+import cn.cslg.pas.service.business.FeatureService;
|
|
|
+import cn.cslg.pas.service.business.ProofGroupService;
|
|
|
+import cn.cslg.pas.service.business.ReportProjectService;
|
|
|
+import cn.cslg.pas.service.business.invalidReport.AssoGroupFeatureService;
|
|
|
+import cn.cslg.pas.service.business.invalidReport.AssoReasonLiteratureService;
|
|
|
+import cn.cslg.pas.service.business.invalidReport.EvidenceReasonService;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import org.apache.commons.math3.ml.neuralnet.FeatureInitializerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class CompareRecordService {
|
|
|
+ @Autowired
|
|
|
+ private AssoGroupReasonService assoGroupReasonService;
|
|
|
+ @Autowired
|
|
|
+ private AssoReasonLiteratureService assoReasonLiteratureService;
|
|
|
+ @Autowired
|
|
|
+ private EvidenceReasonService evidenceReasonService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private FeatureService featureService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ReportProjectService reportProjectService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CompareLiteratureService compareLiteratureService;
|
|
|
+ @Autowired
|
|
|
+ private ProofGroupService proofGroupService;
|
|
|
+
|
|
|
+ public Integer addCompareRecord(AddCompareRecordDTO addCompareRecordDTO) {
|
|
|
+ List<AddCompareRecordDTO.AssoFeature> assoFeatureList = addCompareRecordDTO.getAssoFeatureList();
|
|
|
+ Integer id = addCompareRecordDTO.getId();
|
|
|
+ //添加对比记录
|
|
|
+ EvidenceReason evidenceReason = new EvidenceReason();
|
|
|
+ if (id != null) {
|
|
|
+ evidenceReason = evidenceReasonService.getById(id);
|
|
|
+ evidenceReason.setEvidenceText(addCompareRecordDTO.getEvidenceText());
|
|
|
+ evidenceReason.setDescription(addCompareRecordDTO.getCommon());
|
|
|
+ evidenceReason.setFileGuid(addCompareRecordDTO.getFileGuid());
|
|
|
+ evidenceReason.updateById();
|
|
|
+ LambdaQueryWrapper<AssoReasonLiterature> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(AssoReasonLiterature::getReasonId, id);
|
|
|
+ assoReasonLiteratureService.remove(queryWrapper);
|
|
|
+ LambdaQueryWrapper<AssoGroupReason> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(AssoGroupReason::getReasonId, id);
|
|
|
+ assoGroupReasonService.remove(queryWrapper1);
|
|
|
+ } else {
|
|
|
+ evidenceReason.setEvidenceText(addCompareRecordDTO.getEvidenceText());
|
|
|
+ evidenceReason.setDescription(addCompareRecordDTO.getCommon());
|
|
|
+ evidenceReason.setFileGuid(addCompareRecordDTO.getFileGuid());
|
|
|
+ evidenceReason.insert();
|
|
|
+ }
|
|
|
+ AssoReasonLiterature assoReasonLiterature = new AssoReasonLiterature();
|
|
|
+ assoReasonLiterature.setReasonId(evidenceReason.getId());
|
|
|
+ assoReasonLiterature.setLiteratureId(addCompareRecordDTO.getLiteratureId());
|
|
|
+ assoReasonLiterature.setMarkColor(addCompareRecordDTO.getMarkColor());
|
|
|
+ assoReasonLiterature.setMarkType(addCompareRecordDTO.getMarkType());
|
|
|
+ assoReasonLiterature.setPosition(addCompareRecordDTO.getPosition());
|
|
|
+ assoReasonLiterature.setFieldName(addCompareRecordDTO.getFieldName());
|
|
|
+ assoReasonLiterature.insert();
|
|
|
+
|
|
|
+ if (assoFeatureList != null && assoFeatureList.size() != 0) {
|
|
|
+ for (AddCompareRecordDTO.AssoFeature item : assoFeatureList) {
|
|
|
+ //根据特征id 查询证据组合和特征关联
|
|
|
+ AssoGroupReason assoGroupReason = new AssoGroupReason();
|
|
|
+ assoGroupReason.setFeatureId(item.getFeatureId());
|
|
|
+ assoGroupReason.setConclusion(item.getConclusion());
|
|
|
+ assoGroupReason.setReasonId(evidenceReason.getId());
|
|
|
+ assoGroupReason.insert();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return id;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量删除证据组合
|
|
|
+ *
|
|
|
+ * @param ids
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean removeCompareRecord(List<Integer> ids) {
|
|
|
+ if (ids == null || ids.size() == 0) {
|
|
|
+ throw new XiaoShiException("请至少选择一个记录");
|
|
|
+ }
|
|
|
+ //根据对比记录id
|
|
|
+ LambdaQueryWrapper<AssoGroupReason> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(AssoGroupReason::getReasonId, ids);
|
|
|
+ queryWrapper.isNotNull(AssoGroupReason::getGroupId);
|
|
|
+ List<AssoGroupReason> assoGroupReasons = assoGroupReasonService.list(queryWrapper);
|
|
|
+ if (assoGroupReasons.size() != 0) {
|
|
|
+ List<Integer> reasonIds = assoGroupReasons.stream().map(AssoGroupReason::getReasonId).collect(Collectors.toList());
|
|
|
+ throw new XiaoShiException("对比记录与方案有关联,请先删除方案");
|
|
|
+
|
|
|
+ }
|
|
|
+ //删除证据组合关联
|
|
|
+ LambdaQueryWrapper<AssoGroupReason> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(AssoGroupReason::getReasonId, ids);
|
|
|
+ assoGroupReasonService.remove(queryWrapper);
|
|
|
+
|
|
|
+ //删除和对比文献关联
|
|
|
+ LambdaQueryWrapper<AssoReasonLiterature> queryWrapper2 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper2.in(AssoReasonLiterature::getReasonId, ids);
|
|
|
+ assoReasonLiteratureService.remove(queryWrapper2);
|
|
|
+ //删除无效理由
|
|
|
+ evidenceReasonService.removeBatchByIds(ids);
|
|
|
+ return true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询对比记录
|
|
|
+ * lrj
|
|
|
+ *
|
|
|
+ * @param queryCompareRecordDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<CompareRecordVO> queryCompareRecord(QueryCompareRecordDTO queryCompareRecordDTO) {
|
|
|
+ List<CompareRecordVO> recordVOS = new ArrayList<>();
|
|
|
+ //根据对比文献id 查询无效理由和特征
|
|
|
+ Integer literatureId = queryCompareRecordDTO.getLiteratureId();
|
|
|
+ LambdaQueryWrapper<AssoReasonLiterature> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(AssoReasonLiterature::getLiteratureId, literatureId);
|
|
|
+ List<AssoReasonLiterature> assoReasonLiteratures = assoReasonLiteratureService.list(queryWrapper);
|
|
|
+
|
|
|
+ for (AssoReasonLiterature assoReasonLiterature : assoReasonLiteratures) {
|
|
|
+ Integer reasonId = assoReasonLiterature.getReasonId();
|
|
|
+ CompareRecordVO compareRecordVO = new CompareRecordVO();
|
|
|
+ compareRecordVO.setFieldName(assoReasonLiterature.getFieldName());
|
|
|
+ compareRecordVO.setMarkColor(assoReasonLiterature.getMarkColor());
|
|
|
+ compareRecordVO.setMarkType(assoReasonLiterature.getMarkType());
|
|
|
+ compareRecordVO.setPosition(assoReasonLiterature.getPosition());
|
|
|
+ compareRecordVO.setLiteratureId(literatureId);
|
|
|
+ //根据对比记录id查询对比记录
|
|
|
+ EvidenceReason evidenceReason = evidenceReasonService.getById(reasonId);
|
|
|
+ compareRecordVO.setEvidenceText(evidenceReason.getEvidenceText());
|
|
|
+ compareRecordVO.setCommon(evidenceReason.getDescription());
|
|
|
+ compareRecordVO.setId(evidenceReason.getId());
|
|
|
+ compareRecordVO.setFileGuid(evidenceReason.getFileGuid());
|
|
|
+ //根据对比记录id查询特征
|
|
|
+ LambdaQueryWrapper<AssoGroupReason> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(AssoGroupReason::getReasonId, reasonId)
|
|
|
+ .isNull(AssoGroupReason::getGroupId);
|
|
|
+ List<AssoGroupReason> assoGroupReasons = assoGroupReasonService.list(queryWrapper1);
|
|
|
+ List<CompareRecordVO.AssoFeature> assoFeatureList = new ArrayList<>();
|
|
|
+ assoGroupReasons.forEach(item -> {
|
|
|
+ CompareRecordVO.AssoFeature assoFeature = new CompareRecordVO.AssoFeature();
|
|
|
+ assoFeature.setFeatureId(item.getFeatureId());
|
|
|
+ assoFeature.setConclusion(item.getConclusion());
|
|
|
+ assoFeatureList.add(assoFeature);
|
|
|
+ });
|
|
|
+ compareRecordVO.setAssoFeatureList(assoFeatureList);
|
|
|
+ recordVOS.add(compareRecordVO);
|
|
|
+ }
|
|
|
+ return recordVOS;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public List<AllCompareRecordVO> queryAllCompareRecord(QueryAllCompareRecordDTO dto) {
|
|
|
+ List<AllCompareRecordVO> vos = new ArrayList<>();
|
|
|
+ Integer projectId = dto.getProjectId();
|
|
|
+
|
|
|
+ //查询标的专利号
|
|
|
+ LambdaQueryWrapper<ReportProject> reportWrapper = new LambdaQueryWrapper<>();
|
|
|
+ reportWrapper.eq(ReportProject::getProjectId, projectId);
|
|
|
+ ReportProject reportProject = reportProjectService.getOne(reportWrapper, false);
|
|
|
+ if (reportProject == null) {
|
|
|
+ throw new XiaoShiException("未查到报告");
|
|
|
+ }
|
|
|
+ String patentNo = reportProject.getSignPatentNo();
|
|
|
+
|
|
|
+
|
|
|
+ //获得特征
|
|
|
+ SplitVO splitVO = new SplitVO();
|
|
|
+ splitVO.setProjectId(dto.getProjectId());
|
|
|
+ splitVO.setPatentNo(patentNo);
|
|
|
+ List<Feature> features = featureService.getSplitedFeature(splitVO);
|
|
|
+ List<Integer> ids = features.stream().map(Feature::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //查询拆分下的权要
|
|
|
+ List<RePatentClaim> patentRights = new ArrayList<>();
|
|
|
+ try {
|
|
|
+ patentRights = featureService.getRightListByNo(patentNo);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new XiaoShiException("获得权要失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ //根据特征id 查询对比记录
|
|
|
+ LambdaQueryWrapper<AssoGroupReason> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(AssoGroupReason::getFeatureId, ids)
|
|
|
+ .isNull(AssoGroupReason::getGroupId);
|
|
|
+ List<AssoGroupReason> assoGroupReasons = assoGroupReasonService.list(queryWrapper);
|
|
|
+
|
|
|
+ //遍历特征获得内容
|
|
|
+ for (Feature feature : features) {
|
|
|
+
|
|
|
+ // 装载特征信息
|
|
|
+ AllCompareRecordVO allCompareRecordVO = new AllCompareRecordVO();
|
|
|
+ allCompareRecordVO.setFeatureContent(feature.getContent());
|
|
|
+ allCompareRecordVO.setFeatureSysOrder(feature.getSysOrder());
|
|
|
+ allCompareRecordVO.setFeatureName("特征" + feature.getSysOrder());
|
|
|
+ allCompareRecordVO.setFeatureId(feature.getId());
|
|
|
+
|
|
|
+ //装载权要信息
|
|
|
+ RePatentClaim rePatentClaim = patentRights.stream().filter(item -> item.getSort().equals(feature.getRightSort())).findFirst().orElse(null);
|
|
|
+ if (rePatentClaim != null) {
|
|
|
+ allCompareRecordVO.setRightName(rePatentClaim.getRightName());
|
|
|
+ allCompareRecordVO.setRightContent(rePatentClaim.getContent());
|
|
|
+ allCompareRecordVO.setRightSort(rePatentClaim.getSort());
|
|
|
+ allCompareRecordVO.setRightType(rePatentClaim.getType());
|
|
|
+ }
|
|
|
+
|
|
|
+ //装载无效理由
|
|
|
+ List<AssoGroupReason> assoGroupReasons1 = assoGroupReasons.stream()
|
|
|
+ .filter(item -> item.getFeatureId().equals(feature.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<Integer> reasonIds = assoGroupReasons1.stream().map(AssoGroupReason::getReasonId).collect(Collectors.toList());
|
|
|
+ //根据无效理由id 查询无效理由
|
|
|
+ LambdaQueryWrapper<EvidenceReason> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.in(EvidenceReason::getId, reasonIds);
|
|
|
+ List<EvidenceReason> evidenceReasons = evidenceReasonService.list(queryWrapper1);
|
|
|
+
|
|
|
+ //根据无效理由id 查询无效理由和文献关联
|
|
|
+ LambdaQueryWrapper<AssoReasonLiterature> queryWrapper2 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper2.in(AssoReasonLiterature::getReasonId, reasonIds);
|
|
|
+ List<AssoReasonLiterature> assoReasonLiteratures = assoReasonLiteratureService.list(queryWrapper2);
|
|
|
+ //根据文献id查询文献列表
|
|
|
+ List<Integer> literatureIds = assoReasonLiteratures.stream().map(AssoReasonLiterature::getLiteratureId).collect(Collectors.toList());
|
|
|
+ List<CompareLiteratureVO> compareLiteratureVOS = compareLiteratureService.getByIds(literatureIds);
|
|
|
+
|
|
|
+ List<AllCompareRecordVO.EvidenceReason> evidenceReasonList = new ArrayList<>();
|
|
|
+
|
|
|
+ //装载无效理由
|
|
|
+ evidenceReasons.forEach(item -> {
|
|
|
+ AllCompareRecordVO.EvidenceReason evidenceReason = new AllCompareRecordVO.EvidenceReason();
|
|
|
+ evidenceReason.setEvidenceText(item.getEvidenceText());
|
|
|
+ evidenceReason.setCommon(item.getDescription());
|
|
|
+ //根据无效理由id 查询无效理由和文献关联
|
|
|
+ AssoReasonLiterature assoReasonLiteratureTmp = assoReasonLiteratures.stream()
|
|
|
+ .filter(t -> t.getReasonId().equals(item.getId())).findFirst().orElse(null);
|
|
|
+ //装载划词信息
|
|
|
+ if (assoReasonLiteratureTmp != null) {
|
|
|
+ evidenceReason.setLiteratureId(assoReasonLiteratureTmp.getLiteratureId());
|
|
|
+ evidenceReason.setFieldName(assoReasonLiteratureTmp.getFieldName());
|
|
|
+ evidenceReason.setPosition(assoReasonLiteratureTmp.getPosition());
|
|
|
+ //装载文献信息
|
|
|
+ CompareLiteratureVO compareLiteratureVO = compareLiteratureVOS.stream()
|
|
|
+ .filter(t -> t.getId().equals(assoReasonLiteratureTmp.getLiteratureId()))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ if (compareLiteratureVO != null) {
|
|
|
+ evidenceReason.setLiteratureNo(compareLiteratureVO.getLiteratureNo());
|
|
|
+ evidenceReason.setLiteratureName(compareLiteratureVO.getName());
|
|
|
+ evidenceReason.setLiteratureSysOrder(compareLiteratureVO.getSysOrder());
|
|
|
+ evidenceReason.setLiteratureType(compareLiteratureVO.getType());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ evidenceReasonList.add(evidenceReason);
|
|
|
+ });
|
|
|
+ allCompareRecordVO.setEvidenceReasons(evidenceReasonList);
|
|
|
+ vos.add(allCompareRecordVO);
|
|
|
+ }
|
|
|
+ return vos;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<AllCompareGroupVO> getCompareGroups(QueryAllCompareGroupDTO queryCompareRecordDTO) {
|
|
|
+ List<AllCompareGroupVO> allCompareGroupVOS = new ArrayList<>();
|
|
|
+ Integer projectId = queryCompareRecordDTO.getProjectId();
|
|
|
+ //根据ProjectId查询对比组合
|
|
|
+ LambdaQueryWrapper<ProofGroup> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(ProofGroup::getProjectId, projectId);
|
|
|
+ List<ProofGroup> proofGroups = proofGroupService.list(queryWrapper);
|
|
|
+
|
|
|
+ //查询标的专利号
|
|
|
+ LambdaQueryWrapper<ReportProject> reportWrapper = new LambdaQueryWrapper<>();
|
|
|
+ reportWrapper.eq(ReportProject::getProjectId, projectId);
|
|
|
+ ReportProject reportProject = reportProjectService.getOne(reportWrapper, false);
|
|
|
+ if (reportProject == null) {
|
|
|
+ throw new XiaoShiException("未查到报告");
|
|
|
+ }
|
|
|
+ String patentNo = reportProject.getSignPatentNo();
|
|
|
+
|
|
|
+ //查询拆分下的权要
|
|
|
+ List<RePatentClaim> patentRights = new ArrayList<>();
|
|
|
+ try {
|
|
|
+ patentRights = featureService.getRightListByNo(patentNo);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new XiaoShiException("获得权要失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ //获得特征
|
|
|
+ SplitVO splitVO = new SplitVO();
|
|
|
+ splitVO.setProjectId(projectId);
|
|
|
+ List<Feature> features = featureService.getSplitedFeature(splitVO);
|
|
|
+
|
|
|
+ //装载证据组合
|
|
|
+ for (ProofGroup proofGroup : proofGroups) {
|
|
|
+ AllCompareGroupVO allCompareGroupVO = new AllCompareGroupVO();
|
|
|
+ Integer id = proofGroup.getId();
|
|
|
+ Integer claimSort = proofGroup.getClaimSort();
|
|
|
+ allCompareGroupVO.setGroupId(id);
|
|
|
+ allCompareGroupVO.setCommon(proofGroup.getCommon1());
|
|
|
+ //获得权要并装载
|
|
|
+ RePatentClaim rePatentClaim = patentRights.stream().filter(item -> item.getSort().equals(claimSort)).findFirst().orElse(null);
|
|
|
+ if (rePatentClaim != null) {
|
|
|
+ allCompareGroupVO.setRightName(rePatentClaim.getRightName());
|
|
|
+ allCompareGroupVO.setRightSort(rePatentClaim.getSort());
|
|
|
+ allCompareGroupVO.setRightContent(rePatentClaim.getContent());
|
|
|
+ }
|
|
|
+ //根据组合id 查询对比记录
|
|
|
+ LambdaQueryWrapper<AssoGroupReason> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(AssoGroupReason::getGroupId, id);
|
|
|
+ List<AssoGroupReason> assoGroupReasons = assoGroupReasonService.list(queryWrapper1);
|
|
|
+ //获得特征
|
|
|
+ List<Feature> featuresList = features.stream()
|
|
|
+ .filter(item -> item.getRightSort().equals(claimSort)).collect(Collectors.toList());
|
|
|
+ List<AllCompareGroupVO.FeatureMessage> featureMessages = new ArrayList<>();
|
|
|
+ for (Feature feature : featuresList) {
|
|
|
+ AllCompareGroupVO.FeatureMessage featureMessage = new AllCompareGroupVO.FeatureMessage();
|
|
|
+ featureMessage.setFeatureName("特征" + feature.getSysOrder());
|
|
|
+ featureMessage.setSysOrder(feature.getSysOrder());
|
|
|
+ featureMessage.setContent(feature.getContent());
|
|
|
+ List<AllCompareGroupVO.EvidenceReason> evidenceReasons = new ArrayList<>();
|
|
|
+ //根据特征id查询无效理由
|
|
|
+ List<AssoGroupReason> assoGroupReasonList = assoGroupReasons.stream()
|
|
|
+ .filter(item -> item.getFeatureId().equals(feature.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ //获得无效理由id
|
|
|
+ if (assoGroupReasonList.size() != 0) {
|
|
|
+ List<Integer> reasonIds = assoGroupReasonList.stream().map(AssoGroupReason::getReasonId).collect(Collectors.toList());
|
|
|
+ //根据无效理由id 查询无效理由
|
|
|
+ LambdaQueryWrapper<EvidenceReason> queryWrapper2 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper2.in(EvidenceReason::getId, reasonIds);
|
|
|
+ List<EvidenceReason> evidenceReasonList = evidenceReasonService.list(queryWrapper2);
|
|
|
+
|
|
|
+ //根据无效理由id 查询无效理由和文献关联
|
|
|
+ LambdaQueryWrapper<AssoReasonLiterature> queryWrapper3 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper3.in(AssoReasonLiterature::getReasonId, reasonIds);
|
|
|
+ List<AssoReasonLiterature> assoReasonLiteratures = assoReasonLiteratureService.list(queryWrapper3);
|
|
|
+ //根据文献id查询文献列表
|
|
|
+ List<Integer> literatureIds = assoReasonLiteratures.stream().map(AssoReasonLiterature::getLiteratureId).collect(Collectors.toList());
|
|
|
+ List<CompareLiteratureVO> compareLiteratureVOS = compareLiteratureService.getByIds(literatureIds);
|
|
|
+
|
|
|
+
|
|
|
+ //装载无效理由
|
|
|
+ evidenceReasonList.forEach(item -> {
|
|
|
+ AllCompareGroupVO.EvidenceReason evidenceReason = new AllCompareGroupVO.EvidenceReason();
|
|
|
+ evidenceReason.setEvidenceText(item.getEvidenceText());
|
|
|
+ evidenceReason.setCommon(item.getDescription());
|
|
|
+ //根据无效理由id 查询无效理由和文献关联
|
|
|
+ AssoReasonLiterature assoReasonLiteratureTmp = assoReasonLiteratures.stream()
|
|
|
+ .filter(t -> t.getReasonId().equals(item.getId())).findFirst().orElse(null);
|
|
|
+ //装载划词信息
|
|
|
+ if (assoReasonLiteratureTmp != null) {
|
|
|
+ evidenceReason.setLiteratureId(assoReasonLiteratureTmp.getLiteratureId());
|
|
|
+ evidenceReason.setFieldName(assoReasonLiteratureTmp.getFieldName());
|
|
|
+ evidenceReason.setPosition(assoReasonLiteratureTmp.getPosition());
|
|
|
+ //装载文献信息
|
|
|
+ CompareLiteratureVO compareLiteratureVO = compareLiteratureVOS.stream()
|
|
|
+ .filter(t -> t.getId().equals(assoReasonLiteratureTmp.getLiteratureId()))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ if (compareLiteratureVO != null) {
|
|
|
+ evidenceReason.setLiteratureNo(compareLiteratureVO.getLiteratureNo());
|
|
|
+ evidenceReason.setLiteratureName(compareLiteratureVO.getName());
|
|
|
+ evidenceReason.setLiteratureSysOrder(compareLiteratureVO.getSysOrder());
|
|
|
+ evidenceReason.setLiteratureType(compareLiteratureVO.getType());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ evidenceReasons.add(evidenceReason);
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+ featureMessage.setEvidenceReasons(evidenceReasons);
|
|
|
+ allCompareGroupVO.setFeatureMessages(featureMessages);
|
|
|
+ }
|
|
|
+ allCompareGroupVOS.add(allCompareGroupVO);
|
|
|
+ }
|
|
|
+ return allCompareGroupVOS;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量删除证据组合
|
|
|
+ *
|
|
|
+ * @param ids
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean removeCompareGroups(List<Integer> ids) {
|
|
|
+ if (ids == null || ids.size() == 0) {
|
|
|
+ throw new XiaoShiException("请至少选择一个方案");
|
|
|
+ }
|
|
|
+ //删除证据组合关联
|
|
|
+ LambdaQueryWrapper<AssoGroupReason> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(AssoGroupReason::getGroupId, ids);
|
|
|
+ assoGroupReasonService.remove(queryWrapper);
|
|
|
+ //删除证据组合
|
|
|
+ proofGroupService.removeBatchByIds(ids);
|
|
|
+ return true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获得已对比的文献
|
|
|
+ */
|
|
|
+ public List<CompareLiteratureVO> getComparedLiteratures(Integer projectId) {
|
|
|
+
|
|
|
+ List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
|
|
|
+ //查询标的专利号
|
|
|
+ LambdaQueryWrapper<ReportProject> reportWrapper = new LambdaQueryWrapper<>();
|
|
|
+ reportWrapper.eq(ReportProject::getProjectId, projectId);
|
|
|
+ ReportProject reportProject = reportProjectService.getOne(reportWrapper, false);
|
|
|
+ if (reportProject == null) {
|
|
|
+ throw new XiaoShiException("未查到报告");
|
|
|
+ }
|
|
|
+
|
|
|
+ //获得特征
|
|
|
+ SplitVO splitVO = new SplitVO();
|
|
|
+ splitVO.setProjectId(projectId);
|
|
|
+ List<Feature> features = featureService.getSplitedFeature(splitVO);
|
|
|
+ List<Integer> ids = features.stream().map(Feature::getId).collect(Collectors.toList());
|
|
|
+ LambdaQueryWrapper<AssoGroupReason> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(AssoGroupReason::getFeatureId, ids);
|
|
|
+ List<AssoGroupReason> assoGroupReasons = assoGroupReasonService.list(queryWrapper);
|
|
|
+ if (assoGroupReasons != null) {
|
|
|
+ List<Integer> reasonIds = assoGroupReasons.stream().map(AssoGroupReason::getReasonId).collect(Collectors.toList());
|
|
|
+ //根据reasonIds查询对比文献id
|
|
|
+ LambdaQueryWrapper<AssoReasonLiterature> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.in(AssoReasonLiterature::getReasonId, reasonIds);
|
|
|
+ List<AssoReasonLiterature> assoReasonLiteratures = assoReasonLiteratureService.list(queryWrapper1);
|
|
|
+ if (assoReasonLiteratures.size() != 0) {
|
|
|
+ List<Integer> literatureIds = assoReasonLiteratures.stream().map(AssoReasonLiterature::getLiteratureId).collect(Collectors.toList());
|
|
|
+ compareLiteratureVOS = compareLiteratureService.getByIds(literatureIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return compareLiteratureVOS;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|