zhaowenxuan
昨天 6a4e3a5c4c34fdef0accc93d8a077ab016d15250
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -95,8 +95,8 @@
    private LtkjHysqdService ltkjHysqdService;
    @Autowired
    private LtkjGetexamreportinfoService ltkjGetexamreportinfoService;
    @Value("${path.filePath}")
    private String value;
//    @Value("${path.filePath}")
//    private String value;
    @Value("${path.reportServer}")
    private String urlValue;
    @Autowired
@@ -875,6 +875,7 @@
        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;
@@ -1846,6 +1847,44 @@
            acroFields.setField(key, hashMap.get(key));
        }
        pdfStamper.setFormFlattening(true);
        String isOpenSfzImg = sysConfigService.selectConfigByKey("pdf_isOpenSfzImg");
        String pathSfzfilePath = sysConfigService.selectConfigByKey("path_sfzfilePath");
        if (StrUtil.isNotBlank(isOpenSfzImg) && isOpenSfzImg.equalsIgnoreCase("y")){
            if (StrUtil.isNotBlank(pathSfzfilePath)){
                String key = DataSourceContextHolder.getDataSourceKey();
                key = key.replace("ltkjpeis10_","");
                if (new File(pathSfzfilePath + File.separator + key + File.separator+customer.getCusId()+".png").exists()) {
                    String pdfSfzimgwidth = sysConfigService.selectConfigByKey("pdf_sfzimgwidth");
                    String pdfSfzimgheight = sysConfigService.selectConfigByKey("pdf_sfzimgheight");
                    String pdfSfzimgy = sysConfigService.selectConfigByKey("pdf_sfzimgy");
                    String pdfSfzimgx = sysConfigService.selectConfigByKey("pdf_sfzimgx");
                    int width = 100,height = 100,x = 90,y = 180;
                    if (StrUtil.isNotBlank(pdfSfzimgwidth)) {
                        width = Integer.parseInt(pdfSfzimgwidth);
                    }
                    if (StrUtil.isNotBlank(pdfSfzimgheight)) {
                        height = Integer.parseInt(pdfSfzimgheight);
                    }
                    if (StrUtil.isNotBlank(pdfSfzimgy)) {
                        y = Integer.parseInt(pdfSfzimgy);
                    }
                    if (StrUtil.isNotBlank(pdfSfzimgx)) {
                        x = Integer.parseInt(pdfSfzimgx);
                    }
                    Image image = Image.getInstance(pathSfzfilePath + File.separator + key + File.separator+customer.getCusId()+".png");
                    // 设置图片位置和大小
                    // image.setAbsolutePosition(90, 190); // 表单左边
                    // image.setAbsolutePosition(495, 742); // 右上角
                    // image.setAbsolutePosition(250, 50); // 中下
                    image.setAbsolutePosition(x, y);
                    image.scaleAbsolute(width, height); // 设置图片宽度和高度
                    PdfContentByte content = pdfStamper.getOverContent(1);
                    content.addImage(image);
                }
            }
        }
        pdfStamper.close();
        reader4.close();
        // 将修改后的PDF内容写入
@@ -2075,6 +2114,7 @@
     */
    private void savePDFFile(String outputFileName1, TjOrder tjOrder, TjCustomer customer, ByteArrayOutputStream finalOutPut) throws IOException, DocumentException, InterruptedException {
        // 第一步:生成文件并保存
        String value = sysConfigService.selectConfigByKey("path_filePath");
        String key = DataSourceContextHolder.getDataSourceKey();
        key = key.replace("ltkjpeis10_","");
        String outputPath1 = value + File.separator + key + File.separator;
@@ -2343,17 +2383,17 @@
                                if (StrUtil.isNotBlank(value.get(0).getSj())) {
                                    pp = PdfUtils.setParagraph(remarkFonts, "检查所见:");
                                    document1.add(pp);
                                    ppp = new Paragraph(value.get(0).getSj(), remarkFonts);
                                    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());
                                document1.add(pp);
//                                ppp = new Paragraph(value.get(0).getTs(), 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().replaceAll("\n",""), remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                            } else {
                                if (value.get(0).getPid().equals("1862852701533012001")) {
                                    remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
@@ -2534,7 +2574,7 @@
                                    if (StrUtil.isNotBlank(value.get(0).getSj())) {
                                        pp = PdfUtils.setParagraph(remarkFonts, "检查所见:");
                                        document1.add(pp);
                                        ppp = new Paragraph(value.get(0).getSj(), remarkFonts);
                                        ppp = new Paragraph(value.get(0).getSj().replaceAll("\n",""), remarkFonts);
                                        paragraph.setAlignment(Element.ALIGN_LEFT);
                                        paragraph.setLeading(5f);
                                        document1.add(ppp);
@@ -2543,7 +2583,8 @@
                                    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);
                                        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);
@@ -2553,7 +2594,8 @@
//                                document1.add(pp);
                                pp = PdfUtils.setParagraph(remarkFonts, "检查提示:");
                                document1.add(pp);
                                ppp = new Paragraph((value.get(0).getTs() != null ? value.get(0).getTs() : value.get(0).getProResult()), 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);
@@ -2594,7 +2636,7 @@
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    if (StrUtil.isNotBlank(entry.getKey().getRemark())) {
                                        ppp = new Paragraph("结论:" + entry.getKey().getRemark().replaceAll("null",""), remarkFonts);
                                        ppp = new Paragraph("结论:" + entry.getKey().getRemark().replaceAll("null","").replaceAll("\n",""), remarkFonts);
                                        paragraph.setAlignment(Element.ALIGN_LEFT);
                                        paragraph.setLeading(5f);
                                        document1.add(ppp);
@@ -2656,6 +2698,142 @@
                    }
                }
            }
        }
    }
    private void pacsTable(Document document1, Map<TjOrderRemark, List<TjPdfVO>> printReport, DictHosp dictHosp, String colorStr, boolean isPacs)throws DocumentException{
        try {
            for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
                if (entry.getValue() == null || entry.getValue().isEmpty()) continue;
                //判断该项目是否需要打印报告
                TjOrderRemark orderRemark = entry.getKey();
                List<TjPdfVO> value = entry.getValue().stream().distinct().collect(Collectors.toList());
                if (StrUtil.isBlank(value.get(0).getProResult()) && (StrUtil.isBlank(value.get(0).getTs()) && StrUtil.isBlank(value.get(0).getSj()))) {
                    continue;
                }
                String titleName = null;
                if (entry.getValue().get(0).getProName().contains(";"))
                    titleName = entry.getValue().get(0).getProName();
                else titleName = orderRemark.getProName();
                // 设置标题字体样式
                Font titleFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
                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);
                if (!value.isEmpty()) {
                    if (value.size() > 1) {
                        Long pid = Long.valueOf(value.get(0).getPid());
                        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()) || 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);
                            }
                            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);
                        } else {
                            Long pid = Long.valueOf(value.get(0).getPid());
                            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);
                    }
                }
                //判断主检医师是否为空  空不能显示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);
        }
    }
@@ -3091,7 +3269,7 @@
                        TjProject tjProjectq = projectService.getById(tjOrderDetail.getProject().getProParentId());
                        TjPdfVO tjPdfVO = new TjPdfVO();
                        tjPdfVO.setProName(tjOrderDetail.getProject().getProName());
                        tjPdfVO.setProResult(tjOrderDetail.getProResult());
                        tjPdfVO.setProResult(tjOrderDetail.getProResult()==null ? null : tjOrderDetail.getProResult().replaceAll("\n","").replaceAll(" ",""));
                        tjPdfVO.setExc(tjOrderDetail.getExceptionDesc());
                        if (null != tjProject.getProMetering()) {
                            tjPdfVO.setCompany(tjProject.getProMetering());
@@ -3112,13 +3290,12 @@
                                String bgNr = jcbgd.getBgNr();
                                // 正则表达式:匹配数字后跟 '.' 或 '、'
                                String regex = "\\d+[\\.,、]";
//                                String regex = "(?<=\\d+)([\\.,、])";
                                // 使用正则替换,匹配的数字后添加换行符
                                yxbx = yxbx.replaceAll(regex, "\n$0");
//                                bgNr = bgNr.replaceAll(regex, "\n$0");
                                tjPdfVO.setTs(yxbx);
                                tjPdfVO.setSj(bgNr);
                                if(StringUtil.isNotBlank(yxbx)) yxbx = yxbx.replaceAll(regex, "\n$0");
                                if(StringUtil.isBlank(bgNr)) bgNr = "";
                                if(StringUtil.isBlank(yxbx)) yxbx = "";
                                tjPdfVO.setTs(yxbx.replaceAll("\n","").replaceAll(" ",""));
                                tjPdfVO.setSj(bgNr.replaceAll("\n","").replaceAll(" ",""));
                                tjPdfVO.setShys(jcbgd.getShysxm());
                                tjPdfVO.setProName(jcbgd.getXmmc());
                                ids += "|" + jcbgd.getXmdm();
@@ -3132,6 +3309,37 @@
        }
    }
    private void newpacsJianChaData(String tjNumber, Map<TjOrderRemark, List<TjPdfVO>> printReport, TjOrder one, TjCustomer customer) {
        try {
            List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.newpacsJianChaData(tjNumber);
            for (TjOrderRemark tjOrderRemark : tjOrderRemarks) {
                List<TjPdfVO> tjPdfVOS = new ArrayList<>();
                TjPdfVO tjPdfVO = new TjPdfVO();
                tjPdfVO.setProResult(null);
                tjPdfVO.setExc(0L);
                tjPdfVO.setCompany("/");
                tjPdfVO.setProId(tjOrderRemark.getProsId());
                String yxbx = tjOrderRemark.getRemark();
                String bgNr = tjOrderRemark.getJgbx();
                // 正则表达式:匹配数字后跟 '.' 或 '、'
                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(tjOrderRemark.getDoctorName());
                tjPdfVO.setProName(tjOrderRemark.getProName());
                tjPdfVOS.add(tjPdfVO);
                printReport.put(tjOrderRemark, tjPdfVOS);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * 设置用户信息
     *