From 7e73e7699d55b4b229bef4dc5d89e01aedef5a19 Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期一, 19 五月 2025 17:13:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java | 1148 +++++++++++++++++++++++----------------------------------
 1 files changed, 461 insertions(+), 687 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 bceefd7..2b89aaf 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
@@ -33,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;
@@ -46,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;
@@ -118,6 +123,10 @@
     private ITjProAdvicerulesService tjProAdvicerulesService;
     @Autowired
     private TjOrderYcxmService ycxmService;
+    @Resource
+    private TjXdtgmdjgService xdtgmdjgService;
+    @Autowired
+    private TjReportSpecialProjectService tjReportSpecialProjectService;
 
     private Integer pdfPage = 0;
 
@@ -141,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);
@@ -859,7 +868,7 @@
         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");
@@ -920,7 +929,23 @@
         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()));
+        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())
+                                )
+                        )
+                ));
+
 //        List<CsProVo> sortedList = list.stream()
 //                .sorted(Comparator.comparingLong(CsProVo::getProId))
 //                .collect(Collectors.toList());
@@ -977,437 +1002,154 @@
 //        List<Map<String, Object>> jiancha = new ArrayList<>();
 
 
-        paragraph = PdfUtils.setParagraph(defaultTitleFont, "妫�鏌ョ患杩帮細");
-        paragraph.setSpacingBefore(3f);
-        paragraph.setSpacingAfter(2f);
-        document2.add(paragraph);
 
         int xmXh = 1;
-
         Map<Long, List<TjOrderDetail>> collect = orderDetails.stream().collect(Collectors.groupingBy(TjOrderDetail::getProId));
-        for (Map.Entry<String, List<CsProVo>> deptEntry : listMap.entrySet()) {
-            List<CsProVo> proVos = deptEntry.getValue();
-            if (proVos.size() > 1) {
-                proVos = proVos.stream()
-                        .sorted(Comparator.comparingLong(CsProVo::getProId))
-                        .collect(Collectors.toList());
-            }
-            // 宸茬粡閬嶅巻杩囩殑
-            ArrayList<String> jianYanYiDa = new ArrayList<>();
-            for (CsProVo proVo : proVos) {
+        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()) {
 
-                // 妫�鏌�
-                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紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�", "");
-//                            result = result.replaceAll("", "");
-                            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 = PdfUtils.setParagraph(defaultTitleFont, "妫�鏌ョ患杩帮細");
+            paragraph.setSpacingBefore(3f);
+            paragraph.setSpacingAfter(2f);
+            document2.add(paragraph);
+            isBr = true;
+
+            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();
+                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;
                     }
-                    if (isXmWrite) {
-                        paragraph = PdfUtils.setParagraph(defaultFont, "");
-                        paragraph.setLeading(0f);
-                        paragraph.setSpacingBefore(0f);
-                        paragraph.setSpacingAfter(5f);
-                        document2.add(paragraph);
-                        xmXh++;
-                    }
-                }
+                    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++;
-                        }
+                        result = builder.toString();
                     }
-                    if (isXmWrite) {
-                        paragraph = PdfUtils.setParagraph(defaultFont, "");
-                        paragraph.setSpacingBefore(0f);
-                        paragraph.setSpacingAfter(5f);
-                        document2.add(paragraph);
-                        xmXh++;
-                    }
+                    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++;
                 }
             }
         }
 
-        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);
+        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);
+//        LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
+//        wq.eq(TjOrderYcxm::getTjh, tjOrder.getTjNumber());
+//        List<TjOrderYcxm> ycxms = ycxmService.list(wq);
         if (null != ycxms && !ycxms.isEmpty()) {
-            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)) {
-                                int index1 = 1;
-                                String[] split = result.split("\n");
-                                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++;
-                                }
-                                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<>();
 
-                            LambdaQueryWrapper<TjOrderYcxm> ycwq=new LambdaQueryWrapper<>();
-                            ycwq.eq(TjOrderYcxm::getTjh,tjOrder.getTjNumber());
-                            ycwq.eq(TjOrderYcxm::getJcxm,xmmc);
-                            TjOrderYcxm ycxm = ycxmService.getOne(ycwq);
-                            if(null !=ycxm){
-                                String jynr = ycxm.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);
+            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);
                         }
-                    }
-                    // 妫�楠�
-                    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);
-                                String str = "    ";
+                        String str = "     ";
+                        List<Map<String, Object>> maps = new ArrayList<>();
 
-                                LambdaQueryWrapper<TjOrderYcxm> ycwq=new LambdaQueryWrapper<>();
-                                ycwq.eq(TjOrderYcxm::getTjh,tjOrder.getTjNumber());
-                                ycwq.eq(TjOrderYcxm::getJcxm,i.get(0));
-                                TjOrderYcxm ycxm = ycxmService.getOne(ycwq);
-                                if(null !=ycxm){
-                                    String jynr = ycxm.getJynr();
-                                    JSONArray array = JSONUtil.parseArray(jynr);
-                                    for (Object object : array) {
-                                        JSONObject jsonObject = (JSONObject) object;
-                                        String bt = jsonObject.getStr("bt");
-                                        String nr = jsonObject.getStr("nr");
-                                        if(null !=bt || null !=nr) {
-                                            String content1 = str + bt + nr;
-                                            if (StrUtil.isBlank(content)) content1 = "     ";
-                                            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);
-                        }
-                    }
-                }
-            }
-        } else {
-            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紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�");
-                                boolean contains = result.contains(" ");
-                                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紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�");
-//                            if (!contains) builder.append("    (").append(index1).append(")").append(" ");
-//                            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(),"",
-//                                detail.getYcbz(),tjOrder.getTjNumber(),detail.getProName().replaceAll("[锛�(][^锛�)]*[锛�)]", "")
-//                                        .replaceAll("[ 娴嬪畾妫�娴媇",""),detail.getProResult());
-                            List<Map<String, Object>> maps = new ArrayList<>();
-                            if (detail.getDeptId().equals("2")) {
-                                String[] split = result.split("銆倈,|锛�");
-                                for (String s : split) {
-                                    s = s.replaceAll("\n", "").replaceAll("[锛�(][^锛�)]*[锛�)]", "");
-//                                Map<String,Object> mapss= tjRulesService.getyichangxiangmujianyiguizeJianCha(s);
-                                    Map<String, Object> mapss = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(detail.getKs(), s, "0");
-                                    if (null != mapss) {
-                                        Object bt = mapss.get("bt");
-                                        Object nr = mapss.get("nr");
-                                        if (null != bt && null != nr) maps.add(mapss);
-                                    }
-                                }
+                            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 = "     鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�";
                                 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 (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(), i.get(0).replaceAll("[锛�(][^锛�)]*[锛�)]", "")
-                                                .replaceAll("[ 娴嬪畾妫�娴媇", ""), i.get(1));
-                                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);
-                                        Object bt = objectMap.get("bt");
-                                        Object nr = objectMap.get("nr");
-                                        if (null != bt && null != nr) {
-                                            String content1 = str + bt.toString() + nr.toString().trim();
-                                            if (StrUtil.isBlank(content)) content1 = "     ";
-                                            paragraph = new Paragraph(content1, defaultFont);
-                                        }
-//                                    if (StrUtil.isBlank(content)) content1 = "     鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�";
-                                        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);
-                        }
+                        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, "");
@@ -1488,15 +1230,25 @@
 
         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);
-        cell.setPhrase(new Phrase("", zongJianFont));
+        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);
@@ -1591,6 +1343,47 @@
             log.error(String.valueOf(e));
             return AjaxResult.error();
         }
+
+
+        LambdaQueryWrapper<TjXdtgmdjg> wqq=new LambdaQueryWrapper<>();
+        wqq.eq(TjXdtgmdjg::getTjh,tjOrder.getTjNumber());
+        wqq.isNotNull(TjXdtgmdjg::getUrl);
+        List<TjXdtgmdjg> 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();
 
 
@@ -1997,6 +1790,7 @@
      * @throws DocumentException
      */
     private void notHuaYanTable(Document document1, Map<TjOrderRemark, List<TjPdfVO>> printReport, DictHosp dictHosp, String colorStr, boolean isPacs) throws DocumentException {
+        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());
@@ -2042,45 +1836,14 @@
 //                    document1.add(table);
 
 //                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") && !value.isEmpty()){
-                    if (true && !value.isEmpty()) {
+                    if (!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);
-                                }
+                            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);
@@ -2092,56 +1855,29 @@
                             Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
 
                             if (isPacs) {
-                                Paragraph pp = PdfUtils.setParagraph(remarkFonts, "妫�鏌ユ墍瑙侊細");
+                                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(), remarkFonts);
+                                    paragraph.setAlignment(Element.ALIGN_LEFT);
+                                    paragraph.setLeading(5f);
+                                    document1.add(ppp);
+                                }
+                                pp = PdfUtils.setParagraph(remarkFonts, "妫�鏌ユ彁绀猴細"+value.get(0).getTs());
                                 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);
+//                                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);
-                                        paragraph.setAlignment(Element.ALIGN_LEFT);
-                                        paragraph.setLeading(5f);
-                                        document1.add(ppp);
-                                    }
+                                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);
@@ -2163,7 +1899,7 @@
                         entry.getKey().setRemark("");
                     }
 //                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
-                    if (!true) {
+                    if (false) {
                         String remark = "澶囨敞锛�" + entry.getKey().getRemark();
                         if (entry.getKey().getRemark().length() > 50) {
                             int j = 0;
@@ -2190,42 +1926,34 @@
                     zhuJianYiShi(document1, entry, orderRemark.getCreateTime(), dictHosp);
                     //鍒嗗壊绾�
 //                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
-                    if (!true) {
+                    if (false) {
                         LineSeparator objectName = new LineSeparator();
                         document1.add(objectName);
                     }
                 } else {
-                    if (null != one11) {
-                        if (entry.getValue().get(0).getProName().contains(";"))
-                            titleName = entry.getValue().get(0).getProName();
-                        else titleName = one11.getProName();
-                    } else {
-                        titleName = entry.getKey().getProName();
-                    }
+                    if (entry.getValue().get(0).getProName().contains(";"))
+                        titleName = entry.getValue().get(0).getProName();
+                    else titleName = one11.getProName();
                     // 璁剧疆鏍囬瀛椾綋鏍峰紡
                     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()))) {
-                            continue;
-                        }
-                        Font titleFont = PdfUtils.setFont(DEFAULT_TITLE_FONT_SIZE);
-                        titleFont.setStyle(Font.BOLD);
-                        PdfPCell cellTitle = new PdfPCell(PdfUtils.setParagraph(titleFont, titleName));
-                        cellTitle.setBorder(Rectangle.NO_BORDER);
-                        Color color = Color.decode("#B4CDCD");
-                        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);
+                    if (StrUtil.isBlank(value.get(0).getProResult()) && (StrUtil.isBlank(value.get(0).getTs()) && StrUtil.isBlank(value.get(0).getSj()))) {
+                        continue;
                     }
+                    Font titleFont = PdfUtils.setFont(DEFAULT_TITLE_FONT_SIZE);
+                    titleFont.setStyle(Font.BOLD);
+                    PdfPCell cellTitle = new PdfPCell(PdfUtils.setParagraph(titleFont, titleName));
+                    cellTitle.setBorder(Rectangle.NO_BORDER);
+                    Color color = Color.decode("#B4CDCD");
+                    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);
 
 //                    String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅"};
 //                    Font headFont = PdfUtils.setFont(9);
@@ -2234,45 +1962,14 @@
 //                    document1.add(table);
 
 //                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") && !value.isEmpty()){
-                    if (true && !value.isEmpty()) {
+                    if (!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);
-                                }
+                            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);
@@ -2285,56 +1982,55 @@
                             Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
 
                             if (isPacs) {
-                                Paragraph pp = PdfUtils.setParagraph(remarkFonts, "妫�鏌ユ墍瑙侊細");
+                                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);
+//                                    }
+//                                }
+
+                                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);
+                                }
+
+                                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);
+                                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);
-                                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);
+//                                ppp = new Paragraph(value.get(0).getTs() != null ? value.get(0).getTs() : value.get(0).getProResult(), remarkFonts);
+//                                paragraph.setAlignment(Element.ALIGN_LEFT);
+//                                paragraph.setLeading(5f);
+//                                document1.add(ppp);
                             } else {
-                                if (value.get(0).getPid().equals("1862852701533012001")) {
-                                    remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
-                                    Paragraph ppp = new Paragraph("闃虫�у弬鑰冨�硷細", remarkFonts);
-                                    paragraph.setAlignment(Element.ALIGN_LEFT);
-                                    paragraph.setLeading(5f);
-                                    document1.add(ppp);
-
-                                    ppp = new Paragraph("DOB鍊硷細         鈮�      4.0                HP-闃虫��", remarkFonts);
-                                    paragraph.setAlignment(Element.ALIGN_LEFT);
-                                    paragraph.setLeading(5f);
-                                    document1.add(ppp);
-
-                                    ppp = new Paragraph("                <      4.0                  姝e父", remarkFonts);
-                                    paragraph.setAlignment(Element.ALIGN_LEFT);
-                                    paragraph.setLeading(5f);
-                                    document1.add(ppp);
-
-
-                                    ppp = new Paragraph("妫�娴嬬粨鏋滐細 DOB=" + value.get(0).getProResult(), remarkFonts);
-                                    paragraph.setAlignment(Element.ALIGN_LEFT);
-                                    paragraph.setLeading(5f);
-                                    document1.add(ppp);
-
-                                    ppp = new Paragraph("", remarkFonts);
-                                    paragraph.setAlignment(Element.ALIGN_LEFT);
-                                    paragraph.setLeading(5f);
-                                    document1.add(ppp);
-                                    ppp = new Paragraph("", remarkFonts);
-                                    paragraph.setAlignment(Element.ALIGN_LEFT);
-                                    paragraph.setLeading(5f);
-                                    document1.add(ppp);
-                                    if (StrUtil.isNotBlank(entry.getKey().getRemark())) {
-                                        ppp = new Paragraph("缁撹锛�" + entry.getKey().getRemark(), remarkFonts);
-                                        paragraph.setAlignment(Element.ALIGN_LEFT);
-                                        paragraph.setLeading(5f);
-                                        document1.add(ppp);
-                                    }
+                                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);
@@ -2392,6 +2088,57 @@
                     }
                 }
             }
+        }
+    }
+
+    /**
+     * 鐩墠鍐欐 鍙湁纰�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);
         }
     }
 
@@ -2478,81 +2225,96 @@
         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 = "";
+//            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 灏忎簬鑼冨洿鏈�灏忓�硷紝娣诲姞涓嬬澶�
+                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 澶т簬鑼冨洿鏈�澶у�硷紝娣诲姞涓婄澶�
+                                ycbz = "鈫�";
+                            } else if (jyjgval.compareTo(max) > 0) {
+                                // jyjg 澶т簬鑼冨洿鏈�澶у�硷紝娣诲姞涓婄澶�
 //                            jyjg = jyjg + "   鈫�";
-                            ycbz = "鈫�";
+                                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);
+                    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);
                 }
-                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];
+                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);
                 }
-                map.put("shsj", shsj);
-                data.put(xmmc, map);
             }
         }
         return data;
@@ -2740,21 +2502,14 @@
 //        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.list(wqq);
         List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.notHuaYanData(tjNumber);
         for (TjOrderRemark tjOrderRemark : tjOrderRemarks) {
-            printReport.put(tjOrderRemark, null);
+            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());
+            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")) {
@@ -2772,18 +2527,20 @@
                         }
                         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());
-//                        }
+//                        LambdaQueryWrapper<LtkjExamJcbgd> wrapper = new LambdaQueryWrapper<>();
+//                        wrapper.eq(LtkjExamJcbgd::getTjh, tjNumber);
+//                        wrapper.eq(LtkjExamJcbgd::getXmdm, String.valueOf(tjOrderDetail.getProject().getProParentId()));
                         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);
         }
@@ -2813,6 +2570,8 @@
                     if (tjOrderDetail.getProject().getProParentId().equals(entry.getKey().getProId())
                             && entry.getKey().getType() == 1
                             && !ids.contains(String.valueOf(tjOrderDetail.getProject().getProParentId()))) {
+
+                        TjProject tjProjectq = projectService.getById(tjOrderDetail.getProject().getProParentId());
                         TjPdfVO tjPdfVO = new TjPdfVO();
                         tjPdfVO.setProName(tjOrderDetail.getProject().getProName());
                         tjPdfVO.setProResult(tjOrderDetail.getProResult());
@@ -2823,16 +2582,31 @@
                             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, tjNumber);
-                        wrapper.like(LtkjExamJcbgd::getXmdm, String.valueOf(tjOrderDetail.getProject().getProParentId()));
-                        wrapper.orderByDesc(LtkjExamJcbgd::getZdsj);
+                        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) {
-                                tjPdfVO.setTs(jcbgd.getYxbx());
-                                tjPdfVO.setSj(jcbgd.getBgNr());
+                                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();

--
Gitblit v1.8.0