zjh
2024-01-31 fc868e56b1e8199d2c4267fae74c44cfa62a777f
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java
@@ -72,8 +72,6 @@
    @Resource
    private ITjStandardService tjStandardService;
    @Resource
    private ITjAdviceService tjAdviceService;
    @Resource
    private IDictCompService dictCompService;
    @Resource
    private ITjReportTemplateService reportTemplateService;
@@ -90,6 +88,43 @@
    @Autowired
    private ISysDictDataService dictDataService;
    @Resource
    private ITbTransitionService transitionService;
    @Autowired
    private ITjBigPositiveService tjBigPositiveService;
    @GetMapping("/savePdf")
    @ApiOperation(value = "从本地存储模板到数据库")
    public AjaxResult savePdf() {
        //从文件地址读入PDF文件  仅存储一次
        String base64String = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\体检模板4.pdf");
        TjReportTemplate tem = new TjReportTemplate();
        tem.setName("体检报告模板4");
        tem.setRemark("体检报告模板4");
        tem.setTemplate(base64String);
        tem.setFlag("1");
        tem.setOpen("0");
        final boolean save = reportTemplateService.save(tem);
        if(save){
            return AjaxResult.success("保存成功");
        }
        return AjaxResult.success("保存失败");
//        String base64String2 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\心电图1.pdf");
//        TjReport tem2 = new TjReport();
//        tem2.setTjNumber(tjNumber);
//        tem2.setReport(base64String2);
//        tem2.setType("心电图");
//        tjReportService.save(tem2);
//
//        String base64String1 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\附件2.pdf");
//        TjReport tem1 = new TjReport();
//        tem1.setTjNumber(tjNumber);
//        tem1.setReport(base64String1);
//        tem1.setType("附件");
//        tjReportService.save(tem1);
    }
    //    /* *//**
@@ -227,49 +262,15 @@
    @Transactional
    public AjaxResult toPdf(@PathVariable("TjNumber") @ApiParam(value = "体检号") String tjNumber) {
        //从文件地址读入PDF文件  仅存储一次
        // TODO: 2023/3/21 将模板保存到数据库 一次使用后注释
//        String base64String = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\体检模板4.pdf");
//        TjReportTemplate tem = new TjReportTemplate();
//        tem.setName("体检报告模板4");
//        tem.setRemark("体检报告模板4");
//        tem.setTemplate(base64String);
//        tem.setFlag("1");
//        tem.setOpen("0");
//        reportTemplateService.save(tem);
//        // TODO: 2023/3/21 将心电图保存到数据库 一次使用后注释  暂时用于测试
//        String base64String2 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\心电图1.pdf");
//        TjReport tem2 = new TjReport();
//        tem2.setTjNumber(tjNumber);
//        tem2.setReport(base64String2);
//        tem2.setType("心电图");
//        tjReportService.save(tem2);
//
//        String base64String1 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\附件2.pdf");
//        TjReport tem1 = new TjReport();
//        tem1.setTjNumber(tjNumber);
//        tem1.setReport(base64String1);
//        tem1.setType("附件");
//        tjReportService.save(tem1);
//
//        String base64String3 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\医学名词.pdf");
//        TjReport tem3 = new TjReport();
//        tem3.setTjNumber(tjNumber);
//        tem3.setReport(base64String3);
//        tem3.setType("医学名词");
//        tjReportService.save(tem3);
        int num = tjOrderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber);
        if (num > 0) return AjaxResult.error("有延期项目暂不能生成报告!!!");
        LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
        wq.eq(TjOrder::getTjNumber, tjNumber);
        TjOrder tjOrder = tjOrderService.getOne(wq);
        if (null != tjOrder) {
            LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>();
            TjReportTemplate reportTemplate =null;
            if (tjOrder.getTjCategory()!=null){
                //查询字典
                LambdaQueryWrapper<SysDictData> wqq = new LambdaQueryWrapper<>();
@@ -290,12 +291,13 @@
                }else {
                    tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
                }
                tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0);
                reportTemplate = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper);
            }else {
                tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0);
                reportTemplate = reportTemplateService.list(tjReportTemplateLambdaQueryWrapper).get(2);
            }
            tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0);
            TjReportTemplate one1 = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper);
            String template = one1.getTemplate();
            String template = reportTemplate.getTemplate();
            String userId = SecurityUtils.getLoginUser().getUsername();
            PDFBinaryUtil.base64StringToPDF(template, FileUtil.mkdir(value).getPath() + "\\" + userId + "体检报告封面模板.pdf");
@@ -403,12 +405,40 @@
                        data.put("docname", tjOrder.getCheckDoctor());
                    }
                    //异常项目
                    data.put("yichang", "【1】屈光不正\n" +
                            "【2】扁桃体肥⼤\n" +
                            "【3】体重指数增⾼\n" +
                            "【4】⾎脂异常(总胆固醇增⾼;⽢油三酯增⾼)\n" +
                            "【5】γ-⾕氨酰转移酶增⾼;天⻔冬氨酸氨基转移酶增⾼;丙氨酸氨基转移酶增⾼\n" +
                            "【6】轻⾄中度脂肪肝");
//                    data.put("yichang", "【1】屈光不正\n" +
//                            "【2】扁桃体肥⼤\n" +
//                            "【3】体重指数增⾼\n" +
//                            "【4】⾎脂异常(总胆固醇增⾼;⽢油三酯增⾼)\n" +
//                            "【5】γ-⾕氨酰转移酶增⾼;天⻔冬氨酸氨基转移酶增⾼;丙氨酸氨基转移酶增⾼\n" +
//                            "【6】轻⾄中度脂肪肝");
                    //拼接重大阳性结果
                    StringBuffer str=new StringBuffer();
                    str.append("【重大阳性项目】\n");
                    LambdaQueryWrapper<TjBigPositive> bigPositiveLambdaQueryWrapper=new LambdaQueryWrapper<>();
                    bigPositiveLambdaQueryWrapper.eq(TjBigPositive::getTjNumber,tjNumber);
                    final List<TjBigPositive> list1 = tjBigPositiveService.list(bigPositiveLambdaQueryWrapper);
                    if(list1!=null&&list1.size()>0){
                        for (int i = 0; i < list1.size(); i++) {
                            str.append((i+1)+"、"+list1.get(i).getProName()+";\n");
                        }
                    }else {
                        str.append("    无;\n");
                    }
                    //拼接异常项目
                    str.append("【异常情况项目】\n");
                    if(list.size()>0){
                        for (int i = 0; i < list.size(); i++) {
                            if (list.get(i).getExceptionDesc()==1){
                                str.append((i+1)+"、"+projectService.getById(list.get(i).getProId()).getProName()+";\n");
                            }
                        }
                    }else {
                        str.append("    无;\n");
                    }
                    //异常项目
                    data.put("yichang", str.toString());
                    // 遍历data 给pdf表单表格赋值
                    for (String key : data.keySet()) {
@@ -427,11 +457,11 @@
                    //设置文档的页边距就是距离页面边上的距离,分别为:左边距,右边距,上边距,下边距
                    document.setMargins(70, 70, 40, 40);
                    //生成pdf的位置以及名称
                    String fileName = value + "\\" + userId + "体检报告项目详情页.pdf";
                    String fileName = value + "\\" + userId +tjNumber+ "体检报告项目详情页.pdf";
                    OutputStream outputStream = Files.newOutputStream(Paths.get(fileName));
                    PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);
                    pdfWriter.setPageEvent(new MyHeaderFooter());// 页眉页脚
                    //pdfWriter.setPageEvent(new MyHeaderFooter());// 页眉页脚
                    document.open();
@@ -444,7 +474,11 @@
                        LambdaQueryWrapper<TjProject> wqqq = new LambdaQueryWrapper<>();
                        wqqq.eq(TjProject::getProId, entry.getKey().getProId());
                        TjProject one11 = projectService.getOne(wqqq);
                        if ("1".equals(one11.getProCheckMethod())) {
                        //判断该项目是否需要打印报告
                        if ("N".equals(one11.getNeedReport())){
                            continue;
                        }
                        if ("1".equals(one11.getResultType())) {
                            String titleName = one11.getProName();
                            // 设置标题字体样式
                            Font titleFonts = PdfUtils.setFont(9);
@@ -576,31 +610,50 @@
                    pdfWriter.close();
                    outputStream.close();
                    // TODO: 2023/3/29  查询附件pdf 如心电图、附件
                    LambdaQueryWrapper<TjReport> rtwq1 = new LambdaQueryWrapper<>();
                    rtwq1.eq(TjReport::getType, "医学名词");
//                    rtwq1.eq(TjReport::getTjNumber, tjNumber);
                    TjReport one11111 = tjReportService.getOne(rtwq1);
                    String report1 = one11111.getReport();
                    PDFBinaryUtil.base64StringToPDF(report1, FileUtil.mkdir(value).getPath() + "\\" + userId + "医学名词.pdf");
//                    LambdaQueryWrapper<TjReport> rtwq1 = new LambdaQueryWrapper<>();
//                    rtwq1.eq(TjReport::getType, "医学名词");
////                    rtwq1.eq(TjReport::getTjNumber, tjNumber);
//                    TjReport one11111 = tjReportService.getOne(rtwq1);
//                    if(null !=one11111){
//                        String report1 = one11111.getReport();
//                        PDFBinaryUtil.base64StringToPDF(report1, FileUtil.mkdir(value).getPath() + "\\" + userId + "医学名词.pdf");
//                    }
                    LambdaQueryWrapper<TjReport> rtwq = new LambdaQueryWrapper<>();
                    rtwq.eq(TjReport::getType, "心电图");
//                    rtwq.eq(TjReport::getTjNumber, tjNumber);
                    rtwq.eq(TjReport::getTjNumber, tjNumber);
                    TjReport one1111 = tjReportService.getOne(rtwq);
                    String report = one1111.getReport();
                    PDFBinaryUtil.base64StringToPDF(report, FileUtil.mkdir(value).getPath() + "\\" + userId + "心电图.pdf");
                    if(null !=one1111){
                        String report = one1111.getReport();
                        PDFBinaryUtil.base64StringToPDF(report, FileUtil.mkdir(value).getPath() + "\\" +tjNumber+ userId + "心电图.pdf");
                    }
                    LambdaQueryWrapper<TjReport> rtwq12 = new LambdaQueryWrapper<>();
                    rtwq12.eq(TjReport::getType, "附件");
//                    rtwq12.eq(TjReport::getTjNumber, tjNumber);
                    rtwq12.eq(TjReport::getTjNumber, tjNumber);
                    TjReport one111112 = tjReportService.getOne(rtwq12);
                    String report12 = one111112.getReport();
                    PDFBinaryUtil.base64StringToPDF(report12, FileUtil.mkdir(value).getPath() + "\\" + userId + "附件.pdf");
                    if(null !=one111112){
                        String report12 = one111112.getReport();
                        PDFBinaryUtil.base64StringToPDF(report12, FileUtil.mkdir(value).getPath() + "\\" +tjNumber+ userId + "附件.pdf");
                    }
                    //合并
                    String[] files1 = {value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + "体检报告项目详情页.pdf", value + "\\" + userId + "医学名词.pdf", value + "\\" + userId + "附件.pdf", value + "\\" + userId + "心电图.pdf"};
                    String[] files1=null;
                    if (one1111!=null ){
                        if (one111112!=null){
                            files1 = new String[ ]{value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf", value + "\\" + tjNumber + userId + "附件.pdf", value + "\\" + tjNumber + userId + "心电图.pdf"};
                        }else {
                            files1 = new String[]{value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf",value + "\\" + tjNumber + userId + "心电图.pdf"};
                        }
                    }else {
                        if (one111112!=null){
                            files1 = new String[]{value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf", value + "\\" + tjNumber + userId + "附件.pdf"};
                        }else {
                            files1 = new String[]{value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf"};
                        }
                    }
                    //合并
//                    String[] files1 = {value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber+"体检报告项目详情页.pdf", value + "\\" +tjNumber+ userId + "附件.pdf", value + "\\" + tjNumber + userId + "心电图.pdf"};
                    String outputPath1 = value + "\\";
                    String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf";
@@ -619,10 +672,9 @@
                    tjReport.setType("体检报告");
                    tjReportService.save(tjReport);
                    //TODO 2023/2/3 16:21 生成体检报告pdf后删除本地文件
                    //FileUtil.del(value + "\\" + tjNumber + "体检报告.pdf");
                    //FileUtil.del(value + "\\" + userId + "体检报告封面模板.pdf");
                    //FileUtil.del(value + "\\" + userId + "体检报告项目详情页.pdf");
                    //FileUtil.del(value + "\\" + userId +tjNumber+ "体检报告项目详情页.pdf");
                    //FileUtil.del(value + "\\" + userId + "体检报告封面页.pdf");
                    //FileUtil.del(value + "\\" + userId + "心电图.pdf");
@@ -641,6 +693,8 @@
                } catch (Exception e) {
                    e.printStackTrace();
                    return AjaxResult.success("PDF导出失败");
                }finally {
                    transitionService.deletedTbTransitionListByCusIdAndTjNum(tjCustomer.getCusIdcard(),tjOrder.getCardId());
                }
            }
        }
@@ -1378,25 +1432,20 @@
        LambdaQueryWrapper<TjOrder> wqq = new LambdaQueryWrapper<>();
        wqq.like(TjOrder::getUserId, cusId);
        List<TjOrder> orderList = tjOrderService.list(wqq);
        if (orderList!=null){
        if (orderList!=null && orderList.size()>0){
            for (TjOrder tjOrder : orderList) {
                if (tjOrder!=null){
                    LambdaQueryWrapper<TjReport> wq = new LambdaQueryWrapper<>();
                    wq.eq(TjReport::getTjNumber, tjOrder.getTjNumber());
                    wq.eq(TjReport::getType,"体检报告");
                    res.add(tjReportService.getOne(wq));
                    TjReport one = tjReportService.getOne(wq);
                    if(null !=one){
                        res.add(one);
                    }
                }
            }
            return AjaxResult.success(res);
        }
        return AjaxResult.error("暂无历史报告");
    }
}