GetPatentPictureFromExcelThread.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package cn.cslg.pas.service.importPatent;
  2. import cn.cslg.pas.common.dto.UploadPatentWebDTO;
  3. import cn.cslg.pas.common.model.cronModel.SystemFile;
  4. import cn.cslg.pas.common.utils.FileUtils;
  5. import cn.cslg.pas.common.utils.FormatUtil;
  6. import cn.cslg.pas.common.utils.ReadExcelUtils;
  7. import cn.cslg.pas.common.vo.ImportTaskAMVO;
  8. import cn.cslg.pas.common.vo.PatentData;
  9. import cn.cslg.pas.common.vo.UploadParamsVO;
  10. import cn.cslg.pas.common.vo.UploadSettingVO;
  11. import cn.cslg.pas.domain.es.Patent;
  12. import cn.cslg.pas.domain.es.Text;
  13. import cn.cslg.pas.service.common.ExcuteDataToVOService;
  14. import cn.cslg.pas.service.common.ExcuteUploadSettingService;
  15. import cn.cslg.pas.service.common.FileManagerService;
  16. import cn.cslg.pas.service.common.MessageService;
  17. import cn.hutool.core.util.IdUtil;
  18. import com.alibaba.fastjson.JSONArray;
  19. import org.apache.commons.compress.utils.IOUtils;
  20. import org.apache.poi.ss.usermodel.PictureData;
  21. import org.apache.poi.ss.usermodel.Sheet;
  22. import org.springframework.beans.factory.annotation.Configurable;
  23. import org.springframework.context.ApplicationContext;
  24. import org.springframework.mock.web.MockMultipartFile;
  25. import org.springframework.web.multipart.MultipartFile;
  26. import java.io.ByteArrayInputStream;
  27. import java.io.File;
  28. import java.io.FileOutputStream;
  29. import java.io.InputStream;
  30. import java.util.ArrayList;
  31. import java.util.Arrays;
  32. import java.util.List;
  33. import java.util.concurrent.locks.Condition;
  34. import java.util.concurrent.locks.Lock;
  35. import java.util.concurrent.locks.ReentrantLock;
  36. @Configurable
  37. public class GetPatentPictureFromExcelThread extends Thread {
  38. private ImportTaskAMVO importTaskAMVO;
  39. private ApplicationContext applicationContext;
  40. private SavePatentToEsThread savePatentToEsThread;
  41. private Boolean ifProductAll = false;
  42. private List<UploadPatentWebDTO> uploadPatentWebDTOS = new ArrayList<>();
  43. private TaskThread taskThread;
  44. private final Lock taskLock = new ReentrantLock();
  45. private final Condition taskCondition = taskLock.newCondition();
  46. @Override
  47. public void run() {
  48. try {
  49. while ((!ifProductAll || uploadPatentWebDTOS.size() > 0) && importTaskAMVO.getState().equals(1)) {
  50. if (uploadPatentWebDTOS.size() == 0) {
  51. taskLock.lock();
  52. taskCondition.await();
  53. }
  54. UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOS.remove(0);
  55. String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getPatent().getAppNo());
  56. PictureData pictureData = uploadPatentWebDTO.getPictureData();
  57. if(pictureData!=null){
  58. String ext = pictureData.suggestFileExtension();
  59. byte[] data = pictureData.getData();
  60. String picName = IdUtil.simpleUUID();
  61. File file = FileUtils.getFileByBytes(data, picName, "." + ext);
  62. FileManagerService fileManagerService = applicationContext.getBean(FileManagerService.class);
  63. fileManagerService.uploadFileWithGuid(file, guid);
  64. }
  65. taskThread.ifPatentDone(uploadPatentWebDTO);
  66. MessageService messageService = applicationContext.getBean(MessageService.class);
  67. messageService.sendWebsocketMessage(importTaskAMVO,2);
  68. }
  69. taskThread.awakeTaskThread();
  70. } catch (Exception e) {
  71. taskThread.awakeTaskThread();
  72. e.printStackTrace();
  73. }
  74. }
  75. public GetPatentPictureFromExcelThread(TaskThread taskThread) {
  76. this.importTaskAMVO = taskThread.getImportTaskAMVO();
  77. this.savePatentToEsThread = savePatentToEsThread;
  78. this.applicationContext = taskThread.getApplicationContext();
  79. this.taskThread = taskThread;
  80. }
  81. public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
  82. uploadPatentWebDTOS.add(uploadPatentWebDTO);
  83. if (taskLock.tryLock()) {
  84. taskCondition.signalAll();
  85. taskLock.unlock();
  86. }
  87. }
  88. //
  89. public void setIfProductAll(Boolean ifProductAll) {
  90. this.ifProductAll = ifProductAll;
  91. }
  92. }