zjh
2024-12-07 148a7f11b0ead8539cae824f02dda19a703f4d0b
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java
@@ -58,7 +58,7 @@
 */
@RestController
@RequestMapping("/system/report")
@Api(tags = "体检报告")
@Api(tags = "AAAA_体检报告")
@Transactional
public class TjReportController extends BaseController {
    @Resource
@@ -105,13 +105,15 @@
    @ApiOperation(value = "从本地存储模板到数据库")
    public AjaxResult savePdf() {
        //从文件地址读入PDF文件  仅存储一次
        String base64String = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\体检模板5.pdf");
        String base64String = PDFBinaryUtil.getPDFBinary(configService.selectConfigByKey("default_pdf5Template"));
        reportTemplateService.remove(new LambdaQueryWrapper<TjReportTemplate>().eq(TjReportTemplate::getName,"体检报告模板5"));
        TjReportTemplate tem = new TjReportTemplate();
        tem.setName("体检报告模板5");
        tem.setRemark("体检报告模板5");
        tem.setTemplate(base64String);
        tem.setFlag("1");
        tem.setOpen("0");
        tem.setCreateTime(DateUtil.date());
        final boolean save = reportTemplateService.save(tem);
        if (save) {
            return AjaxResult.success("保存成功");
@@ -271,7 +273,7 @@
    @ApiOperation(value = "打印体检报告为pdf")
    @Transactional
    public AjaxResult toPdf(@PathVariable("TjNumber") @ApiParam(value = "体检号") String tjNumber) {
        AjaxResult error = null;
        //        AjaxResult error = null;
        // 之前的代码 优化速度
//        System.out.println("----------------------------------oldFun开始-------------------------------------------------------");
//        error = oldFun(tjNumber);
@@ -297,52 +299,59 @@
//            return error;
//        }
//        return AjaxResult.success("该用户体检未完成,不能打印报告!!!");
        int num = tjOrderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber);
        if (num > 0) {
            return AjaxResult.error("有延期项目暂不能生成报告!!!");
        String config = configService.selectConfigByKey("sfjcwjhyqxm");
        if(null != config && config.equalsIgnoreCase("Y")){
            int num = tjOrderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber);
            if (num > 0) return AjaxResult.error("存在未检或延期项目暂不能生成报告!!!");
        }
        //判断表中有没有该体检报告  不能重复生成
        LambdaQueryWrapper<TjReport> wqa = new LambdaQueryWrapper<>();
        wqa.eq(TjReport::getTjNumber, tjNumber);
        wqa.eq(TjReport::getType, "体检报告");
        Integer count = tjReportService.getSelectCount(wqa);
        if (count != 0) {
            return AjaxResult.error("该客户报告已生成!不能重复生成!可直接预览或打印!");
        }
//        String configByKey = configService.selectConfigByKey("sfkqdyhis");
        String configByKey = "Y";
        LambdaQueryWrapper<TjOrder> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(TjOrder::getTjNumber, tjNumber);
        TjOrder tjOrder = tjOrderService.getOne(queryWrapper);
        if (null != tjOrder) {
            LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>();
            TjReportTemplate reportTemplate = null;
            if (tjOrder.getTjCategory() != null) {
                //查询字典
                LambdaQueryWrapper<SysDictData> wqq = new LambdaQueryWrapper<>();
                wqq.eq(SysDictData::getDictType, "dict_tjtype");
                wqq.eq(SysDictData::getDictValue, tjOrder.getTjCategory());
                SysDictData one = dictDataService.getOne(wqq);
                if (one != null) {
                    //查询字典
                    LambdaQueryWrapper<SysDictData> wqq1 = new LambdaQueryWrapper<>();
                    wqq1.eq(SysDictData::getDictType, "report_template_type");
                    wqq1.eq(SysDictData::getDictLabel, one.getDictLabel());
                    SysDictData one1 = dictDataService.getOne(wqq1);
                    if (one1 != null) {
                        tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, one1.getDictValue());
                    } else {
                        tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
                    }
                } 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);
            //判断表中有没有该体检报告  不能重复生成
            LambdaQueryWrapper<TjReport> wqa = new LambdaQueryWrapper<>();
            wqa.eq(TjReport::getTjNumber, tjNumber);
            wqa.eq(TjReport::getType, "体检报告");
            Integer count = tjReportService.getSelectCount(wqa);
            if (tjOrder.getReportTime() !=null ||  count != 0  ) {
                return AjaxResult.error("该客户报告已生成!不能重复生成!可直接预览或打印!");
            }
            LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>();
            tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
            tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0);
            TjReportTemplate reportTemplate = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper);
//            if (tjOrder.getTjCategory() != null) {
//                //查询字典
//                LambdaQueryWrapper<SysDictData> wqq = new LambdaQueryWrapper<>();
//                wqq.eq(SysDictData::getDictType, "dict_tjtype");
//                wqq.eq(SysDictData::getDictValue, tjOrder.getTjCategory());
//                SysDictData one = dictDataService.getOne(wqq);
//                if (one != null) {
//                    //查询字典
//                    LambdaQueryWrapper<SysDictData> wqq1 = new LambdaQueryWrapper<>();
//                    wqq1.eq(SysDictData::getDictType, "report_template_type");
//                    wqq1.eq(SysDictData::getDictLabel, one.getDictLabel());
//                    SysDictData one1 = dictDataService.getOne(wqq1);
//                    if (one1 != null) {
//                        tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, one1.getDictValue());
//                    } else {
//                        tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
//                    }
//                } 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);
//            }
            Integer checkStatus = tjOrder.getCheckStatus();
            if (checkStatus == 1) {
                if ("报表".equals(reportTemplate.getPrint())) {
@@ -380,30 +389,7 @@
                wq1.eq(TjCustomer::getCusId, tjOrder.getUserId());
                TjCustomer tjCustomer = tjCustomerService.getOne(wq1);
                try {
                    AjaxResult ajaxResult = hisPDFUtil.hisPDF(tjOrder, tjCustomer, reportTemplate);
                    if (!ajaxResult.get("code").toString().equals("200")) {
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    } else {
                        Long userId = tjCustomer.getCusId();
                        String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_报告.pdf";
                        TjReport tjReport = new TjReport();
                        tjReport.setTjNumber(String.valueOf(tjNumber));
                        tjReport.setPath(urlValue + outputFileName1);
                        String outputPath1 = value + "\\";
                        String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
                        tjReport.setReport(pdfBinary);
                        tjReport.setType("体检报告");
                        tjReport.setPrint("pdf");
                        tjReportService.save(tjReport);
                        LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>();
                        updateWrapper.eq(TjOrder::getTjNumber, tjNumber);
                        updateWrapper.set(TjOrder::getReportTime, new Date());
                        updateWrapper.set(TjOrder::getPrintLastTime, new Date());
                        updateWrapper.set(TjOrder::getDownloadLastTime, new Date());
                        updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END);
                        tjOrderService.update(updateWrapper);
                    }
                    return ajaxResult;
                    return shengchengbgmoban(tjNumber, tjOrder, tjCustomer, reportTemplate);
                } catch (Exception e) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    e.printStackTrace();
@@ -419,6 +405,37 @@
        return AjaxResult.error();
    }
    public AjaxResult shengchengbgmoban(String tjNumber, TjOrder tjOrder, TjCustomer tjCustomer, TjReportTemplate reportTemplate) throws Exception {
        AjaxResult ajaxResult = hisPDFUtil.hisPDF(tjOrder, tjCustomer, reportTemplate);
        if (!ajaxResult.get("code").toString().equals("200")) {
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        } else {
            Long userId = tjCustomer.getCusId();
            String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_报告.pdf";
            TjReport tjReport = new TjReport();
            tjReport.setTjNumber(String.valueOf(tjNumber));
            tjReport.setPath(urlValue + outputFileName1);
            String outputPath1 = value + File.separator;
            String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
            tjReport.setReport(pdfBinary);
            tjReport.setType("体检报告");
            tjReport.setPrint("pdf");
            tjReportService.save(tjReport);
            Date date = new Date();
            //            LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>();
//            updateWrapper.eq(TjOrder::getTjNumber, tjNumber);
//            updateWrapper.set(TjOrder::getReportTime, date);
//            updateWrapper.set(TjOrder::getPrintLastTime, date);
//            updateWrapper.set(TjOrder::getDownloadLastTime,date);
//            updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END);
            tjOrder.setStatus(TjConstants.TJ_END);
            tjOrder.setReportTime(date);
            tjOrder.setPrintLastTime(date);
            tjOrder.setDownloadLastTime(date);
            tjOrderService.updateById(tjOrder);
        }
        return ajaxResult;
    }
    /**
@@ -682,7 +699,7 @@
                    System.out.println("文件保存前耗时:" + (fujianEnd - pdfMkStart));
                    // 保存pdf文件
                    copy.close();
                    String outputPath1 = value + "\\";
                    String outputPath1 = value + File.separator;
                    String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "new_体检报告.pdf";
                    File file = new File(outputPath1 + outputFileName1);
                    BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file));
@@ -1008,7 +1025,7 @@
                String template = reportTemplate.getTemplate();
                String userId = SecurityUtils.getLoginUser().getUsername();
                if (template != null) {
                    PDFBinaryUtil.base64StringToPDF(template, FileUtil.mkdir(value).getPath() + "\\" + userId + "体检报告封面模板.pdf");
                    PDFBinaryUtil.base64StringToPDF(template, FileUtil.mkdir(value).getPath() + File.separator + userId + "体检报告封面模板.pdf");
                }
                // --------以上-------  根据数据库中的模板二进制文件  转pdf  创建文件夹  将pdf放进本地文件夹
@@ -1031,8 +1048,8 @@
                    tjOrderDetail.setProject(tjProject);
                }
                String inputFileName = value + "\\" + userId + "体检报告封面模板.pdf";
                String outputFileName = value + "\\" + userId + "体检报告封面页.pdf";
                String inputFileName = value + File.separator + userId + "体检报告封面模板.pdf";
                String outputFileName = value + File.separator + userId + "体检报告封面页.pdf";
                OutputStream os = null;
                PdfStamper ps = null;
                PdfReader reader = null;
@@ -1155,7 +1172,7 @@
                    //设置文档的页边距就是距离页面边上的距离,分别为:左边距,右边距,上边距,下边距
                    document.setMargins(70, 70, 40, 40);
                    //生成pdf的位置以及名称
                    String fileName = value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf";
                    String fileName = value + File.separator + userId + tjNumber + "体检报告项目详情页.pdf";
                    OutputStream outputStream = Files.newOutputStream(Paths.get(fileName));
                    PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);
@@ -1322,7 +1339,7 @@
//                    TjReport one11111 = tjReportService.getOne(rtwq1);
//                    if(null !=one11111){
//                        String report1 = one11111.getReport();
//                        PDFBinaryUtil.base64StringToPDF(report1, FileUtil.mkdir(value).getPath() + "\\" + userId + "医学名词.pdf");
//                        PDFBinaryUtil.base64StringToPDF(report1, FileUtil.mkdir(value).getPath() + File.separator + userId + "医学名词.pdf");
//                    }
                    LambdaQueryWrapper<TjReport> rtwq = new LambdaQueryWrapper<>();
@@ -1331,7 +1348,7 @@
                    TjReport one1111 = tjReportService.getOne(rtwq);
                    if (null != one1111) {
                        String report = one1111.getReport();
                        PDFBinaryUtil.base64StringToPDF(report, FileUtil.mkdir(value).getPath() + "\\" + tjNumber + userId + "心电图.pdf");
                        PDFBinaryUtil.base64StringToPDF(report, FileUtil.mkdir(value).getPath() + File.separator + tjNumber + userId + "心电图.pdf");
                    }
                    LambdaQueryWrapper<TjReport> rtwq12 = new LambdaQueryWrapper<>();
@@ -1340,27 +1357,27 @@
                    TjReport one111112 = tjReportService.getOne(rtwq12);
                    if (null != one111112) {
                        String report12 = one111112.getReport();
                        PDFBinaryUtil.base64StringToPDF(report12, FileUtil.mkdir(value).getPath() + "\\" + tjNumber + userId + "附件.pdf");
                        PDFBinaryUtil.base64StringToPDF(report12, FileUtil.mkdir(value).getPath() + File.separator + tjNumber + 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"};
                            files1 = new String[]{value + File.separator + userId + "体检报告封面页.pdf", value + File.separator + userId + tjNumber + "体检报告项目详情页.pdf", value + File.separator + tjNumber + userId + "附件.pdf", value + File.separator + tjNumber + userId + "心电图.pdf"};
                        } else {
                            files1 = new String[]{value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf", value + "\\" + tjNumber + userId + "心电图.pdf"};
                            files1 = new String[]{value + File.separator + userId + "体检报告封面页.pdf", value + File.separator + userId + tjNumber + "体检报告项目详情页.pdf", value + File.separator + tjNumber + userId + "心电图.pdf"};
                        }
                    } else {
                        if (one111112 != null) {
                            files1 = new String[]{value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf", value + "\\" + tjNumber + userId + "附件.pdf"};
                            files1 = new String[]{value + File.separator + userId + "体检报告封面页.pdf", value + File.separator + userId + tjNumber + "体检报告项目详情页.pdf", value + File.separator + tjNumber + userId + "附件.pdf"};
                        } else {
                            files1 = new String[]{value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf"};
                            files1 = new String[]{value + File.separator + userId + "体检报告封面页.pdf", value + File.separator + userId + tjNumber + "体检报告项目详情页.pdf"};
                        }
                    }
                    //合并
//                    String[] files1 = {value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber+"体检报告项目详情页.pdf", value + "\\" +tjNumber+ userId + "附件.pdf", value + "\\" + tjNumber + userId + "心电图.pdf"};
                    String outputPath1 = value + "\\";
//                    String[] files1 = {value + File.separator + userId + "体检报告封面页.pdf", value + File.separator + userId + tjNumber+"体检报告项目详情页.pdf", value + File.separator +tjNumber+ userId + "附件.pdf", value + File.separator + tjNumber + userId + "心电图.pdf"};
                    String outputPath1 = value + File.separator;
                    String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf";
                    File file1 = new File(outputPath1 + outputFileName1);
@@ -1379,11 +1396,11 @@
                    tjReport.setPrint("pdf");
                    tjReportService.save(tjReport);
                    //FileUtil.del(value + "\\" + tjNumber + "体检报告.pdf");
                    //FileUtil.del(value + "\\" + userId + "体检报告封面模板.pdf");
                    //FileUtil.del(value + "\\" + userId +tjNumber+ "体检报告项目详情页.pdf");
                    //FileUtil.del(value + "\\" + userId + "体检报告封面页.pdf");
                    //FileUtil.del(value + "\\" + userId + "心电图.pdf");
                    //FileUtil.del(value + File.separator + tjNumber + "体检报告.pdf");
                    //FileUtil.del(value + File.separator + userId + "体检报告封面模板.pdf");
                    //FileUtil.del(value + File.separator + userId +tjNumber+ "体检报告项目详情页.pdf");
                    //FileUtil.del(value + File.separator + userId + "体检报告封面页.pdf");
                    //FileUtil.del(value + File.separator + userId + "心电图.pdf");
                    //修改order表中的打印报告时间为当前时间
@@ -1492,7 +1509,7 @@
                }
            }
            printReport.put(entry.getKey(), tjPdfVOS);
            if (tjPdfVOS.size() == 0) {
            if (tjPdfVOS.isEmpty()) {
                toRemoveKeys.add(entry.getKey());
            }
        }
@@ -1597,7 +1614,7 @@
                LambdaQueryWrapper<TjStandard> wq6 = new LambdaQueryWrapper<>();
                wq6.eq(TjStandard::getProId, tjOrderDetail.getProId());
                List<TjStandard> list2 = tjStandardService.list(wq6);
                if (list2.size() == 0) {
                if (list2.isEmpty()) {
                    TjStandard s = new TjStandard();
                    s.setCompany(" ");
                    s.setTjStandardLtValue(" ");
@@ -1709,9 +1726,9 @@
        }
        String userId = SecurityUtils.getLoginUser().getUsername();
        PDFBinaryUtil.base64StringToPDF(one.getReport(), FileUtil.mkdir(value).getPath() + "\\" + userId + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf");
        PDFBinaryUtil.base64StringToPDF(one.getReport(), FileUtil.mkdir(value).getPath() + File.separator + userId + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf");
        //String filePath = one.getPath();
        String filePath = value + "\\" + userId + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf";
        String filePath = value + File.separator + userId + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf";
        File f = new File(filePath);
        if (filePath.isEmpty()) {
            System.out.println("文件不存在!");
@@ -2035,6 +2052,7 @@
        } else {
            one.setStatus(TjConstants.TJ_CONFIRM);
        }
        one.setReportTime(null);
        //将状态改为未审核
//        UpdateWrapper updateWrapper=new UpdateWrapper();
//        updateWrapper.eq("tj_number",tjNumber);