GetPatentPictureFromWebService.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package com.example.xiaoshiweixinback.service.importPatent;
  2. import com.example.xiaoshiweixinback.business.utils.FileUtils;
  3. import com.example.xiaoshiweixinback.business.utils.FormatUtil;
  4. import com.example.xiaoshiweixinback.business.utils.ImageUtil;
  5. import com.example.xiaoshiweixinback.domain.es.Patent;
  6. import com.example.xiaoshiweixinback.domain.es.PatentClassify;
  7. import com.example.xiaoshiweixinback.domain.es.PatentVector;
  8. import com.example.xiaoshiweixinback.entity.dto.patent.UploadPatentWebDTO;
  9. import com.example.xiaoshiweixinback.entity.ops.GetFuTuParamsDTO;
  10. import com.example.xiaoshiweixinback.entity.ops.ImagesInfoVO;
  11. import com.example.xiaoshiweixinback.service.common.FileManagerService;
  12. import com.example.xiaoshiweixinback.service.common.GetVectorService;
  13. import com.example.xiaoshiweixinback.service.common.OPSService;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import java.awt.image.BufferedImage;
  17. import java.io.File;
  18. import java.io.FileFilter;
  19. import java.util.ArrayList;
  20. import java.util.Arrays;
  21. import java.util.List;
  22. @Service
  23. public class GetPatentPictureFromWebService {
  24. @Autowired
  25. private PatentStarApiService patentStarApiService;
  26. @Autowired
  27. private FileManagerService fileManagerService;
  28. @Autowired
  29. private EsService esService;
  30. @Autowired
  31. private GetVectorService getVectorService;
  32. @Autowired
  33. private OPSService opsService;
  34. public void getPatentPicture(UploadPatentWebDTO uploadPatentWebDTO) {
  35. String appNo = uploadPatentWebDTO.getPatent().getAppNo();
  36. if (appNo == null) {
  37. return;
  38. }
  39. if (appNo.contains("CN")) {
  40. this.getCNPatentPicture(uploadPatentWebDTO);
  41. } else {
  42. this.getWdPatentPicture(uploadPatentWebDTO);
  43. }
  44. }
  45. public void getCNPatentPicture(UploadPatentWebDTO uploadPatentWebDTO) {
  46. try {
  47. Long startMillis = System.currentTimeMillis();
  48. List<String> pictureUrls = patentStarApiService.getExternalFigure(uploadPatentWebDTO.getStarPatentVO().getRowApplicationNo());
  49. Long endMillis = System.currentTimeMillis();
  50. System.out.println("获取图片时间"+(endMillis-startMillis));
  51. Patent patent = uploadPatentWebDTO.getPatent();
  52. if (pictureUrls != null && pictureUrls.size() > 0) {
  53. for (int i = 0; i < pictureUrls.size(); i++) {
  54. PatentVector patentVectorOrg = esService.getVectorByIndex(patent.getAppNo(), i);
  55. Long s1 = System.currentTimeMillis();
  56. String pictureUrl = pictureUrls.get(i);
  57. Long s4 = System.currentTimeMillis();
  58. File file = FileUtils.getPictureFileByUrl(pictureUrl);
  59. Long e4 = System.currentTimeMillis();
  60. System.out.println("下载文件耗时"+(e4-s4));
  61. String guid = FormatUtil.getPictureFormat(patent.getAppNo()) + i;
  62. // fileManagerService.uploadFileWithGuid(file, guid);
  63. Long e1 = System.currentTimeMillis();
  64. System.out.println("上传文件耗时"+(e1-s1));
  65. System.out.println("P" + i);
  66. if (patentVectorOrg != null) {
  67. continue;
  68. }
  69. Long s2 = System.currentTimeMillis();
  70. this.addPatentVector(uploadPatentWebDTO, file, i, patentVectorOrg);
  71. Long e2 = System.currentTimeMillis();
  72. System.out.println("向量部分耗时"+(e2-s2));
  73. Long s3 =System.currentTimeMillis();
  74. file.delete();
  75. Long e3 =System.currentTimeMillis();
  76. System.out.println("删除文件耗时"+(e3-s3));
  77. }
  78. }
  79. } catch (Exception e) {
  80. e.printStackTrace();
  81. }
  82. }
  83. public void getWdPatentPicture(UploadPatentWebDTO uploadPatentWebDTO) {
  84. try {
  85. Patent patent = uploadPatentWebDTO.getPatent();
  86. String appNo = patent.getAppNo();
  87. List<ImagesInfoVO> imagesInfoVOS = opsService.getImageInfos(patent.getPublicNo());
  88. ImagesInfoVO infoVO = imagesInfoVOS.stream().filter(item -> item.getImageType().equals("Drawing")).findFirst().orElse(null);
  89. List<File> files = opsService.getImageFiles(infoVO, appNo);
  90. if (files != null && files.size() > 0) {
  91. for (int i = 0; i < files.size(); i++) {
  92. String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getPatent().getAppNo()) + i;
  93. File file = files.get(i);
  94. fileManagerService.uploadFileWithGuid(file, guid);
  95. PatentVector patentVectorOrg = esService.getVectorByIndex(patent.getAppNo(), i);
  96. this.addPatentVector(uploadPatentWebDTO, file, i, patentVectorOrg);
  97. org.apache.commons.io.FileUtils.deleteQuietly(file);
  98. }
  99. }
  100. } catch (Exception e) {
  101. e.printStackTrace();
  102. }
  103. }
  104. public void addPatentVector(UploadPatentWebDTO uploadPatentWebDTO, File file, Integer index, PatentVector patentVectorOrg) throws Exception {
  105. String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getPatent().getAppNo()) + index;
  106. Patent patent = uploadPatentWebDTO.getPatent();
  107. PatentVector patentVector = new PatentVector();
  108. patentVector.setAppNo(patent.getAppNo());
  109. patentVector.setTitle(patent.getTitle());
  110. patentVector.setRightHolder(patent.getRightHolder());
  111. patentVector.setAppDate(patent.getAppDate());
  112. patentVector.setAbstractStr(patent.getAbstractStr());
  113. patentVector.setAppCountry(patent.getAppCountry());
  114. patentVector.setLoc(uploadPatentWebDTO.getPatent().getIpc());
  115. patentVector.setImageIndex(index);
  116. patentVector.setGuid(guid);
  117. Long s1= System.currentTimeMillis();
  118. List<String> stringList = getVectorService.getVectorByFile(file);
  119. Long e1 =System.currentTimeMillis();
  120. System.out.println("获取向量耗时"+(e1-s1));
  121. List<Float> floats = new ArrayList<>();
  122. stringList.forEach(item -> {
  123. Float a = Float.parseFloat(item);
  124. floats.add(a);
  125. });
  126. patentVector.setMyVector(floats);
  127. if (patentVectorOrg != null) {
  128. esService.updatePatentVector(patentVector, patentVectorOrg.getId());
  129. } else {
  130. Long s2= System.currentTimeMillis();
  131. esService.addPatentVector(patentVector);
  132. Long e2 =System.currentTimeMillis();
  133. System.out.println("保存向量耗时"+(e2-s2));
  134. }
  135. }
  136. }