zhaowenxuan
2024-12-11 b7398498c803b88de13d6f905023911312b3fc45
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -18,6 +18,9 @@
import com.ltkj.framework.config.MatchUtils;
import com.ltkj.hosp.domain.*;
import com.ltkj.hosp.mapper.DictUserInfoMapper;
import com.ltkj.hosp.mapper.TjOrderDetailMapper;
import com.ltkj.hosp.mapper.TjOrderRemarkMapper;
import com.ltkj.hosp.mapper.TjRulesMapper;
import com.ltkj.hosp.service.*;
import com.ltkj.hosp.sqlDomain.LtkjExamJcbgd;
import com.ltkj.hosp.sqlDomain.LtkjHybgd;
@@ -98,6 +101,14 @@
    private IDictHospService dictHospService;
    @Autowired
    private ISysDictDataService sysDictDataService;
    @Autowired
    private ITjRulesService tjRulesService;
    @Autowired
    private TjRulesMapper tjRulesMapper;
    @Autowired
    private TjOrderRemarkMapper tjOrderRemarkMapper;
    @Autowired
    private TjOrderDetailMapper tjOrderDetailMapper;
    private Integer pdfPage = 0;
@@ -168,7 +179,7 @@
            Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
            notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
            try {
                notHuaYanTable(document1, printReport,dictHosp,color);
                notHuaYanTable(document1, printReport,dictHosp,color,false);
            } catch (DocumentException e) {
                log.error("非化验项目填充表格异常");
                log.error(String.valueOf(e));
@@ -181,7 +192,7 @@
            printReport = new HashMap<>();
            pacsJianChaData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
            try {
                notHuaYanTable(document1, printReport,dictHosp,color);
                notHuaYanTable(document1, printReport,dictHosp,color,true);
            } catch (DocumentException e) {
                log.error("pacs项目填充表格异常");
                log.error(String.valueOf(e));
@@ -192,7 +203,7 @@
            Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
            notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
            try {
                notHuaYanTable(document1, printReport,dictHosp,color);
                notHuaYanTable(document1, printReport,dictHosp,color,true);
            } catch (DocumentException e) {
                log.error("非化验项目填充表格异常");
                log.error(String.valueOf(e));
@@ -371,16 +382,98 @@
                        document2.add(paragraph);
                        isXmWrite = true;
                    }
                    String content = "  ("+index + ") " + i.get(0) + ":" + i.get(1) + "  " + i.get(3) + "  " + i.get(4);
                    String content = "  ("+index + ") " + i.get(0) + ":" + i.get(1) + "  " + i.get(3) + "  " + i.get(4) + "  " + i.get(2);
                    paragraph = new Paragraph(content,defaultFont);
                    paragraph.setAlignment(Element.ALIGN_LEFT);
                    document2.add(paragraph);
                    // 第六位是lis项目id
//                    LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
//                    wrapper.eq(TjProject::getLisXmbm,i.get(5));
//                    TjProject project = projectService.getOne(wrapper);
//                    if (project != null) {
//                        LambdaQueryWrapper<TjRules> queryWrapper = new LambdaQueryWrapper<>();
//                        queryWrapper.eq(TjRules::getProId,project.getProId());
//                        List<TjRules> rules = tjRulesService.list(queryWrapper);
//                        if (!rules.isEmpty()){
//
//                        }
                    String str = "     ";
                        List<Map<String, Object>> maps = tjRulesMapper.getyichangxiangmujianyiguize(i.get(5),null,i.get(2));
                        if (!maps.isEmpty()){
                            for (Map<String, Object> objectMap : maps) {
//                                paragraph = new Paragraph(str+"建议标题",defaultFont);
//                                paragraph.setAlignment(Element.ALIGN_LEFT);
//                                document2.add(paragraph);
//
//                                paragraph = new Paragraph(str+objectMap.get("bt").toString(),defaultFont);
//                                paragraph.setAlignment(Element.ALIGN_LEFT);
//                                document2.add(paragraph);
//
//                                paragraph = new Paragraph(str+"建议内容",defaultFont);
//                                paragraph.setAlignment(Element.ALIGN_LEFT);
//                                document2.add(paragraph);
//
//                                paragraph = new Paragraph(str+objectMap.get("nr").toString(),defaultFont);
//                                paragraph.setAlignment(Element.ALIGN_LEFT);
//                                document2.add(paragraph);
                                paragraph = new Paragraph(str+objectMap.get("bt").toString()+":"+objectMap.get("nr").toString(),defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                            }
                        }
//                    }
                    index++;
                }
            }
            paragraph = PdfUtils.setParagraph(defaultFont, "");
            document2.add(paragraph);
        }
//        List<TjOrderRemark> remarks = tjOrderRemarkMapper.getzongjianyishengchakanyichangxiangmu3( tjOrder.getTjNumber());
        List<TjOrderDetail> orderDetails = tjOrderDetailMapper.getzongjianyishengchakanyichangxiangmu4( tjOrder.getTjNumber());
//        List<Map<String, Object>> jiancha = new ArrayList<>();
        for (Map.Entry<Long, List<TjOrderDetail>> entry : orderDetails.stream().collect(Collectors.groupingBy(TjOrderDetail::getProId)).entrySet()) {
            List<TjOrderDetail> details = entry.getValue();
            String xmmc = details.get(0).getProName();
            boolean isXmWrite = false;
            int index = 1;
            for (TjOrderDetail detail : details) {
                if (!isXmWrite) {
                    paragraph = new Paragraph(xmmc,defaultFont);
                    paragraph.setAlignment(Element.ALIGN_LEFT);
                    document2.add(paragraph);
                    isXmWrite = true;
                }
                String result = detail.getProResult();
                if (StrUtil.isNotBlank(result)){
                    result = result.replaceAll("\n本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查","");
                    result = "\n      "+result.replaceAll("\n","\n      ");
                }
                String content = "  ("+index + ") " + detail.getProName() + ":" + result;
                paragraph = new Paragraph(content,defaultFont);
                paragraph.setAlignment(Element.ALIGN_LEFT);
                document2.add(paragraph);
                String str = "     ";
                List<Map<String, Object>> advices = detail.getAdvices();
                if (advices != null && !advices.isEmpty()){
                    for (Map<String, Object> m : advices) {
                        paragraph = new Paragraph(str+m.get("bt").toString()+":"+m.get("nr").toString(),defaultFont);
                        paragraph.setAlignment(Element.ALIGN_LEFT);
                        document2.add(paragraph);
                    }
                }
                index++;
            }
            paragraph = PdfUtils.setParagraph(defaultFont, "");
            document2.add(paragraph);
        }
        for (int i = 0; i < 2; i++) {
            paragraph = PdfUtils.setParagraph(defaultFont, "");
@@ -424,7 +517,7 @@
        Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
        notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
        try {
            notHuaYanTable(document, printReport, dictHosp, color);
            notHuaYanTable(document, printReport, dictHosp, color,false);
        } catch (DocumentException e) {
            log.error("非化验项目填充表格异常");
            log.error(String.valueOf(e));
@@ -436,7 +529,7 @@
        printReport = new HashMap<>();
        pacsJianChaData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
        try {
            notHuaYanTable(document, printReport, dictHosp, color);
            notHuaYanTable(document, printReport, dictHosp, color,true);
        } catch (DocumentException e) {
            log.error("pacs项目填充表格异常");
            log.error(String.valueOf(e));
@@ -839,7 +932,7 @@
     * @param printReport
     * @throws DocumentException
     */
    private void notHuaYanTable(Document document1, Map<TjOrderRemark, List<TjPdfVO>> printReport,DictHosp dictHosp,String colorStr) throws DocumentException {
    private void notHuaYanTable(Document document1, Map<TjOrderRemark, List<TjPdfVO>> printReport,DictHosp dictHosp,String colorStr,boolean isPacs) throws DocumentException {
        for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
            LambdaQueryWrapper<TjProject> wqqq = new LambdaQueryWrapper<>();
            wqqq.eq(TjProject::getProId, entry.getKey().getProId());
@@ -885,13 +978,52 @@
                    if (dictHosp.getHospName().equals("澄合矿务局中心医院") && !value.isEmpty()){
                        if (value.size()>1){
                            if (value.get(0).getPid().equals("1862852701533012001")){
                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                Paragraph ppp = new Paragraph("阳性参考值:", remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("DOB值:         ≥      4.0                HP-阳性", remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("                <      4.0                  正常", remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("检测结果: DOB="+value.get(0).getProResult(), remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("", remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("", remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("结论:"+entry.getKey().getRemark(), 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,dictHosp.getHospName().equals("澄合矿务局中心医院"));
                                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 = PdfUtils.setParagraph(remarkFonts, "检查所见:");
                            document1.add(pp);
                            Paragraph ppp = new Paragraph(value.get(0).getSj(), remarkFonts);
@@ -904,12 +1036,56 @@
                            paragraph.setAlignment(Element.ALIGN_LEFT);
                            paragraph.setLeading(5f);
                            document1.add(ppp);
                            }else {
                                if (value.get(0).getPid().equals("1862852701533012001")){
                                    remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                    Paragraph ppp = new Paragraph("阳性参考值:", remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("DOB值:         ≥      4.0                HP-阳性", remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("                <      4.0                  正常", remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("检测结果: DOB="+value.get(0).getProResult(), remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("", remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("", remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("结论:"+entry.getKey().getRemark(), 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);
                                }
                            }
                        }
                    }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,dictHosp.getHospName().equals("澄合矿务局中心医院"));
                        PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value,isPacs,new float[]{240, 240,240});
                        document1.add(table);
                    }
                    //判断备注是否为空  空不能显示null
@@ -984,13 +1160,53 @@
                    if (dictHosp.getHospName().equals("澄合矿务局中心医院") && !value.isEmpty()){
                        if (value.size()>1){
                            if (value.get(0).getPid().equals("1862852701533012001")){
                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                Paragraph ppp = new Paragraph("阳性参考值:", remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("DOB值:         ≥      4.0                HP-阳性", remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("                <      4.0                  正常", remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("检测结果: DOB="+value.get(0).getProResult(), remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("", remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("", remarkFonts);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                paragraph.setLeading(5f);
                                document1.add(ppp);
                                ppp = new Paragraph("结论:"+entry.getKey().getRemark(), 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,dictHosp.getHospName().equals("澄合矿务局中心医院"));
                                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 = PdfUtils.setParagraph(remarkFonts, "检查所见:");
                            document1.add(pp);
                            Paragraph ppp = new Paragraph(value.get(0).getSj() != null ? value.get(0).getSj() : value.get(0).getProResult(), remarkFonts);
@@ -1003,12 +1219,57 @@
                            paragraph.setAlignment(Element.ALIGN_LEFT);
                            paragraph.setLeading(5f);
                            document1.add(ppp);
                            }else {
                                if (value.get(0).getPid().equals("1862852701533012001")){
                                    remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                    Paragraph ppp = new Paragraph("阳性参考值:", remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("DOB值:         ≥      4.0                HP-阳性", remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("                <      4.0                  正常", remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("检测结果: DOB="+value.get(0).getProResult(), remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("", remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("", remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                    ppp = new Paragraph("结论:"+entry.getKey().getRemark(), 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);
                                }
                            }
                        }
                    }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,dictHosp.getHospName().equals("澄合矿务局中心医院"));
                        PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value,isPacs);
                        document1.add(table);
                    }
@@ -1418,6 +1679,7 @@
                            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()));