zjh
2025-06-20 5f1d1c462bbf49bc6a22b9e17b49733bcc1e0bc6
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -871,631 +871,636 @@
    }*/
    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");
        String value = sysConfigService.selectConfigByKey("path_filePath");
       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));
        }
           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())
                                )
                        )
                ));
           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());
        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<>();
        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;
//           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()) {
            paragraph = PdfUtils.setParagraph(defaultTitleFont, "检查综述:");
            paragraph.setSpacingBefore(3f);
            paragraph.setSpacingAfter(2f);
            document2.add(paragraph);
            isBr = true;
               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));
               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();
               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) {
                   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("本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查", "");
                        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++;
                       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("本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查", "");
                           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++;
                        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++;
                }
            }
        }
                           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);
        }
           if(isBr) {
               paragraph = PdfUtils.setParagraph(defaultFont, "");
               paragraph.setLeading(0f);
               paragraph.setSpacingBefore(10f);
               paragraph.setSpacingAfter(10f);
               document2.add(paragraph);
           }
        xmXh = 0;
           xmXh = 0;
//        LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
//        wq.eq(TjOrderYcxm::getTjh, tjOrder.getTjNumber());
//        List<TjOrderYcxm> ycxms = ycxmService.list(wq);
        if (null != ycxms && !ycxms.isEmpty()) {
           if (null != ycxms && !ycxms.isEmpty()) {
            paragraph = PdfUtils.setParagraph(defaultTitleFont, "医生建议:");
            paragraph.setSpacingBefore(3f);
            paragraph.setSpacingAfter(2f);
            document2.add(paragraph);
               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));
               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++;
               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<>();
                               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);
                    }
                }
            }
                           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);
            //行间距
           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);
               //设置段落上空白
               paragraphs.setSpacingBefore(10f);
               //设置段落下空白
               paragraphs.setSpacingAfter(10f);
//            paragraph = PdfUtils.setParagraph(defaultFont, tjOrder.getCheckAdvice());
            document2.add(paragraphs);
        }
               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);
           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);
           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);
           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);
        }
           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);
           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));
           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);
           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);
           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);
           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);
           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_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("总检日期:", zongJianTitleFont));
           tableQz.addCell(cell);
        cell = new PdfPCell();
        cell.setBorder(Rectangle.NO_BORDER);
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setPaddingTop(10);
        cell.setPaddingBottom(10);
        cell.setPhrase(new Phrase(new SimpleDateFormat("yyyy-MM-dd").format(tjOrder.getCheckTime()), zongJianFont));
        tableQz.addCell(cell);
           cell = new PdfPCell();
           cell.setBorder(Rectangle.NO_BORDER);
           cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
           cell.setHorizontalAlignment(Element.ALIGN_CENTER);
           cell.setPaddingTop(10);
           cell.setPaddingBottom(10);
           cell.setPhrase(new Phrase(new SimpleDateFormat("yyyy-MM-dd").format(tjOrder.getCheckTime()), zongJianFont));
           tableQz.addCell(cell);
        document2.add(tableQz);
           document2.add(tableQz);
        document2.close();
           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();
        }
           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);
        }
           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);
           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++;
        }
               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();
           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(tjOrder.getFirmName())) {
            hashMap.put("work", tjOrder.getFirmName());
        } 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.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();
        // 将修改后的PDF内容写入
        byte[] bytes = byteArrayOutputStream4.toByteArray();
               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();
           // 将修改后的PDF内容写入
           byte[] bytes = byteArrayOutputStream4.toByteArray();
        ByteArrayOutputStream finalOutput = new ByteArrayOutputStream();
        Document mergedDocument = new Document(PageSize.A4);
        PdfCopy copy = new PdfCopy(mergedDocument, finalOutput);
        mergedDocument.open();
           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));
           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);
        }
        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();
    }
    /**
@@ -1726,67 +1731,71 @@
     * @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) {
        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);
        }
    }
@@ -1798,33 +1807,168 @@
     * @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());
            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);
        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();
                    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) {
    //                    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);
    //                    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 {
                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                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);
                                    }
                                    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);
                        }
                        //判断备注是否为空  空不能显示null
                        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);
                            }
                        }
                        //判断主检医师是否为空  空不能显示null
                        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();
                        // 设置标题字体样式
                        Font titleFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                        Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
    //                    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);
                        titleFont.setStyle(Font.BOLD);
                        PdfPCell cellTitle = new PdfPCell(PdfUtils.setParagraph(titleFont, titleName));
                        cellTitle.setBorder(Rectangle.NO_BORDER);
                        Color color = Color.decode(colorStr);
                        Color color = Color.decode("#B4CDCD");
                        cellTitle.setBackgroundColor(new BaseColor(color.getRed(), color.getGreen(), color.getBlue())); // 设置背景颜色(十六进制 RGB)
                        // 创建表格并添加单元格
                        PdfPTable tableTitle = new PdfPTable(1);
@@ -1832,54 +1976,16 @@
                        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.setTable2(headFont, textFont, titles, value,dictHosp.getHospName().equals("澄合矿务局中心医院"));
//                    document1.add(table);
//                    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 {
                            Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                            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);
                                }
                                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 {
    //                    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))
@@ -1887,216 +1993,128 @@
                                if (match.isPresent()) {
                                    reportSpecialProject(document1, entry, paragraph, value,match.get());
                                } else {
                                    String[] titles = {"体检项目", "体检结果"};
                                    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});
                                    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);
                    }
                    //判断备注是否为空  空不能显示null
                    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);
                        }
                    }
                    //判断主检医师是否为空  空不能显示null
                    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();
                    // 设置标题字体样式
                    Font titleFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                    Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
//                    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);
                    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);
//                    Font textFont = PdfUtils.setFont(9);
//                    PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value,dictHosp.getHospName().equals("澄合矿务局中心医院"));
//                    document1.add(table);
//                    if (dictHosp.getHospName().equals("澄合矿务局中心医院") && !value.isEmpty()){
                    if (!value.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);
                            }
                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                        } else {
                            Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                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);
    //                                    }
    //                                }
                            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);
//                                    }
//                                }
                                    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);
                                    }
                                if (StrUtil.isNotBlank(value.get(0).getSj()) || StrUtil.isNotBlank(value.get(0).getProResult())) {
                                    pp = PdfUtils.setParagraph(remarkFonts, "检查所见:");
                                    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);
                                    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);
                                }
                                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());
    //                                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 {
                                    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);
                                    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);
                    }
                    //判断备注是否为空  空不能显示null
                    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);
                        }
                    }
                    //判断主检医师是否为空  空不能显示null
                    zhuJianYiShi(document1, entry, orderRemark.getCreateTime(), dictHosp);
//                    if (!dictHosp.getHospName().equals("澄合矿务局中心医院")) {
                    if (!true) {
                        //分割线
                        LineSeparator objectName = new LineSeparator();
                        document1.add(objectName);
                        //判断备注是否为空  空不能显示null
                        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);
                            }
                        }
                        //判断主检医师是否为空  空不能显示null
                        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);
        }
    }
@@ -2229,104 +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);
            List<LtkjHybgd> hybgds = ltkjHybgdService.getReportJianYanBaoGaoDanList(hysqd.getTmh());
            if(null !=hybgds && !hybgds.isEmpty()){
        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()){
                hybgds = new ArrayList<>(hybgds.stream()
                        .collect(Collectors.toMap(LtkjHybgd::getJcxm, p -> p, (existing, replacement) -> existing))
                        .values());
                    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());
    //                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 = "";
                    // 大类项目名称
                    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 = "↑";
                        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);
                    }
//                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);
                    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);
                    }
                    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;
    }
    /**
@@ -2503,55 +2525,59 @@
     * @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 = 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()));
                        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);
            }
            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);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
@@ -2562,70 +2588,74 @@
//        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);
                    if (tjOrderDetail.getProject().getProParentId().equals(entry.getKey().getProId())
                            && entry.getKey().getType() == 1
                            && !ids.contains(String.valueOf(tjOrderDetail.getProject().getProParentId()))) {
                        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());
                        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();
                                // 正则表达式:匹配数字后跟 '.' 或 '、'
                                String regex = "\\d+[\\.,、]";
                                // 使用正则替换,匹配的数字后添加换行符
                                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();
                            TjProject tjProjectq = projectService.getById(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("/");
                            }
                            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();
                                    // 正则表达式:匹配数字后跟 '.' 或 '、'
                                    String regex = "\\d+[\\.,、]";
                                    // 使用正则替换,匹配的数字后添加换行符
                                    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);
                        }
                        tjPdfVOS.add(tjPdfVO);
                    }
                }
                printReport.put(entry.getKey(), tjPdfVOS);
            }
            printReport.put(entry.getKey(), tjPdfVOS);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }