From 3502c0c21571790d550b9dc960e45466be37cd54 Mon Sep 17 00:00:00 2001 From: wzqgit <568275241@qq.com> Date: Mon, 17 May 2021 21:08:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=B6=85=E5=A3=B0=E7=97=85?= =?UTF-8?q?=E7=90=86=E5=BF=83=E7=94=B5=E5=88=9D=E5=AE=A1=E4=B8=8D=E6=8B=A6?= =?UTF-8?q?=E6=88=AA=20=E6=96=B0=E5=A2=9E=E6=A3=80=E9=AA=8C=E5=A4=96?= =?UTF-8?q?=E9=80=81=E6=8A=A5=E5=91=8A=E8=A7=A3=E6=9E=90=205/17?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ann/service/impl/QueueService.java | 28 ++++++++++ src/main/java/com/ann/utils/PdfUtils.java | 51 +++++++++++++++++-- 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/ann/service/impl/QueueService.java b/src/main/java/com/ann/service/impl/QueueService.java index 78751e9..38041c5 100644 --- a/src/main/java/com/ann/service/impl/QueueService.java +++ b/src/main/java/com/ann/service/impl/QueueService.java @@ -72,10 +72,32 @@ public class QueueService { } /**2021-1-26 等lis程序升级 去掉*/ + /**2021-4-25 等超声补传完 去掉*/ + if (Objects.equals(messageDto.getType(), AliasName.ULTRASONIC_REPORT) && archiveMaster.getArchiveState().equals("已归档")){ + messageSubordinate.setStatus(3); + messageSubordinateService.save(messageSubordinate); + continue; + } + /**2021-4-25 等超声补传完 去掉*/ + + /**2021-4-25 等心电图补传完 去掉*/ + if (Objects.equals(messageDto.getType(), AliasName.EKG_REPORT) && archiveMaster.getArchiveState().equals("已归档")){ + messageSubordinate.setStatus(3); + messageSubordinateService.save(messageSubordinate); + continue; + } + /**2021-4-25 等心电图补传完 去掉*/ + if ( !Objects.equals(messageDto.getType(), AliasName.PATHOLOGY_REPORT) /**2021-1-26 等lis程序升级 去掉*/ && !Objects.equals(messageDto.getType(), AliasName.INSPECTION_REPORT) /**2021-1-26 等lis程序升级 去掉*/ + /**2021-4-25 等超声补传完 去掉*/ + && !Objects.equals(messageDto.getType(), AliasName.ULTRASONIC_REPORT) + /**2021-4-25 等超声补传完 去掉*/ + /**2021-4-25 等心电图补传完 去掉*/ + && !Objects.equals(messageDto.getType(), AliasName.EKG_REPORT) + /**2021-4-25 等心电图补传完 去掉*/ && (archiveMaster.getArchiveState().equals("初审") || archiveMaster.getArchiveState().equals("已归档")) ){ messageSubordinate.setStatus(3); @@ -224,6 +246,12 @@ public class QueueService { pdfPath = PdfUtils.imagesToPdf(imageFile, pdfFile); } } + + //金域外送报告解析 2021-05-06 + if (Objects.equals(messageDto.getType(), AliasName.INSPECTION_REPORT)){ + PdfUtils.base64StringToPDF(address,pdfFile.getAbsolutePath()); + pdfPath=pdfFile.getAbsolutePath(); + } } } //存入pdf地址 diff --git a/src/main/java/com/ann/utils/PdfUtils.java b/src/main/java/com/ann/utils/PdfUtils.java index ec4994a..3d35a6d 100644 --- a/src/main/java/com/ann/utils/PdfUtils.java +++ b/src/main/java/com/ann/utils/PdfUtils.java @@ -9,11 +9,10 @@ import com.itextpdf.text.pdf.PdfWriter; import org.apache.commons.net.ftp.FTPClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import sun.misc.BASE64Decoder; import sun.net.ftp.FtpClient; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; +import java.io.*; import java.time.LocalDate; /** @@ -115,5 +114,51 @@ public class PdfUtils { return fileName; } + /** + * 将base64编码转换成PDF + * @param base64String + * 1.使用BASE64Decoder对编码的字符串解码成字节数组 + * 2.使用底层输入流ByteArrayInputStream对象从字节数组中获取数据; + * 3.建立从底层输入流中读取数据的BufferedInputStream缓冲输出流对象; + * 4.使用BufferedOutputStream和FileOutputSteam输出数据到指定的文件中 + */ + public static void base64StringToPDF(String base64String, String pdfPath/*File file*/){ + File file = new File(pdfPath);// 将原来参数修改为字符串 + BASE64Decoder decoder = new BASE64Decoder(); + BufferedInputStream bin = null; + FileOutputStream fout = null; + BufferedOutputStream bout = null; + try { + //将base64编码的字符串解码成字节数组 + byte[] bytes = decoder.decodeBuffer(base64String); + //创建一个将bytes作为其缓冲区的ByteArrayInputStream对象 + ByteArrayInputStream bais = new ByteArrayInputStream(bytes); + //创建从底层输入流中读取数据的缓冲输入流对象 + bin = new BufferedInputStream(bais); + //创建到指定文件的输出流 + fout = new FileOutputStream(file); + //为文件输出流对接缓冲输出流对象 + bout = new BufferedOutputStream(fout); + + byte[] buffers = new byte[1024]; + int len = bin.read(buffers); + while(len != -1){ + bout.write(buffers, 0, len); + len = bin.read(buffers); + } + //刷新此输出流并强制写出所有缓冲的输出字节,必须这行代码,否则有可能有问题 + bout.flush(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + bout.close(); + fout.close(); + bin.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } }