GetPatentPictureFromWebThread.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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.es.Patent;
  9. import cn.cslg.pas.domain.es.Text;
  10. import cn.cslg.pas.service.common.FileManagerService;
  11. import cn.cslg.pas.service.common.PatentStarApiService;
  12. import cn.hutool.core.util.IdUtil;
  13. import org.apache.commons.fileupload.FileItem;
  14. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  15. import org.dom4j.Document;
  16. import org.dom4j.Element;
  17. import org.dom4j.XPath;
  18. import org.dom4j.io.SAXReader;
  19. import org.springframework.beans.BeanUtils;
  20. import org.springframework.beans.factory.annotation.Configurable;
  21. import org.springframework.context.ApplicationContext;
  22. import org.springframework.mock.web.MockMultipartFile;
  23. import org.springframework.web.multipart.MultipartFile;
  24. import java.io.*;
  25. import java.net.URL;
  26. import java.util.ArrayList;
  27. import java.util.Arrays;
  28. import java.util.List;
  29. import java.util.concurrent.locks.Condition;
  30. import java.util.concurrent.locks.Lock;
  31. import java.util.concurrent.locks.ReentrantLock;
  32. @Configurable
  33. public class GetPatentPictureFromWebThread extends Thread {
  34. private ImportTaskAMVO importTaskAMVO;
  35. private ApplicationContext applicationContext;
  36. private ImportFromWebToEsService importFromWebToEsService;
  37. private List<UploadPatentWebDTO> uploadPatentWebDTOs = new ArrayList<>();
  38. private final Lock taskLock = new ReentrantLock();
  39. private final Condition taskCondition = taskLock.newCondition();
  40. private Boolean ifProductAll = false;
  41. private TaskThread taskThread;
  42. @Override
  43. public void run() {
  44. while ((!ifProductAll || uploadPatentWebDTOs.size() > 0) && importTaskAMVO.getState().equals(1)) {
  45. try {
  46. if (uploadPatentWebDTOs.size() == 0) {
  47. taskLock.lock();
  48. taskCondition.await();
  49. }
  50. }catch (Exception e){
  51. }
  52. UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOs.remove(0);
  53. try {
  54. PatentStarApiService patentStarApiService = applicationContext.getBean(PatentStarApiService.class);
  55. String pictureUrl = patentStarApiService.getPictureApi(uploadPatentWebDTO.getStarPatentVO().getRowApplicationNo());
  56. if (pictureUrl != null && !pictureUrl.contains("408")) {
  57. File file = FileUtils.getPictureFileByUrl(pictureUrl);
  58. FileManagerService fileManagerService = applicationContext.getBean(FileManagerService.class);
  59. String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getStarPatentVO().getApplicationNo());
  60. fileManagerService.uploadFileWithGuid(file, guid);
  61. }
  62. taskThread.updateProcess(false,2,"");
  63. } catch (Exception e) {
  64. taskThread.updateProcess(true,2,"");
  65. e.printStackTrace();
  66. }
  67. }
  68. taskThread.awakeTaskThread();
  69. }
  70. public GetPatentPictureFromWebThread(TaskThread taskThread, ImportFromWebToEsService importFromWebToEsService) {
  71. this.importTaskAMVO = taskThread.getImportTaskAMVO();
  72. this.importFromWebToEsService = importFromWebToEsService;
  73. this.applicationContext = taskThread.getApplicationContext();
  74. this.taskThread = taskThread;
  75. }
  76. public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
  77. UploadPatentWebDTO uploadPatentWebDTO1=new UploadPatentWebDTO();
  78. BeanUtils.copyProperties(uploadPatentWebDTO,uploadPatentWebDTO1);
  79. uploadPatentWebDTOs.add(uploadPatentWebDTO1);
  80. if (taskLock.tryLock()) {
  81. taskCondition.signalAll();
  82. taskLock.unlock();
  83. }
  84. }
  85. public void setIfProductAll(Boolean ifProductAll) {
  86. this.ifProductAll = ifProductAll;
  87. if (taskLock.tryLock()) {
  88. System.out.println("专利导入到es解锁" + importTaskAMVO.getId());
  89. taskCondition.signalAll();
  90. taskLock.unlock();
  91. }
  92. }
  93. }