imp: 使用多线程转换base64。

lianzhong-receive
wyb 3 months ago
parent 7f41fe15ec
commit 618ad44486

@ -38,9 +38,8 @@ public class GzFirstLabReportSyncJob {
private AtomicBoolean isAllRunning = new AtomicBoolean(false);
private AtomicBoolean isThreeRunning = new AtomicBoolean(false);
private static final int coreThreads = Runtime.getRuntime().availableProcessors() - 1;
private static final ThreadPoolExecutor LAB_SYNC_EXECUTOR = new ThreadPoolExecutor(coreThreads,
coreThreads + 1,
private static final ThreadPoolExecutor LAB_SYNC_EXECUTOR = new ThreadPoolExecutor(5,
6,
30, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(200),
new ThreadPoolExecutor.CallerRunsPolicy());

@ -21,7 +21,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
@ -31,6 +30,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.stream.Collectors;
@Slf4j
@ -46,7 +46,7 @@ public class WebServiceImpl implements IWebService {
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
private final ExecutorService executor = Executors.newFixedThreadPool(8);
private static final ExecutorService BASE64_CONVERT_PDF_EXECUTOR = Executors.newFixedThreadPool(3);
@Override
public CommonResult<?> syncInspection(SyncBasicDataDto syncBasicDataDto) {
@ -162,9 +162,11 @@ public class WebServiceImpl implements IWebService {
try {
log.info("同步检验报告,病案号:{},住院次数:{},开始转换:{} - {}", inpatientNo, times, item.getRepId(), item.getPidComName());
addScanList = PDFFileUtils.base64StringToPDF(base64Result, root, item.getRepId(), item.getPidComName(), sortIndex);
final int pdfIndex = sortIndex;
Future<List<ScanAssort>> toPdfFuture = BASE64_CONVERT_PDF_EXECUTOR.submit(() -> PDFFileUtils.base64StringToPDF(base64Result, root, item.getRepId(), item.getPidComName(), pdfIndex));
addScanList = toPdfFuture.get();
log.info("同步检验报告,病案号:{},住院次数:{},{} - {} 转换结束", inpatientNo, times, item.getRepId(), item.getPidComName());
} catch (IOException e) {
} catch (Exception e) {
String msg = "同步检验报告,病案号:" + inpatientNo + ",住院次数:" + times + "," + item.getRepId() + " - " + item.getPidComName() + " 转换出错了!";
log.error(msg, e);
}
@ -209,6 +211,20 @@ public class WebServiceImpl implements IWebService {
return BeanUtil.fillBeanWithMap(result, new PatientReportResult(), false);
}
public static void main(String[] args) {
String pNo="";
String times="";
String StartDate="";
String EndDate="";
String paramMap =
"<![CDATA[<Request>" +
"<PidInNo>" + pNo + "</PidInNo>"
+ "<PidAddmissTimes>" + times + "</PidAddmissTimes>"
+ "<StartDate>" + StartDate + "</StartDate>"
+ "<EndDate>" + EndDate + "</EndDate>"
+ "</Request>]]>";
System.out.println(paramMap);
}
private PatientListResult getCommonResult(String pNo, String times, String StartDate, String EndDate) {
String paramMap =

@ -7,7 +7,9 @@ import sun.misc.BASE64Decoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -21,7 +23,7 @@ public class PDFFileUtils {
* @param rootPath
* @param repId
*/
public static synchronized List<ScanAssort> base64StringToPDF(String base64Content, String rootPath, String repId,String fileTitle,int index) throws IOException {
public static List<ScanAssort> base64StringToPDF(String base64Content, String rootPath, String repId,String fileTitle,int index) throws IOException {
BASE64Decoder decoder = new BASE64Decoder();
List<ScanAssort> addScanList = new ArrayList<>();
PDDocument document =null ;

Loading…
Cancel
Save