package com.java110.job.export;
|
|
import com.java110.core.client.*;
|
import com.java110.core.log.LoggerFactory;
|
import com.java110.dto.data.ExportDataDto;
|
import com.java110.utils.cache.MappingCache;
|
import com.java110.utils.factory.ApplicationContextFactory;
|
import com.java110.utils.util.COSUtil;
|
import com.java110.utils.util.OSSUtil;
|
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
import org.slf4j.Logger;
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayOutputStream;
|
import java.util.List;
|
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.Executors;
|
|
/**
|
* 导出数据执行器
|
*/
|
public class ExportDataExecutor implements Runnable{
|
private static final Logger log = LoggerFactory.getLogger(ExportDataQueue.class);
|
|
|
//默认线程大小
|
private static final int DEFAULT_EXPORT_POOL = 4;
|
|
@Override
|
public void run() {
|
|
try {
|
doExportData();
|
}catch (Exception e){
|
log.error("处理消息异常",e);
|
e.printStackTrace();
|
}
|
|
}
|
|
private void doExportData() throws Exception {
|
|
ExportDataDto exportDataDto = ExportDataQueue.getData();
|
|
if(exportDataDto == null){
|
return;
|
}
|
|
String businessAdapt = exportDataDto.getBusinessAdapt();
|
|
IExportDataAdapt exportDataAdaptImpl = ApplicationContextFactory.getBean(businessAdapt, IExportDataAdapt.class);
|
|
if(exportDataAdaptImpl == null){
|
return ;
|
}
|
SXSSFWorkbook workbook= exportDataAdaptImpl.exportData(exportDataDto);
|
|
//保存文件路径到 文件下载表
|
FileUploadTemplate fileUploadTemplate = ApplicationContextFactory.getBean("fileUploadTemplate", FileUploadTemplate.class);
|
|
|
ByteArrayInputStream inputStream = null;
|
ByteArrayOutputStream os = null;
|
try {
|
|
os = new ByteArrayOutputStream();
|
workbook.write(os);
|
inputStream = new ByteArrayInputStream(os.toByteArray());
|
|
fileUploadTemplate.saveFile(inputStream,exportDataDto.getFileName());
|
|
}finally {
|
try {
|
workbook.close();
|
}catch (Exception e){
|
|
}
|
try {
|
inputStream.close();
|
}catch (Exception e){
|
|
}
|
try {
|
os.close();
|
}catch (Exception e){
|
|
}
|
|
}
|
}
|
|
/**
|
* 线程启动器
|
*/
|
public static void startExportDataExecutor(){
|
ExecutorService executorService = Executors.newFixedThreadPool(DEFAULT_EXPORT_POOL);
|
executorService.execute(new ExportDataExecutor());
|
}
|
}
|