diff --git a/science-admin/src/main/java/com/yiboshi/science/utils/ProjectInfoToPDF.java b/science-admin/src/main/java/com/yiboshi/science/utils/ProjectInfoToPDF.java index bc9dcf4dd3717ac187ff5a6990e718f4bf191e65..88699a371eea316ba459a689fe23721de8915549 100644 --- a/science-admin/src/main/java/com/yiboshi/science/utils/ProjectInfoToPDF.java +++ b/science-admin/src/main/java/com/yiboshi/science/utils/ProjectInfoToPDF.java @@ -37,7 +37,7 @@ public class ProjectInfoToPDF { // 添加项目内容章节 addSection(document, "一、项目基本情况", boldFont); - addContent(document, project.getResearchContent(), normalFont); + addProjectBasicTable(document, project, bfChinese, fsChinese); // 添加项目基本信息表格 // 添加新页面 document.newPage(); @@ -227,8 +227,125 @@ public class ProjectInfoToPDF { /** * 项目基本信息 */ - private static void addProjectBasicTable() { + private static void addProjectBasicTable(Document document, ComProjectDTO project, BaseFont bfChinese, BaseFont fsChinese) throws DocumentException { + Font labelFont = new Font(fsChinese, 12, Font.NORMAL); + Font valueFont = new Font(bfChinese, 12, Font.NORMAL); + // 申请人信息表格 + PdfPTable personTable = new PdfPTable(8); // 8列 + personTable.setWidthPercentage(95); + personTable.setSpacingBefore(10f); + + // 设置列宽度比例 + float[] personWidths = {1.5f, 2f, 1f, 2f, 1.5f, 2f, 2f, 2f}; + personTable.setWidths(personWidths); + + // 申请人信息标题行 + PdfPCell titleCell = new PdfPCell(new Phrase("申请人信息", labelFont)); + titleCell.setColspan(8); + titleCell.setHorizontalAlignment(Element.ALIGN_LEFT); + titleCell.setVerticalAlignment(Element.ALIGN_MIDDLE); + titleCell.setMinimumHeight(25f); + personTable.addCell(titleCell); + + // 第一行 + addBasicTableCell(personTable, "姓 名", project.getAppPersonName(), 2, labelFont, valueFont); + addBasicTableCell(personTable, "性别", project.getSex(), 2, labelFont, valueFont); + addBasicTableCell(personTable, "出生年月", formatDateRange(project.getBirthday(), 1), 2, labelFont, valueFont); + addBasicTableCell(personTable, "民族", project.getNationName(), 2, labelFont, valueFont); + + // 第二行 + addBasicTableCell(personTable, "学 位", project.getDegreeName(), 2, labelFont, valueFont); + addBasicTableCell(personTable, "职称", project.getTitleName(), 2, labelFont, valueFont); + addBasicTableCell(personTable, "每年工作时间(月)", project.getJobTime().toString(), 4, labelFont, valueFont); + + // 第三行 + addBasicTableCell(personTable, "电 话", project.getMobile(), 4, labelFont, valueFont); + addBasicTableCell(personTable, "电子邮箱", project.getEmail(), 4, labelFont, valueFont); + + // 第四行 + addBasicTableCell(personTable, "个人通讯地址", project.getAddress(), 8, labelFont, valueFont); + + // 第五行 + addBasicTableCell(personTable, "工作单位", project.getAppUnitName(), 8, labelFont, valueFont); + + // 第六行 + addBasicTableCell(personTable, "主要研究领域", project.getMainResearchAreas(), 8, labelFont, valueFont); + + document.add(personTable); + + // 申请单位信息表格 + PdfPTable unitTable = new PdfPTable(4); // 4列 + unitTable.setWidthPercentage(95); + unitTable.setSpacingBefore(10f); + + // 设置列宽度比例 + float[] unitWidths = {2f, 3f, 2f, 3f}; + unitTable.setWidths(unitWidths); + + // 申请单位信息标题行 + titleCell = new PdfPCell(new Phrase("申请单位信息", labelFont)); + titleCell.setColspan(4); + titleCell.setHorizontalAlignment(Element.ALIGN_LEFT); + titleCell.setVerticalAlignment(Element.ALIGN_MIDDLE); + titleCell.setMinimumHeight(25f); + unitTable.addCell(titleCell); + + // 单位信息内容 + addBasicTableCell(unitTable, "单位名称", project.getAppUnitName(), 4, labelFont, valueFont); + addBasicTableCell(unitTable, "联系人", project.getUnitLinkName(), 2, labelFont, valueFont); + addBasicTableCell(unitTable, "电话", project.getUnitLinkMobile(), 2, labelFont, valueFont); + addBasicTableCell(unitTable, "电子信箱", project.getUnitLinkEmail(), 2, labelFont, valueFont); + addBasicTableCell(unitTable, "传真", project.getUnitLinkFax(), 2, labelFont, valueFont); + + document.add(unitTable); + + // 项目基本情况表格 + PdfPTable projTable = new PdfPTable(4); // 4列 + projTable.setWidthPercentage(95); + projTable.setSpacingBefore(10f); + + // 设置列宽度比例 + float[] projWidths = {2f, 3f, 2f, 3f}; + projTable.setWidths(projWidths); + + // 项目基本情况标题行 + titleCell = new PdfPCell(new Phrase("项目基本情况", labelFont)); + titleCell.setColspan(4); + titleCell.setHorizontalAlignment(Element.ALIGN_LEFT); + titleCell.setVerticalAlignment(Element.ALIGN_MIDDLE); + titleCell.setMinimumHeight(25f); + projTable.addCell(titleCell); + + // 项目基本情况内容 + addBasicTableCell(projTable, "项目名称", project.getProjName(), 4, labelFont, valueFont); + addBasicTableCell(projTable, "学科代码", project.getKnowledgeName(), 2, labelFont, valueFont); + addBasicTableCell(projTable, "选题范围", project.getSubjectScope(), 2, labelFont, valueFont); + addBasicTableCell(projTable, "项目类别", project.getProjClassName(), 2, labelFont, valueFont); + addBasicTableCell(projTable, "研究期限", formatDateRange(project.getStartDate(), 1), 2, labelFont, valueFont); + addBasicTableCell(projTable, "项目总经费(万元)", project.getTotalFunding().toString(), 2, labelFont, valueFont); + addBasicTableCell(projTable, "申请经费", project.getGovFunding().toString(), 2, labelFont, valueFont); + addBasicTableCell(projTable, "项目摘要", project.getProjAbstract(), 4, labelFont, valueFont); + + document.add(projTable); + } + + /** + * 添加基本信息表格单元格 + */ + private static void addBasicTableCell(PdfPTable table, String label, String value, int colspan, Font labelFont, Font valueFont) { + PdfPCell labelCell = new PdfPCell(new Phrase(label, labelFont)); + labelCell.setMinimumHeight(25f); + labelCell.setVerticalAlignment(Element.ALIGN_MIDDLE); + labelCell.setHorizontalAlignment(Element.ALIGN_CENTER); + table.addCell(labelCell); + + PdfPCell valueCell = new PdfPCell(new Phrase(value != null ? value : "", valueFont)); + valueCell.setMinimumHeight(25f); + valueCell.setVerticalAlignment(Element.ALIGN_MIDDLE); + valueCell.setHorizontalAlignment(Element.ALIGN_LEFT); + valueCell.setColspan(colspan - 1); + table.addCell(valueCell); } private static void addSection(Document document, String title, Font font) throws DocumentException {