|
@@ -1,12 +1,17 @@
|
|
package cn.cslg.pas.service.business;
|
|
package cn.cslg.pas.service.business;
|
|
|
|
|
|
import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
|
|
import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
|
|
|
|
+import cn.cslg.pas.common.dto.invalidDTO.UpdateBatchLiteratureDTO;
|
|
|
|
+import cn.cslg.pas.common.dto.invalidDTO.UpdateBatchLiteraturesDTO;
|
|
|
|
+import cn.cslg.pas.common.dto.invalidDTO.UpdateLiteratureOrderDTO;
|
|
import cn.cslg.pas.common.model.cronModel.PersonnelVO;
|
|
import cn.cslg.pas.common.model.cronModel.PersonnelVO;
|
|
import cn.cslg.pas.common.model.cronModel.Records;
|
|
import cn.cslg.pas.common.model.cronModel.Records;
|
|
import cn.cslg.pas.common.model.cronModel.SystemFile;
|
|
import cn.cslg.pas.common.model.cronModel.SystemFile;
|
|
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.vo.CompareLiteratureVO;
|
|
import cn.cslg.pas.common.vo.CompareLiteratureVO;
|
|
|
|
+import cn.cslg.pas.common.vo.PatentWithIdVO;
|
|
|
|
+import cn.cslg.pas.common.vo.WebSocketMessageVO;
|
|
import cn.cslg.pas.domain.business.CompareLiterature;
|
|
import cn.cslg.pas.domain.business.CompareLiterature;
|
|
import cn.cslg.pas.common.dto.CompareLiteratureDTO;
|
|
import cn.cslg.pas.common.dto.CompareLiteratureDTO;
|
|
import cn.cslg.pas.domain.business.ReportProject;
|
|
import cn.cslg.pas.domain.business.ReportProject;
|
|
@@ -17,18 +22,22 @@ import cn.cslg.pas.mapper.CompareLiteratureMapper;
|
|
import cn.cslg.pas.service.business.es.EsPatentService;
|
|
import cn.cslg.pas.service.business.es.EsPatentService;
|
|
import cn.cslg.pas.service.business.es.EsService;
|
|
import cn.cslg.pas.service.business.es.EsService;
|
|
import cn.cslg.pas.service.common.FileManagerService;
|
|
import cn.cslg.pas.service.common.FileManagerService;
|
|
|
|
+import cn.cslg.pas.service.common.MessageService;
|
|
|
|
+import cn.cslg.pas.service.importPatent.ImportSinglePatentService;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
-import java.util.concurrent.Callable;
|
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -53,28 +62,64 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
|
|
@Autowired
|
|
@Autowired
|
|
private FileManagerService fileManagerService;
|
|
private FileManagerService fileManagerService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ImportSinglePatentService importSinglePatentService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private EsService esService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private MessageService messageService;
|
|
|
|
+
|
|
//添加专利对比文献
|
|
//添加专利对比文献
|
|
- public Integer addPatentCompareLiterature(String patentNo, Integer projectId, String createId) {
|
|
|
|
|
|
+ public Integer addPatentCompareLiterature(Patent patent, Integer projectId, String createId) {
|
|
Integer id = null;
|
|
Integer id = null;
|
|
|
|
+ id = this.getHaveAddIdByNos(projectId, patent.getPatentNo());
|
|
|
|
+
|
|
//根据专利号和报告id查询是否已经保存
|
|
//根据专利号和报告id查询是否已经保存
|
|
- LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- queryWrapper.eq(CompareLiterature::getLiteratureNo, patentNo);
|
|
|
|
- queryWrapper.eq(CompareLiterature::getProjectId, projectId);
|
|
|
|
- List<CompareLiterature> compareLiteratures = this.list(queryWrapper);
|
|
|
|
- if (compareLiteratures.size() <= 0) {
|
|
|
|
|
|
+ if (id == null) {
|
|
CompareLiterature compareLiterature = new CompareLiterature();
|
|
CompareLiterature compareLiterature = new CompareLiterature();
|
|
compareLiterature.setCreateId(createId);
|
|
compareLiterature.setCreateId(createId);
|
|
|
|
+ //报告id
|
|
compareLiterature.setProjectId(projectId);
|
|
compareLiterature.setProjectId(projectId);
|
|
- compareLiterature.setLiteratureNo(patentNo);
|
|
|
|
- compareLiterature.setName(patentNo);
|
|
|
|
- compareLiterature.insert();
|
|
|
|
|
|
+ //文档guid
|
|
|
|
+ compareLiterature.setLiteratureNo(patent.getPatentNo());
|
|
|
|
+ //文档名称
|
|
|
|
+ String name = patent.getPatentNo();
|
|
|
|
+
|
|
|
|
+ //作者
|
|
|
|
+ String authorName = "";
|
|
|
|
+ Integer order = 1;
|
|
|
|
+ //根据报告id获得最大序号
|
|
|
|
+ LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper.eq(CompareLiterature::getProjectId, projectId);
|
|
|
|
+ CompareLiterature compareLiteratureBig = this.getOne(queryWrapper, false);
|
|
|
|
+ if (compareLiteratureBig != null && compareLiteratureBig.getSysOrder() != null) {
|
|
|
|
+ order = compareLiteratureBig.getSysOrder() + 1;
|
|
|
|
+ }
|
|
|
|
+ if (patent != null) {
|
|
|
|
+ if (patent.getTitle() != null && patent.getTitle().size() != 0) {
|
|
|
|
+ name += "(" + patent.getTitle().get(0).getTextContent();
|
|
|
|
+ }
|
|
|
|
+ compareLiterature.setAppDate(patent.getAppDate());
|
|
|
|
+ compareLiterature.setPublicDate(patent.getPublicDate());
|
|
|
|
+ if (patent.getRightHolder() != null && patent.getRightHolder().size() != 0) {
|
|
|
|
+ authorName = patent.getRightHolder().get(0).getName();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ compareLiterature.setName(name);
|
|
|
|
+ //描述
|
|
|
|
+ //作者
|
|
|
|
+ compareLiterature.setAuthorName(authorName);
|
|
|
|
+ //类型
|
|
|
|
+ compareLiterature.setType(1);
|
|
|
|
+ //装载排序
|
|
|
|
+ compareLiterature.setSysOrder(order);
|
|
return compareLiterature.getId();
|
|
return compareLiterature.getId();
|
|
- } else {
|
|
|
|
- return compareLiteratures.get(0).getId();
|
|
|
|
}
|
|
}
|
|
|
|
+ return id;
|
|
}
|
|
}
|
|
|
|
|
|
- //添加对比文献
|
|
|
|
|
|
+ //添加非对比文献
|
|
public Integer addNotPatent(CompareLiteratureDTO compareLiteratureDTO) {
|
|
public Integer addNotPatent(CompareLiteratureDTO compareLiteratureDTO) {
|
|
PersonnelVO personnelVO = new PersonnelVO();
|
|
PersonnelVO personnelVO = new PersonnelVO();
|
|
Integer projectId = compareLiteratureDTO.getProjectId();
|
|
Integer projectId = compareLiteratureDTO.getProjectId();
|
|
@@ -85,7 +130,7 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
throw new UnLoginException("未登录");
|
|
throw new UnLoginException("未登录");
|
|
}
|
|
}
|
|
- Integer order = 0;
|
|
|
|
|
|
+ Integer order = 1;
|
|
//根据报告id获得最大序号
|
|
//根据报告id获得最大序号
|
|
LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
|
|
queryWrapper.eq(CompareLiterature::getProjectId, projectId);
|
|
queryWrapper.eq(CompareLiterature::getProjectId, projectId);
|
|
@@ -119,11 +164,21 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
|
|
//查询对比文献
|
|
//查询对比文献
|
|
public Records queryCompareLiterature(LiteratureQueryDTO literatureQueryDTO) {
|
|
public Records queryCompareLiterature(LiteratureQueryDTO literatureQueryDTO) {
|
|
Integer projectId = literatureQueryDTO.getProjectId();
|
|
Integer projectId = literatureQueryDTO.getProjectId();
|
|
|
|
+ Records records = new Records();
|
|
//根据对比projectId 查询对比文献
|
|
//根据对比projectId 查询对比文献
|
|
LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
|
|
queryWrapper.eq(CompareLiterature::getProjectId, projectId);
|
|
queryWrapper.eq(CompareLiterature::getProjectId, projectId);
|
|
- Page<CompareLiterature> page = this.page(new Page<>(literatureQueryDTO.getCurrent(), literatureQueryDTO.getSize()), queryWrapper);
|
|
|
|
- List<CompareLiterature> compareLiteratures = page.getRecords();
|
|
|
|
|
|
+ List<CompareLiterature> compareLiteratures = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ if (literatureQueryDTO.getCurrent() != null && literatureQueryDTO.getSize() != null) {
|
|
|
|
+ Page<CompareLiterature> page = this.page(new Page<>(literatureQueryDTO.getCurrent(), literatureQueryDTO.getSize()), queryWrapper);
|
|
|
|
+ compareLiteratures = page.getRecords();
|
|
|
|
+ records.setTotal(page.getTotal());
|
|
|
|
+ records.setSize(Long.parseLong(literatureQueryDTO.getSize().toString()));
|
|
|
|
+ records.setCurrent(Long.parseLong(literatureQueryDTO.getCurrent().toString()));
|
|
|
|
+ } else {
|
|
|
|
+ compareLiteratures = this.list(queryWrapper);
|
|
|
|
+ }
|
|
|
|
|
|
List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
|
|
List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
|
|
|
|
|
|
@@ -134,21 +189,22 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
|
|
|
|
|
|
compareLiteratureVOS = this.loadCompareLiterature(compareLiteratures, reportProject);
|
|
compareLiteratureVOS = this.loadCompareLiterature(compareLiteratures, reportProject);
|
|
//装载不同的类型的对比文献
|
|
//装载不同的类型的对比文献
|
|
- Records records = new Records();
|
|
|
|
|
|
+
|
|
records.setData(compareLiteratureVOS);
|
|
records.setData(compareLiteratureVOS);
|
|
- records.setTotal(page.getTotal());
|
|
|
|
- records.setSize(Long.parseLong(literatureQueryDTO.getSize().toString()));
|
|
|
|
- records.setCurrent(Long.parseLong(literatureQueryDTO.getCurrent().toString()));
|
|
|
|
|
|
+
|
|
return records;
|
|
return records;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- private List<CompareLiteratureVO> loadCompareLiterature(List<CompareLiterature> compareLiteratures, ReportProject reportProject) {
|
|
|
|
|
|
+ public List<CompareLiteratureVO> loadCompareLiterature(List<CompareLiterature> compareLiteratures, ReportProject reportProject) {
|
|
String signPatentNo = reportProject.getSignPatentNo();
|
|
String signPatentNo = reportProject.getSignPatentNo();
|
|
|
|
+
|
|
//查询标的专利号
|
|
//查询标的专利号
|
|
List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
|
|
List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
|
|
|
|
+
|
|
//非专利文献列表
|
|
//非专利文献列表
|
|
List<String> guids = compareLiteratures.stream().filter(item -> item.getType().equals(1)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
|
|
List<String> guids = compareLiteratures.stream().filter(item -> item.getType().equals(1)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
|
|
|
|
+
|
|
//专利文献列表
|
|
//专利文献列表
|
|
List<String> patentNos = compareLiteratures.stream().filter(item -> item.getType().equals(0)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
|
|
List<String> patentNos = compareLiteratures.stream().filter(item -> item.getType().equals(0)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
|
|
List<Patent> patentList = new ArrayList<>();
|
|
List<Patent> patentList = new ArrayList<>();
|
|
@@ -167,12 +223,13 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
|
|
|
|
|
|
//获得标的专利信息
|
|
//获得标的专利信息
|
|
Patent signPatent = patentList.stream()
|
|
Patent signPatent = patentList.stream()
|
|
- .filter(item -> item.getAppNo().equals(signPatentNo)
|
|
|
|
- || item.getPublicNo().equals(signPatentNo) ||
|
|
|
|
- item.getGrantNo().equals(signPatentNo)).findFirst().orElse(null);
|
|
|
|
|
|
+ .filter(item -> signPatentNo.equals(item.getAppNo())
|
|
|
|
+ || signPatentNo.equals(item.getPublicNo()) ||
|
|
|
|
+ signPatentNo.equals(item.getGrantNo())).findFirst().orElse(null);
|
|
|
|
|
|
//查询文件
|
|
//查询文件
|
|
List<SystemFile> systemFiles = new ArrayList<>();
|
|
List<SystemFile> systemFiles = new ArrayList<>();
|
|
|
|
+
|
|
//查询文件
|
|
//查询文件
|
|
if (guids.size() != 0) {
|
|
if (guids.size() != 0) {
|
|
try {
|
|
try {
|
|
@@ -189,17 +246,15 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
|
|
String literatureNo = compareLiterature.getLiteratureNo();
|
|
String literatureNo = compareLiterature.getLiteratureNo();
|
|
Date publicDate = compareLiterature.getPublicDate();
|
|
Date publicDate = compareLiterature.getPublicDate();
|
|
CompareLiteratureVO compareLiteratureVO = new CompareLiteratureVO();
|
|
CompareLiteratureVO compareLiteratureVO = new CompareLiteratureVO();
|
|
- compareLiteratureVO.setId(id);
|
|
|
|
- compareLiteratureVO.setName(compareLiterature.getName());
|
|
|
|
- compareLiteratureVO.setLiteratureNo(compareLiterature.getLiteratureNo());
|
|
|
|
|
|
+ BeanUtils.copyProperties(compareLiterature, compareLiteratureVO);
|
|
//当为专利文献时
|
|
//当为专利文献时
|
|
if (compareLiterature.getType().equals(0)) {
|
|
if (compareLiterature.getType().equals(0)) {
|
|
compareLiteratureVO.setFitType(0);
|
|
compareLiteratureVO.setFitType(0);
|
|
if (patentList.size() > 0) {
|
|
if (patentList.size() > 0) {
|
|
Patent patent = patentList.stream()
|
|
Patent patent = patentList.stream()
|
|
- .filter(item -> item.getAppNo().equals(literatureNo)
|
|
|
|
- || item.getPublicNo().equals(literatureNo) ||
|
|
|
|
- item.getGrantNo().equals(literatureNo)).findFirst().orElse(null);
|
|
|
|
|
|
+ .filter(item -> literatureNo.equals(item.getAppNo())
|
|
|
|
+ || literatureNo.equals(item.getPublicNo()) ||
|
|
|
|
+ literatureNo.equals(item.getGrantNo())).findFirst().orElse(null);
|
|
if (patent != null) {
|
|
if (patent != null) {
|
|
compareLiteratureVO.setAppNo(patent.getAppNo());
|
|
compareLiteratureVO.setAppNo(patent.getAppNo());
|
|
compareLiteratureVO.setAppDate(patent.getAppDate());
|
|
compareLiteratureVO.setAppDate(patent.getAppDate());
|
|
@@ -260,5 +315,208 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
|
|
return compareLiteratureVOS;
|
|
return compareLiteratureVOS;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //更新对比文献序号
|
|
|
|
+ public Boolean updateLiteratureOrder(List<UpdateLiteratureOrderDTO> dtos) {
|
|
|
|
+ if (dtos != null && dtos.size() < 0) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ dtos.forEach(item -> {
|
|
|
|
+ UpdateWrapper<CompareLiterature> updateWrapper = new UpdateWrapper<>();
|
|
|
|
+ updateWrapper.eq("id", item.getId());
|
|
|
|
+ updateWrapper.set("sys_order", item.getSysOrder());
|
|
|
|
+ this.update(updateWrapper);
|
|
|
|
+ });
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //批量添加对比文献
|
|
|
|
+
|
|
|
|
+ public void updateCompareLiteratureBatch(UpdateBatchLiteratureDTO updateBatchLiteratureDTO) {
|
|
|
|
+ PersonnelVO personnelVO = new PersonnelVO();
|
|
|
|
+ personnelVO.setId("1");
|
|
|
|
+ if (updateBatchLiteratureDTO == null) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ List<UpdateBatchLiteraturesDTO> dtos = updateBatchLiteratureDTO.getUpdateBatchLiteratureDTOs();
|
|
|
|
+ int i = 1;
|
|
|
|
+ for (UpdateBatchLiteraturesDTO item : dtos) {
|
|
|
|
+ if (item.getType().equals(1)) {
|
|
|
|
+ this.saveOrUpdateNotPatent(item);
|
|
|
|
+ } else {
|
|
|
|
+ this.saveOrUpdatePatent(item);
|
|
|
|
+ }
|
|
|
|
+ WebSocketMessageVO webSocketMessageVO = new WebSocketMessageVO();
|
|
|
|
+ webSocketMessageVO.setAllNum(dtos.size());
|
|
|
|
+ webSocketMessageVO.setCurrentNum(i);
|
|
|
|
+ webSocketMessageVO.setCreateId(personnelVO.getId());
|
|
|
|
+ webSocketMessageVO.setState(1);
|
|
|
|
+ messageService.sendMessage(webSocketMessageVO);
|
|
|
|
+ i++;
|
|
|
|
+ }
|
|
|
|
+ WebSocketMessageVO webSocketMessageVO = new WebSocketMessageVO();
|
|
|
|
+ webSocketMessageVO.setAllNum(dtos.size());
|
|
|
|
+ webSocketMessageVO.setCurrentNum(dtos.size());
|
|
|
|
+ webSocketMessageVO.setCreateId(personnelVO.getId());
|
|
|
|
+ webSocketMessageVO.setState(2);
|
|
|
|
+ messageService.sendMessage(webSocketMessageVO);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 添加或更新非专利文献
|
|
|
|
+ */
|
|
|
|
+ public Integer saveOrUpdateNotPatent(UpdateBatchLiteraturesDTO updateBatchLiteratureDTO) {
|
|
|
|
+ PersonnelVO personnelVO = new PersonnelVO();
|
|
|
|
+ Integer projectId = updateBatchLiteratureDTO.getProjectId();
|
|
|
|
+ try {
|
|
|
|
+ personnelVO = new PersonnelVO();
|
|
|
|
+ personnelVO.setId("1");
|
|
|
|
+// personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new UnLoginException("未登录");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ CompareLiterature compareLiterature = new CompareLiterature();
|
|
|
|
+ compareLiterature.setCreateId(personnelVO.getId());
|
|
|
|
+ //报告id
|
|
|
|
+ compareLiterature.setProjectId(projectId);
|
|
|
|
+ //文档guid
|
|
|
|
+ compareLiterature.setLiteratureNo(updateBatchLiteratureDTO.getLiteratureNo());
|
|
|
|
+ //文档名称
|
|
|
|
+ compareLiterature.setName(updateBatchLiteratureDTO.getName());
|
|
|
|
+ //描述
|
|
|
|
+ compareLiterature.setDescription(updateBatchLiteratureDTO.getDescription());
|
|
|
|
+ //作者
|
|
|
|
+ compareLiterature.setAuthorName(updateBatchLiteratureDTO.getAuthorName());
|
|
|
|
+ //类型
|
|
|
|
+ compareLiterature.setType(1);
|
|
|
|
+ //装载排序
|
|
|
|
+ compareLiterature.setSysOrder(updateBatchLiteratureDTO.getSysOrder());
|
|
|
|
+ //装载公开日
|
|
|
|
+ compareLiterature.setPublicDate(updateBatchLiteratureDTO.getPublicDate());
|
|
|
|
+
|
|
|
|
+ //当传id则为更新
|
|
|
|
+ if (updateBatchLiteratureDTO.getId() != null) {
|
|
|
|
+
|
|
|
|
+ compareLiterature.setId(updateBatchLiteratureDTO.getId());
|
|
|
|
+ compareLiterature.updateById();
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ compareLiterature.insert();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return compareLiterature.getId();
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 添加或更新专利文献
|
|
|
|
+ */
|
|
|
|
+ public Integer saveOrUpdatePatent(UpdateBatchLiteraturesDTO updateBatchLiteratureDTO) {
|
|
|
|
+ PersonnelVO personnelVO = new PersonnelVO();
|
|
|
|
+ Integer projectId = updateBatchLiteratureDTO.getProjectId();
|
|
|
|
+ String literatureNo = updateBatchLiteratureDTO.getName();
|
|
|
|
+ Integer id = updateBatchLiteratureDTO.getId();
|
|
|
|
+ try {
|
|
|
|
+ personnelVO = new PersonnelVO();
|
|
|
|
+ personnelVO.setId("1");
|
|
|
|
+// personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new UnLoginException("未登录");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Patent patent = new Patent();
|
|
|
|
+ //判断该专利是否已经作为文献
|
|
|
|
+ if (id != null) {
|
|
|
|
+ id = this.getHaveAddIdByNos(projectId, literatureNo);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ //当id为null时
|
|
|
|
+ else {
|
|
|
|
+ //判断库里是否存在该专利
|
|
|
|
+ try {
|
|
|
|
+ PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(literatureNo);
|
|
|
|
+ if (patentWithIdVO == null) {
|
|
|
|
+ // 不存在该专利则从数据库获取著录信息并保存
|
|
|
|
+ patent = importSinglePatentService.addSinglePatent(literatureNo);
|
|
|
|
+ } else {
|
|
|
|
+ patent = patentWithIdVO.getPatent();
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ CompareLiterature compareLiterature = new CompareLiterature();
|
|
|
|
+ compareLiterature.setCreateId(personnelVO.getId());
|
|
|
|
+ //报告id
|
|
|
|
+ compareLiterature.setProjectId(projectId);
|
|
|
|
+ //文档guid
|
|
|
|
+ compareLiterature.setLiteratureNo(literatureNo);
|
|
|
|
+ //文档名称
|
|
|
|
+ String name = literatureNo;
|
|
|
|
+ if (patent != null) {
|
|
|
|
+ if (patent.getTitle() != null && patent.getTitle().size() != 0) {
|
|
|
|
+ name += "(" + patent.getTitle().get(0).getTextContent();
|
|
|
|
+ }
|
|
|
|
+ compareLiterature.setAppDate(patent.getAppDate());
|
|
|
|
+ compareLiterature.setPublicDate(patent.getPublicDate());
|
|
|
|
+ }
|
|
|
|
+ compareLiterature.setName(name);
|
|
|
|
+ //描述
|
|
|
|
+ compareLiterature.setDescription(updateBatchLiteratureDTO.getDescription());
|
|
|
|
+ //作者
|
|
|
|
+ String authorName = "";
|
|
|
|
+ if (patent != null && patent.getRightHolder() != null && patent.getRightHolder().size() > 0) {
|
|
|
|
+ authorName = patent.getRightHolder().get(0).getName();
|
|
|
|
+ }
|
|
|
|
+ compareLiterature.setAuthorName(authorName);
|
|
|
|
+ //类型
|
|
|
|
+ compareLiterature.setType(0);
|
|
|
|
+ //装载排序
|
|
|
|
+ compareLiterature.setSysOrder(updateBatchLiteratureDTO.getSysOrder());
|
|
|
|
+
|
|
|
|
+ //当传id则为更新
|
|
|
|
+ if (id != null) {
|
|
|
|
+
|
|
|
|
+ compareLiterature.setId(updateBatchLiteratureDTO.getId());
|
|
|
|
+ compareLiterature.updateById();
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ compareLiterature.insert();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return compareLiterature.getId();
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 根据号码判断是否被加入过
|
|
|
|
+ *
|
|
|
|
+ * @param projectId
|
|
|
|
+ * @param nos
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public Integer getHaveAddIdByNos(Integer projectId, String nos) {
|
|
|
|
+ LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper.eq(CompareLiterature::getLiteratureNo, nos)
|
|
|
|
+ .eq(CompareLiterature::getProjectId, projectId);
|
|
|
|
+ CompareLiterature compareLiterature = this.getOne(queryWrapper, false);
|
|
|
|
+ if (compareLiterature != null) {
|
|
|
|
+ return compareLiterature.getId();
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public Boolean deleteCompareLiterature(List<Integer> ids){
|
|
|
|
+ if(ids==null||ids.size()<=0){
|
|
|
|
+ throw new XiaoShiException("请选择对比文献");
|
|
|
|
+ }
|
|
|
|
+ return this.removeBatchByIds(ids);
|
|
|
|
+
|
|
|
|
+ }
|
|
}
|
|
}
|