From 0ded4eb80a80ffd4f29aab8a7b6c02a269d72d2c Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期五, 13 十二月 2024 17:40:28 +0800
Subject: [PATCH] zjh202412013

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java | 1963 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 1,823 insertions(+), 140 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 fbeaef0..c019590 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
@@ -18,10 +18,14 @@
 import com.ltkj.framework.config.MatchUtils;
 import com.ltkj.hosp.domain.*;
 import com.ltkj.hosp.mapper.DictUserInfoMapper;
+import com.ltkj.hosp.mapper.TjOrderDetailMapper;
+import com.ltkj.hosp.mapper.TjOrderRemarkMapper;
+import com.ltkj.hosp.mapper.TjRulesMapper;
 import com.ltkj.hosp.service.*;
 import com.ltkj.hosp.sqlDomain.LtkjExamJcbgd;
 import com.ltkj.hosp.sqlDomain.LtkjHybgd;
 import com.ltkj.hosp.sqlDomain.LtkjHysqd;
+import com.ltkj.hosp.vodomain.CsProVo;
 import com.ltkj.system.service.ISysConfigService;
 import com.ltkj.system.service.ISysDictDataService;
 import com.ltkj.system.service.ISysUserService;
@@ -42,7 +46,10 @@
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
+
+import static com.ltkj.common.utils.pdfutils.PdfUtils.createTable;
 
 /**
  * 妫�鏌� 妫�楠屾姤鍛妏df鐢熸垚
@@ -94,6 +101,21 @@
     private IDictHospService dictHospService;
     @Autowired
     private ISysDictDataService sysDictDataService;
+    @Autowired
+    private ITjRulesService tjRulesService;
+    @Autowired
+    private TjRulesMapper tjRulesMapper;
+    @Autowired
+    private TjOrderRemarkMapper tjOrderRemarkMapper;
+    @Autowired
+    private TjOrderDetailMapper tjOrderDetailMapper;
+
+    private Integer pdfPage = 0;
+
+    private static final int DEFAULT_FONT_SIZE = 10;
+    private static final int DEFAULT_LITTLE_TITLE_FONT_SIZE = 11;
+    private static final int DEFAULT_TITLE_FONT_SIZE = 12;
+    private static final int DEFAULT_ZONGJIAN_FONT_SIZE = 15;
 
     private List<Map<String, Object>> makePDFInfo(HashMap<String, Object> map, AjaxResult ajaxResult, String key) {
         List<Map<String, Object>> data = null;
@@ -121,7 +143,8 @@
         String color = sysConfigService.selectConfigByKey("report_title_color");
 //        list.get(0).getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")
         List<SysDictData> sysUserSex = sysDictDataService.list(new LambdaQueryWrapper<SysDictData>().eq(SysDictData::getDictType, "sys_user_sex"));
-        HashMap<String, Object> pdfChangGui = makePDFInfo(tjOrder, customer, tjReportTemplate);
+        HashMap<String, Object> map = makeHisJianYan(tjOrder, customer);
+        HashMap<String, Object> pdfChangGui = makePDFInfo(tjOrder, customer, tjReportTemplate,dictHosp,map);
         if (pdfChangGui == null)
             return AjaxResult.error();
         Document document = (Document) pdfChangGui.get("document");
@@ -143,59 +166,88 @@
                     }
                 }
                 if (StrUtil.isBlank(sex)) sex = "鏈煡";
-                pdfWriter.setPageEvent(new FooterHeaderPageEvent("婢勫悎鐭垮姟灞�涓績鍖婚櫌",customer.getCusName(),tjOrder.getTjNumber(),sex,String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday()))));
+                pdfWriter.setPageEvent(new FooterHeaderPageEvent("婢勫悎鐭垮姟灞�涓績鍖婚櫌",customer.getCusName(),tjOrder.getTjNumber(),sex,String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday())),null));
                 pageSize = pdfWriter.getPageNumber();
             }
         } catch (DocumentException e) {
-            e.printStackTrace();
+            log.error(String.valueOf(e));
             return AjaxResult.error();
         }
         document1.setMargins(70, 70, 40, 40);
         document1.open();
-        // 闈炲寲楠岄」鐩姤鍛�
-        Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
-        notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
-        try {
-            notHuaYanTable(document1, printReport,dictHosp,color);
-        } catch (DocumentException e) {
-            log.error("闈炲寲楠岄」鐩~鍏呰〃鏍煎紓甯�");
-            e.printStackTrace();
-            return AjaxResult.error();
+
+        if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+            // 缁勮浣撴妫�鏌ラ」鐩姤鍛�
+            Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
+            notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
+            try {
+                notHuaYanTable(document1, printReport,dictHosp,color,false);
+            } catch (DocumentException e) {
+                log.error("闈炲寲楠岄」鐩~鍏呰〃鏍煎紓甯�");
+                log.error(String.valueOf(e));
+                return AjaxResult.error();
+            }
+            // 缁勮妫�楠屾暟鎹�
+            makeHisJianYanTable(document1, map,dictHosp,color);
+
+            // 缁勮pacs妫�鏌ユ暟鎹�
+            printReport = new HashMap<>();
+            pacsJianChaData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
+            try {
+                notHuaYanTable(document1, printReport,dictHosp,color,true);
+            } catch (DocumentException e) {
+                log.error("pacs椤圭洰濉厖琛ㄦ牸寮傚父");
+                log.error(String.valueOf(e));
+                return AjaxResult.error();
+            }
+        }else {
+            // 闈炲寲楠岄」鐩姤鍛�
+            Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
+            notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
+            try {
+                notHuaYanTable(document1, printReport,dictHosp,color,true);
+            } catch (DocumentException e) {
+                log.error("闈炲寲楠岄」鐩~鍏呰〃鏍煎紓甯�");
+                log.error(String.valueOf(e));
+                return AjaxResult.error();
+            }
+            // 缁勮妫�楠屾暟鎹�
+            makeHisJianYanTable(document1, map,dictHosp,color);
         }
-        // 缁勮妫�楠屾暟鎹�
-        HashMap<String, Object> map = makeHisJianYan(tjOrder, customer);
-        makeHisJianYanTable(document1, map,dictHosp,color);
-
-
-        List<ByteArrayOutputStream> jianchas =  makeHisJianChaTable(tjOrder);
-//        List<ByteArrayOutputStream> jianchas = makeCcgcHisJianChaTable(tjOrder);
         document1.close();
+
         PdfReader reader = null;
-        try {
-            reader = new PdfReader(byteArrayOutputStream1.toByteArray());
-            int numberOfPages1 = reader.getNumberOfPages();
-            for (int i = 1; i <= numberOfPages1; i++) {
-                PdfImportedPage page = copy.getImportedPage(reader, i);
-                copy.addPage(page);
-            }
-            for (ByteArrayOutputStream jiancha : jianchas) {
-                reader = new PdfReader(jiancha.toByteArray());
-                numberOfPages1 = reader.getNumberOfPages();
-                for (int i = 1; i <= numberOfPages1; i++) {
-                    PdfImportedPage page = copy.getImportedPage(reader, i);
-                    copy.addPage(page);
-                }
-                jiancha.close();
-            }
-            reader.close();
-            byteArrayOutputStream1.close();
-            document.close();
-            copy.close();
-        } catch (IOException e) {
-            log.error("鎷疯礉pdf寮傚父");
-            e.printStackTrace();
-            return AjaxResult.error();
+        reader = new PdfReader(byteArrayOutputStream1.toByteArray());
+        int numberOfPages1 = reader.getNumberOfPages();
+        for (int i = 1; i <= numberOfPages1; i++) {
+            PdfImportedPage page = copy.getImportedPage(reader, i);
+            copy.addPage(page);
         }
+
+        if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+            List<ByteArrayOutputStream> jianchas =  makeHisJianChaTable(tjOrder);
+//        List<ByteArrayOutputStream> jianchas = makeCcgcHisJianChaTable(tjOrder);
+            try {
+                for (ByteArrayOutputStream jiancha : jianchas) {
+                    reader = new PdfReader(jiancha.toByteArray());
+                    numberOfPages1 = reader.getNumberOfPages();
+                    for (int i = 1; i <= numberOfPages1; i++) {
+                        PdfImportedPage page = copy.getImportedPage(reader, i);
+                        copy.addPage(page);
+                    }
+                    jiancha.close();
+                }
+            } catch (IOException e) {
+                log.error("鎷疯礉pdf寮傚父");
+                log.error(String.valueOf(e));
+                return AjaxResult.error();
+            }
+        }
+        reader.close();
+        byteArrayOutputStream1.close();
+        document.close();
+        copy.close();
+
         String outputFileName1 = customer.getCusId() + tjOrder.getTjNumber() + customer.getCusName() + "_鎶ュ憡.pdf";
         try {
             PdfReader pdfReader = new PdfReader(finalOutPut.toByteArray());
@@ -219,10 +271,1261 @@
             pdfReader.close();
             finalOutPut = outputStream;
         } catch (IOException e) {
-            e.printStackTrace();
+            log.error(String.valueOf(e));
             return AjaxResult.error();
         }
         savePDFFile(outputFileName1, tjOrder, customer, finalOutPut);
+        return AjaxResult.success();
+    }
+
+    public AjaxResult hisPDFNew(TjOrder tjOrder, TjCustomer customer, TjReportTemplate tjReportTemplate) throws Exception {
+        pdfPage = 0;
+        DictHosp dictHosp = dictHospService.list().get(0);
+        String color = sysConfigService.selectConfigByKey("report_title_color");
+        List<SysDictData> sysUserSex = sysDictDataService.list(new LambdaQueryWrapper<SysDictData>().eq(SysDictData::getDictType, "sys_user_sex"));
+        // 妫�楠屾暟鎹�
+        HashMap<String, Object> map = makeHisJianYan(tjOrder, customer);
+        String sex = "";
+        if (customer.getCusSex() != null) {
+            for (SysDictData userSex : sysUserSex) {
+                if (userSex.getDictValue().equals(String.valueOf(customer.getCusSex()))) {
+                    sex = userSex.getDictLabel();
+                }
+            }
+        }
+        if (StrUtil.isBlank(sex)) sex = "鏈煡";
+
+
+
+        // 鐢熸垚 document2 骞跺皢鍏跺唴瀹逛繚瀛樺埌 byteArrayOutputStream2 涓�
+        ByteArrayOutputStream byteArrayOutputStream2 = new ByteArrayOutputStream();
+        Document document2 = new Document(PageSize.A4);
+        PdfWriter writer2 = PdfWriter.getInstance(document2, byteArrayOutputStream2);
+
+        writer2.setPageEvent(new FooterHeaderPageEvent(dictHosp.getHospName(), customer.getCusName(), tjOrder.getTjNumber(), sex, String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday())),0));
+
+        document2.setMargins(50, 70, 40, 50);
+        document2.open();
+
+        List<CsProVo> list = tjOrderRemarkService.cSWebGetProByTjNumAndOrderId(tjOrder.getTjNumber(), false);
+
+        Font defaultFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+        Font defaultTitleFont = PdfUtils.setFont(DEFAULT_LITTLE_TITLE_FONT_SIZE);
+        defaultTitleFont.setStyle(Font.BOLD);
+        Paragraph paragraph = PdfUtils.setParagraph(defaultTitleFont, "妫�鏌ョ瀹や笌妫�鏌ラ」鐩�");
+        document2.add(paragraph);
+
+        PdfPTable table = new PdfPTable(new float[]{80, 100, 80, 80});
+        table.setTotalWidth(PageSize.A4.getWidth() - 100);
+        table.setLockedWidth(true);
+        table.setHorizontalAlignment(Element.ALIGN_LEFT);
+        String[] titles = {"绉戝", "浣撴椤圭洰", "妫�鏌ョ姸鎬�", "妫�鏌ユ椂闂�"};
+
+        for (String head : titles) {
+            table.addCell(PdfUtils.createCell(head, defaultFont, Rectangle.BOX, Element.ALIGN_CENTER,5f,5f));
+        }
+        Map<String, List<CsProVo>> listMap = list.stream().collect(Collectors.groupingBy(CsProVo::getDeptName));
+        for (Map.Entry<String, List<CsProVo>> entry : listMap.entrySet()) {
+            String dept = entry.getKey();
+            List<CsProVo> proVos = entry.getValue();
+            PdfPCell deptCell = new PdfPCell();
+            deptCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+            deptCell.setHorizontalAlignment(Element.ALIGN_CENTER);
+            deptCell.setPhrase(new Phrase(dept, defaultFont));
+            deptCell.setPaddingTop(5f);
+            deptCell.setPaddingBottom(5f);
+            deptCell.setRowspan(proVos.size());
+            table.addCell(deptCell);
+            proVos.forEach(proVo -> {
+                table.addCell(PdfUtils.createCell(proVo.getProName(), defaultFont,Rectangle.BOX,Element.ALIGN_CENTER,5f,5f));
+                String tjType = "";
+                switch (proVo.getType()) {
+                    case 0:
+                        tjType = "鏈";
+                        break;
+                    case 1:
+                        tjType = "宸叉";
+                        break;
+                    case 2:
+                        tjType = "寮冩";
+                        break;
+                    case 3:
+                        tjType = "寤舵湡";
+                        break;
+                }
+                table.addCell(PdfUtils.createCell(tjType, defaultFont,Rectangle.BOX,Element.ALIGN_CENTER,5f,5f));
+                String tjTime = "";
+                if (proVo.getQdcreateTime() != null) {
+                    tjTime = new SimpleDateFormat("yyyy-MM-dd").format(proVo.getQdcreateTime());
+                }
+                table.addCell(PdfUtils.createCell(tjTime, defaultFont,Rectangle.BOX,Element.ALIGN_CENTER,5f,5f));
+            });
+        }
+        document2.add(table);
+
+        for (int i = 0; i < 2; i++) {
+            paragraph = PdfUtils.setParagraph(defaultFont, "");
+            document2.add(paragraph);
+        }
+
+
+        //        List<TjOrderRemark> remarks = tjOrderRemarkMapper.getzongjianyishengchakanyichangxiangmu3( tjOrder.getTjNumber());
+        List<TjOrderDetail> orderDetails = tjOrderDetailMapper.getzongjianyishengchakanyichangxiangmu4( tjOrder.getTjNumber());
+//        List<Map<String, Object>> jiancha = new ArrayList<>();
+
+
+
+        paragraph = PdfUtils.setParagraph(defaultTitleFont, "妫�鏌ョ患杩帮細");
+        paragraph.setSpacingBefore(3f);
+        paragraph.setSpacingAfter(2f);
+        document2.add(paragraph);
+
+        int xmXh = 1;
+        for (Map.Entry<Long, List<TjOrderDetail>> entry : orderDetails.stream().collect(Collectors.groupingBy(TjOrderDetail::getProId)).entrySet()) {
+            List<TjOrderDetail> details = entry.getValue();
+            String xmmc = details.get(0).getProName();
+            boolean isXmWrite = false;
+            for (TjOrderDetail detail : details) {
+                if (!isXmWrite) {
+                    paragraph = new Paragraph(xmXh+".  "+xmmc, defaultFont);
+                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                    document2.add(paragraph);
+                    isXmWrite = true;
+                }
+                String result = detail.getProResult();
+                if (StrUtil.isNotBlank(result)) {
+                    int index = 1;
+                    result = result.replaceAll("鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�","");
+                    String[] split = result.split("\n");
+                    StringBuilder builder = new StringBuilder();
+                    for (String s : split) {
+                        if (StrUtil.isBlank(s.replaceAll("\n","").trim())) continue;
+                        builder.append("    (").append(index).append(")").append(s).append("\n");
+                        index++;
+                    }
+                    result = builder.toString();
+                }
+                paragraph = new Paragraph(result, defaultFont);
+                paragraph.setAlignment(Element.ALIGN_LEFT);
+                document2.add(paragraph);
+            }
+            paragraph = PdfUtils.setParagraph(defaultFont, "");
+            paragraph.setLeading(0f);
+            paragraph.setSpacingBefore(0f);
+            paragraph.setSpacingAfter(5f);
+            document2.add(paragraph);
+            xmXh++;
+        }
+
+        for (Map.Entry<String, Object> item : map.entrySet()) {
+            String xmmc = item.getKey();
+            HashMap<String, Object> entryValue = (HashMap<String, Object>) item.getValue();
+            ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
+            boolean isXmWrite = false;
+            int index = 1;
+            for (List<String> i : lists) {
+                if (i.contains("鈫�") || i.contains("鈫�")) {
+                    if (!isXmWrite) {
+                        paragraph = new Paragraph(xmXh+".  "+xmmc,defaultFont);
+                        paragraph.setAlignment(Element.ALIGN_LEFT);
+                        document2.add(paragraph);
+                        isXmWrite = true;
+                    }
+                    String content = "    ("+index + ") " + i.get(0) + "锛�" + i.get(1) + "  " + i.get(3) + "  " + i.get(4) + "      " + i.get(2);
+                    paragraph = new Paragraph(content,defaultFont);
+                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                    document2.add(paragraph);
+                    index++;
+                }
+            }
+            paragraph = PdfUtils.setParagraph(defaultFont, "");
+            paragraph.setSpacingBefore(0f);
+            paragraph.setSpacingAfter(5f);
+            document2.add(paragraph);
+            xmXh++;
+        }
+
+
+
+
+
+
+        paragraph = PdfUtils.setParagraph(defaultFont, "");
+        paragraph.setLeading(0f);
+        paragraph.setSpacingBefore(10f);
+        paragraph.setSpacingAfter(10f);
+        document2.add(paragraph);
+
+
+
+
+
+
+        paragraph = PdfUtils.setParagraph(defaultTitleFont, "鍖荤敓寤鸿锛�");
+        paragraph.setSpacingBefore(3f);
+        paragraph.setSpacingAfter(2f);
+        document2.add(paragraph);
+        xmXh = 0;
+        for (Map.Entry<String, Object> item : map.entrySet()) {
+            String xmmc = item.getKey();
+            HashMap<String, Object> entryValue = (HashMap<String, Object>) item.getValue();
+            ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
+            boolean isXmWrite = false;
+            int index = 1;
+            for (List<String> i : lists) {
+                if (i.contains("鈫�") || i.contains("鈫�")) {
+                    if (!isXmWrite) {
+                        xmXh++;
+                        paragraph = new Paragraph("銆�"+xmXh+"."+xmmc+"銆�",defaultFont);
+                        paragraph.setAlignment(Element.ALIGN_LEFT);
+                        document2.add(paragraph);
+                        isXmWrite = true;
+                    }
+                    String content = "    ("+index + ")" + i.get(0) + "锛�" + i.get(1) + "  " + i.get(3) + "  " + i.get(4) + "  " + i.get(2);
+                    paragraph = new Paragraph(content,defaultFont);
+                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                    document2.add(paragraph);
+                    // 绗叚浣嶆槸lis椤圭洰id
+//                    LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
+//                    wrapper.eq(TjProject::getLisXmbm,i.get(5));
+//                    TjProject project = projectService.getOne(wrapper);
+//                    if (project != null) {
+//                        LambdaQueryWrapper<TjRules> queryWrapper = new LambdaQueryWrapper<>();
+//                        queryWrapper.eq(TjRules::getProId,project.getProId());
+//                        List<TjRules> rules = tjRulesService.list(queryWrapper);
+//                        if (!rules.isEmpty()){
+//
+//                        }
+                    String str = "    ";
+                        List<Map<String, Object>> maps = tjRulesService.getyichangxiangmujianyiguize(i.get(5),"",i.get(2),tjOrder.getTjNumber());
+                        if (!maps.isEmpty()){
+                            for (Map<String, Object> objectMap : maps) {
+//                                paragraph = new Paragraph(str+"寤鸿鏍囬",defaultFont);
+//                                paragraph.setAlignment(Element.ALIGN_LEFT);
+//                                document2.add(paragraph);
+//
+//                                paragraph = new Paragraph(str+objectMap.get("bt").toString(),defaultFont);
+//                                paragraph.setAlignment(Element.ALIGN_LEFT);
+//                                document2.add(paragraph);
+//
+//                                paragraph = new Paragraph(str+"寤鸿鍐呭",defaultFont);
+//                                paragraph.setAlignment(Element.ALIGN_LEFT);
+//                                document2.add(paragraph);
+//
+//                                paragraph = new Paragraph(str+objectMap.get("nr").toString(),defaultFont);
+//                                paragraph.setAlignment(Element.ALIGN_LEFT);
+//                                document2.add(paragraph);
+
+                                paragraph = new Paragraph(str+objectMap.get("bt").toString().trim()+objectMap.get("nr").toString().trim(),defaultFont);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                document2.add(paragraph);
+                            }
+                            paragraph = PdfUtils.setParagraph(defaultFont, "");
+                            paragraph.setSpacingBefore(2f);
+                            paragraph.setSpacingAfter(5f);
+                            document2.add(paragraph);
+                        }
+//                    }
+                    index++;
+                }
+            }
+            paragraph = PdfUtils.setParagraph(defaultFont, "");
+            paragraph.setSpacingBefore(0f);
+            paragraph.setSpacingAfter(5f);
+            document2.add(paragraph);
+        }
+
+
+        for (Map.Entry<Long, List<TjOrderDetail>> entry : orderDetails.stream().collect(Collectors.groupingBy(TjOrderDetail::getProId)).entrySet()) {
+            List<TjOrderDetail> details = entry.getValue();
+            String xmmc = details.get(0).getProName();
+            boolean isXmWrite = false;
+            int index = 1;
+            for (TjOrderDetail detail : details) {
+                if (!isXmWrite) {
+                    xmXh++;
+                    paragraph = new Paragraph("銆�"+xmXh+"."+xmmc+"銆�", defaultFont);
+                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                    document2.add(paragraph);
+                    isXmWrite = true;
+                }
+                String result = detail.getProResult();
+                if (StrUtil.isNotBlank(result)) {
+//                    result = result.replaceAll(" ","").replaceAll("\t","");
+//                    result = result.replaceAll("\n鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�", "");
+//                    result = "\n      " + result.replaceAll("\n", "\n      ");
+                    int index1 = 1;
+                    String[] split = result.split("\n");
+                    boolean contains = result.contains("鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�");
+                    StringBuilder builder = new StringBuilder();
+                    for (String s : split) {
+                        if (StrUtil.isBlank(s.replaceAll("\n","").trim())) continue;
+                        builder.append("    (").append(index1).append(")").append(s).append("\n");
+                        index1++;
+                    }
+                    if (!contains) builder.append("    (").append(index1).append(")").append("鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�");
+                    else builder.substring(0,builder.length() - 1);
+                    result = builder.toString();
+                }
+//                String content = "  (" + index + ") " + detail.getProName() + "锛�" + result;
+//                content = content.replaceAll("[\\n\\r]+$", "");
+//                content = content.replaceAll("\\s+$", "");
+//                paragraph = new Paragraph(content, defaultFont);
+                paragraph = new Paragraph(result, defaultFont);
+                paragraph.setAlignment(Element.ALIGN_LEFT);
+                document2.add(paragraph);
+                String str = "     ";
+                List<Map<String, Object>> maps = tjRulesService.getyichangxiangmujianyiguize(entry.getKey().toString(),"","",tjOrder.getTjNumber());
+                for (Map<String, Object> objectMap : maps) {
+                    paragraph = new Paragraph(str+objectMap.get("bt").toString()+objectMap.get("nr").toString(),defaultFont);
+                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                    document2.add(paragraph);
+                }
+                index++;
+                paragraph = PdfUtils.setParagraph(defaultFont, "");
+                paragraph.setLeading(0f);
+                paragraph.setSpacingBefore(0f);
+                paragraph.setSpacingAfter(5f);
+                document2.add(paragraph);
+            }
+        }
+
+
+
+
+
+        for (int i = 0; i < 1; i++) {
+            paragraph = PdfUtils.setParagraph(defaultFont, "");
+            document2.add(paragraph);
+        }
+
+        paragraph = PdfUtils.setParagraph(defaultTitleFont, "鎬绘鍖荤敓寤鸿锛�");
+        document2.add(paragraph);
+        if (tjOrder.getCheckAdvice() == null) {
+            paragraph = PdfUtils.setParagraph(defaultFont, "鏃�");
+            document2.add(paragraph);
+        } else {
+            paragraph = PdfUtils.setParagraph(defaultFont, tjOrder.getCheckAdvice());
+            document2.add(paragraph);
+        }
+
+
+        Paragraph paragraphNone = new Paragraph("", defaultFont);
+        paragraphNone.setAlignment(Element.ALIGN_LEFT);
+        //琛岄棿璺�
+        paragraphNone.setLeading(5f);
+        paragraphNone.setSpacingBefore(10f);
+        paragraphNone.setSpacingAfter(10f);
+        document2.add(paragraphNone);
+        paragraphNone = new Paragraph("", defaultFont);
+        paragraphNone.setAlignment(Element.ALIGN_LEFT);
+        //琛岄棿璺�
+        paragraphNone.setLeading(5f);
+        paragraphNone.setSpacingBefore(10f);
+        paragraphNone.setSpacingAfter(10f);
+        document2.add(paragraphNone);
+
+
+        PdfPTable tableQz = new PdfPTable(new float[]{100f,100f,50f});
+        tableQz.setTotalWidth(PageSize.A4.getWidth() - 100);
+        tableQz.setLockedWidth(true);
+        tableQz.setHorizontalAlignment(Element.ALIGN_LEFT);
+        tableQz.getDefaultCell().setBorder(0);
+        tableQz.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
+
+        Font zongJianFont = PdfUtils.setFont(DEFAULT_ZONGJIAN_FONT_SIZE);
+        Font zongJianTitleFont = PdfUtils.setFont(DEFAULT_ZONGJIAN_FONT_SIZE);
+        zongJianTitleFont.setStyle(Font.BOLD);
+
+        for (int i = 0; i < 3; i++) {
+            PdfPCell cell = new PdfPCell();
+            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+            cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+            cell.setPhrase(new Phrase("", defaultFont));
+            cell.setBorder(Rectangle.NO_BORDER);
+            tableQz.addCell(cell);
+        }
+
+
+        PdfPCell cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+        cell.setPhrase(new Phrase("", defaultFont));
+        cell.setRowspan(3);
+        tableQz.addCell(cell);
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+        cell.setPhrase(new Phrase("浣撴鍗曚綅鐩栫珷:", zongJianTitleFont));
+
+        tableQz.addCell(cell);
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+        cell.setPhrase(new Phrase("", zongJianFont));
+        tableQz.addCell(cell);
+
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+        cell.setPhrase(new Phrase("鎬绘鍖诲笀:", zongJianTitleFont));
+        tableQz.addCell(cell);
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+//        cell.setPhrase(new Phrase("浣曞皬濠�", zongJianFont));
+        cell.setPhrase(new Phrase(sysConfigService.selectConfigByKey("pdf_report_zongjianysname"), zongJianFont));
+        tableQz.addCell(cell);
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+        cell.setPhrase(new Phrase("鎬绘鏃ユ湡:", zongJianTitleFont));
+        tableQz.addCell(cell);
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+        cell.setPhrase(new Phrase(new SimpleDateFormat("yyyy-MM-dd").format(tjOrder.getCheckTime()), zongJianFont));
+        tableQz.addCell(cell);
+
+        document2.add(tableQz);
+
+        document2.close();
+
+
+
+        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+        Document document = new Document(PageSize.A4);
+        PdfWriter pdfWriter = null;
+//        int pageSize = 0;
+//        try {
+            pdfWriter = PdfWriter.getInstance(document, byteArrayOutputStream);
+            pdfWriter.setPageEvent(new FooterHeaderPageEvent(dictHosp.getHospName(), customer.getCusName(), tjOrder.getTjNumber(), sex, String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday())),null));
+//            pageSize = pdfWriter.getPageNumber();
+//        } catch (DocumentException e) {
+//            log.error(String.valueOf(e));
+//            return AjaxResult.error();
+//        }
+        // 鍚庨潰椤电爜鏁伴噺
+        int dataPageNumer = pdfWriter.getPageNumber();
+        document.setMargins(70, 70, 40, 40);
+        document.open();
+
+        Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
+        notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
+        try {
+            notHuaYanTable(document, printReport, dictHosp, color,false);
+        } catch (DocumentException e) {
+            log.error("闈炲寲楠岄」鐩~鍏呰〃鏍煎紓甯�");
+            log.error(String.valueOf(e));
+            return AjaxResult.error();
+        }
+        PdfReader reader = null;
+        makeHisJianYanTable(document, map, dictHosp, color);
+
+        printReport = new HashMap<>();
+        pacsJianChaData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
+        try {
+            notHuaYanTable(document, printReport, dictHosp, color,true);
+        } catch (DocumentException e) {
+            log.error("pacs椤圭洰濉厖琛ㄦ牸寮傚父");
+            log.error(String.valueOf(e));
+            return AjaxResult.error();
+        }
+        document.close();
+
+
+
+
+
+        // 棣栭〉琛ㄥ崟
+        String tjNumber = tjOrder.getTjNumber();
+        String template = tjReportTemplate.getTemplate();
+        LambdaQueryWrapper<DictComp> wq111 = new LambdaQueryWrapper<>();
+        wq111.eq(DictComp::getDrugManufacturerId, tjOrder.getFirmId());
+        DictComp dictComp = dictCompService.getOne(wq111);
+        LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
+        wq2.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
+        wq2.isNotNull(TjOrderDetail::getFlowingWaterId);
+        List<TjOrderDetail> detailList = tjOrderDetailService.list(wq2);
+        for (TjOrderDetail tjOrderDetail : detailList) {
+            TjProject tjProject = projectService.selectTjProjectByProId(tjOrderDetail.getProId());
+            tjOrderDetail.setProject(tjProject);
+        }
+        ByteArrayOutputStream byteArrayOutputStream4 = new ByteArrayOutputStream();
+        PdfReader reader4 = null;
+        PdfStamper pdfStamper = null;
+
+        reader4 = new PdfReader(new ByteArrayInputStream(Base64.getDecoder().decode(template)));
+        pdfStamper = new PdfStamper(reader4, byteArrayOutputStream4);
+        AcroFields acroFields = pdfStamper.getAcroFields();
+        BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
+        acroFields.addSubstitutionFont(bf);
+        HashMap<String, Object> data = new HashMap<>();
+        Long cusSex = customer.getCusSex();
+        String tjtype;
+        if (cusSex == 0) {
+            sex = "鐢�";
+        } else {
+            sex = "濂�";
+        }
+        HashMap<String, String> hashMap = new HashMap<>();
+        hashMap.put("name", customer.getCusName());
+        if ("1".equals(tjOrder.getTjType())) {
+            tjtype = "鍥㈤槦";
+            hashMap.put("tjtype", tjtype);
+        } else {
+            tjtype = "涓汉";
+            hashMap.put("tjtype", tjtype);
+        }
+        if (dictComp == null) {
+            hashMap.put("work", "鏃�");
+        } else {
+            hashMap.put("work", dictComp.getCnName());
+        }
+        hashMap.put("sex", sex);
+        hashMap.put("tjnumber", tjNumber);
+        hashMap.put("tjdate", DateUtils.parseDateToStr("yyyy/MM/dd", tjOrder.getCreateTime()));
+        hashMap.put("phone", customer.getCusPhone());
+        for (String key : hashMap.keySet()) {
+            acroFields.setFieldProperty(key, "textsize", DEFAULT_FONT_SIZE, null);
+            acroFields.setField(key, hashMap.get(key));
+        }
+        pdfStamper.setFormFlattening(true);
+        pdfStamper.close();
+        reader4.close();
+        // 灏嗕慨鏀瑰悗鐨凱DF鍐呭鍐欏叆
+        byte[] bytes = byteArrayOutputStream4.toByteArray();
+
+
+
+        ByteArrayOutputStream finalOutput = new ByteArrayOutputStream();
+        Document mergedDocument = new Document(PageSize.A4);
+        PdfCopy copy = new PdfCopy(mergedDocument, finalOutput);
+        mergedDocument.open();
+
+        reader4 = new PdfReader(new ByteArrayInputStream(bytes));
+        int numberOfPages = reader4.getNumberOfPages();
+        for (int i = 1; i <= numberOfPages; i++) {
+            copy.addPage(copy.getImportedPage(reader4, i));
+        }
+
+        PdfReader reader2 = new PdfReader(byteArrayOutputStream2.toByteArray());
+        int numberOfPages2 = reader2.getNumberOfPages();
+        for (int i = 1; i <= numberOfPages2; i++) {
+            PdfImportedPage page = copy.getImportedPage(reader2, i);
+            copy.addPage(page);
+        }
+        reader2.close();
+
+        PdfReader reader1 = new PdfReader(byteArrayOutputStream.toByteArray());
+        int numberOfPages1 = reader1.getNumberOfPages();
+        for (int i = 1; i <= numberOfPages1; i++) {
+            PdfImportedPage page = copy.getImportedPage(reader1, i);
+            copy.addPage(page);
+        }
+        reader1.close();
+        mergedDocument.close();
+
+        String outputFileName1 = customer.getCusId() + tjOrder.getTjNumber() + customer.getCusName() + "_鎶ュ憡.pdf";
+        savePDFFile(outputFileName1, tjOrder, customer, finalOutput);
+        return AjaxResult.success();
+    }
+
+    public AjaxResult hisPDFNew2(TjOrder tjOrder, TjCustomer customer, TjReportTemplate tjReportTemplate,TjReportTemplate zongJianYiShiQianMing) throws Exception {
+        pdfPage = 0;
+        DictHosp dictHosp = dictHospService.list().get(0);
+        String color = sysConfigService.selectConfigByKey("report_title_color");
+        List<SysDictData> sysUserSex = sysDictDataService.list(new LambdaQueryWrapper<SysDictData>().eq(SysDictData::getDictType, "sys_user_sex"));
+        // 妫�楠屾暟鎹�
+        HashMap<String, Object> map = makeHisJianYan(tjOrder, customer);
+        String sex = "";
+        if (customer.getCusSex() != null) {
+            for (SysDictData userSex : sysUserSex) {
+                if (userSex.getDictValue().equals(String.valueOf(customer.getCusSex()))) {
+                    sex = userSex.getDictLabel();
+                }
+            }
+        }
+        if (StrUtil.isBlank(sex)) sex = "鏈煡";
+
+
+
+        // 鐢熸垚 document2 骞跺皢鍏跺唴瀹逛繚瀛樺埌 byteArrayOutputStream2 涓�
+        ByteArrayOutputStream byteArrayOutputStream2 = new ByteArrayOutputStream();
+        Document document2 = new Document(PageSize.A4);
+        PdfWriter writer2 = PdfWriter.getInstance(document2, byteArrayOutputStream2);
+
+        writer2.setPageEvent(new FooterHeaderPageEvent(dictHosp.getHospName(), customer.getCusName(), tjOrder.getTjNumber(), sex, String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday())),0));
+
+        document2.setMargins(50, 70, 40, 50);
+        document2.open();
+
+        List<CsProVo> list = tjOrderRemarkService.cSWebGetProByTjNumAndOrderId(tjOrder.getTjNumber(), false);
+
+        Font defaultFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+        Font defaultTitleFont = PdfUtils.setFont(DEFAULT_LITTLE_TITLE_FONT_SIZE);
+        defaultTitleFont.setStyle(Font.BOLD);
+        Paragraph paragraph = PdfUtils.setParagraph(defaultTitleFont, "妫�鏌ョ瀹や笌妫�鏌ラ」鐩�");
+        document2.add(paragraph);
+
+        PdfPTable table = new PdfPTable(new float[]{80, 100, 80, 80});
+        table.setTotalWidth(PageSize.A4.getWidth() - 100);
+        table.setLockedWidth(true);
+        table.setHorizontalAlignment(Element.ALIGN_LEFT);
+        String[] titles = {"绉戝", "浣撴椤圭洰", "妫�鏌ョ姸鎬�", "妫�鏌ユ椂闂�"};
+
+        for (String head : titles) {
+            table.addCell(PdfUtils.createCell(head, defaultFont, Rectangle.BOX, Element.ALIGN_CENTER,5f,5f));
+        }
+        Map<String, List<CsProVo>> listMap = list.stream().collect(Collectors.groupingBy(i -> i.getDeptId()+"_"+i.getDeptName()));
+//        List<CsProVo> sortedList = list.stream()
+//                .sorted(Comparator.comparingLong(CsProVo::getProId))
+//                .collect(Collectors.toList());
+        for (Map.Entry<String, List<CsProVo>> entry : listMap.entrySet()) {
+            String dept = entry.getKey().split("_")[1];
+            List<CsProVo> proVos = entry.getValue();
+            proVos = proVos.stream()
+                    .sorted(Comparator.comparingLong(CsProVo::getProId))
+                    .collect(Collectors.toList());
+            PdfPCell deptCell = new PdfPCell();
+            deptCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+            deptCell.setHorizontalAlignment(Element.ALIGN_CENTER);
+            deptCell.setPhrase(new Phrase(dept, defaultFont));
+            deptCell.setPaddingTop(5f);
+            deptCell.setPaddingBottom(5f);
+            if (proVos.size()>1)
+                deptCell.setRowspan(proVos.size());
+            table.addCell(deptCell);
+            proVos.forEach(proVo -> {
+                table.addCell(PdfUtils.createCell(proVo.getProName(), defaultFont,Rectangle.BOX,Element.ALIGN_CENTER,5f,5f));
+                String tjType = "";
+                switch (proVo.getType()) {
+                    case 0:
+                        tjType = "鏈";
+                        break;
+                    case 1:
+                        tjType = "宸叉";
+                        break;
+                    case 2:
+                        tjType = "寮冩";
+                        break;
+                    case 3:
+                        tjType = "寤舵湡";
+                        break;
+                }
+                table.addCell(PdfUtils.createCell(tjType, defaultFont,Rectangle.BOX,Element.ALIGN_CENTER,5f,5f));
+                String tjTime = "";
+                if (proVo.getQdcreateTime() != null) {
+                    tjTime = new SimpleDateFormat("yyyy-MM-dd").format(proVo.getQdcreateTime());
+                }
+                table.addCell(PdfUtils.createCell(tjTime, defaultFont,Rectangle.BOX,Element.ALIGN_CENTER,5f,5f));
+            });
+        }
+        document2.add(table);
+
+        for (int i = 0; i < 2; i++) {
+            paragraph = PdfUtils.setParagraph(defaultFont, "");
+            document2.add(paragraph);
+        }
+
+
+        //        List<TjOrderRemark> remarks = tjOrderRemarkMapper.getzongjianyishengchakanyichangxiangmu3( tjOrder.getTjNumber());
+        List<TjOrderDetail> orderDetails = tjOrderDetailMapper.getzongjianyishengchakanyichangxiangmu4( tjOrder.getTjNumber());
+//        List<Map<String, Object>> jiancha = new ArrayList<>();
+
+
+
+        paragraph = PdfUtils.setParagraph(defaultTitleFont, "妫�鏌ョ患杩帮細");
+        paragraph.setSpacingBefore(3f);
+        paragraph.setSpacingAfter(2f);
+        document2.add(paragraph);
+
+        int xmXh = 1;
+
+        Map<Long, List<TjOrderDetail>> collect = orderDetails.stream().collect(Collectors.groupingBy(TjOrderDetail::getProId));
+        for (Map.Entry<String, List<CsProVo>> deptEntry : listMap.entrySet()) {
+            List<CsProVo> proVos = deptEntry.getValue();
+            if (proVos.size()>1){
+                proVos = proVos.stream()
+                        .sorted(Comparator.comparingLong(CsProVo::getProId))
+                        .collect(Collectors.toList());
+            }
+            // 宸茬粡閬嶅巻杩囩殑
+            ArrayList<String> jianYanYiDa = new ArrayList<>();
+            for (CsProVo proVo : proVos) {
+
+                // 妫�鏌�
+                for (Map.Entry<Long, List<TjOrderDetail>> entry : collect.entrySet()) {
+                    if (!entry.getKey().equals(proVo.getProId())) continue;
+                    List<TjOrderDetail> details = entry.getValue();
+                    String xmmc = details.get(0).getProName();
+                    boolean isXmWrite = false;
+                    for (TjOrderDetail detail : details) {
+                        if (!isXmWrite) {
+                            paragraph = new Paragraph(xmXh + ".  " + xmmc, defaultFont);
+                            paragraph.setAlignment(Element.ALIGN_LEFT);
+                            document2.add(paragraph);
+                            isXmWrite = true;
+                        }
+                        String result = detail.getProResult();
+                        if (StrUtil.isNotBlank(result)) {
+                            int index = 1;
+                            result = result.replaceAll("鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�", "");
+                            String[] split = result.split("\n");
+                            StringBuilder builder = new StringBuilder();
+                            for (String s : split) {
+                                if (StrUtil.isBlank(s.replaceAll("\n", "").trim())) continue;
+                                builder.append("    (").append(index).append(")").append(s).append("\n");
+                                index++;
+                            }
+                            result = builder.toString();
+                        }
+                        paragraph = new Paragraph(result, defaultFont);
+                        paragraph.setAlignment(Element.ALIGN_LEFT);
+                        document2.add(paragraph);
+                    }
+                    if (isXmWrite) {
+                        paragraph = PdfUtils.setParagraph(defaultFont, "");
+                        paragraph.setLeading(0f);
+                        paragraph.setSpacingBefore(0f);
+                        paragraph.setSpacingAfter(5f);
+                        document2.add(paragraph);
+                        xmXh++;
+                    }
+                }
+
+                // 妫�楠�
+                for (Map.Entry<String, Object> item : map.entrySet()) {
+                    String xmmc = item.getKey();
+                    HashMap<String, Object> entryValue = (HashMap<String, Object>) item.getValue();
+                    ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
+                    boolean isXmWrite = false;
+                    int index = 1;
+                    for (List<String> i : lists) {
+                        if (!i.get(6).contains(String.valueOf(proVo.getProId()))) continue;
+                        if (i.contains("鈫�") || i.contains("鈫�")) {
+                            if (jianYanYiDa.contains(i.get(5))) continue;
+                            jianYanYiDa.add(i.get(5));
+                            if (!isXmWrite) {
+                                paragraph = new Paragraph(xmXh + ".  " + xmmc, defaultFont);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                document2.add(paragraph);
+                                isXmWrite = true;
+                            }
+                            String content = "    (" + index + ") " + i.get(0) + "锛�" + i.get(1) + "  " + i.get(3) + "  " + i.get(4) + "      " + i.get(2);
+                            paragraph = new Paragraph(content, defaultFont);
+                            paragraph.setAlignment(Element.ALIGN_LEFT);
+                            document2.add(paragraph);
+                            index++;
+                        }
+                    }
+                    if(isXmWrite) {
+                        paragraph = PdfUtils.setParagraph(defaultFont, "");
+                        paragraph.setSpacingBefore(0f);
+                        paragraph.setSpacingAfter(5f);
+                        document2.add(paragraph);
+                        xmXh++;
+                    }
+                }
+            }
+        }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+        paragraph = PdfUtils.setParagraph(defaultFont, "");
+        paragraph.setLeading(0f);
+        paragraph.setSpacingBefore(10f);
+        paragraph.setSpacingAfter(10f);
+        document2.add(paragraph);
+
+
+
+
+
+
+        paragraph = PdfUtils.setParagraph(defaultTitleFont, "鍖荤敓寤鸿锛�");
+        paragraph.setSpacingBefore(3f);
+        paragraph.setSpacingAfter(2f);
+        document2.add(paragraph);
+        xmXh = 0;
+
+        for (Map.Entry<String, List<CsProVo>> deptEntry : listMap.entrySet()) {
+            List<CsProVo> proVos = deptEntry.getValue();
+            if (proVos.size() > 1) {
+                proVos = proVos.stream()
+                        .sorted(Comparator.comparingLong(CsProVo::getProId))
+                        .collect(Collectors.toList());
+            }
+            ArrayList<String> jianYanYiDa = new ArrayList<>();
+            for (CsProVo proVo : proVos) {
+                // 妫�鏌�
+                for (Map.Entry<Long, List<TjOrderDetail>> entry : collect.entrySet()) {
+                    if (!entry.getKey().equals(proVo.getProId())) continue;
+                    List<TjOrderDetail> details = entry.getValue();
+                    String xmmc = details.get(0).getProName();
+                    boolean isXmWrite = false;
+                    int index = 1;
+                    for (TjOrderDetail detail : details) {
+                        if (!isXmWrite) {
+                            xmXh++;
+                            paragraph = new Paragraph("銆�"+xmXh+"."+xmmc+"銆�", defaultFont);
+                            paragraph.setAlignment(Element.ALIGN_LEFT);
+                            document2.add(paragraph);
+                            isXmWrite = true;
+                        }
+                        String result = detail.getProResult();
+                        if (StrUtil.isNotBlank(result)) {
+//                    result = result.replaceAll(" ","").replaceAll("\t","");
+//                    result = result.replaceAll("\n鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�", "");
+//                    result = "\n      " + result.replaceAll("\n", "\n      ");
+                            int index1 = 1;
+                            String[] split = result.split("\n");
+                            boolean contains = result.contains("鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�");
+                            StringBuilder builder = new StringBuilder();
+                            for (String s : split) {
+                                if (StrUtil.isBlank(s.replaceAll("\n","").trim())) continue;
+                                builder.append("    (").append(index1).append(")").append(s).append("\n");
+                                index1++;
+                            }
+                            if (!contains) builder.append("    (").append(index1).append(")").append("鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�");
+                            else builder.substring(0,builder.length() - 1);
+                            result = builder.toString();
+                        }
+//                String content = "  (" + index + ") " + detail.getProName() + "锛�" + result;
+//                content = content.replaceAll("[\\n\\r]+$", "");
+//                content = content.replaceAll("\\s+$", "");
+//                paragraph = new Paragraph(content, defaultFont);
+                        if (StrUtil.isNotBlank(result)) {
+                            paragraph = new Paragraph(result, defaultFont);
+                            paragraph.setAlignment(Element.ALIGN_LEFT);
+                            document2.add(paragraph);
+                        }else {
+                            paragraph = new Paragraph("寤鸿瀹氭湡澶嶆煡",defaultFont);
+                            paragraph.setAlignment(Element.ALIGN_LEFT);
+                            document2.add(paragraph);
+                        }
+                        String str = "     ";
+                        List<Map<String, Object>> maps = tjRulesService.getyichangxiangmujianyiguize(entry.getKey().toString(),"","",tjOrder.getTjNumber());
+                        for (Map<String, Object> objectMap : maps) {
+                            paragraph = new Paragraph(str+objectMap.get("bt").toString()+objectMap.get("nr").toString(),defaultFont);
+                            paragraph.setAlignment(Element.ALIGN_LEFT);
+                            document2.add(paragraph);
+                        }
+                        index++;
+                        paragraph = PdfUtils.setParagraph(defaultFont, "");
+                        paragraph.setLeading(0f);
+                        paragraph.setSpacingBefore(0f);
+                        paragraph.setSpacingAfter(5f);
+                        document2.add(paragraph);
+                    }
+                }
+                // 妫�楠�
+                for (Map.Entry<String, Object> item : map.entrySet()) {
+                    String xmmc = item.getKey();
+                    HashMap<String, Object> entryValue = (HashMap<String, Object>) item.getValue();
+                    ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
+                    boolean isXmWrite = false;
+                    int index = 1;
+                    for (List<String> i : lists) {
+                        if (!i.get(6).contains(String.valueOf(proVo.getProId()))) continue;
+                        if (i.contains("鈫�") || i.contains("鈫�")) {
+                            if (jianYanYiDa.contains(i.get(5))) continue;
+                            jianYanYiDa.add(i.get(5));
+                            if (!isXmWrite) {
+                                xmXh++;
+                                paragraph = new Paragraph("銆�"+xmXh+"."+xmmc+"銆�",defaultFont);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                document2.add(paragraph);
+                                isXmWrite = true;
+                            }
+                            String content = "    ("+index + ")" + i.get(0) + "锛�" + i.get(1) + "  " + i.get(3) + "  " + i.get(4) + "  " + i.get(2);
+                            paragraph = new Paragraph(content,defaultFont);
+                            paragraph.setAlignment(Element.ALIGN_LEFT);
+                            document2.add(paragraph);
+                            // 绗叚浣嶆槸lis椤圭洰id
+//                    LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
+//                    wrapper.eq(TjProject::getLisXmbm,i.get(5));
+//                    TjProject project = projectService.getOne(wrapper);
+//                    if (project != null) {
+//                        LambdaQueryWrapper<TjRules> queryWrapper = new LambdaQueryWrapper<>();
+//                        queryWrapper.eq(TjRules::getProId,project.getProId());
+//                        List<TjRules> rules = tjRulesService.list(queryWrapper);
+//                        if (!rules.isEmpty()){
+//
+//                        }
+                            String str = "    ";
+                            List<Map<String, Object>> maps = tjRulesService.getyichangxiangmujianyiguize(i.get(5),"",i.get(2),tjOrder.getTjNumber());
+                            if (!maps.isEmpty()){
+                                for (Map<String, Object> objectMap : maps) {
+//                                paragraph = new Paragraph(str+"寤鸿鏍囬",defaultFont);
+//                                paragraph.setAlignment(Element.ALIGN_LEFT);
+//                                document2.add(paragraph);
+//
+//                                paragraph = new Paragraph(str+objectMap.get("bt").toString(),defaultFont);
+//                                paragraph.setAlignment(Element.ALIGN_LEFT);
+//                                document2.add(paragraph);
+//
+//                                paragraph = new Paragraph(str+"寤鸿鍐呭",defaultFont);
+//                                paragraph.setAlignment(Element.ALIGN_LEFT);
+//                                document2.add(paragraph);
+//
+//                                paragraph = new Paragraph(str+objectMap.get("nr").toString(),defaultFont);
+//                                paragraph.setAlignment(Element.ALIGN_LEFT);
+//                                document2.add(paragraph);
+
+                                    paragraph = new Paragraph(str+objectMap.get("bt").toString().trim()+objectMap.get("nr").toString().trim(),defaultFont);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    document2.add(paragraph);
+                                }
+                                paragraph = PdfUtils.setParagraph(defaultFont, "");
+                                paragraph.setSpacingBefore(2f);
+                                paragraph.setSpacingAfter(5f);
+                                document2.add(paragraph);
+                            }
+//                    }
+                            index++;
+                        }
+                    }
+                    if (isXmWrite) {
+                        paragraph = PdfUtils.setParagraph(defaultFont, "");
+                        paragraph.setSpacingBefore(0f);
+                        paragraph.setSpacingAfter(5f);
+                        document2.add(paragraph);
+                    }
+                }
+            }
+        }
+
+
+
+
+
+
+        for (int i = 0; i < 1; i++) {
+            paragraph = PdfUtils.setParagraph(defaultFont, "");
+            document2.add(paragraph);
+        }
+
+        paragraph = PdfUtils.setParagraph(defaultTitleFont, "鎬绘鍖荤敓寤鸿锛�");
+        document2.add(paragraph);
+        if (tjOrder.getCheckAdvice() == null) {
+            paragraph = PdfUtils.setParagraph(defaultFont, "鏃�");
+            document2.add(paragraph);
+        } else {
+            paragraph = PdfUtils.setParagraph(defaultFont, tjOrder.getCheckAdvice());
+            document2.add(paragraph);
+        }
+
+
+        Paragraph paragraphNone = new Paragraph("", defaultFont);
+        paragraphNone.setAlignment(Element.ALIGN_LEFT);
+        //琛岄棿璺�
+        paragraphNone.setLeading(5f);
+        paragraphNone.setSpacingBefore(10f);
+        paragraphNone.setSpacingAfter(10f);
+        document2.add(paragraphNone);
+        paragraphNone = new Paragraph("", defaultFont);
+        paragraphNone.setAlignment(Element.ALIGN_LEFT);
+        //琛岄棿璺�
+        paragraphNone.setLeading(5f);
+        paragraphNone.setSpacingBefore(10f);
+        paragraphNone.setSpacingAfter(10f);
+        document2.add(paragraphNone);
+
+
+        PdfPTable tableQz = new PdfPTable(new float[]{100f,100f,50f});
+        tableQz.setTotalWidth(PageSize.A4.getWidth() - 100);
+        tableQz.setLockedWidth(true);
+        tableQz.setHorizontalAlignment(Element.ALIGN_LEFT);
+        tableQz.getDefaultCell().setBorder(0);
+        tableQz.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
+
+        Font zongJianFont = PdfUtils.setFont(DEFAULT_ZONGJIAN_FONT_SIZE);
+        Font zongJianTitleFont = PdfUtils.setFont(DEFAULT_ZONGJIAN_FONT_SIZE);
+        zongJianTitleFont.setStyle(Font.BOLD);
+
+        for (int i = 0; i < 3; i++) {
+            PdfPCell cell = new PdfPCell();
+            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+            cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+            cell.setPhrase(new Phrase("", defaultFont));
+            cell.setBorder(Rectangle.NO_BORDER);
+            tableQz.addCell(cell);
+        }
+
+
+        PdfPCell cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+        cell.setPhrase(new Phrase("", defaultFont));
+        cell.setRowspan(3);
+        tableQz.addCell(cell);
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+        cell.setPhrase(new Phrase("浣撴鍗曚綅鐩栫珷:", zongJianTitleFont));
+
+        tableQz.addCell(cell);
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+        cell.setPhrase(new Phrase("", zongJianFont));
+        tableQz.addCell(cell);
+
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+        cell.setPhrase(new Phrase("鎬绘鍖诲笀:", zongJianTitleFont));
+        tableQz.addCell(cell);
+
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+        if (zongJianYiShiQianMing == null) {
+            cell.setPhrase(new Phrase(sysConfigService.selectConfigByKey("pdf_report_zongjianysname"), zongJianFont));
+            tableQz.addCell(cell);
+        }else {
+            byte[] bytes = Base64.getDecoder().decode(zongJianYiShiQianMing.getTemplate());
+            Image image = Image.getInstance(bytes);
+            image.scaleToFit(100, 100);
+            cell.addElement(image);
+            tableQz.addCell(cell);
+        }
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+        cell.setPhrase(new Phrase("鎬绘鏃ユ湡:", zongJianTitleFont));
+        tableQz.addCell(cell);
+
+        cell = new PdfPCell();
+        cell.setBorder(Rectangle.NO_BORDER);
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
+        cell.setPaddingTop(10);
+        cell.setPaddingBottom(10);
+        cell.setPhrase(new Phrase(new SimpleDateFormat("yyyy-MM-dd").format(tjOrder.getCheckTime()), zongJianFont));
+        tableQz.addCell(cell);
+
+        document2.add(tableQz);
+
+        document2.close();
+
+
+
+        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+        Document document = new Document(PageSize.A4);
+        PdfWriter pdfWriter = null;
+//        int pageSize = 0;
+//        try {
+        pdfWriter = PdfWriter.getInstance(document, byteArrayOutputStream);
+        pdfWriter.setPageEvent(new FooterHeaderPageEvent(dictHosp.getHospName(), customer.getCusName(), tjOrder.getTjNumber(), sex, String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday())),null));
+//            pageSize = pdfWriter.getPageNumber();
+//        } catch (DocumentException e) {
+//            log.error(String.valueOf(e));
+//            return AjaxResult.error();
+//        }
+        // 鍚庨潰椤电爜鏁伴噺
+        int dataPageNumer = pdfWriter.getPageNumber();
+        document.setMargins(70, 70, 40, 40);
+        document.open();
+
+        Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
+        notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
+        try {
+            notHuaYanTable(document, printReport, dictHosp, color,false);
+        } catch (DocumentException e) {
+            log.error("闈炲寲楠岄」鐩~鍏呰〃鏍煎紓甯�");
+            log.error(String.valueOf(e));
+            return AjaxResult.error();
+        }
+        PdfReader reader = null;
+        makeHisJianYanTable(document, map, dictHosp, color);
+
+        printReport = new HashMap<>();
+        pacsJianChaData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
+        try {
+            notHuaYanTable(document, printReport, dictHosp, color,true);
+        } catch (DocumentException e) {
+            log.error("pacs椤圭洰濉厖琛ㄦ牸寮傚父");
+            log.error(String.valueOf(e));
+            return AjaxResult.error();
+        }
+        document.close();
+
+
+
+
+
+        // 棣栭〉琛ㄥ崟
+        String tjNumber = tjOrder.getTjNumber();
+        String template = tjReportTemplate.getTemplate();
+
+        LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
+        wq2.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
+        wq2.isNotNull(TjOrderDetail::getFlowingWaterId);
+        List<TjOrderDetail> detailList = tjOrderDetailService.list(wq2);
+        for (TjOrderDetail tjOrderDetail : detailList) {
+            TjProject tjProject = projectService.selectTjProjectByProId(tjOrderDetail.getProId());
+            tjOrderDetail.setProject(tjProject);
+        }
+        ByteArrayOutputStream byteArrayOutputStream4 = new ByteArrayOutputStream();
+        PdfReader reader4 = null;
+        PdfStamper pdfStamper = null;
+
+        reader4 = new PdfReader(new ByteArrayInputStream(Base64.getDecoder().decode(template)));
+        pdfStamper = new PdfStamper(reader4, byteArrayOutputStream4);
+        AcroFields acroFields = pdfStamper.getAcroFields();
+        BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
+        acroFields.addSubstitutionFont(bf);
+        HashMap<String, Object> data = new HashMap<>();
+        Long cusSex = customer.getCusSex();
+        String tjtype;
+        if (cusSex == 0) {
+            sex = "鐢�";
+        } else {
+            sex = "濂�";
+        }
+        HashMap<String, String> hashMap = new HashMap<>();
+        hashMap.put("name", customer.getCusName());
+        if ("1".equals(tjOrder.getTjType())) {
+            tjtype = "鍥㈤槦";
+            hashMap.put("tjtype", tjtype);
+        } else {
+            tjtype = "涓汉";
+            hashMap.put("tjtype", tjtype);
+        }
+        if (StrUtil.isNotBlank(customer.getCompName())){
+            hashMap.put("work", customer.getCompName());
+        }else {
+            LambdaQueryWrapper<DictComp> wq111 = new LambdaQueryWrapper<>();
+            wq111.eq(DictComp::getDrugManufacturerId, tjOrder.getFirmId());
+            DictComp dictComp = dictCompService.getOne(wq111);
+
+            if (dictComp == null) {
+                hashMap.put("work", "鏃�");
+            } else {
+                hashMap.put("work", dictComp.getCnName());
+            }
+        }
+        hashMap.put("sex", sex);
+        hashMap.put("tjnumber", tjNumber);
+        hashMap.put("tjdate", DateUtils.parseDateToStr("yyyy/MM/dd", tjOrder.getCreateTime()));
+        hashMap.put("phone", customer.getCusPhone());
+        for (String key : hashMap.keySet()) {
+            acroFields.setFieldProperty(key, "textsize", DEFAULT_FONT_SIZE, null);
+            acroFields.setField(key, hashMap.get(key));
+        }
+        pdfStamper.setFormFlattening(true);
+        pdfStamper.close();
+        reader4.close();
+        // 灏嗕慨鏀瑰悗鐨凱DF鍐呭鍐欏叆
+        byte[] bytes = byteArrayOutputStream4.toByteArray();
+
+
+
+        ByteArrayOutputStream finalOutput = new ByteArrayOutputStream();
+        Document mergedDocument = new Document(PageSize.A4);
+        PdfCopy copy = new PdfCopy(mergedDocument, finalOutput);
+        mergedDocument.open();
+
+        reader4 = new PdfReader(new ByteArrayInputStream(bytes));
+        int numberOfPages = reader4.getNumberOfPages();
+        for (int i = 1; i <= numberOfPages; i++) {
+            copy.addPage(copy.getImportedPage(reader4, i));
+        }
+
+        PdfReader reader2 = new PdfReader(byteArrayOutputStream2.toByteArray());
+        int numberOfPages2 = reader2.getNumberOfPages();
+        for (int i = 1; i <= numberOfPages2; i++) {
+            PdfImportedPage page = copy.getImportedPage(reader2, i);
+            copy.addPage(page);
+        }
+        reader2.close();
+
+        PdfReader reader1 = new PdfReader(byteArrayOutputStream.toByteArray());
+        int numberOfPages1 = reader1.getNumberOfPages();
+        for (int i = 1; i <= numberOfPages1; i++) {
+            PdfImportedPage page = copy.getImportedPage(reader1, i);
+            copy.addPage(page);
+        }
+        reader1.close();
+        mergedDocument.close();
+
+        String outputFileName1 = customer.getCusId() + tjOrder.getTjNumber() + customer.getCusName() + "_鎶ュ憡.pdf";
+        savePDFFile(outputFileName1, tjOrder, customer, finalOutput);
         return AjaxResult.success();
     }
 
@@ -454,8 +1757,8 @@
      */
     private void makeHisJianYanTable(Document document1, HashMap<String, Object> map,DictHosp dictHosp,String colorStr) throws DocumentException {
         if (!map.isEmpty()) {
-            String[] titles = new String[]{"浣撴椤圭洰", "浣撴缁撴灉","鏍囧織", "鍗曚綅", "鍙傝�冭寖鍥�"};
-            float[] titlesWidth = new float[]{270, 80, 40, 80, 100};
+            String[] titles = new String[]{"浣撴椤圭洰", "浣撴缁撴灉","鎻愮ず", "鍗曚綅", "鍙傝�冭寖鍥�"};
+            float[] titlesWidth = new float[]{280, 100, 40, 100, 120};
             for (Map.Entry<String, Object> entry : map.entrySet()) {
                 String titleName = entry.getKey().trim();
                 HashMap<String, Object> entryValue = (HashMap<String, Object>) entry.getValue();
@@ -464,7 +1767,7 @@
                 String shsj = entryValue.get("shsj").toString();
                 addJianYanTable(document1, titleName, titles, titlesWidth, lists,dictHosp,colorStr);
                 if (!jyys.isEmpty()) {
-                    Font doctorFonts = PdfUtils.setFont(11);
+                    Font doctorFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                     String doctors = "";
                     Paragraph elements = new Paragraph();
                     elements.setLeading(5f);
@@ -523,23 +1826,28 @@
      * @param printReport
      * @throws DocumentException
      */
-    private void notHuaYanTable(Document document1, Map<TjOrderRemark, List<TjPdfVO>> printReport,DictHosp dictHosp,String colorStr) throws DocumentException {
+    private void notHuaYanTable(Document document1, Map<TjOrderRemark, List<TjPdfVO>> printReport,DictHosp dictHosp,String colorStr,boolean isPacs) throws DocumentException {
         for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
             LambdaQueryWrapper<TjProject> wqqq = new LambdaQueryWrapper<>();
             wqqq.eq(TjProject::getProId, entry.getKey().getProId());
             TjProject one11 = projectService.getOne(wqqq);
+            if (entry.getValue() == null || entry.getValue().isEmpty()) continue;
             //鍒ゆ柇璇ラ」鐩槸鍚﹂渶瑕佹墦鍗版姤鍛�
             if (null != one11 && "Y".equals(one11.getNeedReport())) {
+                TjOrderRemark orderRemark = entry.getKey();
                 List<TjPdfVO> value = entry.getValue();
+                if (StrUtil.isBlank(value.get(0).getProResult()) && (StrUtil.isBlank(value.get(0).getTs()) && StrUtil.isBlank(value.get(0).getSj()))){
+                    continue;
+                }
                 String titleName = null;
-                if (null != one11 && "1".equals(one11.getResultType())) {
+                if ("1".equals(one11.getResultType())) {
                     titleName = one11.getProName();
                     // 璁剧疆鏍囬瀛椾綋鏍峰紡
                     Font titleFonts = PdfUtils.setFont(9);
                     Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
 
                     if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
-                        Font titleFont = PdfUtils.setFont(11);
+                        Font titleFont = PdfUtils.setFont(DEFAULT_TITLE_FONT_SIZE);
                         titleFont.setStyle(Font.BOLD);
                         PdfPCell cellTitle = new PdfPCell(PdfUtils.setParagraph(titleFont, titleName));
                         cellTitle.setBorder(Rectangle.NO_BORDER);
@@ -556,43 +1864,153 @@
                     }
 
 
-                    String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅"};
-                    // 鑾峰彇鍒楄〃鏁版嵁
-                    //璁剧疆琛ㄥご瀛椾綋鏍峰紡
-                    Font headFont = PdfUtils.setFont(9);
-                    // 璁剧疆姝f枃瀛椾綋鏍峰紡锛�12鍙�
-                    Font textFont = PdfUtils.setFont(9);
-                    //鍒涘缓琛ㄦ牸  灏嗚〃澶村瓧浣撳拰姝f枃瀛椾綋鏀捐繘鍘�
-                    PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value);
+//                    String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅"};
+//                    Font headFont = PdfUtils.setFont(9);
+//                    Font textFont = PdfUtils.setFont(9);
+//                    PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value,dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌"));
+//                    document1.add(table);
 
-                    document1.add(table);
+                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") && !value.isEmpty()){
+                        if (value.size()>1){
+                            if (value.get(0).getPid().equals("1862852701533012001")){
+                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                Paragraph ppp = new Paragraph("闃虫�у弬鑰冨�硷細", remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+
+                                ppp = new Paragraph("DOB鍊硷細         鈮�      4.0                HP-闃虫��", remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+
+                                ppp = new Paragraph("                <      4.0                  姝e父", remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+
+
+                                ppp = new Paragraph("妫�娴嬬粨鏋滐細 DOB="+value.get(0).getProResult(), remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+
+                                ppp = new Paragraph("", remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+                                ppp = new Paragraph("", remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+                                ppp = new Paragraph("缁撹锛�"+entry.getKey().getRemark(), remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+                            }else {
+                                String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅"};
+                                Font headFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                Font textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value,isPacs,new float[]{240, 240,240});
+                                document1.add(table);
+                            }
+                        }else {
+                            Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+
+                            if (isPacs){
+                                Paragraph pp = PdfUtils.setParagraph(remarkFonts, "妫�鏌ユ墍瑙侊細");
+                                document1.add(pp);
+                                Paragraph ppp = new Paragraph(value.get(0).getSj(), remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+                                pp = PdfUtils.setParagraph(remarkFonts, "缁撹锛�");
+                                document1.add(pp);
+                                ppp = new Paragraph(value.get(0).getTs(), remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+                            }else {
+                                if (value.get(0).getPid().equals("1862852701533012001")){
+                                    remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                    Paragraph ppp = new Paragraph("闃虫�у弬鑰冨�硷細", remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+
+                                    ppp = new Paragraph("DOB鍊硷細         鈮�      4.0                HP-闃虫��", remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+
+                                    ppp = new Paragraph("                <      4.0                  姝e父", remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+
+
+                                    ppp = new Paragraph("妫�娴嬬粨鏋滐細 DOB="+value.get(0).getProResult(), remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+
+                                    ppp = new Paragraph("", remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+                                    ppp = new Paragraph("", remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+                                    ppp = new Paragraph("缁撹锛�"+entry.getKey().getRemark(), remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+                                }else {
+                                    String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉"};
+                                    Font headFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                    Font textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                    PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value,false,new float[]{240, 300});
+                                    document1.add(table);
+                                }
+                            }
+                        }
+                    }else {
+                        String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅"};
+                        Font headFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                        Font textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                        PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value,isPacs,new float[]{240, 240,240});
+                        document1.add(table);
+                    }
                     //鍒ゆ柇澶囨敞鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
                     if (entry.getKey().getRemark() == null) {
                         entry.getKey().setRemark("");
                     }
-                    String remark = "澶囨敞锛�" + entry.getKey().getRemark();
-                    if (entry.getKey().getRemark().length() > 50) {
-                        int j = 0;
-                        for (int i = 0; i < remark.length() / 50; i++) {
-                            String substring = remark.substring(j, j + 50);
-                            Font remarkFonts = PdfUtils.setFont(9);
-                            Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
-                            document1.add(pp);
-                            j = j + 50;
-                        }
-                        if (remark.length() % 50 != 0) {
-                            String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1);
-                            Font remarkFonts = PdfUtils.setFont(9);
-                            Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+                        String remark = "澶囨敞锛�" + entry.getKey().getRemark();
+                        if (entry.getKey().getRemark().length() > 50) {
+                            int j = 0;
+                            for (int i = 0; i < remark.length() / 50; i++) {
+                                String substring = remark.substring(j, j + 50);
+                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                                document1.add(pp);
+                                j = j + 50;
+                            }
+                            if (remark.length() % 50 != 0) {
+                                String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1);
+                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                                document1.add(pp);
+                            }
+                        } else {
+                            Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                            Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
                             document1.add(pp);
                         }
-                    } else {
-                        Font remarkFonts = PdfUtils.setFont(9);
-                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
-                        document1.add(pp);
                     }
                     //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
-                    zhuJianYiShi(document1, entry);
+                    zhuJianYiShi(document1, entry,orderRemark.getCreateTime(),dictHosp);
                     //鍒嗗壊绾�
                     if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
                         LineSeparator objectName = new LineSeparator();
@@ -605,11 +2023,14 @@
                         titleName = entry.getKey().getProName();
                     }
                     // 璁剧疆鏍囬瀛椾綋鏍峰紡
-                    Font titleFonts = PdfUtils.setFont(9);
+                    Font titleFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                     Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
 
                     if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
-                        Font titleFont = PdfUtils.setFont(11);
+                        if (StrUtil.isBlank(value.get(0).getProResult()) && (StrUtil.isBlank(value.get(0).getTs()) && StrUtil.isBlank(value.get(0).getSj()))){
+                            continue;
+                        }
+                        Font titleFont = PdfUtils.setFont(DEFAULT_TITLE_FONT_SIZE);
                         titleFont.setStyle(Font.BOLD);
                         PdfPCell cellTitle = new PdfPCell(PdfUtils.setParagraph(titleFont, titleName));
                         cellTitle.setBorder(Rectangle.NO_BORDER);
@@ -625,42 +2046,157 @@
                         document1.add(paragraph);
                     }
 
-                    String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅"};
-                    // 鑾峰彇鍒楄〃鏁版嵁
-                    //璁剧疆琛ㄥご瀛椾綋鏍峰紡
-                    Font headFont = PdfUtils.setFont(9);
-                    // 璁剧疆姝f枃瀛椾綋鏍峰紡锛�12鍙�
-                    Font textFont = PdfUtils.setFont(9);
-                    //鍒涘缓琛ㄦ牸  灏嗚〃澶村瓧浣撳拰姝f枃瀛椾綋鏀捐繘鍘�
-                    PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value);
-                    document1.add(table);
+//                    String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅"};
+//                    Font headFont = PdfUtils.setFont(9);
+//                    Font textFont = PdfUtils.setFont(9);
+//                    PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value,dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌"));
+//                    document1.add(table);
+
+                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") && !value.isEmpty()){
+                        if (value.size()>1){
+                            if (value.get(0).getPid().equals("1862852701533012001")){
+                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                Paragraph ppp = new Paragraph("闃虫�у弬鑰冨�硷細", remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+
+                                ppp = new Paragraph("DOB鍊硷細         鈮�      4.0                HP-闃虫��", remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+
+                                ppp = new Paragraph("                <      4.0                  姝e父", remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+
+
+                                ppp = new Paragraph("妫�娴嬬粨鏋滐細 DOB="+value.get(0).getProResult(), remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+
+                                ppp = new Paragraph("", remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+                                ppp = new Paragraph("", remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+                                ppp = new Paragraph("缁撹锛�"+entry.getKey().getRemark(), remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+                            }else {
+                                String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅"};
+                                Font headFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                Font textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value,isPacs,new float[]{240, 240,240});
+                                document1.add(table);
+                            }
+
+                        }else {
+                            Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+
+                            if (isPacs){
+                                Paragraph pp = PdfUtils.setParagraph(remarkFonts, "妫�鏌ユ墍瑙侊細");
+                                document1.add(pp);
+                                Paragraph ppp = new Paragraph(value.get(0).getSj() != null ? value.get(0).getSj() : value.get(0).getProResult(), remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+                                pp = PdfUtils.setParagraph(remarkFonts, "缁撹锛�");
+                                document1.add(pp);
+                                ppp = new Paragraph(value.get(0).getTs() != null ? value.get(0).getTs() : value.get(0).getProResult(), remarkFonts);
+                                paragraph.setAlignment(Element.ALIGN_LEFT);
+                                paragraph.setLeading(5f);
+                                document1.add(ppp);
+                            }else {
+                                if (value.get(0).getPid().equals("1862852701533012001")){
+                                    remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                    Paragraph ppp = new Paragraph("闃虫�у弬鑰冨�硷細", remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+
+                                    ppp = new Paragraph("DOB鍊硷細         鈮�      4.0                HP-闃虫��", remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+
+                                    ppp = new Paragraph("                <      4.0                  姝e父", remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+
+
+                                    ppp = new Paragraph("妫�娴嬬粨鏋滐細 DOB="+value.get(0).getProResult(), remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+
+                                    ppp = new Paragraph("", remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+                                    ppp = new Paragraph("", remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+                                    ppp = new Paragraph("缁撹锛�"+entry.getKey().getRemark(), remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+                                }else {
+                                    String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉"};
+                                    Font headFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                    Font textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                    PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value,false,new float[]{240, 300});
+                                    document1.add(table);
+                                }
+                            }
+
+                        }
+                    }else {
+                        String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅"};
+                        Font headFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                        Font textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                        PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value,isPacs);
+                        document1.add(table);
+                    }
+
+
                     //鍒ゆ柇澶囨敞鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
                     if (entry.getKey().getRemark() == null) {
                         entry.getKey().setRemark("");
                     }
-                    String remark = "澶囨敞锛�" + entry.getKey().getRemark();
-                    if (entry.getKey().getRemark().length() > 50) {
-                        int j = 0;
-                        for (int i = 0; i < remark.length() / 50; i++) {
-                            String substring = remark.substring(j, j + 50);
-                            Font remarkFonts = PdfUtils.setFont(9);
-                            Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
-                            document1.add(pp);
-                            j = j + 50;
-                        }
-                        if (remark.length() % 50 != 0) {
-                            String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1);
-                            Font remarkFonts = PdfUtils.setFont(9);
-                            Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+                        String remark = "澶囨敞锛�" + entry.getKey().getRemark();
+                        if (entry.getKey().getRemark().length() > 50) {
+                            int j = 0;
+                            for (int i = 0; i < remark.length() / 50; i++) {
+                                String substring = remark.substring(j, j + 50);
+                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                                document1.add(pp);
+                                j = j + 50;
+                            }
+                            if (remark.length() % 50 != 0) {
+                                String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1);
+                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                                Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                                document1.add(pp);
+                            }
+                        } else {
+                            Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                            Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
                             document1.add(pp);
                         }
-                    } else {
-                        Font remarkFonts = PdfUtils.setFont(9);
-                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
-                        document1.add(pp);
                     }
                     //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
-                    zhuJianYiShi(document1, entry);
+                    zhuJianYiShi(document1, entry,orderRemark.getCreateTime(),dictHosp);
                     if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
                         //鍒嗗壊绾�
                         LineSeparator objectName = new LineSeparator();
@@ -677,11 +2213,16 @@
      * @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())) {
+    private void zhuJianYiShi(Document document1, Map.Entry<TjOrderRemark, List<TjPdfVO>> entry,Date createTime,DictHosp dictHosp) throws DocumentException {
+        if ((null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) || dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") ) {
             //涓绘鍖诲笀
             String key = sysConfigService.selectConfigByKey("is_report_pdf_use_ysqm");
             SysUser sysUser = userService.getById(entry.getKey().getDoctorName());
+            String doctorNameDefault = "鏃�";
+            if (sysUser != null)doctorNameDefault = sysUser.getNickName();
+            if (!entry.getValue().isEmpty() && StrUtil.isNotBlank(entry.getValue().get(0).getShys()) && dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+                doctorNameDefault = entry.getValue().get(0).getShys();
+            }
             Font doctorFonts = PdfUtils.setFont(9);
             if (key.equals("Y")){
                 String qmImg = dictUserInfoMapper.selectQmImgInnerJoinUserByUserId(String.valueOf(sysUser.getUserId()));
@@ -692,7 +2233,11 @@
                     elements.setSpacingAfter(10f);
                     elements.setAlignment(Element.ALIGN_RIGHT);
                     Phrase phrase = new Phrase();
-                    phrase.add(new Chunk("涓绘鍖诲笀锛�",doctorFonts));
+                    if (createTime != null) {
+                        phrase.add(new Chunk("妫�鏌ユ椂闂达細"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             涓绘鍖诲笀锛�", doctorFonts));
+                    }else {
+                        phrase.add(new Chunk("涓绘鍖诲笀锛�", doctorFonts));
+                    }
                     byte[] decode = Base64.getDecoder().decode(qmImg);
                     Image image = null;
                     try {
@@ -702,25 +2247,29 @@
                         elements.add(phrase);
                         document1.add(elements);
                     } catch (IOException e) {
-                        String doctorName = "涓绘鍖诲笀锛�" + sysUser.getNickName();
+                        String doctorName = "涓绘鍖诲笀锛�" + doctorNameDefault;
+                        if (createTime != null) doctorName = "妫�鏌ユ椂闂达細"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             涓绘鍖诲笀锛�" + doctorNameDefault;
                         Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
                         df.setAlignment(Element.ALIGN_RIGHT);
                         document1.add(df);
                     }
                 }else {
-                    String doctorName = "涓绘鍖诲笀锛�" + sysUser.getNickName();
+                    String doctorName = "涓绘鍖诲笀锛�" + doctorNameDefault;
+                    if (createTime != null) doctorName = "妫�鏌ユ椂闂达細"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             涓绘鍖诲笀锛�" + doctorNameDefault;
                     Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
                     df.setAlignment(Element.ALIGN_RIGHT);
                     document1.add(df);
                 }
             }else {
-                String doctorName = "涓绘鍖诲笀锛�" + sysUser.getNickName();
+                String doctorName = "涓绘鍖诲笀锛�" + doctorNameDefault;
+                if (createTime != null) doctorName = "妫�鏌ユ椂闂达細"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             涓绘鍖诲笀锛�" + doctorNameDefault;
                 Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
                 df.setAlignment(Element.ALIGN_RIGHT);
                 document1.add(df);
             }
         } else {
             String doctorName = "涓绘鍖诲笀锛�" + "鏃�";
+            if (createTime != null) doctorName = "妫�鏌ユ椂闂达細"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             涓绘鍖诲笀锛�" + "鏃�";
             Font doctorFonts = PdfUtils.setFont(9);
             Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
             df.setAlignment(Element.ALIGN_RIGHT);
@@ -796,12 +2345,17 @@
                 strings.add(ycbz);
                 strings.add(jgdw);
                 strings.add(fwz);
+                strings.add(hybgd.getJcxmid());
+                strings.add(hysqd.getXmid());
                 lists.add(strings);
             }
             if (!lists.isEmpty()) {
                 HashMap<String, Object> map = new HashMap<>();
                 map.put("data", lists);
                 map.put("jyys", hashSet);
+                if (StrUtil.isNotBlank(shsj)){
+                    shsj = shsj.split(" ")[0];
+                }
                 map.put("shsj",shsj);
                 data.put(xmmc, map);
             }
@@ -815,7 +2369,7 @@
      * @param tjOrder
      * @param reportTemplate
      */
-    public HashMap<String, Object> makePDFInfo(TjOrder tjOrder, TjCustomer tjCustomer, TjReportTemplate reportTemplate) {
+    public HashMap<String, Object> makePDFInfo(TjOrder tjOrder, TjCustomer tjCustomer, TjReportTemplate reportTemplate,DictHosp dictHosp,HashMap<String, Object> jianYanMap) {
         String tjNumber = tjOrder.getTjNumber();
         String template = reportTemplate.getTemplate();
         LambdaQueryWrapper<DictComp> wq111 = new LambdaQueryWrapper<>();
@@ -865,27 +2419,66 @@
             }
             //鎷兼帴閲嶅ぇ闃虫�х粨鏋�
             StringBuffer str = new StringBuffer();
-            str.append("銆愰噸澶ч槼鎬ч」鐩�慭n");
-            LambdaQueryWrapper<TjBigPositive> bigPositiveLambdaQueryWrapper = new LambdaQueryWrapper<>();
-            bigPositiveLambdaQueryWrapper.eq(TjBigPositive::getTjNumber, tjNumber);
-            List<TjBigPositive> list1 = tjBigPositiveService.list(bigPositiveLambdaQueryWrapper);
-            if (list1 != null && list1.size() > 0) {
-                for (int i = 0; i < list1.size(); i++) {
-                    str.append((i + 1) + "銆�" + list1.get(i).getProName() + ";\n");
+            if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                str.append("銆愰噸澶ч槼鎬ч」鐩�慭n");
+                LambdaQueryWrapper<TjBigPositive> bigPositiveLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                bigPositiveLambdaQueryWrapper.eq(TjBigPositive::getTjNumber, tjNumber);
+                List<TjBigPositive> list1 = tjBigPositiveService.list(bigPositiveLambdaQueryWrapper);
+                if (list1 != null && list1.size() > 0) {
+                    for (int i = 0; i < list1.size(); i++) {
+                        str.append((i + 1) + "銆�" + list1.get(i).getProName() + ";\n");
+                    }
+                } else {
+                    str.append("    鏃狅紱\n");
                 }
-            } else {
-                str.append("    鏃狅紱\n");
             }
             //鎷兼帴寮傚父椤圭洰
             str.append("銆愬紓甯告儏鍐甸」鐩�慭n");
-            if (list.size() > 0) {
-                for (int i = 0; i < list.size(); i++) {
-                    if (list.get(i).getExceptionDesc() == 1) {
-                        str.append((i + 1) + "銆�" + projectService.getById(list.get(i).getProId()).getProName() + ";\n");
+            if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                if (list.size() > 0) {
+                    for (int i = 0; i < list.size(); i++) {
+                        if (list.get(i).getExceptionDesc() == 1) {
+                            str.append((i + 1) + "銆�" + projectService.getById(list.get(i).getProId()).getProName() + ";\n");
+                        }
+                    }
+                } else {
+                    str.append("    鏃狅紱\n");
+                }
+            }else {
+                int maxProjectLength = 0;
+                for (Map.Entry<String, Object> item : jianYanMap.entrySet()) {
+                    HashMap<String, Object> entryValue = (HashMap<String, Object>) item.getValue();
+                    ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
+                    for (List<String> i : lists) {
+                        maxProjectLength = Math.max(maxProjectLength, i.get(0).length());
                     }
                 }
-            } else {
-                str.append("    鏃狅紱\n");
+                int projectWidth = maxProjectLength * 2;
+                int resultWidth = 8;
+                int flagWidth = 8;
+                int unitWidth = 8;
+                int rangeWidth = 15;
+                str.append(padRight("椤圭洰", projectWidth))
+                        .append(padRight("缁撴灉", resultWidth))
+                        .append(padRight("鏍囧織", flagWidth))
+                        .append(padRight("鍗曚綅", unitWidth))
+                        .append(padRight("鍙傝�冭寖鍥�", rangeWidth))
+                        .append("\n");
+                for (Map.Entry<String, Object> item : jianYanMap.entrySet()) {
+                    HashMap<String, Object> entryValue = (HashMap<String, Object>) item.getValue();
+                    ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
+                    for (List<String> i : lists) {
+                        if (i.contains("鈫�") || i.contains("鈫�")) {
+                            int currentProjectWidth = i.get(0).length() + (maxProjectLength - i.get(0).length()) * 2 + 2;
+                            str.append(padRight(i.get(0), currentProjectWidth));
+                            str.append(padRight(i.get(1), resultWidth));
+                            str.append(padRight(i.get(2), flagWidth));
+                            str.append(padRight(i.get(3), unitWidth));
+                            str.append(padRight(i.get(4), rangeWidth));
+                            str.append("\n");
+                        }
+                    }
+                }
             }
             //寮傚父椤圭洰
             data.put("yichang", str.toString());
@@ -895,7 +2488,7 @@
                 acroFields.setField(key, data.get(key).toString());
             }
             //璁剧疆涓烘棤娉曠紪杈�
-//            pdfStamper.setFormFlattening(true);
+            pdfStamper.setFormFlattening(true);
             pdfStamper.close();
             reader.close();
             // 灏嗕慨鏀瑰悗鐨凱DF鍐呭鍐欏叆
@@ -925,6 +2518,14 @@
         }
     }
 
+    public static String padRight(String str, int length) {
+        StringBuilder sb = new StringBuilder(str);
+        while (sb.length() < length) {
+            sb.append(" ");
+        }
+        return sb.toString();
+    }
+
     /**
      * 缁勫悎闈炲寲楠岄」鐩姤鍛婃暟鎹�
      *
@@ -947,6 +2548,64 @@
         for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
             List<TjPdfVO> tjPdfVOS = new ArrayList<>();
             List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.getDetailByOrderIdAndParId(one.getOrderId(), entry.getKey().getProId());
+//            tjOrderDetails = new ArrayList<>(tjOrderDetails.stream()
+//                    .filter(i -> StrUtil.isNotBlank(i.getProResult()))
+//                    .collect(Collectors.toMap(
+//                            TjOrderDetail::getProId,
+//                            i -> i,
+//                            (existing, replacement) -> existing
+//                    ))
+//                    .values());
+            tjOrderDetails = tjOrderDetails.stream().filter(i -> StrUtil.isNotBlank(i.getProResult())).collect(Collectors.toList());
+            tjOrderDetails = new ArrayList<>(tjOrderDetails.stream().collect(Collectors.toMap(TjOrderDetail::getProId, i -> i, (existing, replacement) -> existing)).values());
+            for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
+                TjProject tjProject = projectService.getById(String.valueOf(tjOrderDetail.getProId()));
+                if (null != tjProject && tjProject.getNeedReport().equals("Y")) {
+                    tjOrderDetail.setProject(tjProject);
+
+                    if (tjOrderDetail.getProject().getProParentId().equals(entry.getKey().getProId())) {
+                        TjPdfVO tjPdfVO = new TjPdfVO();
+                        tjPdfVO.setProName(tjOrderDetail.getProject().getProName());
+                        tjPdfVO.setProResult(tjOrderDetail.getProResult());
+                        tjPdfVO.setExc(tjOrderDetail.getExceptionDesc());
+                        if (null != tjProject.getProMetering()) {
+                            tjPdfVO.setCompany(tjProject.getProMetering());
+                        } else {
+                            tjPdfVO.setCompany("/");
+                        }
+                        tjPdfVO.setProId(String.valueOf(tjOrderDetail.getProject().getProId()));
+                        tjPdfVO.setPid(String.valueOf(tjProject.getProParentId()));
+                        LambdaQueryWrapper<LtkjExamJcbgd> wrapper = new LambdaQueryWrapper<>();
+                        wrapper.eq(LtkjExamJcbgd::getTjh,tjNumber);
+                        wrapper.eq(LtkjExamJcbgd::getXmdm,String.valueOf(tjOrderDetail.getProject().getProParentId()));
+//                        LtkjExamJcbgd jcbgd = jcbgdService.getOne(wrapper);
+//                        if (jcbgd != null){
+//                            tjPdfVO.setTs(jcbgd.getYxbx());
+//                            tjPdfVO.setSj(jcbgd.getBgNr());
+//                            tjPdfVO.setShys(jcbgd.getShysxm());
+//                        }
+                        tjPdfVOS.add(tjPdfVO);
+                    }
+                }
+            }
+            printReport.put(entry.getKey(), tjPdfVOS);
+        }
+    }
+    private void pacsJianChaData(String tjNumber, Map<TjOrderRemark, List<TjPdfVO>> printReport, TjOrder one, TjCustomer customer) {
+//        LambdaQueryWrapper<TjOrderRemark> wqq = new LambdaQueryWrapper<>();
+//        wqq.eq(TjOrderRemark::getTjNumber, tjNumber);
+//        wqq.ne(TjOrderRemark::getDeptId, "241");
+//        wqq.in(TjOrderRemark::getDeptId, "269", "270", "253", "254", "255", "257");
+//        wqq.notIn(TjOrderRemark::getProId, projectService.getNneedReprotProId());
+//        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.list(wqq);
+        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.pacsJianChaData(tjNumber);
+        for (TjOrderRemark tjOrderRemark : tjOrderRemarks) {
+            printReport.put(tjOrderRemark, null);
+        }
+        for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
+            List<TjPdfVO> tjPdfVOS = new ArrayList<>();
+            List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.getDetailByOrderIdAndParId(one.getOrderId(), entry.getKey().getProId());
+            tjOrderDetails = new ArrayList<>(tjOrderDetails.stream().collect(Collectors.toMap(TjOrderDetail::getProId, i -> i, (existing, replacement) -> existing)).values());
             for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                 TjProject tjProject = projectService.getById(tjOrderDetail.getProId());
                 if (null != tjProject && tjProject.getNeedReport().equals("Y")) {
@@ -961,6 +2620,16 @@
                             tjPdfVO.setCompany(tjProject.getProMetering());
                         } else {
                             tjPdfVO.setCompany("/");
+                        }
+                        tjPdfVO.setProId(String.valueOf(tjOrderDetail.getProject().getProId()));
+                        LambdaQueryWrapper<LtkjExamJcbgd> wrapper = new LambdaQueryWrapper<>();
+                        wrapper.eq(LtkjExamJcbgd::getTjh,tjNumber);
+                        wrapper.eq(LtkjExamJcbgd::getXmdm,String.valueOf(tjOrderDetail.getProject().getProParentId()));
+                        LtkjExamJcbgd jcbgd = jcbgdService.getOne(wrapper);
+                        if (jcbgd != null){
+                            tjPdfVO.setTs(jcbgd.getYxbx());
+                            tjPdfVO.setSj(jcbgd.getBgNr());
+                            tjPdfVO.setShys(jcbgd.getShysxm());
                         }
                         tjPdfVOS.add(tjPdfVO);
                     }
@@ -1093,9 +2762,9 @@
 
     private static void addJianYanTable(Document document, String titleName, String[] titles, float[] titlesWidth, ArrayList<List<String>> lists,DictHosp dictHosp,String colorStr) throws DocumentException {
         // 澶ч」鏍囬
-        Font titleFont = PdfUtils.setFont(10);
+        Font titleFont = PdfUtils.setFont(DEFAULT_TITLE_FONT_SIZE);
         if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
-            titleFont.setSize(11);
+            titleFont.setSize(DEFAULT_TITLE_FONT_SIZE);
             titleFont.setStyle(Font.BOLD);
         }
         Paragraph paragraph = new Paragraph(titleName, titleFont);
@@ -1129,8 +2798,8 @@
             document.add(paragraph);
         }
         // 鍒涘缓涓�涓〃鏍煎苟娣诲姞鍒版枃妗�
-        Font headFont = PdfUtils.setFont(10);
-        Font textFont = PdfUtils.setFont(10);
+        Font headFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+        Font textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
         PdfPTable table = new PdfPTable(titlesWidth);
         table.setTotalWidth(PageSize.A4.getWidth() - 10); // 璁剧疆琛ㄦ牸鎬诲搴�
         //table.setLockedWidth(true); // 閿佸畾琛ㄦ牸瀹藉害
@@ -1151,13 +2820,16 @@
 
         for (List<String> list : lists) {
             boolean isYc = false;
-            textFont = PdfUtils.setFont(10);
+            textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
             if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
                 if (list.contains("鈫�") || list.contains("鈫�")){
                     isYc = true;
                 }
             }
+            int index = 1;
             for (String s : list) {
+                // 璺宠繃椤圭洰id
+                if (index == 6) continue;
                 PdfPCell nameCell = new PdfPCell();
                 nameCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
                 nameCell.setHorizontalAlignment(Element.ALIGN_LEFT);
@@ -1173,6 +2845,7 @@
                     nameCell.setPhrase(new Paragraph(s, textFont));
                 }
                 table.addCell(nameCell);
+                index++;
             }
         }
         document.add(table);
@@ -1504,20 +3177,22 @@
     }
 
     // 鑷畾涔夐〉鑴氬拰椤电湁鐨勭粯鍒�
-    static class FooterHeaderPageEvent extends PdfPageEventHelper {
+    class FooterHeaderPageEvent extends PdfPageEventHelper {
 
         private String name; // 椤电湁鐨勫悕瀛�
         private String tjName;
         private String tjNumber;
         private String sex;
         private String age;
+        private Integer page;
 
-        public FooterHeaderPageEvent(String name,String tjName,String tjNumber,String sex,String age) {
+        public FooterHeaderPageEvent(String name,String tjName,String tjNumber,String sex,String age,Integer page) {
             this.name = name;
             this.tjNumber = tjNumber;
             this.tjName = tjName;
             this.sex = sex;
             this.age = age;
+            this.page = page;
         }
 
         // 鍦ㄦ瘡涓�椤电殑椤堕儴缁樺埗椤电湁
@@ -1603,8 +3278,16 @@
             footerTable.addCell(hospitalNameCell);
 
             // 鍒涘缓椤电爜鐨勫崟鍏冩牸锛氬彸瀵归綈
-//            String pageText = "绗� " + writer.getPageNumber() + 1 + " 椤碉紝鍏� " + writer.getPageNumber() + " 椤�"; // 椤电爜
-            String pageText = "绗� " + (writer.getPageNumber() + 1) + " 椤�"; // 椤电爜
+            String pageText;
+//            if (page != null) pageText = "绗� " + writer.getPageNumber() + 1 + " 椤碉紝鍏� " + page + " 椤�"; // 椤电爜
+//            else pageText = "绗� " + (writer.getPageNumber() + 1) + " 椤�"; // 椤电爜
+
+//            if (page == null) {
+//                pageText = "绗� " + (writer.getPageNumber() + 1) + " 椤�"; // 椤电爜
+//            } else {
+//                pageText = "绗� " + (page + 1) + " 椤�"; // 椤电爜
+//            }
+            pageText = "绗� " + (++pdfPage) + " 椤�";
             PdfPCell pageCell = new PdfPCell(new Phrase(pageText, PdfUtils.setFont(8)));
             pageCell.setHorizontalAlignment(Element.ALIGN_RIGHT); // 鍙冲榻�
             pageCell.setVerticalAlignment(Element.ALIGN_TOP); // 鍨傜洿瀵归綈鍒板簳閮�

--
Gitblit v1.8.0