123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package cn.cslg.pas.service.importPatent;
- import cn.cslg.pas.common.dto.UploadPatentWebDTO;
- import cn.cslg.pas.common.model.cronModel.SystemFile;
- import cn.cslg.pas.common.utils.FileUtils;
- import cn.cslg.pas.common.utils.FormatUtil;
- import cn.cslg.pas.common.utils.ReadExcelUtils;
- import cn.cslg.pas.common.vo.ImportTaskAMVO;
- import cn.cslg.pas.common.vo.PatentData;
- import cn.cslg.pas.common.vo.UploadParamsVO;
- import cn.cslg.pas.common.vo.UploadSettingVO;
- import cn.cslg.pas.domain.es.Patent;
- import cn.cslg.pas.domain.es.Text;
- import cn.cslg.pas.service.common.ExcuteDataToVOService;
- import cn.cslg.pas.service.common.ExcuteUploadSettingService;
- import cn.cslg.pas.service.common.FileManagerService;
- import cn.cslg.pas.service.common.MessageService;
- import cn.hutool.core.util.IdUtil;
- import com.alibaba.fastjson.JSONArray;
- import org.apache.commons.compress.utils.IOUtils;
- import org.apache.poi.ss.usermodel.PictureData;
- import org.apache.poi.ss.usermodel.Sheet;
- import org.springframework.beans.factory.annotation.Configurable;
- import org.springframework.context.ApplicationContext;
- import org.springframework.mock.web.MockMultipartFile;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.ByteArrayInputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.concurrent.locks.Condition;
- import java.util.concurrent.locks.Lock;
- import java.util.concurrent.locks.ReentrantLock;
- @Configurable
- public class GetPatentPictureFromExcelThread extends Thread {
- private ImportTaskAMVO importTaskAMVO;
- private ApplicationContext applicationContext;
- private SavePatentToEsThread savePatentToEsThread;
- private Boolean ifProductAll = false;
- private List<UploadPatentWebDTO> uploadPatentWebDTOS = new ArrayList<>();
- private TaskThread taskThread;
- private final Lock taskLock = new ReentrantLock();
- private final Condition taskCondition = taskLock.newCondition();
- @Override
- public void run() {
- try {
- while ((!ifProductAll || uploadPatentWebDTOS.size() > 0) && importTaskAMVO.getState().equals(1)) {
- if (uploadPatentWebDTOS.size() == 0) {
- taskLock.lock();
- taskCondition.await();
- }
- UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOS.remove(0);
- String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getPatent().getAppNo());
- PictureData pictureData = uploadPatentWebDTO.getPictureData();
- if(pictureData!=null){
- String ext = pictureData.suggestFileExtension();
- byte[] data = pictureData.getData();
- String picName = IdUtil.simpleUUID();
- File file = FileUtils.getFileByBytes(data, picName, "." + ext);
- FileManagerService fileManagerService = applicationContext.getBean(FileManagerService.class);
- fileManagerService.uploadFileWithGuid(file, guid);
- }
- taskThread.ifPatentDone(uploadPatentWebDTO);
- MessageService messageService = applicationContext.getBean(MessageService.class);
- messageService.sendWebsocketMessage(importTaskAMVO,2);
- }
- taskThread.awakeTaskThread();
- } catch (Exception e) {
- taskThread.awakeTaskThread();
- e.printStackTrace();
- }
- }
- public GetPatentPictureFromExcelThread(TaskThread taskThread) {
- this.importTaskAMVO = taskThread.getImportTaskAMVO();
- this.savePatentToEsThread = savePatentToEsThread;
- this.applicationContext = taskThread.getApplicationContext();
- this.taskThread = taskThread;
- }
- public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
- uploadPatentWebDTOS.add(uploadPatentWebDTO);
- if (taskLock.tryLock()) {
- taskCondition.signalAll();
- taskLock.unlock();
- }
- }
- //
- public void setIfProductAll(Boolean ifProductAll) {
- this.ifProductAll = ifProductAll;
- }
- }
|