zjh
2025-01-21 7caeae303d4a93d0af2dc2d2f546987dd192be3c
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -2,6 +2,7 @@
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -115,6 +116,8 @@
    private SysDeptController sysDeptController;
    @Autowired
    private ITjProAdvicerulesService tjProAdvicerulesService;
    @Autowired
    private TjOrderYcxmService ycxmService;
    private Integer pdfPage = 0;
@@ -308,7 +311,6 @@
        if (StrUtil.isBlank(sex)) sex = "未知";
        // 生成 document2 并将其内容保存到 byteArrayOutputStream2 中
        ByteArrayOutputStream byteArrayOutputStream2 = new ByteArrayOutputStream();
        Document document2 = new Document(PageSize.A4);
@@ -386,7 +388,6 @@
//        List<Map<String, Object>> jiancha = new ArrayList<>();
        paragraph = PdfUtils.setParagraph(defaultTitleFont, "检查综述:");
        paragraph.setSpacingBefore(3f);
        paragraph.setSpacingAfter(2f);
@@ -458,19 +459,11 @@
        }
        paragraph = PdfUtils.setParagraph(defaultFont, "");
        paragraph.setLeading(0f);
        paragraph.setSpacingBefore(10f);
        paragraph.setSpacingAfter(10f);
        document2.add(paragraph);
        paragraph = PdfUtils.setParagraph(defaultTitleFont, "医生建议:");
@@ -528,7 +521,8 @@
//                                paragraph.setAlignment(Element.ALIGN_LEFT);
//                                document2.add(paragraph);
                                String content1 = str+objectMap.get("bt").toString().trim()+objectMap.get("nr").toString().trim();
                                if (StrUtil.isBlank(content1)) content1 = "     本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查";
                            if (StrUtil.isBlank(content1))
                                content1 = "     本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查";
                                paragraph = new Paragraph(content1,defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
@@ -577,7 +571,8 @@
                        builder.append("    (").append(index1).append(")").append(s).append("\n");
                        index1++;
                    }
                    if (!contains) builder.append("    (").append(index1).append(")").append("本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查");
                    if (!contains)
                        builder.append("    (").append(index1).append(")").append("本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查");
                    else builder.substring(0,builder.length() - 1);
                    result = builder.toString();
                }
@@ -592,7 +587,8 @@
                List<Map<String, Object>> maps = tjRulesService.getyichangxiangmujianyiguize(entry.getKey().toString(),"","",tjOrder.getTjNumber(),detail.getProName(),"");
                for (Map<String, Object> objectMap : maps) {
                    String content1 = str+objectMap.get("bt").toString()+objectMap.get("nr").toString();
                    if (StrUtil.isBlank(content1)) content1 = "     本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查";
                    if (StrUtil.isBlank(content1))
                        content1 = "     本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查";
                    paragraph = new Paragraph(content1,defaultFont);
                    paragraph.setAlignment(Element.ALIGN_LEFT);
@@ -606,9 +602,6 @@
                document2.add(paragraph);
            }
        }
        for (int i = 0; i < 1; i++) {
@@ -734,7 +727,6 @@
        document2.close();
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        Document document = new Document(PageSize.A4);
        PdfWriter pdfWriter = null;
@@ -774,9 +766,6 @@
            return AjaxResult.error();
        }
        document.close();
        // 首页表单
@@ -837,7 +826,6 @@
        reader4.close();
        // 将修改后的PDF内容写入
        byte[] bytes = byteArrayOutputStream4.toByteArray();
        ByteArrayOutputStream finalOutput = new ByteArrayOutputStream();
@@ -903,7 +891,6 @@
            }
        }
        if (StrUtil.isBlank(sex)) sex = "未知";
        // 生成 document2 并将其内容保存到 byteArrayOutputStream2 中
@@ -988,7 +975,6 @@
        //        List<TjOrderRemark> remarks = tjOrderRemarkMapper.getzongjianyishengchakanyichangxiangmu3( tjOrder.getTjNumber());
        List<TjOrderDetail> orderDetails = tjOrderDetailMapper.getzongjianyishengchakanyichangxiangmu4( tjOrder.getTjNumber());
//        List<Map<String, Object>> jiancha = new ArrayList<>();
        paragraph = PdfUtils.setParagraph(defaultTitleFont, "检查综述:");
@@ -1097,6 +1083,153 @@
        paragraph.setSpacingAfter(2f);
        document2.add(paragraph);
        xmXh = 0;
        LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
        wq.eq(TjOrderYcxm::getTjh, tjOrder.getTjNumber());
        List<TjOrderYcxm> ycxms = ycxmService.list(wq);
        if (null != ycxms && !ycxms.isEmpty()) {
            for (Map.Entry<String, List<CsProVo>> deptEntry : listMap.entrySet()) {
                List<CsProVo> proVos = deptEntry.getValue();
                if (proVos.size() > 1) {
                    proVos = proVos.stream()
                            .sorted(Comparator.comparingLong(CsProVo::getProId))
                            .collect(Collectors.toList());
                }
                ArrayList<String> jianYanYiDa = new ArrayList<>();
                for (CsProVo proVo : proVos) {
                    // 检查
                    for (Map.Entry<Long, List<TjOrderDetail>> entry : collect.entrySet()) {
                        if (!entry.getKey().equals(proVo.getProId())) continue;
                        List<TjOrderDetail> details = entry.getValue();
                        String xmmc = details.get(0).getProName();
                        boolean isXmWrite = false;
                        int index = 1;
                        for (TjOrderDetail detail : details) {
                            if (!isXmWrite) {
                                xmXh++;
                                paragraph = new Paragraph("【" + xmXh + "." + xmmc + "】", defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                                isXmWrite = true;
                            }
                            String result = detail.getProResult();
                            if (StrUtil.isNotBlank(result)) {
                                int index1 = 1;
                                String[] split = result.split("\n");
                                StringBuilder builder = new StringBuilder();
                                for (String s : split) {
                                    if (StrUtil.isBlank(s.replaceAll("\n", "").trim())) continue;
                                    builder.append("    (").append(index1).append(")").append(s).append("\n");
                                    index1++;
                                }
                                result = builder.toString();
                            }
                            if (StrUtil.isNotBlank(result)) {
                                paragraph = new Paragraph(result, defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                            } else {
                                paragraph = new Paragraph("建议定期复查", defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                            }
                            String str = "     ";
                            List<Map<String, Object>> maps = new ArrayList<>();
                            LambdaQueryWrapper<TjOrderYcxm> ycwq=new LambdaQueryWrapper<>();
                            ycwq.eq(TjOrderYcxm::getTjh,tjOrder.getTjNumber());
                            ycwq.eq(TjOrderYcxm::getJcxm,xmmc);
                            TjOrderYcxm ycxm = ycxmService.getOne(ycwq);
                            if(null !=ycxm){
                                String jynr = ycxm.getJynr();
                                JSONArray array = JSONUtil.parseArray(jynr);
                                for (Object object : array) {
                                    Map<String,Object> objectMap=new HashMap<>();
                                    JSONObject jsonObject = (JSONObject) object;
                                    String bt = jsonObject.getStr("bt");
                                    String nr = jsonObject.getStr("nr");
                                    objectMap.put("bt",bt);
                                    objectMap.put("nr",nr);
                                    if(null !=bt || null !=nr) maps.add(objectMap);
                                }
                                List<Map<String, Object>> collect1 = maps.stream().distinct().collect(Collectors.toList());
                                for (Map<String, Object> objectMap : collect1) {
                                    String content = str + objectMap.get("bt").toString() + objectMap.get("nr").toString();
                                    if (StrUtil.isBlank(content)) content = "     ";
                                    paragraph = new Paragraph(content, defaultFont);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    document2.add(paragraph);
                                }
                            }
                            index++;
                            paragraph = PdfUtils.setParagraph(defaultFont, "");
                            paragraph.setLeading(0f);
                            paragraph.setSpacingBefore(0f);
                            paragraph.setSpacingAfter(5f);
                            document2.add(paragraph);
                        }
                    }
                    // 检验
                    for (Map.Entry<String, Object> item : map.entrySet()) {
                        String xmmc = item.getKey();
                        HashMap<String, Object> entryValue = (HashMap<String, Object>) item.getValue();
                        ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
                        boolean isXmWrite = false;
                        int index = 1;
                        for (List<String> i : lists) {
                            if (!i.get(6).contains(String.valueOf(proVo.getProId()))) continue;
                            if (i.contains("↓") || i.contains("↑")) {
                                if (jianYanYiDa.contains(i.get(5))) continue;
                                jianYanYiDa.add(i.get(5));
                                if (!isXmWrite) {
                                    xmXh++;
                                    paragraph = new Paragraph("【" + xmXh + "." + xmmc + "】", defaultFont);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    document2.add(paragraph);
                                    isXmWrite = true;
                                }
                                String content = "    (" + index + ")" + i.get(0) + ":" + i.get(1) + "  " + i.get(3) + "  " + i.get(4) + "  " + i.get(2);
                                paragraph = new Paragraph(content, defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                                String str = "    ";
                                LambdaQueryWrapper<TjOrderYcxm> ycwq=new LambdaQueryWrapper<>();
                                ycwq.eq(TjOrderYcxm::getTjh,tjOrder.getTjNumber());
                                ycwq.eq(TjOrderYcxm::getJcxm,i.get(0));
                                TjOrderYcxm ycxm = ycxmService.getOne(ycwq);
                                if(null !=ycxm){
                                    String jynr = ycxm.getJynr();
                                    JSONArray array = JSONUtil.parseArray(jynr);
                                    for (Object object : array) {
                                        JSONObject jsonObject = (JSONObject) object;
                                        String bt = jsonObject.getStr("bt");
                                        String nr = jsonObject.getStr("nr");
                                        if(null !=bt || null !=nr) {
                                            String content1 = str + bt + nr;
                                            if (StrUtil.isBlank(content)) content1 = "     ";
                                            paragraph = new Paragraph(content1, defaultFont);
                                        }
                                        paragraph.setAlignment(Element.ALIGN_LEFT);
                                        document2.add(paragraph);
                                    }
                                    paragraph = PdfUtils.setParagraph(defaultFont, "");
                                    paragraph.setSpacingBefore(2f);
                                    paragraph.setSpacingAfter(5f);
                                    document2.add(paragraph);
                                    index++;
                                }
                            }
                        }
                        if (isXmWrite) {
                            paragraph = PdfUtils.setParagraph(defaultFont, "");
                            paragraph.setSpacingBefore(0f);
                            paragraph.setSpacingAfter(5f);
                            document2.add(paragraph);
                        }
                    }
                }
            }
        } else {
        for (Map.Entry<String, List<CsProVo>> deptEntry : listMap.entrySet()) {
            List<CsProVo> proVos = deptEntry.getValue();
            if (proVos.size() > 1) {
@@ -1274,6 +1407,8 @@
                }
            }
        }
        }
        for (int i = 0; i < 1; i++) {
            paragraph = PdfUtils.setParagraph(defaultFont, "");
            document2.add(paragraph);
@@ -1418,7 +1553,6 @@
        document2.close();
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        Document document = new Document(PageSize.A4);
        PdfWriter pdfWriter = null;
@@ -1458,9 +1592,6 @@
            return AjaxResult.error();
        }
        document.close();
        // 首页表单
@@ -1532,7 +1663,6 @@
        reader4.close();
        // 将修改后的PDF内容写入
        byte[] bytes = byteArrayOutputStream4.toByteArray();
        ByteArrayOutputStream finalOutput = new ByteArrayOutputStream();
@@ -1720,6 +1850,7 @@
    /**
     * 医师信息行
     *
     * @param phrase
     * @param doctorFonts
     * @param sqrxm
@@ -1784,7 +1915,6 @@
//        fileInputStream.close();
//        fileOutputStream.close();
    }
    /**
@@ -2267,6 +2397,7 @@
    /**
     * 主见医师行显示设置
     *
     * @param document1
     * @param entry
     * @throws DocumentException
@@ -2308,28 +2439,32 @@
                        document1.add(elements);
                    } catch (IOException e) {
                        String doctorName = "主检医师:" + doctorNameDefault;
                        if (createTime != null) doctorName = "检查时间:"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             主检医师:" + doctorNameDefault;
                        if (createTime != null)
                            doctorName = "检查时间:" + new SimpleDateFormat("yyyy-MM-dd").format(createTime) + "             主检医师:" + doctorNameDefault;
                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
                        df.setAlignment(Element.ALIGN_RIGHT);
                        document1.add(df);
                    }
                }else {
                    String doctorName = "主检医师:" + doctorNameDefault;
                    if (createTime != null) doctorName = "检查时间:"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             主检医师:" + doctorNameDefault;
                    if (createTime != null)
                        doctorName = "检查时间:" + new SimpleDateFormat("yyyy-MM-dd").format(createTime) + "             主检医师:" + doctorNameDefault;
                    Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
                    df.setAlignment(Element.ALIGN_RIGHT);
                    document1.add(df);
                }
            }else {
                String doctorName = "主检医师:" + doctorNameDefault;
                if (createTime != null) doctorName = "检查时间:"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             主检医师:" + doctorNameDefault;
                if (createTime != null)
                    doctorName = "检查时间:" + new SimpleDateFormat("yyyy-MM-dd").format(createTime) + "             主检医师:" + doctorNameDefault;
                Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
                df.setAlignment(Element.ALIGN_RIGHT);
                document1.add(df);
            }
        } else {
            String doctorName = "主检医师:" + "无";
            if (createTime != null) doctorName = "检查时间:"+new SimpleDateFormat("yyyy-MM-dd").format(createTime)+"             主检医师:" + "无";
            if (createTime != null)
                doctorName = "检查时间:" + new SimpleDateFormat("yyyy-MM-dd").format(createTime) + "             主检医师:" + "无";
            Font doctorFonts = PdfUtils.setFont(9);
            Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
            df.setAlignment(Element.ALIGN_RIGHT);
@@ -2653,6 +2788,7 @@
            printReport.put(entry.getKey(), tjPdfVOS);
        }
    }
    private void pacsJianChaData(String tjNumber, Map<TjOrderRemark, List<TjPdfVO>> printReport, TjOrder one, TjCustomer customer) {
//        LambdaQueryWrapper<TjOrderRemark> wqq = new LambdaQueryWrapper<>();
//        wqq.eq(TjOrderRemark::getTjNumber, tjNumber);