From 618ad4448660856867fda2eee113f80613eedb61 Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Tue, 23 Sep 2025 11:25:21 +0800 Subject: [PATCH] =?UTF-8?q?imp:=20=E4=BD=BF=E7=94=A8=E5=A4=9A=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E8=BD=AC=E6=8D=A2base64=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/job/GzFirstLabReportSyncJob.java | 5 ++-- .../docus/demo/service/WebServiceImpl.java | 30 ++++++++++++++----- .../com/docus/demo/utils/PDFFileUtils.java | 6 ++-- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/docus/demo/job/GzFirstLabReportSyncJob.java b/src/main/java/com/docus/demo/job/GzFirstLabReportSyncJob.java index 3f091f3..81d3bd8 100644 --- a/src/main/java/com/docus/demo/job/GzFirstLabReportSyncJob.java +++ b/src/main/java/com/docus/demo/job/GzFirstLabReportSyncJob.java @@ -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()); diff --git a/src/main/java/com/docus/demo/service/WebServiceImpl.java b/src/main/java/com/docus/demo/service/WebServiceImpl.java index 5c63ae9..47a1cb9 100644 --- a/src/main/java/com/docus/demo/service/WebServiceImpl.java +++ b/src/main/java/com/docus/demo/service/WebServiceImpl.java @@ -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) { @@ -124,7 +124,7 @@ public class WebServiceImpl implements IWebService { log.info("同步检验报告跳过同步,病案号:{},住院次数:{} 已经存在 {} 份检验报告", inpatientNo, times, size); return; } - basicMapper.addLabSync(patientId,0); + basicMapper.addLabSync(patientId, 0); //获取所有的报告列表 PatientListResult patientListResult = getCommonResult(inpatientNo, times, startDate, endDate); if (patientListResult == null) { @@ -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> 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); } @@ -186,9 +188,9 @@ public class WebServiceImpl implements IWebService { //数据写入到3.0 if (ObjectUtil.isNotEmpty(scanAssortList)) { - log.info("同步检验报告,病案号:{},住院次数:{},同步 {} 份文件。", inpatientNo, times,scanAssortList.size() ); + log.info("同步检验报告,病案号:{},住院次数:{},同步 {} 份文件。", inpatientNo, times, scanAssortList.size()); scanAssortMapper.insertOrUpdateBatch(scanAssortList); - basicMapper.addLabSync(patientId,1); + basicMapper.addLabSync(patientId, 1); } } @@ -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 = + "" + + "" + pNo + "" + + "" + times + "" + + "" + StartDate + "" + + "" + EndDate + "" + + "]]>"; + System.out.println(paramMap); + } private PatientListResult getCommonResult(String pNo, String times, String StartDate, String EndDate) { String paramMap = diff --git a/src/main/java/com/docus/demo/utils/PDFFileUtils.java b/src/main/java/com/docus/demo/utils/PDFFileUtils.java index 8d87609..e0dc98a 100644 --- a/src/main/java/com/docus/demo/utils/PDFFileUtils.java +++ b/src/main/java/com/docus/demo/utils/PDFFileUtils.java @@ -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 base64StringToPDF(String base64Content, String rootPath, String repId,String fileTitle,int index) throws IOException { + public static List base64StringToPDF(String base64Content, String rootPath, String repId,String fileTitle,int index) throws IOException { BASE64Decoder decoder = new BASE64Decoder(); List addScanList = new ArrayList<>(); PDDocument document =null ;