Commit 7f8a546ff958a0a149251a29a47ae7528770c48b

Authored by dongqin
1 parent b1d49d5012

导出pdf

Showing 3 changed files with 251 additions and 18 deletions

platform-operate-api/pom.xml View file @ 7f8a546
... ... @@ -129,6 +129,16 @@
129 129 <artifactId>jxls-poi</artifactId>
130 130 <version>1.0.9</version>
131 131 </dependency>
  132 + <dependency>
  133 + <groupId>com.itextpdf</groupId>
  134 + <artifactId>itextpdf</artifactId>
  135 + <version>5.5.13</version>
  136 + </dependency>
  137 + <dependency>
  138 + <groupId>com.itextpdf</groupId>
  139 + <artifactId>itext-asian</artifactId>
  140 + <version>5.2.0</version>
  141 + </dependency>
132 142 <!--<dependency>-->
133 143 <!--<groupId>com.fasterxml.jackson.core</groupId>-->
134 144 <!--<artifactId>jackson-core</artifactId>-->
platform-operate-api/src/main/java/com/lyms/hospitalapi/lcdcf/LcdcfHisService.java View file @ 7f8a546
1 1 package com.lyms.hospitalapi.lcdcf;
2 2  
3   -import com.lyms.hospitalapi.pojo.PregPatientinfo;
4   -import com.lyms.platform.common.utils.DateUtil;
  3 +import java.sql.Connection;
  4 +import java.sql.SQLException;
  5 +import java.text.SimpleDateFormat;
  6 +import java.util.ArrayList;
  7 +import java.util.Date;
  8 +import java.util.HashMap;
  9 +import java.util.List;
  10 +import java.util.Map;
  11 +
  12 +import javax.servlet.http.HttpServletResponse;
  13 +
5 14 import org.apache.commons.collections.CollectionUtils;
6 15 import org.apache.commons.dbutils.DbUtils;
7 16 import org.apache.commons.dbutils.QueryRunner;
8 17 import org.apache.commons.dbutils.handlers.BeanListHandler;
9 18 import org.springframework.stereotype.Service;
10 19  
11   -import java.sql.Connection;
12   -import java.sql.SQLException;
13   -import java.text.SimpleDateFormat;
14   -import java.util.*;
  20 +import com.alibaba.fastjson.JSONObject;
  21 +import com.itextpdf.text.BaseColor;
  22 +import com.itextpdf.text.Document;
  23 +import com.itextpdf.text.DocumentException;
  24 +import com.itextpdf.text.Element;
  25 +import com.itextpdf.text.Font;
  26 +import com.itextpdf.text.FontFactory;
  27 +import com.itextpdf.text.PageSize;
  28 +import com.itextpdf.text.Paragraph;
  29 +import com.itextpdf.text.Phrase;
  30 +import com.itextpdf.text.Rectangle;
  31 +import com.itextpdf.text.pdf.BaseFont;
  32 +import com.itextpdf.text.pdf.PdfPCell;
  33 +import com.itextpdf.text.pdf.PdfPTable;
  34 +import com.itextpdf.text.pdf.PdfWriter;
  35 +import com.lyms.hospitalapi.pojo.PregPatientinfo;
  36 +import com.lyms.platform.common.utils.DateUtil;
15 37  
16 38 /**
17 39 * Created by Administrator on 2017-12-05.
... ... @@ -156,5 +178,184 @@
156 178 return "";
157 179 }
158 180  
  181 + public void exportPdf(JSONObject jsonObject, HttpServletResponse response) throws Exception {
  182 + response.setContentType("application/pdf");
  183 + response.setHeader("Expires","0");
  184 + response.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");
  185 + response.setHeader("Pragma","public");
  186 +
  187 + Rectangle rect = new Rectangle(PageSize.A4);//文档竖方向
  188 + Document doc = new Document(rect);
  189 + PdfWriter writer = PdfWriter.getInstance(doc, response.getOutputStream());
  190 + //PDF版本(默认1.4)
  191 + writer.setPdfVersion(PdfWriter.PDF_VERSION_1_2);
  192 + //文档属性
  193 + //页边空白
  194 + doc.setMargins(20, 20, 40, 40);
  195 + //打开文档
  196 + doc.open();
  197 + try {
  198 + createFile(doc, jsonObject);
  199 + } catch (DocumentException e) {
  200 + e.printStackTrace();
  201 + }
  202 + doc.close();
  203 + }
  204 +
  205 + public void createFile(Document doc, JSONObject jsonObject) throws DocumentException {
  206 + String reportName = jsonObject.getString("title");
  207 + String hospitalName = jsonObject.get("hospitalName").toString();
  208 + String age = jsonObject.get("age").toString();
  209 + String sexCode = jsonObject.get("sex").toString();
  210 + String sex = sexCode.equals("1") ? "男" : sexCode.equals("2") ? "女" : "未知";
  211 + String name = jsonObject.get("name").toString();
  212 + String checkDept = jsonObject.get("checkDept").toString();
  213 + String doctor = jsonObject.get("doctor").toString();
  214 +
  215 + doc.add(getFont(1, reportName + "报告单"));
  216 + doc.add(getFont(7, hospitalName));
  217 +
  218 + PdfPTable table = new PdfPTable(35);
  219 + table.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
  220 +
  221 + setTitle(age, sex, name, checkDept, doctor, table);
  222 +
  223 + PdfPCell blankRow = new PdfPCell(new Phrase("\n"));
  224 + blankRow.setFixedHeight(20f);
  225 + blankRow.setColspan(35);
  226 + blankRow.setBorder(Rectangle.NO_BORDER);
  227 + table.addCell(blankRow);
  228 + doc.add(table);
  229 +
  230 + PdfPCell cell;
  231 +
  232 + PdfPTable pdfPTable = new PdfPTable(7);
  233 + pdfPTable.setHeaderRows(1);
  234 + cell = new PdfPCell(new Phrase(getFont(5, "项目")));
  235 + cell.setColspan(2);
  236 + pdfPTable.addCell(cell);
  237 + pdfPTable.addCell(new PdfPCell(new Phrase(getFont(5, "代码"))));
  238 + pdfPTable.addCell(new PdfPCell(new Phrase(getFont(5, "结果"))));
  239 + pdfPTable.addCell(new PdfPCell(new Phrase(getFont(5, "异常"))));
  240 + pdfPTable.addCell(new PdfPCell(new Phrase(getFont(5, "参考值"))));
  241 + pdfPTable.addCell(new PdfPCell(new Phrase(getFont(5, "单位"))));
  242 + List<HashMap> items = (List<HashMap>) jsonObject.get("itemList");
  243 + for (HashMap map : items) {
  244 + cell = new PdfPCell(new Phrase(getFont(5, map.get("name").toString())));
  245 + cell.setColspan(2);
  246 + pdfPTable.addCell(cell);
  247 + cell = new PdfPCell(new Phrase(getFont(5, map.get("code").toString())));
  248 + pdfPTable.addCell(cell);
  249 + cell = new PdfPCell(new Phrase(getFont(5, map.get("result").toString())));
  250 + pdfPTable.addCell(cell);
  251 + cell = new PdfPCell(new Phrase(getFont(5, map.get("special").toString())));
  252 + pdfPTable.addCell(cell);
  253 + cell = new PdfPCell(new Phrase(getFont(5, map.get("refer").toString())));
  254 + pdfPTable.addCell(cell);
  255 + cell = new PdfPCell(new Phrase(getFont(5, map.get("unit").toString())));
  256 + pdfPTable.addCell(cell);
  257 + }
  258 + doc.add(pdfPTable);
  259 + doc.close();
  260 +
  261 +
  262 + }
  263 +
  264 + private static void setTitle( String age, String sex, String name, String checkDept, String doctor, PdfPTable table) throws DocumentException {
  265 + PdfPCell cell;
  266 + cell = new PdfPCell(new Phrase(getFont(5, "年龄:" + age)));
  267 + cell.setColspan(6);
  268 + cell.setBorder(0);
  269 + table.addCell(cell);
  270 + cell = new PdfPCell(new Phrase(getFont(5, "性别:" + sex)));
  271 + cell.setColspan(5);
  272 + cell.setBorder(0);
  273 + table.addCell(cell);
  274 + cell = new PdfPCell(new Phrase(getFont(5, "姓名:" + name)));
  275 + cell.setColspan(6);
  276 + cell.setBorder(0);
  277 + table.addCell(cell);
  278 + cell = new PdfPCell(new Phrase(getFont(5, "申请科室:" + checkDept)));
  279 + cell.setColspan(10);
  280 + cell.setBorder(0);
  281 + table.addCell(cell);
  282 + cell = new PdfPCell(new Phrase(getFont(5, "申请医生:" + doctor)));
  283 + cell.setColspan(8);
  284 + cell.setBorder(0);
  285 + table.addCell(cell);
  286 + }
  287 +
  288 + public static PdfPTable createTable(float[] widths) {
  289 + PdfPTable table = new PdfPTable(widths);
  290 + try {
  291 + table.setLockedWidth(true);
  292 + table.setHorizontalAlignment(Element.ALIGN_CENTER);
  293 + table.getDefaultCell().setBorder(1);
  294 + } catch (Exception e) {
  295 + e.printStackTrace();
  296 + }
  297 + return table;
  298 + }
  299 +
  300 + /**
  301 + * 文档超级 排版
  302 + * @param type 1-标题 2-标题一 3-标题二 4-标题三 5-正文 6-左对齐
  303 + */
  304 + public static Paragraph getFont(int type, String text){
  305 + Font font = FontFactory.getFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED,10f, Font.NORMAL, BaseColor.BLACK);
  306 + if(1 == type){//1-标题
  307 + font.setSize(16f);
  308 + font.setStyle(Font.BOLD);
  309 + } else if(2 == type){//2-标题一
  310 + font.setSize(16f);
  311 + font.setStyle(Font.BOLD);
  312 + } else if(3 == type){//3-标题二
  313 + font.setSize(14f);
  314 + font.setStyle(Font.BOLD);
  315 + } else if(4 == type){//4-标题三
  316 + font.setSize(14f);
  317 + } else if(5 == type){//5-正文
  318 + font.setSize(10.5f);
  319 + } else if(6 == type){//6-左对齐
  320 + font.setSize(10.5f);
  321 + } else if (7 == type) {
  322 + font.setSize(12f);
  323 + font.setStyle(Font.BOLD);
  324 + } else {
  325 + font.setSize(10.5f);//默认大小
  326 + }
  327 + //注: 字体必须和 文字一起new
  328 + Paragraph paragraph = new Paragraph(text, font);
  329 + if(1 == type){
  330 + paragraph.setAlignment(Paragraph.ALIGN_CENTER);//居中
  331 + paragraph.setSpacingBefore(10f);//上间距
  332 + paragraph.setSpacingAfter(10f);//下间距
  333 + } else if(2 == type){//2-标题一
  334 + paragraph.setAlignment(Element.ALIGN_JUSTIFIED); //默认
  335 + paragraph.setSpacingBefore(2f);//上间距
  336 + paragraph.setSpacingAfter(2f);//下间距
  337 + } else if(3 == type){
  338 + paragraph.setSpacingBefore(2f);//上间距
  339 + paragraph.setSpacingAfter(1f);//下间距
  340 + } else if(4 == type){//4-标题三
  341 + //paragraph.setAlignment(Element.ALIGN_RIGHT);//右对齐
  342 + paragraph.setSpacingBefore(2f);//上间距
  343 + paragraph.setSpacingAfter(2f);//下间距
  344 + } else if(5 == type){
  345 + paragraph.setAlignment(Element.ALIGN_JUSTIFIED);
  346 + paragraph.setFirstLineIndent(24);//首行缩进
  347 + paragraph.setSpacingBefore(1f);//上间距
  348 + paragraph.setSpacingAfter(1f);//下间距
  349 + } else if(6 == type){//左对齐
  350 + paragraph.setAlignment(Element.ALIGN_LEFT);
  351 + paragraph.setSpacingBefore(1f);//上间距
  352 + paragraph.setSpacingAfter(1f);//下间距
  353 + } else if (7 == type) {
  354 + paragraph.setAlignment(Paragraph.ALIGN_CENTER);//居中
  355 + paragraph.setSpacingBefore(8f);//上间距
  356 + paragraph.setSpacingAfter(30f);//下间距
  357 + }
  358 + return paragraph;
  359 + }
159 360 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/LisController.java View file @ 7f8a546
1 1 package com.lyms.platform.operate.web.controller;
2 2  
  3 +import java.util.ArrayList;
  4 +import java.util.HashMap;
  5 +import java.util.List;
  6 +import java.util.Map;
  7 +
  8 +import javax.servlet.http.HttpServletRequest;
  9 +import javax.servlet.http.HttpServletResponse;
  10 +
  11 +import org.apache.commons.collections.CollectionUtils;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.beans.factory.annotation.Qualifier;
  14 +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  15 +import org.springframework.stereotype.Controller;
  16 +import org.springframework.web.bind.annotation.RequestBody;
  17 +import org.springframework.web.bind.annotation.RequestHeader;
  18 +import org.springframework.web.bind.annotation.RequestMapping;
  19 +import org.springframework.web.bind.annotation.RequestMethod;
  20 +import org.springframework.web.bind.annotation.RequestParam;
  21 +import org.springframework.web.bind.annotation.ResponseBody;
  22 +
  23 +import com.alibaba.fastjson.JSONObject;
3 24 import com.lyms.hospitalapi.lcdcf.LcdcfHisService;
4 25 import com.lyms.platform.common.annotation.TokenRequired;
5 26 import com.lyms.platform.common.base.BaseController;
6 27  
... ... @@ -15,19 +36,7 @@
15 36 import com.lyms.platform.permission.model.LisReportItemModel;
16 37 import com.lyms.platform.permission.model.LisReportModel;
17 38 import com.lyms.platform.permission.service.LisService;
18   -import org.apache.commons.collections.CollectionUtils;
19   -import org.springframework.beans.factory.annotation.Autowired;
20   -import org.springframework.beans.factory.annotation.Qualifier;
21   -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
22   -import org.springframework.stereotype.Controller;
23   -import org.springframework.web.bind.annotation.*;
24 39  
25   -import javax.servlet.http.HttpServletRequest;
26   -import java.util.ArrayList;
27   -import java.util.HashMap;
28   -import java.util.List;
29   -import java.util.Map;
30   -
31 40 /**
32 41 * Created by lqy on 2017-04-11.
33 42 */
... ... @@ -262,6 +271,19 @@
262 271 HttpServletRequest request) {
263 272 return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).
264 273 setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION).setData(lcdcfHisService.getPatientCheckLisItems(vcCardNo));
  274 + }
  275 +
  276 + /**
  277 + * 导出pdf
  278 + *
  279 + * @param jsonObject
  280 + * @param response
  281 + * @return
  282 + */
  283 + @RequestMapping(method = RequestMethod.POST, value = "/exportReportPdf")
  284 + @TokenRequired
  285 + public void exportPdf(@RequestBody JSONObject jsonObject, HttpServletResponse response) throws Exception {
  286 + lcdcfHisService.exportPdf(jsonObject, response);
265 287 }
266 288 }