zjh
2025-05-20 7fc564f30d27f47158061e015511595eebefd3b0
zjh20250520
12个文件已修改
523 ■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/config/captcha/CommonController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/app/ReportController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/barcode/PrintBarCodeController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjProjectController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportTemplateController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReservationController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjXdPictureController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjReportService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjReportServiceImpl.java 452 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/config/captcha/CommonController.java
@@ -17,6 +17,7 @@
import com.ltkj.db.DataSourceContextHolder;
import com.ltkj.hosp.domain.SysAttachment;
import com.ltkj.hosp.service.ISysAttachmentService;
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.system.service.ISysDictDataService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -50,8 +51,8 @@
    @Autowired
    private ServerConfig serverConfig;
    @Value("${path.xdtfilePath}")
    private String value;
//    @Value("${path.xdtfilePath}")
//    private String value;
    private static final String FILE_DELIMETER = ",";
@@ -67,6 +68,8 @@
    private ISysAttachmentService sysAttachmentService;
    @Autowired
    private ISysDictDataService sysDictDataService;
    @Autowired
    private ISysConfigService configService;
    /**
@@ -288,7 +291,9 @@
    @ApiOperation(value = "心电图报告上传图片方法")
    public AjaxResult uploadXdtFile(@ApiParam("文件") @RequestPart("file") MultipartFile file,
                                    @ApiParam("体检号") String tjh,@ApiParam("项目id") String proId) throws Exception {
        try {
            String value = configService.selectConfigByKey("path_xdtfilePath");
            // 上传文件路径
            // 第一步:生成文件并保存
            String key = DataSourceContextHolder.getDataSourceKey();
ltkj-admin/src/main/java/com/ltkj/web/controller/app/ReportController.java
@@ -21,6 +21,7 @@
import com.ltkj.hosp.sqlDomain.LtkjHysqd;
import com.ltkj.hosp.vodomain.ShenGaoTiZhongVo;
import com.ltkj.mall.mallOrderUtils.TjConstants;
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.web.config.pdfutils.PDFBinaryUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -75,8 +76,8 @@
    private IDictCompService compService;
    @Resource
    private ITjReportTemplateService reportTemplateService;
    @Value("${path.filePath}")
    private String value;
//    @Value("${path.filePath}")
//    private String value;
    @Resource
    private LtkjHybgdService ltkjHybgdService;
    @Resource
@@ -85,6 +86,8 @@
    private LtkjExamJcbgdService jcbgdService;
    @Resource
    private LtkjExamJcsqdService jcsqdService;
    @Autowired
    private ISysConfigService configService;
    /**
@@ -440,7 +443,7 @@
        }
        final UUID uuid = UUID.randomUUID();
        final String substring = uuid.toString().substring(0, 5);
        String value = configService.selectConfigByKey("path_filePath");
//        String userId = SecurityUtils.getLoginUser().getUsername();
        PDFBinaryUtil.base64StringToPDF(one.getReport(), FileUtil.mkdir(value).getPath() + File.separator + substring + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf");
        //String filePath = one.getPath();
ltkj-admin/src/main/java/com/ltkj/web/controller/barcode/PrintBarCodeController.java
@@ -5,6 +5,7 @@
import com.ltkj.common.core.page.TableDataInfo;
import com.ltkj.hosp.domain.*;
import com.ltkj.hosp.service.*;
import com.ltkj.system.service.ISysConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -47,8 +48,10 @@
    private TjProConsumablesService proConsumablesService;
    @Resource
    private ITjConsumablesService consumablesService;
    @Value("${path.filePath}")
    private String value;
//    @Value("${path.filePath}")
//    private String value;
    @Autowired
    private ISysConfigService configService;
    /**
     * 打印条码
     */
@@ -58,7 +61,7 @@
        LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
        wq.eq(TjOrder::getTjNumber, tjNumber);
        TjOrder tjOrder = tjOrderService.getOne(wq);
        String value = configService.selectConfigByKey("path_filePath");
        if (tjOrder!=null){
            LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>();
            wq1.eq(TjCustomer::getCusId, tjOrder.getUserId());
@@ -110,7 +113,7 @@
    @GetMapping("/GetByCode")
    @ApiOperation(value = "根据图片识别条码")
    public AjaxResult GetByCode(String path) {
        path=value+"10001230306223716蓝色头盖管.jpg";
//        path=value+"10001230306223716蓝色头盖管.jpg";
        //识别条码
        String s = QRCodeUtils.deEncodeByPath(path);
        return AjaxResult.success(s);
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -95,8 +95,8 @@
    private LtkjHysqdService ltkjHysqdService;
    @Autowired
    private LtkjGetexamreportinfoService ltkjGetexamreportinfoService;
    @Value("${path.filePath}")
    private String value;
//    @Value("${path.filePath}")
//    private String value;
    @Value("${path.reportServer}")
    private String urlValue;
    @Autowired
@@ -875,6 +875,7 @@
        String s2 = sysConfigService.selectConfigByKey("tjreport_font_size_second_page_title");
        String s3 = sysConfigService.selectConfigByKey("tjreport_font_size_result_title");
        String s4 = sysConfigService.selectConfigByKey("tjreport_font_size_zongjian");
        String value = sysConfigService.selectConfigByKey("path_filePath");
//        String hospName = sysDeptController.getdangqiandengluyuanqu().get("msg").toString();
        if (StrUtil.isNotBlank(s1) && Integer.parseInt(s1) > 10) DEFAULT_FONT_SIZE = Integer.parseInt(s1);
        else DEFAULT_FONT_SIZE = 10;
@@ -2075,6 +2076,7 @@
     */
    private void savePDFFile(String outputFileName1, TjOrder tjOrder, TjCustomer customer, ByteArrayOutputStream finalOutPut) throws IOException, DocumentException, InterruptedException {
        // 第一步:生成文件并保存
        String value = sysConfigService.selectConfigByKey("path_filePath");
        String key = DataSourceContextHolder.getDataSourceKey();
        key = key.replace("ltkjpeis10_","");
        String outputPath1 = value + File.separator + key + File.separator;
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -144,8 +144,8 @@
    private ITbTransitionService transitionService;
    @Resource
    private ISysConfigService configService;
    @Value("${path.filePath}")
    private String value;
//    @Value("${path.filePath}")
//    private String value;
    @Resource
    private ITjOrderRemarkService remarkService;
    @Resource
@@ -3081,7 +3081,7 @@
            TjReport tjReport = new TjReport();
            tjReport.setTjNumber(String.valueOf(tjNumber));
            tjReport.setPath(urlValue + outputFileName1);
            String outputPath1 = value + File.separator;
//            String outputPath1 = value + File.separator;
//            String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
//            tjReport.setReport(pdfBinary);
            tjReport.setType("体检报告");
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjProjectController.java
@@ -663,4 +663,7 @@
            throw new RuntimeException(e);
        }
    }
}
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java
@@ -83,8 +83,8 @@
    private IDictCompService dictCompService;
    @Resource
    private ITjReportTemplateService reportTemplateService;
    @Value("${path.filePath}")
    private String value;
//    @Value("${path.filePath}")
//    private String value;
    @Value("${path.reportServer}")
    private String urlValue;
    @Resource
@@ -358,6 +358,7 @@
    }
    public AjaxResult shengchengbgmoban(String tjNumber, TjOrder tjOrder, TjCustomer tjCustomer, TjReportTemplate reportTemplate,TjReportTemplate zongJianYiShiQianMing) throws Exception {
        String value = configService.selectConfigByKey("path_filePath");
        AjaxResult ajaxResult = null;
        try {
            ajaxResult = hisPDFUtil.hisPDFNew2(tjOrder, tjCustomer, reportTemplate,zongJianYiShiQianMing);
@@ -908,6 +909,7 @@
//        if (one == null) {
//            return;
//        }
        String value = configService.selectConfigByKey("path_filePath");
        String key = DataSourceContextHolder.getDataSourceKey();
        key = key.replace("ltkjpeis10_","");
//        String userId = SecurityUtils.getLoginUser().getUsername();
@@ -982,7 +984,7 @@
        }
        String key = DataSourceContextHolder.getDataSourceKey();
        key = key.replace("ltkjpeis10_","");
        String value = configService.selectConfigByKey("path_filePath");
//        String userId = SecurityUtils.getLoginUser().getUsername();
//        PDFBinaryUtil.base64StringToPDF(one.getReport(), FileUtil.mkdir(value).getPath() + File.separator + key + File.separator + tjCustomer.getCusId() + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf");
        String filePath = value + File.separator + key + File.separator + tjCustomer.getCusId() + tjNumber + tjCustomer.getCusName() + "_报告.pdf";
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportTemplateController.java
@@ -13,6 +13,7 @@
import com.ltkj.common.utils.SecurityUtils;
import com.ltkj.hosp.domain.TjReport;
import com.ltkj.hosp.domain.TjReservation;
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.web.config.pdfutils.PDFBinaryUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -48,9 +49,11 @@
public class TjReportTemplateController extends BaseController {
    @Autowired
    private ITjReportTemplateService tjReportTemplateService;
    @Autowired
    private ISysConfigService configService;
    @Value("${path.filePath}")
    private String value;
//    @Value("${path.filePath}")
//    private String value;
    /**
     * 查询template列表
@@ -132,6 +135,7 @@
        if (one == null) {
            return;
        }
        String value = configService.selectConfigByKey("path_filePath");
        String userId = SecurityUtils.getLoginUser().getUsername();
        PDFBinaryUtil.base64StringToPDF(one.getTemplate(), FileUtil.mkdir(value).getPath() + File.separator + userId + reportTemId + "_模板预览.pdf");
        String filePath = value + File.separator + userId + reportTemId + "_模板预览.pdf";
@@ -194,7 +198,7 @@
    @GetMapping("/zhiYeTable/{flag}")
    @ApiOperation(value = "下载职业健康表")
    public void zhiYeTable(HttpServletResponse response, @PathVariable("flag") boolean flag) {
        String value = configService.selectConfigByKey("path_filePath");
        LambdaQueryWrapper<TjReportTemplate> we = new LambdaQueryWrapper<>();
        we.eq(TjReportTemplate::getName, "职业健康体检个人信息表");
        TjReportTemplate one = tjReportTemplateService.getOne(we);
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReservationController.java
@@ -103,12 +103,13 @@
    @Autowired
    private ITjDwGroupingService tjDwGroupingService;
    @Value("${path.filePath}")
    private String value;
//    @Value("${path.filePath}")
//    private String value;
    @PostMapping("/importTemplate")
    @ApiOperation(value = "导出excel表模板")
    public void importTemplate(HttpServletResponse response) {
        String value = configService.selectConfigByKey("path_filePath");
        //原来的下载模板调用接口
        try {
            String base64String = PDFBinaryUtil.getPDFBinary(value + File.separator + "西安路泰机电科技有限公司.xls");
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjXdPictureController.java
@@ -76,8 +76,6 @@
    private LtkjExamJcsqdService jcsqdService;
    @Autowired
    private TjJcycxmService jcycxmService;
    @Value("${path.xdtfilePath}")
    private String value;
    /**
     * 查询体检心电图管理列表
     */
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjReportService.java
@@ -64,7 +64,7 @@
    public int deleteTjReportByReId(Long reId);
    public AjaxResult getTjReport(String tjNumber);
//    public AjaxResult getTjReport(String tjNumber);
    Integer getSelectCount(Wrapper<TjReport> queryWrapper);
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjReportServiceImpl.java
@@ -145,234 +145,234 @@
        return tjReportMapper.deleteTjReportByReId(reId);
    }
    @Value("${path.filePath}")
//    @Value("${path.filePath}")
    private String value;
    @Override
    public AjaxResult getTjReport(String tjNumber) {
        //根据体检号
        //在order里查询体检状态 判断体检是否完成
        LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
        wq.eq(TjOrder::getTjNumber, tjNumber);
        TjOrder tjOrder = tjOrderService.getOne(wq);
        if (null != tjOrder) {
            Integer checkStatus = tjOrder.getCheckStatus();
            if (checkStatus == 1) {
                //查出客户个人信息  通过user_id
                LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>();
                wq1.eq(TjCustomer::getCusId, tjOrder.getUserId());
                TjCustomer tjCustomer = tjCustomerService.getOne(wq1);
                //根据order表的单位id查出单位名称
                LambdaQueryWrapper<DictComp> wq111 = new LambdaQueryWrapper<>();
                wq111.eq(DictComp::getDrugManufacturerId, tjOrder.getFirmId());
                DictComp dictComp = dictCompService.getOne(wq111);
                //查出记录详情  通过order_id
                LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
                wq2.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
                List<TjOrderDetail> list = tjOrderDetailService.list(wq2);
                //遍历客户所选的项目(包含子项父项)
                for (TjOrderDetail tjOrderDetail : list) {
                    //查出单个项目对象 赋值给对象属性
                    TjProject tjProject = projectService.selectTjProjectByProId(tjOrderDetail.getProId());
                    tjOrderDetail.setProject(tjProject);
                }
                /*
                 * ====================第一部分 填充体检报告封面模板
                 * */
                //根据数据库中的模板二进制文件  转pdf  创建文件夹  将pdf放进文件夹
                LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>();
                tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
                TjReportTemplate one1 = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper);
                String template = one1.getTemplate();  //拿到二进制
                //本地创建临时文件夹
                //String userId ="10000";
                //当前登录的人工号
                String userId = SecurityUtils.getLoginUser().getUsername();
                //二进制转pdf 存储在临时文件夹中
                PDFBinaryUtil.base64StringToPDF(template, FileUtil.mkdir(value).getPath() + File.separator + 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;
                File file = new File(outputFileName);
                try {
                    os = Files.newOutputStream(file.toPath());
                    // 读入pdf表单
                    reader = new PdfReader(inputFileName);
                    // 根据表单生成一个新的pdf
                    ps = new PdfStamper(reader, os);
                    // 获取pdf表单
                    AcroFields form = ps.getAcroFields();
                    // 给表单添加中文字体
                    //String prefixFont = "C:Windows\\Fonts" + File.separator + "STFANGSO.TTF";
                    //该字体造成类型不均匀,但是pdf转图片不乱码
                    //BaseFont bf = BaseFont.createFont("C:Windows\\Fonts\\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
                    BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
                    form.addSubstitutionFont(bf);
                    // 填充数据给表格
                    Map<String, Object> data = new HashMap<>();
                    data.put("name", tjCustomer.getCusName());
                    //填充性别:判断男女
                    Long cusSex = tjCustomer.getCusSex();
                    String sex;
                    if (cusSex == 0) {
                        sex = "男";
                    } else {
                        sex = "女";
                    }
                    data.put("sex", sex);
                    data.put("age", DateUtil.ageOfNow(tjCustomer.getCusBrithday()));
                    data.put("tjnumber", tjNumber);
                    data.put("tjdate", DateUtils.parseDateToStr("yyyy/MM/dd", tjOrder.getCreateTime()));
                    data.put("phone", tjCustomer.getCusPhone());
                    if (dictComp == null) {
                        data.put("work", "无");
                    } else {
                        data.put("work", dictComp.getCnName());
                    }
                    data.put("remark", "示例:身高体重" +
                            "\n1、合理控制饮食,少吃点" +
                            "\n心电图" +
                            "\n请注意保持!!!这里放建议/异常啥的。。。。或总检建议" + tjOrder.getCheckAdvice());
                    // 遍历data 给pdf表单表格赋值
                    for (String key : data.keySet()) {
                        form.setField(key, data.get(key).toString());
                    }
                    //设置为无法编辑
                    ps.setFormFlattening(true);
                    ps.close();
                    os.close();
                    reader.close();
                    /*
                     * ==========================第二部分  生成项目详情
                     */
                    //文档对象  实现A4纸页面
                    Document document = new Document(PageSize.A4);
                    //document.setMarginMirroring(true);
                    //设置文档的页边距就是距离页面边上的距离,分别为:左边距,右边距,上边距,下边距
                    document.setMargins(70, 70, 40, 40);
                    //这个是生成pdf的位置以及名称
                    String fileName = value + File.separator + userId + "体检报告项目详情页.pdf";
                    OutputStream outputStream = Files.newOutputStream(Paths.get(fileName));
                    PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);
                    // 添加页眉/页脚/水印
                    pdfWriter.setPageEvent((PdfPageEvent) new MyHeaderFooter());// 页眉页脚(需要时设置)
                    //打开文档
                    document.open();
                    // 获取数据
                    Map<TjOrderRemark, List<TjPdfVO>> tjOrderRemarkObjectMap = addTable(tjNumber);
                    for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : tjOrderRemarkObjectMap.entrySet()) {
                        List<TjPdfVO> value = entry.getValue();
                        LambdaQueryWrapper<TjProject> wqqq = new LambdaQueryWrapper<>();
                        wqqq.eq(TjProject::getProId, entry.getKey().getProId());
                        TjProject one11 = projectService.getOne(wqqq);
                        String titleName = one11.getProName();
                        // 设置标题字体样式
                        Font titleFonts = PdfUtils.setFont(9);
                        Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
                        // 设置表格
                        // 定义列名
                        String[] titles = {"体检项目", "体检结果", "单位", "参考范围"};
                        // 获取列表数据
                        //设置表头字体样式
                        Font headFont = PdfUtils.setFont(9);
                        // 设置正文字体样式:12号
                        Font textFont = PdfUtils.setFont(9);
                        //创建表格  将表头字体和正文字体放进去
                        PdfPTable table = setTable(headFont, textFont, titles, value);
                        // 填充表格内容
                        document.add(paragraph);
                        document.add(table);
                        //判断备注是否为空  空不能显示null
                        if (entry.getKey().getRemark() == null) {
                            entry.getKey().setRemark("");
                        }
                        //备注
                        String remark = "备注:" + entry.getKey().getRemark();
                        Font remarkFonts = PdfUtils.setFont(9);
                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
                        document.add(pp);
                        //主检医师
                        String doctorName = "主检医师:" + entry.getKey().getDoctorName();
                        Font doctorFonts = PdfUtils.setFont(9);
                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
                        df.setAlignment(Element.ALIGN_RIGHT);
                        document.add(df);
                        //分割线
                        LineSeparator objectName = new LineSeparator();
                        document.add(objectName);
                    }
                    /*
                     * document关闭的其实是文件的监听状态,writer关闭的是io流,writer创建在document之后
                     * */
                    document.close();
                    pdfWriter.close();
                    outputStream.close();
                    //=============================== 第三部分  合并体检报告封面页和体检报告项目详情页
                    String[] files1 = {value + File.separator + userId + "体检报告封面页.pdf", value + File.separator + userId + "体检报告项目详情页.pdf"};
                    String outputPath1 = value + File.separator;
                    String outputFileName1 = tjNumber + "体检报告.pdf";
                    File file1 = new File(outputPath1 + outputFileName1);
                    List<File> f = new ArrayList<>();
                    for (String s : files1) {
                        f.add(new File(s));
                    }
                    MergePdf.mergeFileToPDF(f, file1);
                    //============================= 第四部分  将pdf路径存储数据库  文件转二进制存储和和路径存储
                    TjReport tjReport = new TjReport();
                    tjReport.setTjNumber(String.valueOf(tjNumber));
                    tjReport.setPath(outputPath1 + outputFileName1);
                    String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
                    tjReport.setReport(pdfBinary);
                    tjReportService.save(tjReport);
                    //将临时文件夹中的四个文件删除
                    //FileUtil.del(value+"\\"+tjNumber + "体检报告.pdf");
                    FileUtil.del(value + File.separator + userId + "体检报告封面模板.pdf");
                    FileUtil.del(value + File.separator + userId + "体检报告项目详情页.pdf");
                    FileUtil.del(value + File.separator + userId + "体检报告封面页.pdf");
                    //修改order表中的打印报告时间为当前时间
                    LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>();
                    updateWrapper.eq(TjOrder::getTjNumber, tjNumber);
                    updateWrapper.set(TjOrder::getReportTime, new Date());
                    tjOrderService.update(updateWrapper);
                    return AjaxResult.success("已生成报告!可直接点击预览!");
                } catch (Exception e) {
                    e.printStackTrace();
                    return AjaxResult.error("PDF导出失败");
                }
            }
        }
        return null;
    }
//    @Override
//    public AjaxResult getTjReport(String tjNumber) {
//        //根据体检号
//        //在order里查询体检状态 判断体检是否完成
//        LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
//        wq.eq(TjOrder::getTjNumber, tjNumber);
//        TjOrder tjOrder = tjOrderService.getOne(wq);
//        if (null != tjOrder) {
//            Integer checkStatus = tjOrder.getCheckStatus();
//            if (checkStatus == 1) {
//                //查出客户个人信息  通过user_id
//                LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>();
//                wq1.eq(TjCustomer::getCusId, tjOrder.getUserId());
//                TjCustomer tjCustomer = tjCustomerService.getOne(wq1);
//
//                //根据order表的单位id查出单位名称
//                LambdaQueryWrapper<DictComp> wq111 = new LambdaQueryWrapper<>();
//                wq111.eq(DictComp::getDrugManufacturerId, tjOrder.getFirmId());
//                DictComp dictComp = dictCompService.getOne(wq111);
//
//                //查出记录详情  通过order_id
//                LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
//                wq2.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
//                List<TjOrderDetail> list = tjOrderDetailService.list(wq2);
//
//                //遍历客户所选的项目(包含子项父项)
//                for (TjOrderDetail tjOrderDetail : list) {
//                    //查出单个项目对象 赋值给对象属性
//                    TjProject tjProject = projectService.selectTjProjectByProId(tjOrderDetail.getProId());
//                    tjOrderDetail.setProject(tjProject);
//                }
//                /*
//                 * ====================第一部分 填充体检报告封面模板
//                 * */
//                //根据数据库中的模板二进制文件  转pdf  创建文件夹  将pdf放进文件夹
//                LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>();
//                tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
//                TjReportTemplate one1 = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper);
//                String template = one1.getTemplate();  //拿到二进制
//
//                //本地创建临时文件夹
//                //String userId ="10000";
//                //当前登录的人工号
//                String userId = SecurityUtils.getLoginUser().getUsername();
//                //二进制转pdf 存储在临时文件夹中
//                PDFBinaryUtil.base64StringToPDF(template, FileUtil.mkdir(value).getPath() + File.separator + 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;
//                File file = new File(outputFileName);
//                try {
//                    os = Files.newOutputStream(file.toPath());
//                    // 读入pdf表单
//                    reader = new PdfReader(inputFileName);
//                    // 根据表单生成一个新的pdf
//                    ps = new PdfStamper(reader, os);
//                    // 获取pdf表单
//                    AcroFields form = ps.getAcroFields();
//                    // 给表单添加中文字体
//                    //String prefixFont = "C:Windows\\Fonts" + File.separator + "STFANGSO.TTF";
//                    //该字体造成类型不均匀,但是pdf转图片不乱码
//                    //BaseFont bf = BaseFont.createFont("C:Windows\\Fonts\\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
//                    BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
//                    form.addSubstitutionFont(bf);
//
//                    // 填充数据给表格
//                    Map<String, Object> data = new HashMap<>();
//                    data.put("name", tjCustomer.getCusName());
//                    //填充性别:判断男女
//                    Long cusSex = tjCustomer.getCusSex();
//                    String sex;
//                    if (cusSex == 0) {
//                        sex = "男";
//                    } else {
//                        sex = "女";
//                    }
//                    data.put("sex", sex);
//                    data.put("age", DateUtil.ageOfNow(tjCustomer.getCusBrithday()));
//                    data.put("tjnumber", tjNumber);
//                    data.put("tjdate", DateUtils.parseDateToStr("yyyy/MM/dd", tjOrder.getCreateTime()));
//                    data.put("phone", tjCustomer.getCusPhone());
//                    if (dictComp == null) {
//                        data.put("work", "无");
//                    } else {
//                        data.put("work", dictComp.getCnName());
//                    }
//
//                    data.put("remark", "示例:身高体重" +
//                            "\n1、合理控制饮食,少吃点" +
//                            "\n心电图" +
//                            "\n请注意保持!!!这里放建议/异常啥的。。。。或总检建议" + tjOrder.getCheckAdvice());
//                    // 遍历data 给pdf表单表格赋值
//                    for (String key : data.keySet()) {
//                        form.setField(key, data.get(key).toString());
//                    }
//                    //设置为无法编辑
//                    ps.setFormFlattening(true);
//
//                    ps.close();
//                    os.close();
//                    reader.close();
//                    /*
//                     * ==========================第二部分  生成项目详情
//                     */
//                    //文档对象  实现A4纸页面
//                    Document document = new Document(PageSize.A4);
//                    //document.setMarginMirroring(true);
//                    //设置文档的页边距就是距离页面边上的距离,分别为:左边距,右边距,上边距,下边距
//                    document.setMargins(70, 70, 40, 40);
//                    //这个是生成pdf的位置以及名称
//                    String fileName = value + File.separator + userId + "体检报告项目详情页.pdf";
//                    OutputStream outputStream = Files.newOutputStream(Paths.get(fileName));
//                    PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);
//
//                    // 添加页眉/页脚/水印
//                    pdfWriter.setPageEvent((PdfPageEvent) new MyHeaderFooter());// 页眉页脚(需要时设置)
//
//                    //打开文档
//                    document.open();
//
//                    // 获取数据
//                    Map<TjOrderRemark, List<TjPdfVO>> tjOrderRemarkObjectMap = addTable(tjNumber);
//                    for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : tjOrderRemarkObjectMap.entrySet()) {
//                        List<TjPdfVO> value = entry.getValue();
//                        LambdaQueryWrapper<TjProject> wqqq = new LambdaQueryWrapper<>();
//                        wqqq.eq(TjProject::getProId, entry.getKey().getProId());
//                        TjProject one11 = projectService.getOne(wqqq);
//
//                        String titleName = one11.getProName();
//                        // 设置标题字体样式
//                        Font titleFonts = PdfUtils.setFont(9);
//                        Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
//
//                        // 设置表格
//                        // 定义列名
//                        String[] titles = {"体检项目", "体检结果", "单位", "参考范围"};
//                        // 获取列表数据
//                        //设置表头字体样式
//                        Font headFont = PdfUtils.setFont(9);
//                        // 设置正文字体样式:12号
//                        Font textFont = PdfUtils.setFont(9);
//                        //创建表格  将表头字体和正文字体放进去
//                        PdfPTable table = setTable(headFont, textFont, titles, value);
//
//                        // 填充表格内容
//                        document.add(paragraph);
//                        document.add(table);
//
//                        //判断备注是否为空  空不能显示null
//                        if (entry.getKey().getRemark() == null) {
//                            entry.getKey().setRemark("");
//                        }
//
//                        //备注
//                        String remark = "备注:" + entry.getKey().getRemark();
//                        Font remarkFonts = PdfUtils.setFont(9);
//                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
//                        document.add(pp);
//
//                        //主检医师
//                        String doctorName = "主检医师:" + entry.getKey().getDoctorName();
//                        Font doctorFonts = PdfUtils.setFont(9);
//                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
//                        df.setAlignment(Element.ALIGN_RIGHT);
//                        document.add(df);
//
//                        //分割线
//                        LineSeparator objectName = new LineSeparator();
//                        document.add(objectName);
//                    }
//                    /*
//                     * document关闭的其实是文件的监听状态,writer关闭的是io流,writer创建在document之后
//                     * */
//                    document.close();
//                    pdfWriter.close();
//                    outputStream.close();
//
//                    //=============================== 第三部分  合并体检报告封面页和体检报告项目详情页
//                    String[] files1 = {value + File.separator + userId + "体检报告封面页.pdf", value + File.separator + userId + "体检报告项目详情页.pdf"};
//                    String outputPath1 = value + File.separator;
//                    String outputFileName1 = tjNumber + "体检报告.pdf";
//
//                    File file1 = new File(outputPath1 + outputFileName1);
//                    List<File> f = new ArrayList<>();
//                    for (String s : files1) {
//                        f.add(new File(s));
//                    }
//                    MergePdf.mergeFileToPDF(f, file1);
//
//                    //============================= 第四部分  将pdf路径存储数据库  文件转二进制存储和和路径存储
//                    TjReport tjReport = new TjReport();
//                    tjReport.setTjNumber(String.valueOf(tjNumber));
//                    tjReport.setPath(outputPath1 + outputFileName1);
//                    String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
//                    tjReport.setReport(pdfBinary);
//                    tjReportService.save(tjReport);
//
//                    //将临时文件夹中的四个文件删除
//                    //FileUtil.del(value+"\\"+tjNumber + "体检报告.pdf");
//                    FileUtil.del(value + File.separator + userId + "体检报告封面模板.pdf");
//                    FileUtil.del(value + File.separator + userId + "体检报告项目详情页.pdf");
//                    FileUtil.del(value + File.separator + userId + "体检报告封面页.pdf");
//
//                    //修改order表中的打印报告时间为当前时间
//                    LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>();
//                    updateWrapper.eq(TjOrder::getTjNumber, tjNumber);
//                    updateWrapper.set(TjOrder::getReportTime, new Date());
//                    tjOrderService.update(updateWrapper);
//
//
//                    return AjaxResult.success("已生成报告!可直接点击预览!");
//
//                } catch (Exception e) {
//                    e.printStackTrace();
//                    return AjaxResult.error("PDF导出失败");
//                }
//            }
//        }
//        return null;
//    }
    @Override
    public Integer getSelectCount(Wrapper<TjReport> queryWrapper) {