zjh
2025-02-17 206a888c39eed2c58f4dab3c5bfcac7f068a0ea9
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -1001,6 +1001,13 @@
        int xmXh = 1;
//        orderDetails=orderDetails.stream().sorted(Comparator.comparing(TjOrderDetail::getProName, Collator.getInstance(Locale.CHINA))).collect(Collectors.toList());
//        orderDetails = orderDetails.stream()
//                .sorted(Comparator.comparingInt(
//                        tjPdfVO -> tjPdfVO.getProName().length() // 根据名字的长度排序
//                ))
//                .collect(Collectors.toList());
        Map<Long, List<TjOrderDetail>> collect = orderDetails.stream().collect(Collectors.groupingBy(TjOrderDetail::getProId));
        for (Map.Entry<String, List<CsProVo>> deptEntry : listMap.entrySet()) {
            List<CsProVo> proVos = deptEntry.getValue();
@@ -1017,9 +1024,19 @@
                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();
                    String xmmc = proVo.getProName();
//                    String xmmc = details.get(0).getProName();
                    boolean isXmWrite = false;
//                    details=details.stream().sorted(Comparator.comparing(TjOrderDetail::getProName, Collator.getInstance(Locale.CHINA))).collect(Collectors.toList());
//                    details = details.stream()
//                            .sorted(Comparator.comparingInt(
//                                    tjPdfVO -> tjPdfVO.getProName().length() // 根据名字的长度排序
//                            ))
//                            .collect(Collectors.toList());
                    int index = 1;
                    for (TjOrderDetail detail : details) {
//                        if (!entry.getKey().equals(detail.getProId())) continue;
                        if (!isXmWrite) {
                            paragraph = new Paragraph(xmXh + ".  " + xmmc, defaultFont);
                            paragraph.setAlignment(Element.ALIGN_LEFT);
@@ -1028,16 +1045,20 @@
                        }
                        String result = detail.getProResult();
                        if (StrUtil.isNotBlank(result)) {
                            int index = 1;
                            result = result.replaceAll("本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查", "");
//                            result = result.replaceAll("", "");
                            String[] split = result.split("\n");
//                            String[] split = result.split("\n");
//                            StringBuilder builder = new StringBuilder();
//                            for (String s : split) {
//                                if (StrUtil.isBlank(s.replaceAll("\n", "").trim())) continue;
//                                builder.append("    (").append(index).append(")").append(s).append("\n");
//                                index++;
//                            }
                            StringBuilder builder = new StringBuilder();
                            for (String s : split) {
                                if (StrUtil.isBlank(s.replaceAll("\n", "").trim())) continue;
                                builder.append("    (").append(index).append(")").append(s).append("\n");
                                if (StrUtil.isBlank(result.replaceAll("\n", "").trim())) continue;
                                builder.append("    (").append(index).append(")").append(detail.getProName()).append(": ").append(result).append("\n");
                                index++;
                            }
                            result = builder.toString();
                        }
                        paragraph = new Paragraph(result, defaultFont);
@@ -1104,7 +1125,78 @@
        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()) {
            Map<String, List<TjOrderYcxm>> stringListMap = ycxms.stream().collect(Collectors.groupingBy(TjOrderYcxm::getParentName));
            for (Map.Entry<String, List<TjOrderYcxm>> entry : stringListMap.entrySet()) {
                List<TjOrderYcxm> details = entry.getValue();
                if(null !=details && !details.isEmpty()){
                    details= details.stream()
                            .sorted(Comparator.comparing(TjOrderYcxm::getJcxm))
                            .collect(Collectors.toList());
                    boolean isXmWrite = false;
                    int index = 1;
                    int index1 = 1;
                    for (TjOrderYcxm detail : details) {
                        String xmmc = entry.getKey().toString();
                        if (!isXmWrite) {
                            xmXh++;
                            paragraph = new Paragraph("【" + xmXh + "." + xmmc + "】", defaultFont);
                            paragraph.setAlignment(Element.ALIGN_LEFT);
                            document2.add(paragraph);
                            isXmWrite = true;
                        }
                        String result = detail.getJcjg();
                        if (StrUtil.isNotBlank(result)) {
                            StringBuilder builder = new StringBuilder();
                            if (StrUtil.isBlank(result.replaceAll("\n", "").trim())) continue;
                            builder.append("    (").append(index1).append(")").append(detail.getJcxm()).append(": ").append(result).append("\n");
                            index1++;
                            result = builder.toString();
                        }
                        if (StrUtil.isNotBlank(result)) {
                            paragraph = new Paragraph(result, defaultFont);
                            paragraph.setAlignment(Element.ALIGN_LEFT);
                            document2.add(paragraph);
                        } else {
                            paragraph = new Paragraph("建议定期复查", defaultFont);
                            paragraph.setAlignment(Element.ALIGN_LEFT);
                            document2.add(paragraph);
                        }
                        String str = "     ";
                        List<Map<String, Object>> maps = new ArrayList<>();
                            String jynr = detail.getJynr();
                            JSONArray array = JSONUtil.parseArray(jynr);
                            for (Object object : array) {
                                Map<String,Object> objectMap=new HashMap<>();
                                JSONObject jsonObject = (JSONObject) object;
                                String bt = jsonObject.getStr("bt");
                                String nr = jsonObject.getStr("nr");
                                objectMap.put("bt",bt);
                                objectMap.put("nr",nr);
                                if(null !=bt || null !=nr) maps.add(objectMap);
                            }
                            List<Map<String, Object>> collect1 = maps.stream().distinct().collect(Collectors.toList());
                            for (Map<String, Object> objectMap : collect1) {
                                String content = str + objectMap.get("bt").toString() + objectMap.get("nr").toString();
                                if (StrUtil.isBlank(content)) content = "     ";
                                paragraph = new Paragraph(content, defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                            }
                        index++;
                        paragraph = PdfUtils.setParagraph(defaultFont, "");
                        paragraph.setLeading(0f);
                        paragraph.setSpacingBefore(0f);
                        paragraph.setSpacingAfter(5f);
                        document2.add(paragraph);
                    }
                }
            }
            /*for (Map.Entry<String, List<CsProVo>> deptEntry : listMap.entrySet()) {
                List<CsProVo> proVos = deptEntry.getValue();
                if (proVos.size() > 1) {
                    proVos = proVos.stream()
@@ -1125,7 +1217,8 @@
                            int index = 1;
                            int index1 = 1;
                            for (TjOrderDetail detail : details) {
                                String xmmc = detail.getProName();
                                String xmmc = proVo.getProName();
//                                String xmmc = detail.getProName();
                                if (!isXmWrite) {
                                    xmXh++;
                                    paragraph = new Paragraph("【" + xmXh + "." + xmmc + "】", defaultFont);
@@ -1135,13 +1228,18 @@
                                }
                                String result = detail.getProResult();
                                if (StrUtil.isNotBlank(result)) {
                                    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");
//                                    String[] split = result.split("\n");
//                                    for (String s : split) {
//                                        if (StrUtil.isBlank(s.replaceAll("\n", "").trim())) continue;
//                                        builder.append("    (").append(index1).append(")").append(s).append("\n");
//                                        index1++;
//                                    }
                                        if (StrUtil.isBlank(result.replaceAll("\n", "").trim())) continue;
                                        builder.append("    (").append(index1).append(")").append(detail.getProName()).append(": ").append(result).append("\n");
                                        index1++;
                                    }
                                    result = builder.toString();
                                }
                                if (StrUtil.isNotBlank(result)) {
@@ -1158,7 +1256,7 @@
                                LambdaQueryWrapper<TjOrderYcxm> ycwq=new LambdaQueryWrapper<>();
                                ycwq.eq(TjOrderYcxm::getTjh,tjOrder.getTjNumber());
                                ycwq.eq(TjOrderYcxm::getJcxm,xmmc);
                                ycwq.eq(TjOrderYcxm::getJcxm,detail.getProName());
                                TjOrderYcxm ycxm = ycxmService.getOne(ycwq);
                                if(null !=ycxm){
                                    String jynr = ycxm.getJynr();
@@ -1250,7 +1348,7 @@
                        }
                    }
                }
            }
            }*/
        } else {
            for (Map.Entry<String, List<CsProVo>> deptEntry : listMap.entrySet()) {
                List<CsProVo> proVos = deptEntry.getValue();
@@ -2805,14 +2903,14 @@
                    }
                }
            }
//            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());
//            }
            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);
        }
    }