GetPatentPictureFromWebThread.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package cn.cslg.pas.service.importPatent;
  2. import cn.cslg.pas.common.core.IgnoreDTDEntityResolver;
  3. import cn.cslg.pas.common.dto.UploadPatentWebDTO;
  4. import cn.cslg.pas.common.utils.FileUtils;
  5. import cn.cslg.pas.common.utils.FormatUtil;
  6. import cn.cslg.pas.common.vo.ImportTaskAMVO;
  7. import cn.cslg.pas.common.vo.StarPatentVO;
  8. import cn.cslg.pas.domain.business.PatentImportErrorLog;
  9. import cn.cslg.pas.domain.es.Patent;
  10. import cn.cslg.pas.domain.es.Text;
  11. import cn.cslg.pas.service.common.FileManagerService;
  12. import cn.cslg.pas.service.common.PatentStarApiService;
  13. import cn.hutool.core.util.IdUtil;
  14. import org.apache.commons.fileupload.FileItem;
  15. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  16. import org.dom4j.Document;
  17. import org.dom4j.Element;
  18. import org.dom4j.XPath;
  19. import org.dom4j.io.SAXReader;
  20. import org.springframework.beans.BeanUtils;
  21. import org.springframework.beans.factory.annotation.Configurable;
  22. import org.springframework.context.ApplicationContext;
  23. import org.springframework.mock.web.MockMultipartFile;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import java.io.*;
  26. import java.net.URL;
  27. import java.util.ArrayList;
  28. import java.util.Arrays;
  29. import java.util.List;
  30. import java.util.concurrent.locks.Condition;
  31. import java.util.concurrent.locks.Lock;
  32. import java.util.concurrent.locks.ReentrantLock;
  33. @Configurable
  34. public class GetPatentPictureFromWebThread extends Thread {
  35. private ImportTaskAMVO importTaskAMVO;
  36. private ApplicationContext applicationContext;
  37. private ImportFromWebToEsService importFromWebToEsService;
  38. private List<UploadPatentWebDTO> uploadPatentWebDTOs = new ArrayList<>();
  39. private final Lock taskLock = new ReentrantLock();
  40. private final Condition taskCondition = taskLock.newCondition();
  41. private Boolean ifProductAll = false;
  42. private TaskThread taskThread;
  43. @Override
  44. public void run() {
  45. while ((!ifProductAll || uploadPatentWebDTOs.size() > 0) && importTaskAMVO.getState().equals(1)) {
  46. try {
  47. if (uploadPatentWebDTOs.size() == 0) {
  48. taskLock.lock();
  49. taskCondition.await();
  50. }
  51. } catch (Exception e) {
  52. }
  53. if (uploadPatentWebDTOs.size() == 0) {
  54. break;
  55. }
  56. UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOs.remove(0);
  57. try {
  58. String usedNo = uploadPatentWebDTO.getStarPatentVO().getPN();
  59. if (usedNo == null||usedNo.trim().equals("")) {
  60. usedNo = uploadPatentWebDTO.getStarPatentVO().getGN();
  61. }
  62. if (usedNo.contains("CN")) {
  63. PatentStarApiService patentStarApiService = applicationContext.getBean(PatentStarApiService.class);
  64. String pictureUrl = patentStarApiService.getPictureApi(uploadPatentWebDTO.getStarPatentVO().getANO());
  65. if (pictureUrl != null && !pictureUrl.contains("408")) {
  66. File file = FileUtils.getPictureFileByUrl(pictureUrl);
  67. FileManagerService fileManagerService = applicationContext.getBean(FileManagerService.class);
  68. String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getStarPatentVO().getANO());
  69. fileManagerService.uploadFileWithGuid(file, guid);
  70. } else {
  71. recordQuestionPatent(uploadPatentWebDTO.getStarPatentVO().getANO());
  72. }
  73. } else {
  74. ImportSinglePatentService importSinglePatentService = applicationContext.getBean(ImportSinglePatentService.class);
  75. byte[] bytes = importSinglePatentService.getImages(usedNo);
  76. if (bytes != null) {
  77. File file = FileUtils.getFileByBytes(bytes, usedNo, "jpg");
  78. FileManagerService fileManagerService = applicationContext.getBean(FileManagerService.class);
  79. String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getStarPatentVO().getANO());
  80. fileManagerService.uploadFileWithGuid(file, guid);
  81. file.delete();
  82. } else {
  83. recordQuestionPatent(uploadPatentWebDTO.getStarPatentVO().getANO());
  84. }
  85. }
  86. taskThread.updateProcess(false, 2, "");
  87. } catch (Exception e) {
  88. taskThread.updateProcess(true, 2, "");
  89. recordQuestionPatent(uploadPatentWebDTO.getStarPatentVO().getAN());
  90. e.printStackTrace();
  91. }
  92. }
  93. taskThread.awakeTaskThread();
  94. }
  95. public GetPatentPictureFromWebThread(TaskThread taskThread, ImportFromWebToEsService importFromWebToEsService) {
  96. this.importTaskAMVO = taskThread.getImportTaskAMVO();
  97. this.importFromWebToEsService = importFromWebToEsService;
  98. this.applicationContext = taskThread.getApplicationContext();
  99. this.taskThread = taskThread;
  100. }
  101. public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
  102. UploadPatentWebDTO uploadPatentWebDTO1 = new UploadPatentWebDTO();
  103. BeanUtils.copyProperties(uploadPatentWebDTO, uploadPatentWebDTO1);
  104. uploadPatentWebDTOs.add(uploadPatentWebDTO1);
  105. if (taskLock.tryLock()) {
  106. taskCondition.signalAll();
  107. taskLock.unlock();
  108. }
  109. }
  110. public void setIfProductAll(Boolean ifProductAll) {
  111. this.ifProductAll = ifProductAll;
  112. if (taskLock.tryLock()) {
  113. System.out.println("专利导入到es解锁" + importTaskAMVO.getId());
  114. taskCondition.signalAll();
  115. taskLock.unlock();
  116. }
  117. }
  118. public void recordQuestionPatent(String appNo) {
  119. PatentImportErrorLog patentImportErrorLog = new PatentImportErrorLog();
  120. patentImportErrorLog.setPatentNo(appNo);
  121. patentImportErrorLog.setErrorType(3);
  122. patentImportErrorLog.setTaskId(importTaskAMVO.getId());
  123. patentImportErrorLog.insert();
  124. }
  125. }