NoveltyCompareLiteratureService.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. package cn.cslg.pas.service.novelty;
  2. import cn.cslg.pas.common.dto.AddCompareFileDTO;
  3. import cn.cslg.pas.common.dto.CompareFileIdDTO;
  4. import cn.cslg.pas.common.dto.EditCompareFileDTO;
  5. import cn.cslg.pas.common.dto.QueryCompareFileDTO;
  6. import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
  7. import cn.cslg.pas.common.model.cronModel.Records;
  8. import cn.cslg.pas.common.utils.GenerateObjectUtil;
  9. import cn.cslg.pas.common.vo.CompareLiteratureVO;
  10. import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareLiteratureVO;
  11. import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
  12. import cn.cslg.pas.common.vo.QueryCompareFileVO;
  13. import cn.cslg.pas.domain.business.CompareLiterature;
  14. import cn.cslg.pas.domain.es.Marking;
  15. import cn.cslg.pas.domain.es.Patent;
  16. import cn.cslg.pas.domain.es.PatentPerson;
  17. import cn.cslg.pas.mapper.CompareLiteratureMapper;
  18. import cn.cslg.pas.mapper.RetrieveRecordMapper;
  19. import cn.cslg.pas.mapper.novelty.NoveltyCompareLiteratureMapper;
  20. import cn.cslg.pas.service.business.CompareLiteratureService;
  21. import cn.cslg.pas.service.business.es.EsPatentService;
  22. import cn.cslg.pas.service.business.es.EsScratchWordsService;
  23. import cn.cslg.pas.service.importPatent.ImportSinglePatentService;
  24. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  25. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  26. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  27. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  28. import cn.cslg.pas.domain.business.novelty.NoveltyCompareLiterature;
  29. import lombok.RequiredArgsConstructor;
  30. import lombok.extern.slf4j.Slf4j;
  31. import org.apache.commons.lang3.ObjectUtils;
  32. import org.apache.commons.lang3.StringUtils;
  33. import org.openqa.selenium.By;
  34. import org.openqa.selenium.WebDriver;
  35. import org.openqa.selenium.WebElement;
  36. import org.openqa.selenium.chrome.ChromeDriver;
  37. import org.openqa.selenium.chrome.ChromeOptions;
  38. import org.openqa.selenium.support.ui.ExpectedCondition;
  39. import org.openqa.selenium.support.ui.WebDriverWait;
  40. import org.springframework.beans.BeanUtils;
  41. import org.springframework.beans.factory.annotation.Autowired;
  42. import org.springframework.context.annotation.Lazy;
  43. import org.springframework.stereotype.Service;
  44. import org.springframework.util.CollectionUtils;
  45. import java.time.Duration;
  46. import java.util.ArrayList;
  47. import java.util.HashMap;
  48. import java.util.List;
  49. import java.util.Map;
  50. import java.util.concurrent.TimeUnit;
  51. import java.util.stream.Collectors;
  52. /**
  53. * @author admin
  54. * @description 针对表【novelty_compare_literature(查新报告对比文件)】的数据库操作Service实现
  55. * @createDate 2024-09-29 09:10:32
  56. */
  57. @Service
  58. @Slf4j
  59. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  60. public class NoveltyCompareLiteratureService extends ServiceImpl<NoveltyCompareLiteratureMapper, NoveltyCompareLiterature> {
  61. @Autowired
  62. private NoveltyCompareLiteratureMapper noveltyCompareLiteratureMapper;
  63. @Autowired
  64. private RetrieveRecordMapper retrieveRecordMapper;
  65. @Autowired
  66. private CompareLiteratureMapper compareLiteratureMapper;
  67. @Autowired
  68. private CompareLiteratureService compareLiteratureService;
  69. @Autowired
  70. private EsScratchWordsService esScratchWordsService;
  71. @Autowired
  72. private EsPatentService esPatentService;
  73. @Autowired
  74. private ImportSinglePatentService importSinglePatentService;
  75. public Records queryNoveltyCompareLiterature(LiteratureQueryDTO vo) throws Exception {
  76. Integer projectId = vo.getProjectId();
  77. Records records = new Records();
  78. //根据projectId查询对比文件
  79. LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
  80. queryWrapper.eq(CompareLiterature::getProjectId, projectId)
  81. .orderByAsc(CompareLiterature::getSysOrder);
  82. List<CompareLiterature> compareLiteratures = new ArrayList<>();
  83. if (vo.getCurrent() != null && vo.getSize() != null) {
  84. Page<CompareLiterature> page = compareLiteratureService.page(new Page<>(vo.getCurrent(), vo.getSize()), queryWrapper);
  85. compareLiteratures = page.getRecords();
  86. records.setTotal(page.getTotal());
  87. records.setSize(Long.parseLong(vo.getSize().toString()));
  88. records.setCurrent(Long.parseLong(vo.getCurrent().toString()));
  89. } else {
  90. compareLiteratures = compareLiteratureService.list(queryWrapper);
  91. }
  92. List<CompareLiteratureVO> literatureVOS = this.loadCompareLiterature(compareLiteratures);
  93. this.loadCompareLiteratureVOS(literatureVOS, projectId);
  94. records.setData(literatureVOS);
  95. return records;
  96. }
  97. public List<CompareLiteratureVO> loadCompareLiterature(List<CompareLiterature> compareLiteratures) throws Exception {
  98. List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
  99. List<String> patentNos = compareLiteratures.stream().map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
  100. List<Patent> patentList = esPatentService.getPatentsByNo(patentNos, false, null, null);
  101. for (CompareLiterature compareLiterature : compareLiteratures) {
  102. String literatureNo = compareLiterature.getLiteratureNo();
  103. Patent patent = patentList.stream()
  104. .filter(item -> literatureNo.equals(item.getAppNo())
  105. || literatureNo.equals(item.getPublicNo()) ||
  106. literatureNo.equals(item.getGrantNo())).findFirst().orElse(null);
  107. CompareLiteratureVO compareLiteratureVO = new CompareLiteratureVO();
  108. BeanUtils.copyProperties(compareLiterature, compareLiteratureVO);
  109. if (patent != null) {
  110. compareLiteratureVO.setAppNo(patent.getAppNo());
  111. compareLiteratureVO.setAppDate(patent.getAppDate());
  112. if (patent.getPublicNo() == null) {
  113. compareLiteratureVO.setPublicDate(patent.getGrantDate());
  114. compareLiteratureVO.setPublicNo(patent.getGrantNo());
  115. } else {
  116. compareLiteratureVO.setPublicDate(patent.getPublicDate());
  117. compareLiteratureVO.setPublicNo(patent.getPublicNo());
  118. }
  119. compareLiteratureVO.setGrantDate(patent.getGrantDate());
  120. compareLiteratureVO.setGrantNo(patent.getGrantNo());
  121. if (StringUtils.isNotEmpty(compareLiteratureVO.getAuthorName())) {
  122. List<PatentPerson> personList = new ArrayList<>();
  123. PatentPerson person = new PatentPerson();
  124. person.setName(compareLiteratureVO.getAuthorName());
  125. personList.add(person);
  126. compareLiteratureVO.setApplicant(personList);
  127. } else {
  128. compareLiteratureVO.setApplicant(patent.getApplicant());
  129. }
  130. }
  131. compareLiteratureVOS.add(compareLiteratureVO);
  132. }
  133. return compareLiteratureVOS;
  134. }
  135. public void loadCompareLiteratureVOS(List<CompareLiteratureVO> compareLiteratureVOS, Integer projectId) throws Exception {
  136. if (!CollectionUtils.isEmpty(compareLiteratureVOS)) {
  137. List<Integer> literatureIds = compareLiteratureVOS.stream().map(CompareLiteratureVO::getId).collect(Collectors.toList());
  138. List<NoveltyCompareRecordVO> recordVOS = esScratchWordsService.queryNoveltyRecord(projectId, 1);
  139. List<NoveltyCompareLiterature> noveltyCompareLiteratureList = noveltyCompareLiteratureMapper.selectList(new LambdaQueryWrapper<NoveltyCompareLiterature>()
  140. .in(NoveltyCompareLiterature::getCompareLitertureId, literatureIds));
  141. for (CompareLiteratureVO literatureVO : compareLiteratureVOS) {
  142. NoveltyCompareLiterature noveltyCompareLiterature = noveltyCompareLiteratureList.stream().filter(i -> literatureVO.getId().equals(i.getCompareLitertureId())).findFirst().orElse(new NoveltyCompareLiterature());
  143. if (!org.springframework.util.ObjectUtils.isEmpty(noveltyCompareLiterature)) {
  144. literatureVO.setCompareFileId(noveltyCompareLiterature.getId());
  145. literatureVO.setRetrieveRecordId(noveltyCompareLiterature.getRetrieveRecordId());
  146. literatureVO.setRelevance(noveltyCompareLiterature.getRelevance());
  147. literatureVO.setIfEffectinv(noveltyCompareLiterature.getIfEffectinv());
  148. literatureVO.setFileRemark(noveltyCompareLiterature.getRemark());
  149. literatureVO.setGeneralRemark(noveltyCompareLiterature.getGeneralRemark());
  150. literatureVO.setTechnicalPoints(noveltyCompareLiterature.getTechnicalPoints());
  151. literatureVO.setExcuteCase(noveltyCompareLiterature.getExcuteCase());
  152. literatureVO.setBeneficialEffect(noveltyCompareLiterature.getBeneficialEffect());
  153. }
  154. if (!CollectionUtils.isEmpty(recordVOS)) {
  155. List<NoveltyCompareRecordVO> collect = recordVOS.stream().filter(i -> i.getPatentNo().equals(literatureVO.getLiteratureNo())).collect(Collectors.toList());
  156. literatureVO.setNoveltyCompareRecordVOS(collect);
  157. }
  158. }
  159. }
  160. }
  161. public List<QueryCompareFileVO> queryCompareFile(QueryCompareFileDTO vo) {
  162. return noveltyCompareLiteratureMapper.queryCompareFile(vo);
  163. }
  164. public Integer addCompareFile(AddCompareFileDTO vo) {
  165. Integer compareLitertureId = vo.getId();
  166. NoveltyCompareLiterature literature = noveltyCompareLiteratureMapper.selectOne(new LambdaQueryWrapper<NoveltyCompareLiterature>()
  167. .eq(NoveltyCompareLiterature::getCompareLitertureId, compareLitertureId));
  168. if (ObjectUtils.isEmpty(literature)) {
  169. literature = new NoveltyCompareLiterature();
  170. BeanUtils.copyProperties(vo, literature);
  171. literature.setId(null);
  172. literature.setCompareLitertureId(compareLitertureId);
  173. literature.insert();
  174. }
  175. else {
  176. if(literature.getRetrieveRecordId()==null){
  177. literature.setRetrieveRecordId(vo.getRetrieveRecordId());
  178. literature.updateById();
  179. }
  180. }
  181. return literature.getId();
  182. }
  183. public Integer editCompareFile(AddCompareFileDTO vo) {
  184. NoveltyCompareLiterature literature = noveltyCompareLiteratureMapper.selectById(vo.getCompareFileId());
  185. literature.setCompareLitertureId(vo.getId());
  186. literature.setRetrieveRecordId(vo.getRetrieveRecordId());
  187. literature.setRelevance(vo.getRelevance());
  188. literature.setRemark(vo.getRemark());
  189. literature.setGeneralRemark(vo.getGeneralRemark());
  190. literature.setIfEffectinv(vo.getIfEffectinv());
  191. literature.setBeneficialEffect(vo.getBeneficialEffect());
  192. literature.setExcuteCase(vo.getExcuteCase());
  193. literature.setTechnicalPoints(vo.getTechnicalPoints());
  194. literature.updateById();
  195. return literature.getId();
  196. }
  197. public Integer editCompareFileByProjectId(EditCompareFileDTO vo) throws Exception {
  198. CompareLiterature compareLiterature = compareLiteratureMapper.selectOne(new LambdaQueryWrapper<CompareLiterature>()
  199. .eq(CompareLiterature::getLiteratureNo, vo.getPatentNo())
  200. .eq(CompareLiterature::getProjectId, vo.getProjectId()));
  201. NoveltyCompareLiterature literature = noveltyCompareLiteratureMapper.selectOne(new LambdaQueryWrapper<NoveltyCompareLiterature>()
  202. .eq(NoveltyCompareLiterature::getCompareLitertureId, compareLiterature.getId()));
  203. if (ObjectUtils.isEmpty(literature)) {
  204. literature = new NoveltyCompareLiterature();
  205. literature.setCompareLitertureId(compareLiterature.getId());
  206. literature.insert();
  207. }
  208. if (StringUtils.equals(vo.getField(), "fileRemark")) {
  209. vo.setField("remark");
  210. }
  211. GenerateObjectUtil.setObjectProperty(literature, vo.getField(), vo.getValue());
  212. literature.updateById();
  213. return literature.getId();
  214. }
  215. public void delCompareFile(CompareFileIdDTO vo) {
  216. NoveltyCompareLiterature noveltyCompareLiterature = noveltyCompareLiteratureMapper.selectOne(new QueryWrapper<NoveltyCompareLiterature>()
  217. .lambda()
  218. .eq(NoveltyCompareLiterature::getCompareLitertureId, vo.getCompareLitertureId()));
  219. if (ObjectUtils.isNotEmpty(noveltyCompareLiterature)) {
  220. //TODO 缺少对比记录方法,判断是否有对比记录,有的话则提示
  221. noveltyCompareLiteratureMapper.deleteById(noveltyCompareLiterature.getId());
  222. }
  223. compareLiteratureMapper.deleteById(vo.getCompareLitertureId());
  224. }
  225. public Map<String, String> getReportInfoFromWD(String caseNo) {
  226. ChromeOptions options = new ChromeOptions();
  227. // options.addArguments("user-data-dir=" + strFileSavePath);
  228. options.addArguments("--lang=nl");
  229. options.addArguments("--disable-popup-blocking");
  230. options.addArguments("--disable-images");
  231. options.addArguments("--remote-allow-origins=*");
  232. // if (isHeadless) {
  233. // options.addArguments("headless");
  234. // }
  235. WebDriver driver = null;
  236. Map<String, String> retObject = new HashMap<>();
  237. try {
  238. // System.setProperty("webdriver.chrome.driver", chromeDriverPath);
  239. driver = new ChromeDriver(options);
  240. driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
  241. driver.manage().timeouts().pageLoadTimeout(100, TimeUnit.SECONDS);
  242. // driver.get(iPEasyWeb);
  243. //进入登录界面
  244. WebElement userField = driver.findElement(By.id("txtUser"));
  245. WebElement pwdField = driver.findElement(By.id("txtPwd"));
  246. WebElement loginButton = driver.findElement(By.id("btnLogin"));
  247. //输入用户名和密码
  248. userField.clear();
  249. // userField.sendKeys(account);
  250. pwdField.clear();
  251. // pwdField.sendKeys(password);
  252. //点击登录按钮
  253. loginButton.click();
  254. //关闭提示遮罩层
  255. WebElement closeOverlay = null;
  256. try {
  257. closeOverlay = driver.findElement(By.id("jpwClose"));
  258. if (closeOverlay.isDisplayed()) {
  259. closeOverlay.click();
  260. }
  261. } catch (Exception e) {
  262. }
  263. //点击顶部菜单栏中的案件管理菜单
  264. WebElement caseManagementMenu = driver.findElement(By.name("71A7CC35-F597-40E1-9FEF-BE622A3A3B63"));
  265. caseManagementMenu.click();
  266. //点击左侧 查询 菜单
  267. WebElement searchMenu = driver.findElement(By.name("c3266ab3-521a-4815-8aaf-7dd0bc5a76af"));
  268. searchMenu.click();
  269. //切换到自定义报表Frame
  270. driver.switchTo().frame(1);
  271. WebElement inputSearch = driver.findElement(By.id("case_volume"));
  272. inputSearch.sendKeys(caseNo.trim());
  273. WebElement btnSearch = driver.findElement(By.id("btn_Search"));
  274. btnSearch.click();
  275. WebElement caseLink = driver.findElement(By.xpath("//a[contains(text()," + caseNo + ")]"));
  276. caseLink.click();
  277. driver.switchTo().parentFrame().switchTo().frame(2);
  278. WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
  279. //等待页面上ID属性值为submitButton的元素加载完成
  280. WebElement myElement = wait.until((ExpectedCondition<WebElement>) wd -> {
  281. try {
  282. if (wd != null) {
  283. wd.switchTo().parentFrame().switchTo().frame(2);
  284. return wd.findElement(By.id("libase"));
  285. }
  286. } catch (Exception e) {
  287. return null;
  288. }
  289. return null;
  290. });
  291. myElement.click();
  292. // 案件号
  293. retObject.put("CaseNo", caseNo.trim());
  294. //案件名称
  295. retObject.put("CaseName", driver.findElement(By.id("p_case_info__case_name")).getAttribute("value"));
  296. //客户名称
  297. retObject.put("CustomerName", driver.findElement(By.id("p_case_info__customer_id")).getAttribute("value"));
  298. //业务类型
  299. retObject.put("BusinessType", driver.findElement(By.id("p_case_info__business_type_id")).getAttribute("value"));
  300. retObject.put("CaseState", getSelectText(driver.findElement(By.id("p_case_info__case_status_id"))));
  301. retObject.put("ApplicationType", getSelectText(driver.findElement(By.id("p_case_info__apply_type_id"))));
  302. //案件类型
  303. retObject.put("CaseType", driver.findElement(By.id("p_case_info__case_type_id")).getAttribute("value"));
  304. //委案日期
  305. retObject.put("EntrustingDate", driver.findElement(By.id("p_case_info__charge_date")).getAttribute("value"));
  306. //案件备注
  307. retObject.put("CaseMemo", driver.findElement(By.id("p_case_info__remark")).getAttribute("value"));
  308. WebElement expandInfoButton = driver.findElement(By.xpath("//span[contains(text(),'扩展信息')]"));
  309. expandInfoButton.click();
  310. retObject.put("CaseCoefficient", getSelectText(driver.findElement(By.id("p_case_info__case_coefficient_id"))));
  311. } catch (Exception e) {
  312. e.printStackTrace();
  313. throw new RuntimeException("An error occurred while retrieving case info", e);
  314. } finally {
  315. if (driver != null) {
  316. driver.quit();
  317. }
  318. }
  319. return retObject;
  320. }
  321. public static String getSelectText(WebElement element) {
  322. String strValue = element.getAttribute("value");
  323. if (strValue == null || strValue.isEmpty()) {
  324. return null;
  325. }
  326. List<WebElement> ops = element.findElements(By.tagName("option"));
  327. for (WebElement op : ops) {
  328. if (op.getAttribute("value").equals(strValue)) {
  329. return op.getText();
  330. }
  331. }
  332. return null;
  333. }
  334. public List<Integer> copyCompareFile(List<Integer> ids, Integer toProjectId, Integer fromProjectId) throws Exception {
  335. if (ids == null || ids.size() == 0) {
  336. return new ArrayList<>();
  337. }
  338. QueryCompareFileDTO queryCompareFileDTOFrom = new QueryCompareFileDTO();
  339. queryCompareFileDTOFrom.setIds(ids);
  340. List<QueryCompareFileVO> queryCompareFileVOSFrom = this.getBaseMapper().queryCompareFile(queryCompareFileDTOFrom);
  341. List<String> patentNos = queryCompareFileVOSFrom.stream().map(QueryCompareFileVO::getLiteratureNo).collect(Collectors.toList());
  342. QueryCompareFileDTO queryCompareFileDTOTo = new QueryCompareFileDTO();
  343. queryCompareFileDTOTo.setPatentNos(patentNos);
  344. queryCompareFileDTOTo.setProjectId(toProjectId);
  345. List<QueryCompareFileVO> queryCompareFileVOSTo = this.getBaseMapper().queryCompareFile(queryCompareFileDTOTo);
  346. for (QueryCompareFileVO queryCompareFileVO : queryCompareFileVOSFrom) {
  347. importSinglePatentService.addPatentToProject(queryCompareFileVO.getLiteratureNo(),toProjectId);
  348. QueryCompareFileVO queryCompareFileVOTo = queryCompareFileVOSTo.stream().filter(item -> item.getLiteratureNo().equals(queryCompareFileVO.getLiteratureNo())).findFirst().orElse(null);
  349. if (queryCompareFileVOTo == null) {
  350. CompareLiterature compareLiterature = new CompareLiterature();
  351. BeanUtils.copyProperties(queryCompareFileVO, compareLiterature);
  352. compareLiterature.setRemark(queryCompareFileVO.getLiteratureRemark());
  353. compareLiterature.setProjectId(toProjectId);
  354. compareLiterature.setId(null);
  355. compareLiterature.insert();
  356. NoveltyCompareLiterature noveltyCompareLiterature = new NoveltyCompareLiterature();
  357. BeanUtils.copyProperties(queryCompareFileVO, noveltyCompareLiterature);
  358. noveltyCompareLiterature.setRemark(queryCompareFileVO.getFileRemark());
  359. noveltyCompareLiterature.setCompareLitertureId(compareLiterature.getId());
  360. noveltyCompareLiterature.insert();
  361. } else {
  362. Integer fromId = queryCompareFileVO.getCompareFileId();
  363. if (fromId == null) {
  364. //什么都不需要做
  365. } else {
  366. Integer toId = queryCompareFileVOTo.getCompareFileId();
  367. if (toId == null) {
  368. NoveltyCompareLiterature noveltyCompareLiterature = new NoveltyCompareLiterature();
  369. BeanUtils.copyProperties(queryCompareFileVO, noveltyCompareLiterature);
  370. noveltyCompareLiterature.setRemark(queryCompareFileVO.getFileRemark());
  371. noveltyCompareLiterature.setCompareLitertureId(queryCompareFileVOTo.getCompareLitertureId());
  372. noveltyCompareLiterature.insert();
  373. } else {
  374. NoveltyCompareLiterature noveltyCompareLiterature = new NoveltyCompareLiterature();
  375. BeanUtils.copyProperties(queryCompareFileVOTo, noveltyCompareLiterature);
  376. noveltyCompareLiterature.setRemark(queryCompareFileVO.getFileRemark());
  377. if (queryCompareFileVO.getBeneficialEffect() != null) {
  378. noveltyCompareLiterature.setBeneficialEffect(noveltyCompareLiterature.getBeneficialEffect() + queryCompareFileVO.getBeneficialEffect());
  379. }
  380. if (queryCompareFileVO.getRelevance() != null) {
  381. noveltyCompareLiterature.setRelevance(noveltyCompareLiterature.getRelevance() + queryCompareFileVO.getRelevance());
  382. }
  383. if (queryCompareFileVO.getLiteratureRemark() != null) {
  384. noveltyCompareLiterature.setRemark(noveltyCompareLiterature.getRemark() + queryCompareFileVO.getLiteratureRemark());
  385. }
  386. if (queryCompareFileVO.getGeneralRemark() != null) {
  387. noveltyCompareLiterature.setGeneralRemark(noveltyCompareLiterature.getGeneralRemark() + queryCompareFileVO.getGeneralRemark());
  388. }
  389. if (queryCompareFileVO.getTechnicalPoints() != null) {
  390. noveltyCompareLiterature.setGeneralRemark(noveltyCompareLiterature.getTechnicalPoints() + queryCompareFileVO.getTechnicalPoints());
  391. }
  392. if (queryCompareFileVO.getExcuteCase() != null) {
  393. noveltyCompareLiterature.setExcuteCase(noveltyCompareLiterature.getExcuteCase() + queryCompareFileVO.getExcuteCase());
  394. }
  395. if (queryCompareFileVO.getBeneficialEffect() != null) {
  396. noveltyCompareLiterature.setBeneficialEffect(noveltyCompareLiterature.getBeneficialEffect() + queryCompareFileVO.getBeneficialEffect());
  397. }
  398. }
  399. }
  400. }
  401. }
  402. //添加标注
  403. if (patentNos != null && patentNos.size() > 0) {
  404. List<NoveltyCompareRecordVO> noveltyCompareRecordVOS = esScratchWordsService.queryMarkingByNo(fromProjectId, patentNos);
  405. List<NoveltyCompareRecordVO> noveltyCompareRecordVOList = esScratchWordsService.queryMarkingByNo(toProjectId, patentNos);
  406. List<Marking> markings = new ArrayList<>();
  407. noveltyCompareRecordVOS.forEach(item -> {
  408. NoveltyCompareRecordVO noveltyCompareRecordVO = noveltyCompareRecordVOList.stream().filter(t -> t.getPatentNo().equals(item.getPatentNo())).findFirst().orElse(null);
  409. Marking marking = new Marking();
  410. if (noveltyCompareRecordVO != null) {
  411. BeanUtils.copyProperties(noveltyCompareRecordVO, marking);
  412. if (noveltyCompareRecordVO.getMarkNoteText() != null) {
  413. marking.setMarkNoteText(noveltyCompareRecordVO.getMarkNoteText() + item.getMarkNoteText());
  414. } else {
  415. marking.setMarkNoteText(item.getMarkNoteText());
  416. }
  417. esScratchWordsService.updateScratchWords(noveltyCompareRecordVO.getId(), marking);
  418. } else {
  419. BeanUtils.copyProperties(item, marking);
  420. marking.setProjectId(toProjectId);
  421. markings.add(marking);
  422. }
  423. });
  424. esScratchWordsService.saveListToEs(markings);
  425. }
  426. return ids;
  427. }
  428. /**
  429. * 根据检索记录ids查询专利信息
  430. *
  431. * @param retrieveIds
  432. * @return
  433. */
  434. public Map<Integer, List<NoveltyCompareLiteratureVO>> getPatentNoByRetrieveIds(List<Integer> retrieveIds) {
  435. Map<Integer, List<NoveltyCompareLiteratureVO>> noveltyMap = new HashMap<>();
  436. for (Integer retrieveId : retrieveIds) {
  437. List<NoveltyCompareLiteratureVO> noveltyCompareLiteratureVOS = noveltyCompareLiteratureMapper.getPatentNoByRetrieveId(retrieveId);
  438. if (noveltyCompareLiteratureVOS != null && noveltyCompareLiteratureVOS.size() != 0) {
  439. noveltyMap.put(retrieveId, noveltyCompareLiteratureVOS);
  440. }
  441. }
  442. return noveltyMap;
  443. }
  444. }