1
lige
2023-12-25 168fc6e251ee41d2f814278b9fe0d123463284ad
1
3个文件已修改
195 ■■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjPackageController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/test/java/lgTest.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjPackageController.java
@@ -183,14 +183,61 @@
//            return getDataTable(tjPackageList);
//        }
        String pacName="";
        if (cusSex.equals("2")) {
            return getDataTable(tjPackageService.getPacListBySqlAndAll(pacName));
        if (cusSex==null || cusSex.equals("2")) {
            final List<TjPackage> pacListBySqlAndAll = tjPackageService.getPacListBySqlAndAll(pacName);
            if (pacListBySqlAndAll!=null){
                for (TjPackage tjPackage : pacListBySqlAndAll) {
                    List<TjProject> res=new ArrayList<>();
                    LambdaQueryWrapper<TjPackageProject> wqq=new LambdaQueryWrapper<>();
                    wqq.eq(TjPackageProject::getPacId,tjPackage.getPacId());
                    final List<TjPackageProject> list = ppservice.list(wqq);
                    if (list!=null){
                        for (TjPackageProject tjPackageProject : list) {
                            final TjProject byId = tjProjectService.getById(tjPackageProject.getProId());
                            res.add(byId);
                        }
                        tjPackage.setTjProjectList(res);
                    }
                }
            }
            return getDataTable(pacListBySqlAndAll);
        } else {
            if (cusSex.equals("0")) {
                return getDataTable(tjPackageService.getPacListBySqlAndMan(pacName));
                final List<TjPackage> pacListBySqlAndMan = tjPackageService.getPacListBySqlAndMan(pacName);
                if (pacListBySqlAndMan!=null){
                    for (TjPackage tjPackage : pacListBySqlAndMan) {
                        List<TjProject> res=new ArrayList<>();
                        LambdaQueryWrapper<TjPackageProject> wqq=new LambdaQueryWrapper<>();
                        wqq.eq(TjPackageProject::getPacId,tjPackage.getPacId());
                        final List<TjPackageProject> list = ppservice.list(wqq);
                        if (list!=null){
                            for (TjPackageProject tjPackageProject : list) {
                                final TjProject byId = tjProjectService.getById(tjPackageProject.getProId());
                                res.add(byId);
                            }
                            tjPackage.setTjProjectList(res);
                        }
                    }
                }
                return getDataTable(pacListBySqlAndMan);
            }else {
                return getDataTable(tjPackageService.getPacListBySqlAndWomen(pacName));
                final List<TjPackage> pacListBySqlAndWomen = tjPackageService.getPacListBySqlAndWomen(pacName);
                if (pacListBySqlAndWomen!=null){
                    for (TjPackage tjPackage : pacListBySqlAndWomen) {
                        List<TjProject> res=new ArrayList<>();
                        LambdaQueryWrapper<TjPackageProject> wqq=new LambdaQueryWrapper<>();
                        wqq.eq(TjPackageProject::getPacId,tjPackage.getPacId());
                        final List<TjPackageProject> list = ppservice.list(wqq);
                        if (list!=null){
                            for (TjPackageProject tjPackageProject : list) {
                                final TjProject byId = tjProjectService.getById(tjPackageProject.getProId());
                                res.add(byId);
                            }
                            tjPackage.setTjProjectList(res);
                        }
                    }
                }
                return getDataTable(pacListBySqlAndWomen);
            }
        }
    }
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java
@@ -430,11 +430,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();
@@ -584,14 +584,14 @@
                    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);
                    if(null !=one11111){
                        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, "心电图");
@@ -611,7 +611,7 @@
                        PDFBinaryUtil.base64StringToPDF(report12, FileUtil.mkdir(value).getPath() + "\\" + userId + "附件.pdf");
                    }
                    //合并
                    String[] files1 = {value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + "体检报告项目详情页.pdf", value + "\\" + userId + "医学名词.pdf", value + "\\" + userId + "附件.pdf", value + "\\" + userId + "心电图.pdf"};
                    String[] files1 = {value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber+"体检报告项目详情页.pdf", value + "\\" + userId + "附件.pdf", value + "\\" + userId + "心电图.pdf"};
                    String outputPath1 = value + "\\";
                    String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf";
@@ -633,7 +633,7 @@
                    //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");
ltkj-admin/src/test/java/lgTest.java
@@ -1,5 +1,8 @@
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import com.ltkj.LtkjApplication;
import com.ltkj.hosp.mapper.TestMapper;
import com.ltkj.web.config.pdfutils.MyHeaderFooter;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -9,6 +12,11 @@
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
/**
 * @Company: 西安路泰科技有限公司
@@ -23,11 +31,117 @@
    @Resource
    private TestMapper testMapper;
    @Test
    public void lige() {
//        try {
//            PdfReader reader = new PdfReader("original.pdf");
//            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("output.pdf"));
//            // 获取 PDF 中的页数
//            int pageCount = reader.getNumberOfPages();// 添加水印
//            System.out.println(pageCount);
//            for (int i = 1; i <= pageCount; i++) {
//                final int numberOfPages = reader.getNumberOfPages(i);
//            }
//            stamper.close();
//            reader.close();
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
    /**
     * @param srcPdfPath   源PDF文件路径
     * @param tagetPdfPath 加了页码的PDF文件路径
     * @description 给PDF文件添加页码
     */
    public static void addPageNum(String srcPdfPath, String tagetPdfPath) {
        try {
            // 输出文件 流
            FileOutputStream fos = new FileOutputStream(tagetPdfPath);
            // 读取 源PDF文件,进行一页一页复制,才能触发 添加页码的  页面监听事件
            PdfReader reader = new PdfReader(srcPdfPath);
            // 获取 源文件总页数
            int num = reader.getNumberOfPages();
            // 新建文档,默认A4大小
            Document document = new Document(PageSize.A4);
            PdfWriter writer = PdfWriter.getInstance(document, fos);
            // 设置页面监听事件,必须在open方法前
            writer.setPageEvent(new PdfNumPageEvent(num));
            document.open();
            // PDF内容体
            PdfContentByte pdfContent = writer.getDirectContent();
            //System.out.println("总页数:" + num);
            // 页面数是从1开始的
            for (int i = 1; i <= num; i++) {
                document.newPage();
                // 设置空页码进行展示
                writer.setPageEmpty(false);
                PdfImportedPage page = writer.getImportedPage(reader, i);
                // 复制好的页面,添加到内容去,触发事件监听
                pdfContent.addTemplate(page, 0, 42);
            }
            document.close();
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * @description 针对页码生成的PDF事件监听
     **/
    public static class PdfNumPageEvent extends PdfPageEventHelper {
        private int total;
        PdfNumPageEvent() {
        }
        PdfNumPageEvent(int num) {
            this.total = num;
        }
        @Override
        public void onEndPage(PdfWriter writer, Document document) {
            try {
                // PDF文档内容
                PdfContentByte pdfContent = writer.getDirectContent();
                pdfContent.saveState();
                pdfContent.beginText();
                int footerFontSize = 10;
                // 解决页码中文无法显示 或者 显示为乱码的问题
                // 但是必须引入jar包 itext-asian-5.2.0.jar
                BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
                Font fontDetail = new Font(baseFont, footerFontSize, Font.NORMAL);
                pdfContent.setFontAndSize(baseFont, footerFontSize);
                // 页脚的页码 展示
                String footerNum = String.format("第%d页,共" + total + "页", writer.getPageNumber());
                Phrase phrase = new Phrase(footerNum, fontDetail);
                // 页码的 横轴 坐标 居中
                float x = (document.left() + document.right()) / 2 + 10;
                // 页码的 纵轴 坐标
                float y = document.bottom(-20);
                // 添加文本内容,进行展示页码
                ColumnText.showTextAligned(pdfContent, Element.ALIGN_CENTER, phrase, x, y, 0);
                pdfContent.endText();
                pdfContent.restoreState();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args) {
        Long a=12L;
        final long l = a + 10000;