From 02c010fde33c467e3192f545a38ebf375121a509 Mon Sep 17 00:00:00 2001
From: zhaowenxuan <chacca165@163.com>
Date: 星期一, 22 七月 2024 10:30:42 +0800
Subject: [PATCH] 非化验项目以以及检查增加签名图片 检查因编码不能匹配暂注

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java |  204 ++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 160 insertions(+), 44 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
index 98de276..c9518ba 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -2,14 +2,13 @@
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.itextpdf.text.*;
 import com.itextpdf.text.pdf.*;
 import com.itextpdf.text.pdf.draw.LineSeparator;
 import com.ltkj.common.core.domain.AjaxResult;
+import com.ltkj.common.core.domain.entity.SysUser;
 import com.ltkj.common.utils.DateUtils;
 import com.ltkj.framework.config.MatchUtils;
 import com.ltkj.hosp.domain.*;
@@ -75,10 +74,6 @@
     private DictUserInfoMapper dictUserInfoMapper;
     @Autowired
     private ISysConfigService sysConfigService;
-
-//    private static final
-    // TODO PDF鎵�鏈夊尰甯堝悕瀛楁樉绀� 鏍规嵁閰嶇疆is_report_pdf_use_ysqm鍐冲畾鏄惁浣跨敤绛惧悕鍥剧墖
-    // TODO 鏈夌鍚嶅浘鐗囧垯浣跨敤绛惧悕鍥剧墖 娌℃湁鍒欎娇鐢ㄦ枃瀛楁樉绀�
 
     private List<Map<String, Object>> makePDFInfo(HashMap<String, Object> map, AjaxResult ajaxResult, String key) {
         List<Map<String, Object>> data = null;
@@ -202,6 +197,13 @@
         List<LtkjGetexamreportinfo> list = ltkjGetexamreportinfoService.list(lambdaQueryWrapper);
 //        List<LtkjGetexamreportinfo> list = ltkjGetexamreportinfoService.list();
         List<ByteArrayOutputStream> jianchas = new ArrayList<>();
+        Paragraph elements = new Paragraph();
+        elements.setLeading(5f);
+        elements.setSpacingBefore(10f);
+        elements.setSpacingAfter(10f);
+        elements.setAlignment(Element.ALIGN_RIGHT);
+        Phrase phrase = new Phrase();
+        Font doctorFonts = PdfUtils.setFont(9);
         for (LtkjGetexamreportinfo getexamreportinfo : list) {
             String xm = getexamreportinfo.getHzxm();
             String xb = getexamreportinfo.getHzxb().equals("2") ? "濂�" : "鐢�";
@@ -223,13 +225,79 @@
             String sqrxm = getexamreportinfo.getSqrxm();
             String zyh = "";
             String ch = "";
-            String footer = "鐢宠浜猴細" + sqrxm + "     瀹℃牳鍖诲笀锛�" + shysqm + "     鍖诲笀绛惧悕锛�" + bgysqm;
-            ByteArrayOutputStream outputStream = makeJcPDFByteArrayStream(xm, xb, nl, jcks, zyh, ch, sjks, jcsb, jch, jcxm, ms, ts, null, footer);
+            String sqrbh = getexamreportinfo.getSqrbh();
+            String shysbh = getexamreportinfo.getShysbh();
+            String bgysbh = getexamreportinfo.getBgysbh();
+            String jcysqm = getexamreportinfo.getJcysqm();
+            String jcysbh = getexamreportinfo.getJcysbh();
+            StringBuilder builder;
+            String footer;
+            // 妫�鏌ヨ繑鍥炵殑鍖诲笀缂栫爜涓嶅睘浜巋is鍖诲笀id 鏆傛敞閲�
+//            String key = sysConfigService.selectConfigByKey("is_report_pdf_use_ysqm");
+//            if (key.equals("Y")){
+//                footer = null;
+//                if (null != sqrbh && StrUtil.isNotBlank(sqrbh)){
+//                    makeYiShiInfoLine(phrase, doctorFonts, sqrxm, sqrbh,"鐢宠浜猴細");
+//                }
+//                if (null != jcysbh && StrUtil.isNotBlank(jcysbh)){
+//                    makeYiShiInfoLine(phrase, doctorFonts, jcysqm, jcysbh,"     妫�鏌ュ尰甯堬細");
+//                }
+//                if (null != shysbh && StrUtil.isNotBlank(shysbh)){
+//                    makeYiShiInfoLine(phrase, doctorFonts, shysqm, shysbh,"     瀹℃牳鍖诲笀锛�");
+//                }
+//                if (null != bgysbh && StrUtil.isNotBlank(bgysbh)){
+//                    makeYiShiInfoLine(phrase, doctorFonts, bgysqm, bgysbh,"     鎶ュ憡鍖诲笀锛�");
+//                }
+//            }else {
+                builder = new StringBuilder();
+                if (null != sqrxm && StrUtil.isNotBlank(sqrxm)){
+                    builder.append("鐢宠浜猴細").append(sqrxm);
+                }
+                if (null != jcysqm && StrUtil.isNotBlank(jcysqm)){
+                    builder.append("     妫�鏌ュ尰甯堬細").append(jcysqm);
+                }
+                if (null != shysqm && StrUtil.isNotBlank(shysqm)){
+                    builder.append("     瀹℃牳鍖诲笀锛�").append(shysqm);
+                }
+                if (null != bgysqm && StrUtil.isNotBlank(bgysqm)){
+                    builder.append("     鎶ュ憡鍖诲笀锛�").append(bgysqm);
+                }
+                footer = builder.toString().trim();
+//            }
+//            elements.add(phrase);
+            ByteArrayOutputStream outputStream = makeJcPDFByteArrayStream(xm, xb, nl, jcks, zyh, ch, sjks, jcsb, jch, jcxm, ms, ts, null, footer,elements);
             if (outputStream == null)
                 throw new Exception();
             jianchas.add(outputStream);
         }
         return jianchas;
+    }
+
+    /**
+     * 鍖诲笀淇℃伅琛�
+     * @param phrase
+     * @param doctorFonts
+     * @param sqrxm
+     * @param sqrbh
+     * @throws BadElementException
+     */
+    private void makeYiShiInfoLine(Phrase phrase, Font doctorFonts, String sqrxm, String sqrbh,String title) throws BadElementException {
+        String qmImg = dictUserInfoMapper.selectQmImgInnerJoinUserByHisDictCode(sqrbh);
+//        String qmImg = dictUserInfoMapper.selectQmImgInnerJoinUserByUserId(sqrbh);
+        if (null != qmImg && StrUtil.isNotBlank(qmImg)) {
+            byte[] decode = Base64.getDecoder().decode(qmImg);
+            Image image = null;
+            try {
+                image = Image.getInstance(decode);
+                image.scaleToFit(60, 25);
+                phrase.add(new Chunk(title,doctorFonts));
+                phrase.add(new Chunk(image,0,-10,true));
+            } catch (IOException e) {
+                phrase.add(new Chunk(title+sqrxm, doctorFonts));
+            }
+        }else {
+            phrase.add(new Chunk(title+sqrxm, doctorFonts));
+        }
     }
 
     /**
@@ -259,7 +327,7 @@
      * @param map
      * @throws DocumentException
      */
-    private void makeHisJianYanTable(Document document1, HashMap<String, Object> map) throws DocumentException, IOException {
+    private void makeHisJianYanTable(Document document1, HashMap<String, Object> map) throws DocumentException {
         if (!map.isEmpty()) {
             String[] titles = new String[]{"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅", "鍙傝�冭寖鍥�"};
             float[] titlesWidth = new float[]{120, 120, 120, 120};
@@ -286,11 +354,15 @@
                             String[] split = s.split("\\|");
                             String qmImg = dictUserInfoMapper.selectQmImgInnerJoinUserByHisDictCode(split[1]);
                             if (null != qmImg && StrUtil.isNotBlank(qmImg)) {
-                                ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(Base64.getDecoder().decode(qmImg));
                                 byte[] decode = Base64.getDecoder().decode(qmImg);
-                                Image image = Image.getInstance(decode);
-                                image.scaleToFit(60, 25);
-                                phrase.add(new Chunk(image,0,-10,true));
+                                Image image = null;
+                                try {
+                                    image = Image.getInstance(decode);
+                                    image.scaleToFit(60, 25);
+                                    phrase.add(new Chunk(image,0,-10,true));
+                                } catch (IOException e) {
+                                    phrase.add(new Chunk(split[0].trim(),doctorFonts));
+                                }
                             } else {
                                 phrase.add(new Chunk(split[0].trim(),doctorFonts));
                             }
@@ -373,20 +445,7 @@
                         document1.add(pp);
                     }
                     //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
-                    if (null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) {
-                        //涓绘鍖诲笀
-                        String doctorName = "涓绘鍖诲笀锛�" + userService.getById(entry.getKey().getDoctorName()).getNickName();
-                        Font doctorFonts = PdfUtils.setFont(9);
-                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
-                        df.setAlignment(Element.ALIGN_RIGHT);
-                        document1.add(df);
-                    } else {
-                        String doctorName = "涓绘鍖诲笀锛�" + "鏃�";
-                        Font doctorFonts = PdfUtils.setFont(9);
-                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
-                        df.setAlignment(Element.ALIGN_RIGHT);
-                        document1.add(df);
-                    }
+                    zhuJianYiShi(document1, entry);
                     //鍒嗗壊绾�
                     LineSeparator objectName = new LineSeparator();
                     document1.add(objectName);
@@ -435,25 +494,69 @@
                         document1.add(pp);
                     }
                     //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
-                    if (null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) {
-                        //涓绘鍖诲笀
-                        String doctorName = "涓绘鍖诲笀锛�" + userService.getById(entry.getKey().getDoctorName()).getNickName();
-                        Font doctorFonts = PdfUtils.setFont(9);
-                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
-                        df.setAlignment(Element.ALIGN_RIGHT);
-                        document1.add(df);
-                    } else {
-                        String doctorName = "涓绘鍖诲笀锛�" + "鏃�";
-                        Font doctorFonts = PdfUtils.setFont(9);
-                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
-                        df.setAlignment(Element.ALIGN_RIGHT);
-                        document1.add(df);
-                    }
+                    zhuJianYiShi(document1, entry);
                     //鍒嗗壊绾�
                     LineSeparator objectName = new LineSeparator();
                     document1.add(objectName);
                 }
             }
+        }
+    }
+
+    /**
+     * 涓昏鍖诲笀琛屾樉绀鸿缃�
+     * @param document1
+     * @param entry
+     * @throws DocumentException
+     */
+    private void zhuJianYiShi(Document document1, Map.Entry<TjOrderRemark, List<TjPdfVO>> entry) throws DocumentException {
+        if (null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) {
+            //涓绘鍖诲笀
+            String key = sysConfigService.selectConfigByKey("is_report_pdf_use_ysqm");
+            SysUser sysUser = userService.getById(entry.getKey().getDoctorName());
+            Font doctorFonts = PdfUtils.setFont(9);
+            if (key.equals("Y")){
+                String qmImg = dictUserInfoMapper.selectQmImgInnerJoinUserByUserId(String.valueOf(sysUser.getUserId()));
+                if (null != qmImg && StrUtil.isNotBlank(qmImg)) {
+                    Paragraph elements = new Paragraph();
+                    elements.setLeading(5f);
+                    elements.setSpacingBefore(10f);
+                    elements.setSpacingAfter(10f);
+                    elements.setAlignment(Element.ALIGN_RIGHT);
+                    Phrase phrase = new Phrase();
+                    phrase.add(new Chunk("涓绘鍖诲笀锛�",doctorFonts));
+                    byte[] decode = Base64.getDecoder().decode(qmImg);
+                    Image image = null;
+                    try {
+                        image = Image.getInstance(decode);
+                        image.scaleToFit(60, 25);
+                        phrase.add(new Chunk(image,0,-10,true));
+                        elements.add(phrase);
+                        document1.add(elements);
+                    } catch (IOException e) {
+                        String doctorName = "涓绘鍖诲笀锛�" + sysUser.getNickName();
+                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
+                        df.setAlignment(Element.ALIGN_RIGHT);
+                        document1.add(df);
+                    }
+                }else {
+                    String doctorName = "涓绘鍖诲笀锛�" + sysUser.getNickName();
+                    Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
+                    df.setAlignment(Element.ALIGN_RIGHT);
+                    document1.add(df);
+                }
+            }else {
+                String doctorName = "涓绘鍖诲笀锛�" + sysUser.getNickName();
+                Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
+                df.setAlignment(Element.ALIGN_RIGHT);
+                document1.add(df);
+            }
+        } else {
+            String doctorName = "涓绘鍖诲笀锛�" + "鏃�";
+            Font doctorFonts = PdfUtils.setFont(9);
+            Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
+            df.setAlignment(Element.ALIGN_RIGHT);
+            document1.add(df);
         }
     }
 
@@ -870,12 +973,17 @@
      * @param footer
      * @return bytearrayoutputstream
      */
-    public static ByteArrayOutputStream makeJcPDFByteArrayStream(String xm, String xb, String nl, String jcks, String zyh, String ch, String sjks, String jcsb, String jch, String jcxm, String ms, String ts, File[] files, String footer) {
+    public static ByteArrayOutputStream makeJcPDFByteArrayStream(String xm, String xb, String nl, String jcks, String zyh, String ch, String sjks, String jcsb, String jch
+            , String jcxm, String ms, String ts, File[] files, String footer,Paragraph elements) {
         try {
             Document document = new Document(PageSize.A4);
             ByteArrayOutputStream baos = new ByteArrayOutputStream();
             PdfWriter writer = PdfWriter.getInstance(document, baos);
-            writer.setPageEvent(new Footer(footer));
+            if (footer != null) {
+                writer.setPageEvent(new Footer(footer));
+            } else {
+                writer.setPageEvent(new Footer(elements));
+            }
             document.open();
             document.setMargins(70, 70, 40, 40);
 
@@ -1146,9 +1254,14 @@
     static class Footer extends PdfPageEventHelper {
         private String footerText;
         private Font footerFont = PdfUtils.setFont(10);
+        private Paragraph paragraph;
 
         public Footer(String footerText) {
             this.footerText = footerText;
+        }
+
+        public Footer(Paragraph paragraph){
+            this.paragraph = paragraph;
         }
 
         @Override
@@ -1158,7 +1271,10 @@
             footer.setWidthPercentage(100);
             footer.getDefaultCell().setBorder(Rectangle.NO_BORDER);
             footer.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
-            footer.addCell(new Phrase(footerText, footerFont));
+            if (footerText != null)
+                footer.addCell(new Phrase(footerText, footerFont));
+            if (paragraph != null)
+                footer.addCell(paragraph);
             footer.writeSelectedRows(0, -1, 36, 50, writer.getDirectContent());
         }
     }

--
Gitblit v1.8.0