From 14ecea8537d5b29ca64c75aad4ff49265018415d Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期三, 02 七月 2025 08:51:22 +0800
Subject: [PATCH] zjh20250702

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java | 2567 +++++++++++++++++++++++++++++------------------------------
 1 files changed, 1,264 insertions(+), 1,303 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 5cf465f..a7c993f 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -15,6 +16,7 @@
 import com.ltkj.common.core.domain.entity.SysDictData;
 import com.ltkj.common.core.domain.entity.SysUser;
 import com.ltkj.common.utils.DateUtils;
+import com.ltkj.common.utils.SecurityUtils;
 import com.ltkj.framework.config.MatchUtils;
 import com.ltkj.hosp.domain.*;
 import com.ltkj.hosp.mapper.DictUserInfoMapper;
@@ -31,6 +33,7 @@
 import com.ltkj.system.service.ISysUserService;
 import com.ltkj.web.config.pdfutils.PdfUtils;
 import com.ltkj.web.controller.system.SysDeptController;
+import jodd.util.StringUtil;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +47,10 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.text.Collator;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.List;
@@ -86,8 +93,8 @@
     private LtkjHysqdService ltkjHysqdService;
     @Autowired
     private LtkjGetexamreportinfoService ltkjGetexamreportinfoService;
-    @Value("${path.filePath}")
-    private String value;
+//    @Value("${path.filePath}")
+//    private String value;
     @Value("${path.reportServer}")
     private String urlValue;
     @Autowired
@@ -112,6 +119,14 @@
     private TjOrderDetailMapper tjOrderDetailMapper;
     @Autowired
     private SysDeptController sysDeptController;
+    @Autowired
+    private ITjProAdvicerulesService tjProAdvicerulesService;
+    @Autowired
+    private TjOrderYcxmService ycxmService;
+    @Resource
+    private TjXdtgmdjgService xdtgmdjgService;
+    @Autowired
+    private TjReportSpecialProjectService tjReportSpecialProjectService;
 
     private Integer pdfPage = 0;
 
@@ -135,7 +150,7 @@
         return data;
     }
 
-    public void putData(JSONObject jsonObject, AjaxResult result, String key) {
+/*    public void putData(JSONObject jsonObject, AjaxResult result, String key) {
         if (Integer.parseInt(result.get("code").toString()) == 200) {
             List<Map<String, Object>> data = (List<Map<String, Object>>) result.get("data");
             jsonObject.putOpt(key, data);
@@ -148,7 +163,7 @@
 //        list.get(0).getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")
         List<SysDictData> sysUserSex = sysDictDataService.list(new LambdaQueryWrapper<SysDictData>().eq(SysDictData::getDictType, "sys_user_sex"));
         HashMap<String, Object> map = makeHisJianYan(tjOrder, customer);
-        HashMap<String, Object> pdfChangGui = makePDFInfo(tjOrder, customer, tjReportTemplate,dictHosp,map);
+        HashMap<String, Object> pdfChangGui = makePDFInfo(tjOrder, customer, tjReportTemplate, dictHosp, map);
         if (pdfChangGui == null)
             return AjaxResult.error();
         Document document = (Document) pdfChangGui.get("document");
@@ -161,7 +176,7 @@
         try {
             pdfWriter = PdfWriter.getInstance(document1, byteArrayOutputStream1);
 //            if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
-            if (true){
+            if (true) {
                 String sex = "";
                 if (customer.getCusSex() != null) {
                     for (SysDictData userSex : sysUserSex) {
@@ -172,7 +187,7 @@
                 }
                 if (StrUtil.isBlank(sex)) sex = "鏈煡";
 //                pdfWriter.setPageEvent(new FooterHeaderPageEvent("婢勫悎鐭垮姟灞�涓績鍖婚櫌",customer.getCusName(),tjOrder.getTjNumber(),sex,String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday())),null));
-                pdfWriter.setPageEvent(new FooterHeaderPageEvent(dictHosp.getHospName(),customer.getCusName(),tjOrder.getTjNumber(),sex,String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday())),null));
+                pdfWriter.setPageEvent(new FooterHeaderPageEvent(dictHosp.getHospName(), customer.getCusName(), tjOrder.getTjNumber(), sex, String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday())), null));
                 pageSize = pdfWriter.getPageNumber();
             }
         } catch (DocumentException e) {
@@ -183,43 +198,43 @@
         document1.open();
 
 //        if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
-        if (true){
+        if (true) {
             // 缁勮浣撴妫�鏌ラ」鐩姤鍛�
             Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
             notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
             try {
-                notHuaYanTable(document1, printReport,dictHosp,color,false);
+                notHuaYanTable(document1, printReport, dictHosp, color, false);
             } catch (DocumentException e) {
                 log.error("闈炲寲楠岄」鐩~鍏呰〃鏍煎紓甯�");
                 log.error(String.valueOf(e));
                 return AjaxResult.error();
             }
             // 缁勮妫�楠屾暟鎹�
-            makeHisJianYanTable(document1, map,dictHosp,color);
+            makeHisJianYanTable(document1, map, dictHosp, color);
 
             // 缁勮pacs妫�鏌ユ暟鎹�
             printReport = new HashMap<>();
             pacsJianChaData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
             try {
-                notHuaYanTable(document1, printReport,dictHosp,color,true);
+                notHuaYanTable(document1, printReport, dictHosp, color, true);
             } catch (DocumentException e) {
                 log.error("pacs椤圭洰濉厖琛ㄦ牸寮傚父");
                 log.error(String.valueOf(e));
                 return AjaxResult.error();
             }
-        }else {
+        } else {
             // 闈炲寲楠岄」鐩姤鍛�
             Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
             notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
             try {
-                notHuaYanTable(document1, printReport,dictHosp,color,true);
+                notHuaYanTable(document1, printReport, dictHosp, color, true);
             } catch (DocumentException e) {
                 log.error("闈炲寲楠岄」鐩~鍏呰〃鏍煎紓甯�");
                 log.error(String.valueOf(e));
                 return AjaxResult.error();
             }
             // 缁勮妫�楠屾暟鎹�
-            makeHisJianYanTable(document1, map,dictHosp,color);
+            makeHisJianYanTable(document1, map, dictHosp, color);
         }
         document1.close();
 
@@ -232,8 +247,8 @@
         }
 
 //        if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
-        if (!true){
-            List<ByteArrayOutputStream> jianchas =  makeHisJianChaTable(tjOrder);
+        if (!true) {
+            List<ByteArrayOutputStream> jianchas = makeHisJianChaTable(tjOrder);
 //        List<ByteArrayOutputStream> jianchas = makeCcgcHisJianChaTable(tjOrder);
             try {
                 for (ByteArrayOutputStream jiancha : jianchas) {
@@ -263,7 +278,7 @@
             ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
             PdfStamper pdfStamper = new PdfStamper(pdfReader, outputStream);
 //            if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
-            if (!true){
+            if (!true) {
                 PdfContentByte contentByte;
                 BaseFont baseFont = PdfUtils.createBaseFont(null);
                 for (int i = 2; i <= pages; i++) {
@@ -305,13 +320,12 @@
         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));
+        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();
@@ -331,7 +345,7 @@
         String[] titles = {"绉戝", "浣撴椤圭洰", "妫�鏌ョ姸鎬�", "妫�鏌ユ椂闂�"};
 
         for (String head : titles) {
-            table.addCell(PdfUtils.createCell(head, defaultFont, Rectangle.BOX, Element.ALIGN_CENTER,5f,5f));
+            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()) {
@@ -346,7 +360,7 @@
             deptCell.setRowspan(proVos.size());
             table.addCell(deptCell);
             proVos.forEach(proVo -> {
-                table.addCell(PdfUtils.createCell(proVo.getProName(), defaultFont,Rectangle.BOX,Element.ALIGN_CENTER,5f,5f));
+                table.addCell(PdfUtils.createCell(proVo.getProName(), defaultFont, Rectangle.BOX, Element.ALIGN_CENTER, 5f, 5f));
                 String tjType = "";
                 switch (proVo.getType()) {
                     case 0:
@@ -362,12 +376,12 @@
                         tjType = "寤舵湡";
                         break;
                 }
-                table.addCell(PdfUtils.createCell(tjType, defaultFont,Rectangle.BOX,Element.ALIGN_CENTER,5f,5f));
+                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));
+                table.addCell(PdfUtils.createCell(tjTime, defaultFont, Rectangle.BOX, Element.ALIGN_CENTER, 5f, 5f));
             });
         }
         document2.add(table);
@@ -379,9 +393,8 @@
 
 
         //        List<TjOrderRemark> remarks = tjOrderRemarkMapper.getzongjianyishengchakanyichangxiangmu3( tjOrder.getTjNumber());
-        List<TjOrderDetail> orderDetails = tjOrderDetailMapper.getzongjianyishengchakanyichangxiangmu4( tjOrder.getTjNumber());
+        List<TjOrderDetail> orderDetails = tjOrderDetailMapper.getzongjianyishengchakanyichangxiangmu4(tjOrder.getTjNumber());
 //        List<Map<String, Object>> jiancha = new ArrayList<>();
-
 
 
         paragraph = PdfUtils.setParagraph(defaultTitleFont, "妫�鏌ョ患杩帮細");
@@ -396,7 +409,7 @@
             boolean isXmWrite = false;
             for (TjOrderDetail detail : details) {
                 if (!isXmWrite) {
-                    paragraph = new Paragraph(xmXh+".  "+xmmc, defaultFont);
+                    paragraph = new Paragraph(xmXh + ".  " + xmmc, defaultFont);
                     paragraph.setAlignment(Element.ALIGN_LEFT);
                     document2.add(paragraph);
                     isXmWrite = true;
@@ -404,11 +417,11 @@
                 String result = detail.getProResult();
                 if (StrUtil.isNotBlank(result)) {
                     int index = 1;
-                    result = result.replaceAll("鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�","");
+                    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;
+                        if (StrUtil.isBlank(s.replaceAll("\n", "").trim())) continue;
                         builder.append("    (").append(index).append(")").append(s).append("\n");
                         index++;
                     }
@@ -435,13 +448,13 @@
             for (List<String> i : lists) {
                 if (i.contains("鈫�") || i.contains("鈫�")) {
                     if (!isXmWrite) {
-                        paragraph = new Paragraph(xmXh+".  "+xmmc,defaultFont);
+                        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);
+                    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++;
@@ -455,19 +468,11 @@
         }
 
 
-
-
-
-
         paragraph = PdfUtils.setParagraph(defaultFont, "");
         paragraph.setLeading(0f);
         paragraph.setSpacingBefore(10f);
         paragraph.setSpacingAfter(10f);
         document2.add(paragraph);
-
-
-
-
 
 
         paragraph = PdfUtils.setParagraph(defaultTitleFont, "鍖荤敓寤鸿锛�");
@@ -485,13 +490,13 @@
                 if (i.contains("鈫�") || i.contains("鈫�")) {
                     if (!isXmWrite) {
                         xmXh++;
-                        paragraph = new Paragraph("銆�"+xmXh+"."+xmmc+"銆�",defaultFont);
+                        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);
+                    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
@@ -506,9 +511,9 @@
 //
 //                        }
                     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) {
+                    List<Map<String, Object>> maps = tjRulesService.getyichangxiangmujianyiguize(i.get(5), "", i.get(2), tjOrder.getTjNumber(), i.get(5), "");
+                    if (!maps.isEmpty()) {
+                        for (Map<String, Object> objectMap : maps) {
 //                                paragraph = new Paragraph(str+"寤鸿鏍囬",defaultFont);
 //                                paragraph.setAlignment(Element.ALIGN_LEFT);
 //                                document2.add(paragraph);
@@ -524,18 +529,19 @@
 //                                paragraph = new Paragraph(str+objectMap.get("nr").toString(),defaultFont);
 //                                paragraph.setAlignment(Element.ALIGN_LEFT);
 //                                document2.add(paragraph);
-                                String content1 = str+objectMap.get("bt").toString().trim()+objectMap.get("nr").toString().trim();
-                                if (StrUtil.isBlank(content1)) content1 = "     鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�";
+                            String content1 = str + objectMap.get("bt").toString().trim() + objectMap.get("nr").toString().trim();
+                            if (StrUtil.isBlank(content1))
+                                content1 = "     鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�";
 
-                                paragraph = new Paragraph(content1,defaultFont);
-                                paragraph.setAlignment(Element.ALIGN_LEFT);
-                                document2.add(paragraph);
-                            }
-                            paragraph = PdfUtils.setParagraph(defaultFont, "");
-                            paragraph.setSpacingBefore(2f);
-                            paragraph.setSpacingAfter(5f);
+                            paragraph = new Paragraph(content1, defaultFont);
+                            paragraph.setAlignment(Element.ALIGN_LEFT);
                             document2.add(paragraph);
                         }
+                        paragraph = PdfUtils.setParagraph(defaultFont, "");
+                        paragraph.setSpacingBefore(2f);
+                        paragraph.setSpacingAfter(5f);
+                        document2.add(paragraph);
+                    }
 //                    }
                     index++;
                 }
@@ -555,7 +561,7 @@
             for (TjOrderDetail detail : details) {
                 if (!isXmWrite) {
                     xmXh++;
-                    paragraph = new Paragraph("銆�"+xmXh+"."+xmmc+"銆�", defaultFont);
+                    paragraph = new Paragraph("銆�" + xmXh + "." + xmmc + "銆�", defaultFont);
                     paragraph.setAlignment(Element.ALIGN_LEFT);
                     document2.add(paragraph);
                     isXmWrite = true;
@@ -570,12 +576,13 @@
                     boolean contains = result.contains("鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�");
                     StringBuilder builder = new StringBuilder();
                     for (String s : split) {
-                        if (StrUtil.isBlank(s.replaceAll("\n","").trim())) continue;
+                        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);
+                    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;
@@ -586,12 +593,13 @@
                 paragraph.setAlignment(Element.ALIGN_LEFT);
                 document2.add(paragraph);
                 String str = "     ";
-                List<Map<String, Object>> maps = tjRulesService.getyichangxiangmujianyiguize(entry.getKey().toString(),"","",tjOrder.getTjNumber());
+                List<Map<String, Object>> maps = tjRulesService.getyichangxiangmujianyiguize(entry.getKey().toString(), "", "", tjOrder.getTjNumber(), detail.getProName(), "");
                 for (Map<String, Object> objectMap : maps) {
-                    String content1 = str+objectMap.get("bt").toString()+objectMap.get("nr").toString();
-                    if (StrUtil.isBlank(content1)) content1 = "     鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�";
+                    String content1 = str + objectMap.get("bt").toString() + objectMap.get("nr").toString();
+                    if (StrUtil.isBlank(content1))
+                        content1 = "     鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�";
 
-                    paragraph = new Paragraph(content1,defaultFont);
+                    paragraph = new Paragraph(content1, defaultFont);
                     paragraph.setAlignment(Element.ALIGN_LEFT);
                     document2.add(paragraph);
                 }
@@ -603,9 +611,6 @@
                 document2.add(paragraph);
             }
         }
-
-
-
 
 
         for (int i = 0; i < 1; i++) {
@@ -640,7 +645,7 @@
         document2.add(paragraphNone);
 
 
-        PdfPTable tableQz = new PdfPTable(new float[]{100f,100f,50f});
+        PdfPTable tableQz = new PdfPTable(new float[]{100f, 100f, 50f});
         tableQz.setTotalWidth(PageSize.A4.getWidth() - 100);
         tableQz.setLockedWidth(true);
         tableQz.setHorizontalAlignment(Element.ALIGN_LEFT);
@@ -731,14 +736,13 @@
         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));
+        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));
@@ -752,7 +756,7 @@
         Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
         notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
         try {
-            notHuaYanTable(document, printReport, dictHosp, color,false);
+            notHuaYanTable(document, printReport, dictHosp, color, false);
         } catch (DocumentException e) {
             log.error("闈炲寲楠岄」鐩~鍏呰〃鏍煎紓甯�");
             log.error(String.valueOf(e));
@@ -764,16 +768,13 @@
         printReport = new HashMap<>();
         pacsJianChaData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
         try {
-            notHuaYanTable(document, printReport, dictHosp, color,true);
+            notHuaYanTable(document, printReport, dictHosp, color, true);
         } catch (DocumentException e) {
             log.error("pacs椤圭洰濉厖琛ㄦ牸寮傚父");
             log.error(String.valueOf(e));
             return AjaxResult.error();
         }
         document.close();
-
-
-
 
 
         // 棣栭〉琛ㄥ崟
@@ -836,7 +837,6 @@
         byte[] bytes = byteArrayOutputStream4.toByteArray();
 
 
-
         ByteArrayOutputStream finalOutput = new ByteArrayOutputStream();
         Document mergedDocument = new Document(PageSize.A4);
         PdfCopy copy = new PdfCopy(mergedDocument, finalOutput);
@@ -868,697 +868,639 @@
         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 {
-        String s1 = sysConfigService.selectConfigByKey("tjreport_font_size_second_page_info");
-        String s2 = sysConfigService.selectConfigByKey("tjreport_font_size_second_page_title");
-        String s3 = sysConfigService.selectConfigByKey("tjreport_font_size_result_title");
-        String s4 = sysConfigService.selectConfigByKey("tjreport_font_size_zongjian");
+    public AjaxResult hisPDFNew2(TjOrder tjOrder, TjCustomer customer, TjReportTemplate tjReportTemplate, TjReportTemplate zongJianYiShiQianMing) throws Exception {
+       try {
+           String s1 = sysConfigService.selectConfigByKey("tjreport_font_size_second_page_info");
+           String s2 = sysConfigService.selectConfigByKey("tjreport_font_size_second_page_title");
+           String s3 = sysConfigService.selectConfigByKey("tjreport_font_size_result_title");
+           String s4 = sysConfigService.selectConfigByKey("tjreport_font_size_zongjian");
+           String value = sysConfigService.selectConfigByKey("path_filePath");
 //        String hospName = sysDeptController.getdangqiandengluyuanqu().get("msg").toString();
-        if (StrUtil.isNotBlank(s1) && Integer.parseInt(s1) > 10) DEFAULT_FONT_SIZE = Integer.parseInt(s1);
-        else DEFAULT_FONT_SIZE = 10;
-        if (StrUtil.isNotBlank(s2) && Integer.parseInt(s2) > 10) DEFAULT_LITTLE_TITLE_FONT_SIZE = Integer.parseInt(s2);
-        else DEFAULT_LITTLE_TITLE_FONT_SIZE = 10;
-        if (StrUtil.isNotBlank(s3) && Integer.parseInt(s3) > 10) DEFAULT_TITLE_FONT_SIZE = Integer.parseInt(s3);
-        else DEFAULT_TITLE_FONT_SIZE = 10;
-        if (StrUtil.isNotBlank(s4) && Integer.parseInt(s4) > 10) DEFAULT_ZONGJIAN_FONT_SIZE = Integer.parseInt(s4);
-        else DEFAULT_ZONGJIAN_FONT_SIZE = 10;
-        pdfPage = 0;
-        DictHosp dictHosp = dictHospService.list().get(0);
-        HOSP_NAME = dictHosp.getHospName();
-        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 = "鏈煡";
+           if (StrUtil.isNotBlank(s1) && Integer.parseInt(s1) > 10) DEFAULT_FONT_SIZE = Integer.parseInt(s1);
+           else DEFAULT_FONT_SIZE = 10;
+           if (StrUtil.isNotBlank(s2) && Integer.parseInt(s2) > 10) DEFAULT_LITTLE_TITLE_FONT_SIZE = Integer.parseInt(s2);
+           else DEFAULT_LITTLE_TITLE_FONT_SIZE = 10;
+           if (StrUtil.isNotBlank(s3) && Integer.parseInt(s3) > 10) DEFAULT_TITLE_FONT_SIZE = Integer.parseInt(s3);
+           else DEFAULT_TITLE_FONT_SIZE = 10;
+           if (StrUtil.isNotBlank(s4) && Integer.parseInt(s4) > 10) DEFAULT_ZONGJIAN_FONT_SIZE = Integer.parseInt(s4);
+           else DEFAULT_ZONGJIAN_FONT_SIZE = 10;
+           pdfPage = 0;
+           DictHosp dictHosp = dictHospService.list().get(0);
+           HOSP_NAME = dictHosp.getHospName();
+           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);
 
-        // 鐢熸垚 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));
 
-        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();
 
-        document2.setMargins(50, 70, 40, 50);
-        document2.open();
+           List<CsProVo> list = tjOrderRemarkService.cSWebGetProByTjNumAndOrderId(tjOrder.getTjNumber(), false);
 
-        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);
 
-        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 = {"绉戝", "浣撴椤圭洰", "妫�鏌ョ姸鎬�", "妫�鏌ユ椂闂�"};
 
-        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()));
+           Map<String, List<CsProVo>> listMap = list.stream()
+                   .collect(Collectors.groupingBy(
+                           i -> i.getDeptId() + "_" + i.getDeptName(),
+                           TreeMap::new, // 鎸夐敭鎺掑簭
+                           Collectors.mapping(
+                                   i -> i,
+                                   Collectors.collectingAndThen(
+                                           Collectors.toList(),
+                                           l -> l.stream()
+                                                   .sorted(Comparator.comparing(CsProVo::getDeptId)) // 瀵� List 鎺掑簭
+                                                   .collect(Collectors.toList())
+                                   )
+                           )
+                   ));
 
-        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 (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);
-        }
+           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<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));
+           LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
+           wq.eq(TjOrderYcxm::getTjh, tjOrder.getTjNumber());
+           List<TjOrderYcxm> ycxms = ycxmService.list(wq);
+           boolean isBr = false;
+           if (null != ycxms && !ycxms.isEmpty()) {
 
-        int xmXh = 1;
+               paragraph = PdfUtils.setParagraph(defaultTitleFont, "妫�鏌ョ患杩帮細");
+               paragraph.setSpacingBefore(3f);
+               paragraph.setSpacingAfter(2f);
+               document2.add(paragraph);
+               isBr = true;
 
-        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) {
+               Map<String, List<TjOrderYcxm>> stringListMap = ycxms.stream().collect(Collectors.groupingBy(TjOrderYcxm::getParentName));
 
-                // 妫�鏌�
-                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, List<TjOrderYcxm>> entry : stringListMap.entrySet()) {
+                   List<TjOrderYcxm> details = entry.getValue();
+                   String xmmc = entry.getKey();
+//                    String xmmc = details.get(0).getProName();
+                   boolean isXmWrite = false;
+                   int index = 1;
+                   for (TjOrderYcxm detail : details) {
+//                        if (!entry.getKey().equals(detail.getProId())) continue;
+                       if (!isXmWrite) {
+                           paragraph = new Paragraph(xmXh + ".  " + xmmc, defaultFont);
+                           paragraph.setAlignment(Element.ALIGN_LEFT);
+                           document2.add(paragraph);
+                           isXmWrite = true;
+                       }
+                       String result = detail.getJcjg();
+                       if (StrUtil.isNotBlank(result)) {
+                           result = result.replaceAll("鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�", "");
+                           StringBuilder builder = new StringBuilder();
+                           if (StrUtil.isBlank(result.replaceAll("\n", "").trim())) continue;
+                           builder.append("    (").append(index).append(")").append(detail.getJcxm()).append(": ").append(result).append("\n");
+                           index++;
 
-                // 妫�楠�
-                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++;
-                    }
-                }
-            }
-        }
+                           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++;
+                   }
+               }
+           }
 
+           if(isBr) {
+               paragraph = PdfUtils.setParagraph(defaultFont, "");
+               paragraph.setLeading(0f);
+               paragraph.setSpacingBefore(10f);
+               paragraph.setSpacingAfter(10f);
+               document2.add(paragraph);
+           }
 
 
+           xmXh = 0;
+//        LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
+//        wq.eq(TjOrderYcxm::getTjh, tjOrder.getTjNumber());
+//        List<TjOrderYcxm> ycxms = ycxmService.list(wq);
+           if (null != ycxms && !ycxms.isEmpty()) {
 
+               paragraph = PdfUtils.setParagraph(defaultTitleFont, "鍖荤敓寤鸿锛�");
+               paragraph.setSpacingBefore(3f);
+               paragraph.setSpacingAfter(2f);
+               document2.add(paragraph);
 
+               Map<String, List<TjOrderYcxm>> stringListMap = ycxms.stream().collect(Collectors.groupingBy(TjOrderYcxm::getParentName));
 
+               for (Map.Entry<String, List<TjOrderYcxm>> entry : stringListMap.entrySet()) {
+                   List<TjOrderYcxm> details = entry.getValue();
+                   if(null !=details && !details.isEmpty()){
+                       details= details.stream()
+                               .sorted(Comparator.comparing(TjOrderYcxm::getJcxm))
+                               .collect(Collectors.toList());
+                       boolean isXmWrite = false;
+                       int index = 1;
+                       int index1 = 1;
+                       for (TjOrderYcxm detail : details) {
+                           String xmmc = entry.getKey().toString();
+                           if (!isXmWrite) {
+                               xmXh++;
+                               paragraph = new Paragraph("銆�" + xmXh + "." + xmmc + "銆�", defaultFont);
+                               paragraph.setAlignment(Element.ALIGN_LEFT);
+                               document2.add(paragraph);
+                               isXmWrite = true;
+                           }
+                           String result = detail.getJcjg();
+                           if (StrUtil.isNotBlank(result)) {
+                               StringBuilder builder = new StringBuilder();
+                               if (StrUtil.isBlank(result.replaceAll("\n", "").trim())) continue;
+                               builder.append("    (").append(index1).append(")").append(detail.getJcxm()).append(": ").append(result).append("\n");
+                               index1++;
 
+                               result = builder.toString();
+                           }
+                           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 = new ArrayList<>();
 
+                           String jynr = detail.getJynr();
+                           JSONArray array = JSONUtil.parseArray(jynr);
+                           for (Object object : array) {
+                               Map<String,Object> objectMap=new HashMap<>();
+                               JSONObject jsonObject = (JSONObject) object;
+                               String bt = jsonObject.getStr("bt");
+                               String nr = jsonObject.getStr("nr");
+                               objectMap.put("bt",bt);
+                               objectMap.put("nr",nr);
+                               if(null !=bt || null !=nr) maps.add(objectMap);
+                           }
+                           List<Map<String, Object>> collect1 = maps.stream().distinct().collect(Collectors.toList());
+                           for (Map<String, Object> objectMap : collect1) {
+                               String content = str + objectMap.get("bt").toString() + objectMap.get("nr").toString();
+                               if (StrUtil.isBlank(content)) content = "     ";
+                               paragraph = new Paragraph(content, 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 paragraphs = new Paragraph(tjOrder.getCheckAdvice(), defaultFont);
+               //璁剧疆鏂囧瓧灞呬腑
+               paragraphs.setAlignment(Element.ALIGN_LEFT);
+               //琛岄棿璺�
+//            paragraphs.setLeading(5f);
+               //璁剧疆娈佃惤涓婄┖鐧�
+               paragraphs.setSpacingBefore(10f);
+               //璁剧疆娈佃惤涓嬬┖鐧�
+               paragraphs.setSpacingAfter(10f);
+//            paragraph = PdfUtils.setParagraph(defaultFont, tjOrder.getCheckAdvice());
+               document2.add(paragraphs);
+           }
 
 
+           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);
 
+           File file = new File(value + File.separator + "yinzhang.png");
+           cell = new PdfPCell();
+           cell.setBorder(Rectangle.NO_BORDER);
+           cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+           cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+           cell.setPaddingTop(10);
+           cell.setPaddingBottom(10);
+           if (!file.exists()) {
+               cell.setPhrase(new Phrase("", zongJianFont));
+           }else {
+               FileInputStream fileInputStream = new FileInputStream(file);
+               byte[] fileBytes = new byte[(int) file.length()];
+               fileInputStream.read(fileBytes);
+               fileInputStream.close();
+               Image image = Image.getInstance(Base64.getDecoder().decode(Base64.getEncoder().encodeToString(fileBytes)));
+               image.scaleToFit(90, 90);
+               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);
 
 
-
-
-
-
-
-        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) {
-                            String content = str + objectMap.get("bt").toString() + objectMap.get("nr").toString();
-                            if (StrUtil.isBlank(content)) content = "     鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�";
-                            paragraph = new Paragraph(content,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);
-
-                                    String content1 = str + objectMap.get("bt").toString() + objectMap.get("nr").toString().trim();
-                                    if (StrUtil.isBlank(content)) content1 = "     鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�";
-                                    paragraph = new Paragraph(content1,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);
+           String zongjianysname = sysConfigService.selectConfigByKey("pdf_report_zongjianysname");
+           if (zongJianYiShiQianMing == null && StrUtil.isNotBlank(zongjianysname) && !zongjianysname.equals("鏃�")) {
+               cell.setPhrase(new Phrase(zongjianysname, zongJianFont));
+               tableQz.addCell(cell);
+           } else if (zongJianYiShiQianMing == null && zongjianysname.equals("鏃�")) {
+               String nickName = SecurityUtils.getLoginUser().getUser().getNickName();
+               cell.setPhrase(new Phrase(nickName, 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_CENTER);
-        cell.setPaddingTop(10);
-        cell.setPaddingBottom(10);
-        cell.setPhrase(new Phrase(new SimpleDateFormat("yyyy-MM-dd").format(tjOrder.getCheckTime()), 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);
 
-        document2.add(tableQz);
+           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.close();
+           document2.add(tableQz);
 
+           document2.close();
 
 
-        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-        Document document = new Document(PageSize.A4);
-        PdfWriter pdfWriter = null;
+           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));
+           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();
+           // 鍚庨潰椤电爜鏁伴噺
+           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);
+           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();
+           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();
+           }
 
 
+           String isPdfFujianPro = sysConfigService.selectConfigByKey("is_pdf_fujian_pro");
+           List<TjXdtgmdjg> xdtgmdjgList;
+           if (StrUtil.isNotBlank(isPdfFujianPro) && isPdfFujianPro.equalsIgnoreCase("Y")){
+               xdtgmdjgList = xdtgmdjgService.xdtGlAttProByTjNum(tjOrder.getTjNumber());
+           }else {
+               LambdaQueryWrapper<TjXdtgmdjg> wqq=new LambdaQueryWrapper<>();
+               wqq.eq(TjXdtgmdjg::getTjh,tjOrder.getTjNumber());
+               wqq.isNotNull(TjXdtgmdjg::getUrl);
+               xdtgmdjgList = xdtgmdjgService.list(wqq);
+           }
+
+           int index=1;
+           for (TjXdtgmdjg xdtgmdjg : xdtgmdjgList) {
+               document.newPage();
+               cell = new PdfPCell();
+               PdfPTable tablefj = new PdfPTable(new float[]{100f});
+               tablefj.setTotalWidth(PageSize.A4.getWidth() - 100);
+               tablefj.setLockedWidth(true);
+               tablefj.setHorizontalAlignment(Element.ALIGN_LEFT);
+               tablefj.getDefaultCell().setBorder(0);
+               tablefj.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
+
+               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("闄勪欢"+index+": "+ xdtgmdjg.getProName(), zongJianFont));
+               Path path = Paths.get(xdtgmdjg.getUrl());
+               byte[] bytesfj = null;
+               try {
+                   bytesfj = Files.readAllBytes(path);
+               } catch (IOException e) {
+                   throw new RuntimeException(e);
+               }
+               Image image = Image.getInstance(bytesfj);
+               image.scaleToFit(500, 2500);
+               tablefj.addCell(cell);
+               cell = new PdfPCell();
+               cell.addElement(image);
+               tablefj.addCell(cell);
+               document.add(tablefj);
+               index++;
+           }
+
+           document.close();
 
 
+           // 棣栭〉琛ㄥ崟
+           String tjNumber = tjOrder.getTjNumber();
+           String template = tjReportTemplate.getTemplate();
 
-        // 棣栭〉琛ㄥ崟
-        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;
 
-        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 {
+           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(tjOrder.getFirmName())) {
+               hashMap.put("work", tjOrder.getFirmName());
+           } else {
 //            LambdaQueryWrapper<DictComp> wq111 = new LambdaQueryWrapper<>();
 //            wq111.eq(DictComp::getDrugManufacturerId, tjOrder.getFirmId());
 //            DictComp dictComp = dictCompService.getOne(wq111);
 
-            if (StrUtil.isBlank(tjOrder.getFirmName())) {
-                hashMap.put("work", "鏃�");
-            } else {
-                hashMap.put("work", tjOrder.getFirmName());
-            }
+               if (StrUtil.isBlank(tjOrder.getFirmName())) {
+                   hashMap.put("work", "鏃�");
+               } else {
+                   hashMap.put("work", tjOrder.getFirmName());
+               }
+           }
+           if (StrUtil.isBlank(tjOrder.getFirmDeptName())) {
+               hashMap.put("bumen", "鏃�");
+           } else {
+               hashMap.put("bumen", tjOrder.getFirmDeptName());
+           }
+           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();
+        } catch (Exception e) {
+            log.error(String.valueOf(e));
+            throw new Exception(e);
         }
-        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();
     }
 
     /**
@@ -1626,23 +1568,23 @@
 //                    makeYiShiInfoLine(phrase, doctorFonts, bgysqm, bgysbh,"     鎶ュ憡鍖诲笀锛�");
 //                }
 //            }else {
-                builder = new StringBuilder();
-                if (null != sqrxm && StrUtil.isNotBlank(sqrxm)){
-                    builder.append("鐢宠浜猴細").append(sqrxm);
-                }
-                if (null != jcysqm && StrUtil.isNotBlank(jcysqm)){
-                    builder.append("     妫�鏌ュ尰甯堬細").append(jcysqm);
-                }
-                if (null != shysqm && StrUtil.isNotBlank(shysqm)){
-                    builder.append("     瀹℃牳鍖诲笀锛�").append(shysqm);
-                }
-                if (null != bgysqm && StrUtil.isNotBlank(bgysqm)){
-                    builder.append("     鎶ュ憡鍖诲笀锛�").append(bgysqm);
-                }
-                footer = builder.toString().trim();
+            builder = new StringBuilder();
+            if (null != sqrxm && StrUtil.isNotBlank(sqrxm)) {
+                builder.append("鐢宠浜猴細").append(sqrxm);
+            }
+            if (null != jcysqm && StrUtil.isNotBlank(jcysqm)) {
+                builder.append("     妫�鏌ュ尰甯堬細").append(jcysqm);
+            }
+            if (null != shysqm && StrUtil.isNotBlank(shysqm)) {
+                builder.append("     瀹℃牳鍖诲笀锛�").append(shysqm);
+            }
+            if (null != bgysqm && StrUtil.isNotBlank(bgysqm)) {
+                builder.append("     鎶ュ憡鍖诲笀锛�").append(bgysqm);
+            }
+            footer = builder.toString().trim();
 //            }
 //            elements.add(phrase);
-            ByteArrayOutputStream outputStream = makeJcPDFByteArrayStream(xm, xb, nl, jcks, zyh, ch, sjks, jcsb, jch, jcxm, ms, ts, null, footer,elements);
+            ByteArrayOutputStream outputStream = makeJcPDFByteArrayStream(xm, xb, nl, jcks, zyh, ch, sjks, jcsb, jch, jcxm, ms, ts, null, footer, elements);
             if (outputStream == null)
                 throw new Exception();
             jianchas.add(outputStream);
@@ -1661,7 +1603,7 @@
 
         TjCustomer customer = tjCustomerService.getById(tjOrder.getUserId());
 
-       List<LtkjExamJcbgd> list=jcbgdService.getJianJcBaoGaoDanByTjh(tjOrder.getCardId());
+        List<LtkjExamJcbgd> list = jcbgdService.getJianJcBaoGaoDanByTjh(tjOrder.getCardId());
 
         List<ByteArrayOutputStream> jianchas = new ArrayList<>();
         Paragraph elements = new Paragraph();
@@ -1672,7 +1614,7 @@
 
         for (LtkjExamJcbgd getexamreportinfo : list) {
             String xm = customer.getCusName();
-            String xb = customer.getCusSex()==2 ? "濂�" : "鐢�";
+            String xb = customer.getCusSex() == 2 ? "濂�" : "鐢�";
             String nl = customer.getAge();
             String jcks = "浣撴涓績";
             String sjks = "";
@@ -1690,20 +1632,20 @@
             StringBuilder builder;
             String footer;
             builder = new StringBuilder();
-            if (null != sqrxm && StrUtil.isNotBlank(sqrxm)){
+            if (null != sqrxm && StrUtil.isNotBlank(sqrxm)) {
                 builder.append("鐢宠浜猴細").append(sqrxm);
             }
-            if (null != jcysqm && StrUtil.isNotBlank(jcysqm)){
+            if (null != jcysqm && StrUtil.isNotBlank(jcysqm)) {
                 builder.append("     妫�鏌ュ尰甯堬細").append(jcysqm);
             }
-            if (null != shysqm && StrUtil.isNotBlank(shysqm)){
+            if (null != shysqm && StrUtil.isNotBlank(shysqm)) {
                 builder.append("     瀹℃牳鍖诲笀锛�").append(shysqm);
             }
-            if (null != bgysqm && StrUtil.isNotBlank(bgysqm)){
+            if (null != bgysqm && StrUtil.isNotBlank(bgysqm)) {
                 builder.append("     鎶ュ憡鍖诲笀锛�").append(bgysqm);
             }
             footer = builder.toString().trim();
-            ByteArrayOutputStream outputStream = makeJcPDFByteArrayStream(xm, xb, nl, jcks, zyh, ch, sjks, jcsb, jch, jcxm, ms, ts, null, footer,elements);
+            ByteArrayOutputStream outputStream = makeJcPDFByteArrayStream(xm, xb, nl, jcks, zyh, ch, sjks, jcsb, jch, jcxm, ms, ts, null, footer, elements);
             if (outputStream == null)
                 throw new Exception();
             jianchas.add(outputStream);
@@ -1713,13 +1655,14 @@
 
     /**
      * 鍖诲笀淇℃伅琛�
+     *
      * @param phrase
      * @param doctorFonts
      * @param sqrxm
      * @param sqrbh
      * @throws BadElementException
      */
-    private void makeYiShiInfoLine(Phrase phrase, Font doctorFonts, String sqrxm, String sqrbh,String title) throws BadElementException {
+    private void makeYiShiInfoLine(Phrase phrase, Font doctorFonts, String sqrxm, String sqrbh, String title) throws BadElementException {
         String qmImg = dictUserInfoMapper.selectQmImgInnerJoinUserByHisDictCode(sqrbh);
 //        String qmImg = dictUserInfoMapper.selectQmImgInnerJoinUserByUserId(sqrbh);
         if (null != qmImg && StrUtil.isNotBlank(qmImg)) {
@@ -1728,13 +1671,13 @@
             try {
                 image = Image.getInstance(decode);
                 image.scaleToFit(60, 25);
-                phrase.add(new Chunk(title,doctorFonts));
-                phrase.add(new Chunk(image,0,-10,true));
+                phrase.add(new Chunk(title, doctorFonts));
+                phrase.add(new Chunk(image, 0, -10, true));
             } catch (IOException e) {
-                phrase.add(new Chunk(title+sqrxm, doctorFonts));
+                phrase.add(new Chunk(title + sqrxm, doctorFonts));
             }
-        }else {
-            phrase.add(new Chunk(title+sqrxm, doctorFonts));
+        } else {
+            phrase.add(new Chunk(title + sqrxm, doctorFonts));
         }
     }
 
@@ -1747,6 +1690,7 @@
      */
     private void savePDFFile(String outputFileName1, TjOrder tjOrder, TjCustomer customer, ByteArrayOutputStream finalOutPut) throws IOException, DocumentException, InterruptedException {
         // 绗竴姝ワ細鐢熸垚鏂囦欢骞朵繚瀛�
+        String value = sysConfigService.selectConfigByKey("path_filePath");
         String outputPath1 = value + File.separator;
         File file = new File(outputPath1 + outputFileName1);
         BufferedOutputStream outputStream = null;
@@ -1779,7 +1723,6 @@
     }
 
 
-
     /**
      * 濉厖妫�楠岃〃鏍兼暟鎹�
      *
@@ -1787,68 +1730,72 @@
      * @param map
      * @throws DocumentException
      */
-    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[]{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();
-                HashSet<String> jyys = (HashSet<String>) entryValue.get("jyys");
-                ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
-                String shsj = entryValue.get("shsj").toString();
-                addJianYanTable(document1, titleName, titles, titlesWidth, lists,dictHosp,colorStr);
-                if (!jyys.isEmpty()) {
-                    Font doctorFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
-                    String doctors = "";
-                    Paragraph elements = new Paragraph();
-                    elements.setLeading(5f);
-                    elements.setSpacingBefore(10f);
-                    elements.setSpacingAfter(10f);
-                    elements.setAlignment(Element.ALIGN_RIGHT);
-                    Phrase phrase = new Phrase();
-                    phrase.add(new Chunk("妫�鏌ユ棩鏈燂細"+shsj+"         瀹℃牳鍖诲笀锛�",doctorFonts));
-                    boolean flag = false;
-                    for (String s : jyys) {
-                        if (s.contains("|")) {
-                            flag = true;
-                            String[] split = s.split("\\|");
-                            String qmImg = dictUserInfoMapper.selectQmImgInnerJoinUserByHisDictCode(split[1]);
-                            if (null != qmImg && StrUtil.isNotBlank(qmImg)) {
-                                byte[] decode = Base64.getDecoder().decode(qmImg);
-                                Image image = null;
-                                try {
-                                    image = Image.getInstance(decode);
-                                    image.scaleToFit(60, 25);
-                                    phrase.add(new Chunk(image,0,-10,true));
-                                } catch (IOException e) {
-                                    phrase.add(new Chunk(split[0].trim(),doctorFonts));
+    private void makeHisJianYanTable(Document document1, HashMap<String, Object> map, DictHosp dictHosp, String colorStr) throws DocumentException {
+        try {
+            if (!map.isEmpty()) {
+                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();
+                    HashSet<String> jyys = (HashSet<String>) entryValue.get("jyys");
+                    ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
+                    String shsj = entryValue.get("shsj").toString();
+                    addJianYanTable(document1, titleName, titles, titlesWidth, lists, dictHosp, colorStr);
+                    if (!jyys.isEmpty()) {
+                        Font doctorFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                        String doctors = "";
+                        Paragraph elements = new Paragraph();
+                        elements.setLeading(5f);
+                        elements.setSpacingBefore(10f);
+                        elements.setSpacingAfter(10f);
+                        elements.setAlignment(Element.ALIGN_RIGHT);
+                        Phrase phrase = new Phrase();
+                        phrase.add(new Chunk("妫�鏌ユ棩鏈燂細" + shsj + "         瀹℃牳鍖诲笀锛�", doctorFonts));
+                        boolean flag = false;
+                        for (String s : jyys) {
+                            if (s.contains("|")) {
+                                flag = true;
+                                String[] split = s.split("\\|");
+                                String qmImg = dictUserInfoMapper.selectQmImgInnerJoinUserByHisDictCode(split[1]);
+                                if (null != qmImg && StrUtil.isNotBlank(qmImg)) {
+                                    byte[] decode = Base64.getDecoder().decode(qmImg);
+                                    Image image = null;
+                                    try {
+                                        image = Image.getInstance(decode);
+                                        image.scaleToFit(60, 25);
+                                        phrase.add(new Chunk(image, 0, -10, true));
+                                    } catch (IOException e) {
+                                        phrase.add(new Chunk(split[0].trim(), doctorFonts));
+                                    }
+                                } else {
+                                    phrase.add(new Chunk(split[0].trim(), doctorFonts));
                                 }
                             } else {
-                                phrase.add(new Chunk(split[0].trim(),doctorFonts));
+                                doctors += s.trim() + "銆�";
                             }
+                        }
+                        if (!flag) {
+                            String substring = doctors.substring(0, doctors.length() - 1).trim();
+                            Paragraph df = PdfUtils.setParagraph(doctorFonts, "妫�鏌ユ棩鏈燂細" + shsj + "         瀹℃牳鍖诲笀锛�" + substring);
+                            df.setAlignment(Element.ALIGN_RIGHT);
+                            document1.add(df);
                         } else {
-                            doctors += s.trim() + "銆�";
+                            elements.add(phrase);
+                            document1.add(elements);
                         }
                     }
-                    if (!flag) {
-                        String substring = doctors.substring(0, doctors.length() - 1).trim();
-                        Paragraph df = PdfUtils.setParagraph(doctorFonts, "妫�鏌ユ棩鏈燂細"+shsj+"         瀹℃牳鍖诲笀锛�" + substring);
-                        df.setAlignment(Element.ALIGN_RIGHT);
-                        document1.add(df);
-                    } else {
-                        elements.add(phrase);
-                        document1.add(elements);
+                    //鍒嗗壊绾�
+    //                if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                    if (!true) {
+                        LineSeparator objectName = new LineSeparator();
+                        objectName.setOffset(-5);
+                        document1.add(objectName);
                     }
                 }
-                //鍒嗗壊绾�
-//                if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
-                if (!true) {
-                    LineSeparator objectName = new LineSeparator();
-                    objectName.setOffset(-5);
-                    document1.add(objectName);
-                }
             }
+        } catch (DocumentException e) {
+            throw new RuntimeException(e);
         }
     }
 
@@ -1859,219 +1806,162 @@
      * @param printReport
      * @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 ("1".equals(one11.getResultType())) {
-                    titleName = one11.getProName();
-                    // 璁剧疆鏍囬瀛椾綋鏍峰紡
-                    Font titleFonts = PdfUtils.setFont(9);
-                    Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
-
-//                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
-                    if (true) {
-                        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);
-                        Color color = Color.decode(colorStr);
-                        cellTitle.setBackgroundColor(new BaseColor(color.getRed(), color.getGreen(), color.getBlue())); // 璁剧疆鑳屾櫙棰滆壊锛堝崄鍏繘鍒� RGB锛�
-                        // 鍒涘缓琛ㄦ牸骞舵坊鍔犲崟鍏冩牸
-                        PdfPTable tableTitle = new PdfPTable(1);
-                        tableTitle.setWidthPercentage(100);
-                        tableTitle.addCell(cellTitle);
-                        // 灏嗚〃鏍兼坊鍔犲埌鏂囨。涓�
-                        document1.add(tableTitle);
-                    }else {
-                        document1.add(paragraph);
+    private void notHuaYanTable(Document document1, Map<TjOrderRemark, List<TjPdfVO>> printReport, DictHosp dictHosp, String colorStr, boolean isPacs) throws DocumentException {
+        try {
+            List<TjReportSpecialProject> tjReportSpecialProjects = tjReportSpecialProjectService.list();
+            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().stream().distinct().collect(Collectors.toList());
+                    if (StrUtil.isBlank(value.get(0).getProResult()) && (StrUtil.isBlank(value.get(0).getTs()) && StrUtil.isBlank(value.get(0).getSj()))) {
+                        continue;
                     }
+                    String titleName = null;
+                    if ("1".equals(one11.getResultType())) {
+                        titleName = one11.getProName();
+                        // 璁剧疆鏍囬瀛椾綋鏍峰紡
+                        Font titleFonts = PdfUtils.setFont(9);
+                        Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
+
+    //                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                        if (true) {
+                            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);
+                            Color color = Color.decode(colorStr);
+                            cellTitle.setBackgroundColor(new BaseColor(color.getRed(), color.getGreen(), color.getBlue())); // 璁剧疆鑳屾櫙棰滆壊锛堝崄鍏繘鍒� RGB锛�
+                            // 鍒涘缓琛ㄦ牸骞舵坊鍔犲崟鍏冩牸
+                            PdfPTable tableTitle = new PdfPTable(1);
+                            tableTitle.setWidthPercentage(100);
+                            tableTitle.addCell(cellTitle);
+                            // 灏嗚〃鏍兼坊鍔犲埌鏂囨。涓�
+                            document1.add(tableTitle);
+                        } else {
+                            document1.add(paragraph);
+                        }
 
 
-//                    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);
+    //                    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);
 
-//                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") && !value.isEmpty()){
-                    if (true && !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);
-                                if (StrUtil.isNotBlank(entry.getKey().getRemark())) {
-                                    ppp = new Paragraph("缁撹锛�" + entry.getKey().getRemark(), remarkFonts);
-                                    paragraph.setAlignment(Element.ALIGN_LEFT);
-                                    paragraph.setLeading(5f);
-                                    document1.add(ppp);
+    //                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") && !value.isEmpty()){
+                        if (!value.isEmpty()) {
+                            if (value.size() > 1) {
+                                Long pid = Long.valueOf(value.get(0).getPid());
+                                Optional<TjReportSpecialProject> match = tjReportSpecialProjects.stream()
+                                        .filter(item -> item.getProId().equals(pid))
+                                        .findFirst();
+                                if (match.isPresent()) {
+                                    reportSpecialProject(document1, entry, paragraph, value,match.get());
+                                } 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 {
-                                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);
+                            } 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);
-                                    if (StrUtil.isNotBlank(entry.getKey().getRemark())) {
-                                        ppp = new Paragraph("缁撹锛�" + entry.getKey().getRemark(), remarkFonts);
+                                if (isPacs) {
+                                    Paragraph pp;
+                                    Paragraph ppp;
+                                    if (StrUtil.isNotBlank(value.get(0).getSj())) {
+                                        pp = PdfUtils.setParagraph(remarkFonts, "妫�鏌ユ墍瑙侊細");
+                                        document1.add(pp);
+                                        ppp = new Paragraph(value.get(0).getSj().replaceAll("\n",""), 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);
+                                    if (StrUtil.isNotBlank(value.get(0).getTs())) {
+                                        pp = PdfUtils.setParagraph(remarkFonts, "妫�鏌ユ彁绀猴細"+value.get(0).getTs().replaceAll("\n",""));
+                                        document1.add(pp);
+                                    }
+
+    //                                ppp = new Paragraph(value.get(0).getTs(), remarkFonts);
+    //                                paragraph.setAlignment(Element.ALIGN_LEFT);
+    //                                paragraph.setLeading(5f);
+    //                                document1.add(ppp);
+                                } else {
+                                    Long pid = Long.valueOf(value.get(0).getPid());
+                                    Optional<TjReportSpecialProject> match = tjReportSpecialProjects.stream()
+                                            .filter(item -> item.getProId().equals(pid))
+                                            .findFirst();
+                                    if (match.isPresent()) {
+                                        reportSpecialProject(document1, entry, paragraph, value,match.get());
+                                    } 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("");
-                    }
-//                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
-                    if (!true){
-                        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);
+                            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
-                    zhuJianYiShi(document1, entry,orderRemark.getCreateTime(),dictHosp);
-                    //鍒嗗壊绾�
-//                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
-                    if (!true) {
-                        LineSeparator objectName = new LineSeparator();
-                        document1.add(objectName);
-                    }
-                } else {
-                    if (null != one11) {
+                        //鍒ゆ柇澶囨敞鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                        if (entry.getKey().getRemark() == null) {
+                            entry.getKey().setRemark("");
+                        }
+    //                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+                        if (false) {
+                            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);
+                            }
+                        }
+                        //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                        zhuJianYiShi(document1, entry, orderRemark.getCreateTime(), dictHosp);
+                        //鍒嗗壊绾�
+    //                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                        if (false) {
+                            LineSeparator objectName = new LineSeparator();
+                            document1.add(objectName);
+                        }
+                    } else {
                         if (entry.getValue().get(0).getProName().contains(";"))
                             titleName = entry.getValue().get(0).getProName();
                         else titleName = one11.getProName();
-                    } else {
-                        titleName = entry.getKey().getProName();
-                    }
-                    // 璁剧疆鏍囬瀛椾綋鏍峰紡
-                    Font titleFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
-                    Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
+                        // 璁剧疆鏍囬瀛椾綋鏍峰紡
+                        Font titleFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+                        Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
 
-//                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
-                    if (true) {
-                        if (StrUtil.isBlank(value.get(0).getProResult()) && (StrUtil.isBlank(value.get(0).getTs()) && StrUtil.isBlank(value.get(0).getSj()))){
+    //                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                        if (StrUtil.isBlank(value.get(0).getProResult()) && (StrUtil.isBlank(value.get(0).getTs().replaceAll("\n",""))
+                                && StrUtil.isBlank(value.get(0).getSj().replaceAll("\n","")))) {
                             continue;
                         }
                         Font titleFont = PdfUtils.setFont(DEFAULT_TITLE_FONT_SIZE);
@@ -2086,198 +1976,220 @@
                         tableTitle.addCell(cellTitle);
                         // 灏嗚〃鏍兼坊鍔犲埌鏂囨。涓�
                         document1.add(tableTitle);
-                    }else {
-                        document1.add(paragraph);
-                    }
 
-//                    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);
+    //                    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 (true && !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);
-                                if (StrUtil.isNotBlank(entry.getKey().getRemark())) {
-                                    ppp = new Paragraph("缁撹锛�" + entry.getKey().getRemark(), remarkFonts);
-                                    paragraph.setAlignment(Element.ALIGN_LEFT);
-                                    paragraph.setLeading(5f);
-                                    document1.add(ppp);
+    //                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") && !value.isEmpty()){
+                        if (!value.isEmpty()) {
+                            if (value.size() > 1) {
+                                Long pid = Long.valueOf(value.get(0).getPid());
+                                Optional<TjReportSpecialProject> match = tjReportSpecialProjects.stream()
+                                        .filter(item -> item.getProId().equals(pid))
+                                        .findFirst();
+                                if (match.isPresent()) {
+                                    reportSpecialProject(document1, entry, paragraph, value,match.get());
+                                } 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 {
-                                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);
+                            } 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);
+                                if (isPacs) {
+                                    Paragraph pp;
+                                    Paragraph ppp;
+    //                                String key = sysConfigService.selectConfigByKey("makepdfuseorderdetailproresult");
+    //                                if (StrUtil.isNotBlank(key) && !key.equals("Y")){
+    //                                    if (StrUtil.isNotBlank(value.get(0).getSj())) {
+    //                                        pp = PdfUtils.setParagraph(remarkFonts, "妫�鏌ユ墍瑙侊細");
+    //                                        document1.add(pp);
+    //                                        ppp = new Paragraph(value.get(0).getSj(), remarkFonts);
+    //                                        paragraph.setAlignment(Element.ALIGN_LEFT);
+    //                                        paragraph.setLeading(5f);
+    //                                        document1.add(ppp);
+    //                                    }
+    //                                }else {
+    //                                    if (StrUtil.isNotBlank(value.get(0).getSj()) || StrUtil.isNotBlank(value.get(0).getProResult())) {
+    //                                        pp = PdfUtils.setParagraph(remarkFonts, "妫�鏌ユ墍瑙侊細");
+    //                                        document1.add(pp);
+    //                                        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);
+    //                                    }
+    //                                }
 
-                                    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);
-                                    if (StrUtil.isNotBlank(entry.getKey().getRemark())) {
-                                        ppp = new Paragraph("缁撹锛�" + entry.getKey().getRemark(), remarkFonts);
+                                    if (StrUtil.isNotBlank(value.get(0).getSj()) || StrUtil.isNotBlank(value.get(0).getProResult())) {
+                                        pp = PdfUtils.setParagraph(remarkFonts, "妫�鏌ユ墍瑙侊細");
+                                        document1.add(pp);
+                                        ppp = new Paragraph(value.get(0).getSj() != null ? value.get(0).getSj().replaceAll("\n","") : value.get(0).getProResult().replaceAll("\n",""), 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);
+
+                                    pp = PdfUtils.setParagraph(remarkFonts, "妫�鏌ユ彁绀猴細");
+                                    document1.add(pp);
+                                    ppp = new Paragraph((value.get(0).getTs() != null ? value.get(0).getTs().replaceAll("\n","") : value.get(0).getProResult().replaceAll("\n","")), remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+    //                                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 {
+                                    Long pid = Long.valueOf(value.get(0).getPid());
+                                    Optional<TjReportSpecialProject> match = tjReportSpecialProjects.stream()
+                                            .filter(item -> item.getProId().equals(pid))
+                                            .findFirst();
+                                    if (match.isPresent()) {
+                                        reportSpecialProject(document1, entry, paragraph, value,match.get());
+                                    } 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("");
-                    }
-//                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
-                    if (!true){
-                        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);
+                            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
-                    zhuJianYiShi(document1, entry,orderRemark.getCreateTime(),dictHosp);
-//                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
-                    if (!true) {
-                        //鍒嗗壊绾�
-                        LineSeparator objectName = new LineSeparator();
-                        document1.add(objectName);
+
+
+                        //鍒ゆ柇澶囨敞鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                        if (entry.getKey().getRemark() == null) {
+                            entry.getKey().setRemark("");
+                        }
+    //                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+                        if (!true) {
+                            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);
+                            }
+                        }
+                        //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                        zhuJianYiShi(document1, entry, orderRemark.getCreateTime(), dictHosp);
+    //                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                        if (!true) {
+                            //鍒嗗壊绾�
+                            LineSeparator objectName = new LineSeparator();
+                            document1.add(objectName);
+                        }
                     }
                 }
             }
+        } catch (NumberFormatException e) {
+            throw new RuntimeException(e);
+        } catch (DocumentException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 鐩墠鍐欐 鍙湁纰�13銆�14 妯℃澘閮芥槸涓�鏍风殑鍙笉杩囧弬鑰冨�间笉鍚�
+     * 鍑屼簯锛歿"dy":"4.0","xy":"4.0","title":"闃虫�у弬鑰冨�硷細","dystr":"DOB鍊硷細         鈮�      ${dy}                HP-闃虫��","xystr":"                <      ${xy}                  姝e父","en":"DOB"}
+     * 娉惧窛鍘垮尰闄細{"dy":"100","xy":"100","title":"鍙傝�冨��(DPM)锛�","dystr":"DPM鍊硷細         鈮�      ${dy}                闃虫��","xystr":"                <      ${xy}                  闃存��","en":"DPM"}
+     * @param document1
+     * @param entry
+     * @param paragraph
+     * @param value
+     * @param tjReportSpecialProject
+     * @throws DocumentException
+     */
+    private static void reportSpecialProject(Document document1, Map.Entry<TjOrderRemark, List<TjPdfVO>> entry, Paragraph paragraph, List<TjPdfVO> value,TjReportSpecialProject tjReportSpecialProject) throws DocumentException {
+        JSONObject entries = JSONUtil.parseObj(tjReportSpecialProject.getParams());
+        Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
+        Paragraph ppp = new Paragraph(entries.getStr("title"), remarkFonts);
+        paragraph.setAlignment(Element.ALIGN_LEFT);
+        paragraph.setLeading(5f);
+        document1.add(ppp);
+
+        ppp = new Paragraph(entries.getStr("dystr").replace("${dy}",entries.getStr("dy")), remarkFonts);
+        paragraph.setAlignment(Element.ALIGN_LEFT);
+        paragraph.setLeading(5f);
+        document1.add(ppp);
+
+        ppp = new Paragraph(entries.getStr("xystr").replace("${xy}",entries.getStr("xy")), remarkFonts);
+        paragraph.setAlignment(Element.ALIGN_LEFT);
+        paragraph.setLeading(5f);
+        document1.add(ppp);
+
+
+        ppp = new Paragraph("妫�娴嬬粨鏋滐細 "+entries.getStr("en")+"=" + 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);
+        if (StrUtil.isNotBlank(entry.getKey().getRemark())) {
+            ppp = new Paragraph("缁撹锛�" + entry.getKey().getRemark().replaceAll("null",""), remarkFonts);
+            paragraph.setAlignment(Element.ALIGN_LEFT);
+            paragraph.setLeading(5f);
+            document1.add(ppp);
         }
     }
 
     /**
      * 涓昏鍖诲笀琛屾樉绀鸿缃�
+     *
      * @param document1
      * @param entry
      * @throws DocumentException
      */
-    private void zhuJianYiShi(Document document1, Map.Entry<TjOrderRemark, List<TjPdfVO>> entry,Date createTime,DictHosp dictHosp) throws DocumentException {
+    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("婢勫悎鐭垮姟灞�涓績鍖婚櫌") ) {
-        if ((null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) || true ) {
+        if ((null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) || true) {
             //涓绘鍖诲笀
             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 (sysUser != null) doctorNameDefault = sysUser.getNickName();
 //            if (!entry.getValue().isEmpty() && StrUtil.isNotBlank(entry.getValue().get(0).getShys()) && dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
-            if (!entry.getValue().isEmpty() && StrUtil.isNotBlank(entry.getValue().get(0).getShys()) && true){
+            if (!entry.getValue().isEmpty() && StrUtil.isNotBlank(entry.getValue().get(0).getShys()) && true) {
                 doctorNameDefault = entry.getValue().get(0).getShys();
             }
             Font doctorFonts = PdfUtils.setFont(9);
-            if (key.equals("Y")){
+            if (key.equals("Y")) {
                 String qmImg = dictUserInfoMapper.selectQmImgInnerJoinUserByUserId(String.valueOf(sysUser.getUserId()));
                 if (null != qmImg && StrUtil.isNotBlank(qmImg)) {
                     Paragraph elements = new Paragraph();
@@ -2287,8 +2199,8 @@
                     elements.setAlignment(Element.ALIGN_RIGHT);
                     Phrase phrase = new Phrase();
                     if (createTime != null) {
-                        phrase.add(new Chunk("妫�鏌ユ椂闂达細"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             涓绘鍖诲笀锛�", doctorFonts));
-                    }else {
+                        phrase.add(new Chunk("妫�鏌ユ椂闂达細" + new SimpleDateFormat("yyyy-MM-dd").format(createTime) + "             涓绘鍖诲笀锛�", doctorFonts));
+                    } else {
                         phrase.add(new Chunk("涓绘鍖诲笀锛�", doctorFonts));
                     }
                     byte[] decode = Base64.getDecoder().decode(qmImg);
@@ -2296,33 +2208,37 @@
                     try {
                         image = Image.getInstance(decode);
                         image.scaleToFit(60, 25);
-                        phrase.add(new Chunk(image,0,-10,true));
+                        phrase.add(new Chunk(image, 0, -10, true));
                         elements.add(phrase);
                         document1.add(elements);
                     } catch (IOException e) {
                         String doctorName = "涓绘鍖诲笀锛�" + doctorNameDefault;
-                        if (createTime != null) doctorName = "妫�鏌ユ椂闂达細"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             涓绘鍖诲笀锛�" + 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 {
+                } else {
                     String doctorName = "涓绘鍖诲笀锛�" + doctorNameDefault;
-                    if (createTime != null) doctorName = "妫�鏌ユ椂闂达細"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             涓绘鍖诲笀锛�" + 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 {
+            } else {
                 String doctorName = "涓绘鍖诲笀锛�" + doctorNameDefault;
-                if (createTime != null) doctorName = "妫�鏌ユ椂闂达細"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             涓绘鍖诲笀锛�" + 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)+"             涓绘鍖诲笀锛�" + "鏃�";
+            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);
@@ -2331,89 +2247,108 @@
     }
 
     public HashMap<String, Object> makeHisJianYan(TjOrder tjOrder, TjCustomer customer) {
-        LambdaQueryWrapper<LtkjHysqd> ltkjHysqdLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        ltkjHysqdLambdaQueryWrapper.eq(LtkjHysqd::getTjh, tjOrder.getCardId());
-        List<LtkjHysqd> list = ltkjHysqdService.list(ltkjHysqdLambdaQueryWrapper);
-        HashMap<String, Object> data = new HashMap<>();
-        for (LtkjHysqd hysqd : list) {
-            LambdaQueryWrapper<LtkjHybgd> ltkjHybgdLambdaQueryWrapper = new LambdaQueryWrapper<>();
-            ltkjHybgdLambdaQueryWrapper.eq(LtkjHybgd::getTmh, hysqd.getTmh());
-            List<LtkjHybgd> hybgds = ltkjHybgdService.list(ltkjHybgdLambdaQueryWrapper);
-            // 澶х被椤圭洰鍚嶇О
-            String xmmc = hysqd.getXmmc();
-            ArrayList<List<String>> lists = new ArrayList<>();
-            HashSet<String> hashSet = new HashSet<>();
-            String shsj = "";
-            for (LtkjHybgd hybgd : hybgds) {
-                shsj = hybgd.getShsj();
-                // 妫�鏌ラ」鐩�
-                String jcxm = hybgd.getJcxm() != null ? hybgd.getJcxm().trim() : null;
-                // 妫�楠岀粨鏋�
-                String jyjg = hybgd.getJyjg() != null ? hybgd.getJyjg().trim() : null;
-                // 缁撴灉鍗曚綅
-                String jgdw = hybgd.getJgdw() != null ? hybgd.getJgdw().trim() : null;
-                // 鑼冨洿鍊�
-                String fwz = hybgd.getFwz() != null ? hybgd.getFwz().trim() : null;
-                // 妫�楠屽尰甯�
-//                String jyys = hybgd.getJyys();
-                //瀹℃牳鍖荤敓
-                String shysmc = hybgd.getShysmc() != null ? hybgd.getShysmc().trim() : null;
-                // 瀹℃牳鍖诲笀缂栫爜
-                String shys = hybgd.getShys() != null ? hybgd.getShys().trim() : null;
-                String ycbz = "";
+        try {
+            LambdaQueryWrapper<LtkjHysqd> ltkjHysqdLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            ltkjHysqdLambdaQueryWrapper.eq(LtkjHysqd::getTjh, tjOrder.getCardId());
+            List<LtkjHysqd> list = ltkjHysqdService.list(ltkjHysqdLambdaQueryWrapper);
+            HashMap<String, Object> data = new HashMap<>();
+            for (LtkjHysqd hysqd : list) {
+    //            LambdaQueryWrapper<LtkjHybgd> ltkjHybgdLambdaQueryWrapper = new LambdaQueryWrapper<>();
+    //            ltkjHybgdLambdaQueryWrapper.eq(LtkjHybgd::getTmh, hysqd.getTmh());
+    //            List<LtkjHybgd> hybgds = ltkjHybgdService.list(ltkjHybgdLambdaQueryWrapper);
+                List<LtkjHybgd> hybgds = ltkjHybgdService.getReportJianYanBaoGaoDanList(hysqd.getTmh());
+                if(null !=hybgds && !hybgds.isEmpty()){
 
-                if (jyjg != null && StrUtil.isNotBlank(jyjg) && fwz != null && StrUtil.isNotBlank(fwz)) {
-                    try {
-                        String[] fwzs = fwz.split("-");
-                        BigDecimal min = new BigDecimal(fwzs[0]);
-                        BigDecimal max = new BigDecimal(fwzs[1]);
-                        BigDecimal jyjgval = new BigDecimal(jyjg);
-                        // 姣旇緝妫�楠岀粨鏋滃拰鑼冨洿鍊�
-                        if (jyjgval.compareTo(min) < 0) {
-                            // jyjg 灏忎簬鑼冨洿鏈�灏忓�硷紝娣诲姞涓嬬澶�
-//                            jyjg = jyjg + "   鈫�";
-                            ycbz = "鈫�";
-                        } else if (jyjgval.compareTo(max) > 0) {
-                            // jyjg 澶т簬鑼冨洿鏈�澶у�硷紝娣诲姞涓婄澶�
-//                            jyjg = jyjg + "   鈫�";
-                            ycbz = "鈫�";
+                    hybgds = new ArrayList<>(hybgds.stream()
+                            .collect(Collectors.toMap(LtkjHybgd::getJcxm, p -> p, (existing, replacement) -> existing))
+                            .values());
+
+    //                hybgds=hybgds.stream().sorted(Comparator.comparing(LtkjHybgd::getJcxm, Collator.getInstance(Locale.CHINA))).collect(Collectors.toList());
+    //                hybgds = hybgds.stream()
+    //                        .sorted(Comparator.comparingInt(
+    //                                a -> a.getJcxm().length() // 鏍规嵁鍚嶅瓧鐨勯暱搴︽帓搴�
+    //                        ))
+    //                        .collect(Collectors.toList());
+
+                    // 澶х被椤圭洰鍚嶇О
+                    String xmmc = hysqd.getXmmc();
+                    ArrayList<List<String>> lists = new ArrayList<>();
+                    HashSet<String> hashSet = new HashSet<>();
+                    String shsj = "";
+                    for (LtkjHybgd hybgd : hybgds) {
+                        shsj = hybgd.getShsj();
+                        // 妫�鏌ラ」鐩�
+                        String jcxm = hybgd.getJcxm() != null ? hybgd.getJcxm().trim() : null;
+                        // 妫�楠岀粨鏋�
+                        String jyjg = hybgd.getJyjg() != null ? hybgd.getJyjg().trim() : null;
+                        // 缁撴灉鍗曚綅
+                        String jgdw = hybgd.getJgdw() != null ? hybgd.getJgdw().trim() : null;
+                        // 鑼冨洿鍊�
+                        String fwz = hybgd.getFwz() != null ? hybgd.getFwz().trim() : null;
+                        // 妫�楠屽尰甯�
+    //                String jyys = hybgd.getJyys();
+                        //瀹℃牳鍖荤敓
+                        String shysmc = hybgd.getShysmc() != null ? hybgd.getShysmc().trim() : null;
+                        // 瀹℃牳鍖诲笀缂栫爜
+                        String shys = hybgd.getShys() != null ? hybgd.getShys().trim() : null;
+                        String ycbz = "";
+
+                        if (jyjg != null && StrUtil.isNotBlank(jyjg) && fwz != null && StrUtil.isNotBlank(fwz)) {
+                            try {
+                                String[] fwzs = fwz.split("-");
+                                BigDecimal min = new BigDecimal(fwzs[0]);
+                                BigDecimal max = new BigDecimal(fwzs[1]);
+                                BigDecimal jyjgval = new BigDecimal(jyjg);
+                                // 姣旇緝妫�楠岀粨鏋滃拰鑼冨洿鍊�
+                                if (jyjgval.compareTo(min) < 0) {
+                                    // jyjg 灏忎簬鑼冨洿鏈�灏忓�硷紝娣诲姞涓嬬澶�
+    //                            jyjg = jyjg + "   鈫�";
+                                    ycbz = "鈫�";
+                                } else if (jyjgval.compareTo(max) > 0) {
+                                    // jyjg 澶т簬鑼冨洿鏈�澶у�硷紝娣诲姞涓婄澶�
+    //                            jyjg = jyjg + "   鈫�";
+                                    ycbz = "鈫�";
+                                }
+                            } catch (Exception ignored) {
+                            }
                         }
-                    } catch (Exception ignored) {
+    //                LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+    //                queryWrapper.eq(SysUser::getUserName,jyys);
+    //                List<SysUser> sysUsers = userService.list(queryWrapper);
+    //                if (!sysUsers.isEmpty())
+    //                    hashSet.add(sysUsers.get(0).getNickName());
+                        String key = sysConfigService.selectConfigByKey("is_report_pdf_use_ysqm");
+                        if (null != shys && null != shysmc && key.equals("Y")) {
+                            hashSet.add(shysmc + "|" + shys);
+                        } else {
+                            if (null != shysmc) hashSet.add(shysmc);
+                        }
+                        ArrayList<String> strings = new ArrayList<>();
+                        strings.add(jcxm);
+                        strings.add(jyjg);
+                        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);
                     }
                 }
-//                LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
-//                queryWrapper.eq(SysUser::getUserName,jyys);
-//                List<SysUser> sysUsers = userService.list(queryWrapper);
-//                if (!sysUsers.isEmpty())
-//                    hashSet.add(sysUsers.get(0).getNickName());
-                String key = sysConfigService.selectConfigByKey("is_report_pdf_use_ysqm");
-                if (null != shys && null != shysmc && key.equals("Y")) {
-                    hashSet.add(shysmc + "|" + shys);
-                } else {
-                    if (null != shysmc) hashSet.add(shysmc);
-                }
-                ArrayList<String> strings = new ArrayList<>();
-                strings.add(jcxm);
-                strings.add(jyjg);
-                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);
-            }
+            return data;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
-        return data;
     }
 
     /**
@@ -2422,7 +2357,7 @@
      * @param tjOrder
      * @param reportTemplate
      */
-    public HashMap<String, Object> makePDFInfo(TjOrder tjOrder, TjCustomer tjCustomer, TjReportTemplate reportTemplate,DictHosp dictHosp,HashMap<String, Object> jianYanMap) {
+    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<>();
@@ -2499,7 +2434,7 @@
                 } else {
                     str.append("    鏃狅紱\n");
                 }
-            }else {
+            } else {
                 int maxProjectLength = 0;
                 for (Map.Entry<String, Object> item : jianYanMap.entrySet()) {
                     HashMap<String, Object> entryValue = (HashMap<String, Object>) item.getValue();
@@ -2537,7 +2472,7 @@
             }
             //寮傚父椤圭洰
             data.put("yichang", str.toString());
-            data.put("zjrq",new SimpleDateFormat("yyyy-MM-dd").format(tjOrder.getCheckTime()));
+            data.put("zjrq", new SimpleDateFormat("yyyy-MM-dd").format(tjOrder.getCheckTime()));
             // 閬嶅巻data 缁檖df琛ㄥ崟琛ㄦ牸璧嬪��
             for (String key : data.keySet()) {
                 acroFields.setField(key, data.get(key).toString());
@@ -2565,7 +2500,7 @@
             map.put("document", document);
             map.put("copy", copy);
             map.put("stream", finalOutPut);
-            map.put("form",pdfStamper);
+            map.put("form", pdfStamper);
             return map;
         } catch (IOException | DocumentException e) {
             e.printStackTrace();
@@ -2590,62 +2525,62 @@
      * @param customer
      */
     private void notHuaYanData(String tjNumber, Map<TjOrderRemark, List<TjPdfVO>> printReport, TjOrder one, TjCustomer customer) {
+        try {
 //        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.notHuaYanData(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()
-//                    .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);
+            List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.notHuaYanData(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 = 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()) && entry.getKey().getType() == 1) {
-                        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("/");
+                        if (tjOrderDetail.getProject().getProParentId().equals(entry.getKey().getProId()) && entry.getKey().getType() == 1) {
+                            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()));
+                            tjPdfVOS.add(tjPdfVO);
                         }
-                        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);
                     }
                 }
+                if(!tjPdfVOS.isEmpty()){
+                    tjPdfVOS=tjPdfVOS.stream().sorted(Comparator.comparing(TjPdfVO::getProName, Collator.getInstance(Locale.CHINA))).collect(Collectors.toList());
+                    tjPdfVOS = tjPdfVOS.stream()
+                            .sorted(Comparator.comparingInt(
+                                    tjPdfVO -> tjPdfVO.getProName().length() // 鏍规嵁鍚嶅瓧鐨勯暱搴︽帓搴�
+                            ))
+                            .collect(Collectors.toList());
+                }
+                printReport.put(entry.getKey(), tjPdfVOS);
             }
-            printReport.put(entry.getKey(), tjPdfVOS);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
     }
+
     private void pacsJianChaData(String tjNumber, Map<TjOrderRemark, List<TjPdfVO>> printReport, TjOrder one, TjCustomer customer) {
 //        LambdaQueryWrapper<TjOrderRemark> wqq = new LambdaQueryWrapper<>();
 //        wqq.eq(TjOrderRemark::getTjNumber, tjNumber);
@@ -2653,49 +2588,75 @@
 //        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);
-        }
-        String ids = "";
-        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")) {
-                    tjOrderDetail.setProject(tjProject);
+        try {
+            List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.pacsJianChaData(tjNumber);
+            for (TjOrderRemark tjOrderRemark : tjOrderRemarks) {
+                printReport.put(tjOrderRemark, null);
+            }
+            String ids = "";
+            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")) {
+                        tjOrderDetail.setProject(tjProject);
+                        TjProject tjProjectq = projectService.getById(tjOrderDetail.getProject().getProParentId());
 
-                    if (tjOrderDetail.getProject().getProParentId().equals(entry.getKey().getProId())
-                            && entry.getKey().getType() == 1
-                    && !ids.contains(String.valueOf(tjOrderDetail.getProject().getProParentId()))) {
-                        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("/");
+                        if (tjOrderDetail.getProject().getProParentId().equals(entry.getKey().getProId())
+                                && entry.getKey().getType() == 1
+                                && (!ids.contains(String.valueOf(tjOrderDetail.getProject().getProParentId())) &&
+                                !ids.contains(tjProjectq.getHisXmbm()))) {
+
+                            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()));
+    //                        LambdaQueryWrapper<LtkjExamJcbgd> wrapper = new LambdaQueryWrapper<>();
+    //                        wrapper.eq(LtkjExamJcbgd::getTjh, one.getCardId());
+    //                        wrapper.like(LtkjExamJcbgd::getXmdm, String.valueOf(tjOrderDetail.getProject().getProParentId()))
+    //                                .or().eq(LtkjExamJcbgd::getXmdm, String.valueOf(tjProjectq.getHisXmbm()));
+    //                        wrapper.orderByDesc(LtkjExamJcbgd::getZdsj);
+                            LambdaQueryWrapper<LtkjExamJcbgd> wrapper = new LambdaQueryWrapper<>();
+                            wrapper.eq(LtkjExamJcbgd::getTjh, one.getCardId())
+                                    .and(w -> w.like(LtkjExamJcbgd::getXmdm, String.valueOf(tjOrderDetail.getProject().getProParentId()))
+                                            .or()
+                                            .eq(LtkjExamJcbgd::getXmdm, String.valueOf(tjProjectq.getHisXmbm()))).orderByDesc(LtkjExamJcbgd::getZdsj);
+
+                            List<LtkjExamJcbgd> list = jcbgdService.list(wrapper);
+                            if (null != list && !list.isEmpty()) {
+                                LtkjExamJcbgd jcbgd = list.get(0);
+                                if (jcbgd != null) {
+                                    String yxbx = jcbgd.getYxbx();
+                                    String bgNr = jcbgd.getBgNr();
+                                    // 姝e垯琛ㄨ揪寮忥細鍖归厤鏁板瓧鍚庤窡 '.' 鎴� '銆�'
+                                    String regex = "\\d+[\\.,銆乚";
+                                    // 浣跨敤姝e垯鏇挎崲锛屽尮閰嶇殑鏁板瓧鍚庢坊鍔犳崲琛岀
+                                    if(StringUtil.isNotBlank(yxbx)) yxbx = yxbx.replaceAll(regex, "\n$0");
+                                    if(StringUtil.isBlank(bgNr)) bgNr = "";
+                                    if(StringUtil.isBlank(yxbx)) yxbx = "";
+                                    tjPdfVO.setTs(yxbx);
+                                    tjPdfVO.setSj(bgNr);
+                                    tjPdfVO.setShys(jcbgd.getShysxm());
+                                    tjPdfVO.setProName(jcbgd.getXmmc());
+                                    ids += "|" + jcbgd.getXmdm();
+                                }
+                            }
+                            tjPdfVOS.add(tjPdfVO);
                         }
-                        tjPdfVO.setProId(String.valueOf(tjOrderDetail.getProject().getProId()));
-                        LambdaQueryWrapper<LtkjExamJcbgd> wrapper = new LambdaQueryWrapper<>();
-                        wrapper.eq(LtkjExamJcbgd::getTjh,tjNumber);
-                        wrapper.like(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());
-                            tjPdfVO.setProName(jcbgd.getXmmc());
-                            ids+="|"+jcbgd.getXmdm();
-                        }
-                        tjPdfVOS.add(tjPdfVO);
                     }
                 }
+                printReport.put(entry.getKey(), tjPdfVOS);
             }
-            printReport.put(entry.getKey(), tjPdfVOS);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
     }
 
@@ -2820,7 +2781,7 @@
         document.add(table);
     }
 
-    private static void addJianYanTable(Document document, String titleName, String[] titles, float[] titlesWidth, ArrayList<List<String>> lists,DictHosp dictHosp,String colorStr) throws DocumentException {
+    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(DEFAULT_TITLE_FONT_SIZE);
 //        if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
@@ -2856,7 +2817,7 @@
 
             // 灏嗚〃鏍兼坊鍔犲埌鏂囨。涓�
             document.add(tableTitle);
-        }else {
+        } else {
             document.add(paragraph);
         }
         // 鍒涘缓涓�涓〃鏍煎苟娣诲姞鍒版枃妗�
@@ -2884,8 +2845,8 @@
             boolean isYc = false;
             textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
 //            if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
-            if (true){
-                if (list.contains("鈫�") || list.contains("鈫�")){
+            if (true) {
+                if (list.contains("鈫�") || list.contains("鈫�")) {
                     isYc = true;
                 }
             }
@@ -2898,13 +2859,13 @@
                 nameCell.setHorizontalAlignment(Element.ALIGN_LEFT);
 
                 nameCell.setBorder(Rectangle.NO_BORDER); // 绉婚櫎鍗曞厓鏍艰竟妗�
-                if (isYc){
+                if (isYc) {
                     textFont.setStyle(Font.BOLD);
                     nameCell.setPhrase(new Paragraph(s, textFont));
                     nameCell.setBorder(Rectangle.NO_BORDER);
 //                    Color color = Color.decode("#0033cc");
 //                    nameCell.setBackgroundColor(new BaseColor(color.getRed(), color.getGreen(), color.getBlue())); // 璁剧疆鑳屾櫙棰滆壊锛堝崄鍏繘鍒� RGB锛�
-                }else {
+                } else {
                     nameCell.setPhrase(new Paragraph(s, textFont));
                 }
                 table.addCell(nameCell);
@@ -2934,7 +2895,7 @@
      * @return bytearrayoutputstream
      */
     public static ByteArrayOutputStream makeJcPDFByteArrayStream(String xm, String xb, String nl, String jcks, String zyh, String ch, String sjks, String jcsb, String jch
-            , String jcxm, String ms, String ts, File[] files, String footer,Paragraph elements) {
+            , String jcxm, String ms, String ts, File[] files, String footer, Paragraph elements) {
         try {
             Document document = new Document(PageSize.A4);
             ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -3221,7 +3182,7 @@
             this.footerText = footerText;
         }
 
-        public Footer(Paragraph paragraph){
+        public Footer(Paragraph paragraph) {
             this.paragraph = paragraph;
         }
 
@@ -3250,7 +3211,7 @@
         private String age;
         private Integer page;
 
-        public FooterHeaderPageEvent(String name,String tjName,String tjNumber,String sex,String age,Integer page) {
+        public FooterHeaderPageEvent(String name, String tjName, String tjNumber, String sex, String age, Integer page) {
             this.name = name;
             this.tjNumber = tjNumber;
             this.tjName = tjName;
@@ -3328,7 +3289,7 @@
             footerTable.setSpacingBefore(0); // 鍘婚櫎琛ㄦ牸椤堕儴鐨勯棿璺�
             footerTable.setSpacingAfter(0); // 鍘婚櫎琛ㄦ牸搴曢儴鐨勯棿璺�
             footerTable.getDefaultCell().setBorder(Rectangle.NO_BORDER); // 鍘婚櫎鎵�鏈夊崟鍏冩牸鐨勮竟妗�
-            float[] columnWidths = { 2.5f, 2f };  // 绗竴鍒楀崰 1锛岀浜屽垪鍗� 2
+            float[] columnWidths = {2.5f, 2f};  // 绗竴鍒楀崰 1锛岀浜屽垪鍗� 2
             footerTable.setWidths(columnWidths); // 璁剧疆鍒楀姣斾緥
 
             // 绗竴琛岋細鍖婚櫌鍚嶅拰椤电爜

--
Gitblit v1.8.0