JasperReports项目中的应用_ico

 

2.业务处理



1      //返回报表查询结果
List<ReportElectronicAccountMapping> list=bndStoreImportService.queryElectronicAccount(bndReportParam);
2 if(list.size()>0){
//生成JasperPrint对象
3 JasperPrint jp=JasperReportUtil.getPrint(JsonMapper.toJsonString(list), bndReportParam, request);
4 //返回分页信息
5 response.setHeader("maxPages", jp.getPages().size()+"");
6 response.setHeader("pageNo", request.getParameter("pageNo"));
//导出报表
7 JasperReportUtil.getExporter(bndReportParam, request, response, jp).exportReport();
8 }else{
9 response.setHeader("error",JasperReportUtil.stringToUnicode("没有查询到电子账册相关数据!"));
10 }


 

3.



1         String reportName=bndReportParam.getReportName();
2 //文件路径
3 String jasperModelpath = request.getSession().getServletContext().getRealPath("/WEB-INF/views/modules/bus/pcd/bonded/report/")+File.separator;
4 // String pp=Global.getProjectPath();
5 //读取项目下此路径的报表样式文件
6 File reportFile = new File(jasperModelpath+reportName+".jasper");
7 //编译报表,读取jasperreport文件 生成JasperReport对象
8 JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromFile(reportFile.getPath());
9
10 //文件路径,这里单独保存一份,供有子表功能的报表提供路径。
11 bndReportParam.setSubUrl(jasperModelpath);
12
13 Map<String, Object> parameters = Maps.newHashMap();
14 parameters.put(JsonQueryExecuterFactory.JSON_LOCALE, Locale.ENGLISH);
15 parameters.put(JRParameter.REPORT_LOCALE, Locale.US);
16
17 //各种报表样式处理结果
18 if (reportName.equals("ReportAccount")) {
19 jasperPrint=reportAccount(bndReportParam, parameters, jasperReport, json);
20 }else if(reportName.equals("ReportWarning")){
21 jasperPrint=reportWarning(bndReportParam, parameters, jasperReport, json);
22 }else if(reportName.equals("ReportDisposeStatistics")){
23 jasperPrint=reportDisposeStatistics(bndReportParam, parameters, jasperReport, json);
24 }else if(reportName.equals("ReportLoss")){
25 jasperPrint=reportLoss(bndReportParam, parameters, jasperReport, json);
26 }else if(reportName.equals("ReportFree")){
27 jasperPrint=reportFree(bndReportParam, parameters, jasperReport, json);
28 }else if(reportName.equals("ReportDispose")){
29 jasperPrint=reportDispose(bndReportParam, parameters, jasperReport, json);
30 }else if(reportName.equals("ReportCompare")){
31 jasperPrint=reportCompare(bndReportParam, parameters, jasperReport, json);
32 }else if(reportName.equals("ReportRepair")){
33 jasperPrint=reportRepair(bndReportParam, parameters, jasperReport, json);
34 }
35 return jasperPrint;


 

4.完善报表信息,填充数据



1         //判断保税仓库还是自贸区仓库
2 String storage="";
3 if(bndReportParam.getBndStore()==null){
4 storage=bndReportParam.getFtaStore().getName();
5 }else{
6 storage=bndReportParam.getBndStore().getName();
7 }
8 parameters.put("storage", storage);
9 parameters.put("goodsType", bndReportParam.getBasCargoJt().getName());
10 parameters.put("title", "电子账册");
11 parameters.put("queryDate", DateUtils.formatDate(bndReportParam.getBeginDate(), "yyyy-MM-dd")
12 +"至"+DateUtils.formatDate(bndReportParam.getEndDate(), "yyyy-MM-dd"));
13 InputStream is = null;
14 is = new ByteArrayInputStream(json.getBytes("utf-8"));
15 parameters.put("JSON_INPUT_STREAM", is);
16 return JasperFillManager.fillReport(jasperReport, parameters);


 

5.导出报表



1         List<ReportElectronicAccountMapping> list=bndStoreImportService.queryElectronicAccount(bndReportParam);
2 if(list.size()>0){
3 JasperPrint jp=JasperReportUtil.getPrint(JsonMapper.toJsonString(list), bndReportParam, request);
4 //返回分页信息
5 response.setHeader("maxPages", jp.getPages().size()+"");
6 response.setHeader("pageNo", request.getParameter("pageNo"));
7 JasperReportUtil.getExporter(bndReportParam, request, response, jp).exportReport();
8 }else{
9 response.setHeader("error",JasperReportUtil.stringToUnicode("没有查询到电子账册相关数据!"));
10 }


 

6.



1     @SuppressWarnings("rawtypes")
2 public static JRAbstractExporter getExporter(BndReportParam bndReportParam, HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws Exception{
3 JRAbstractExporter exporter=null;
4 if(bndReportParam.isPdf()){
5 //PDF
6 exporter=showPDF(request, response, jasperPrint);
7 }else if(bndReportParam.isExcel()){
8 //Excel
9 exporter=showExcel(request, response, jasperPrint);
10 }else if(bndReportParam.isPrint()){
11 //打印
12 exporter=print(request, response, jasperPrint);
13 }else{
14 //页面展示
15 exporter=showHTML(request, response, jasperPrint);
16 }
17 return exporter;
18 }


 

7.showPDF



1     public static JRPdfExporter showPDF(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
2 OutputStream outputStream = response.getOutputStream();
3
4 response.setContentType("application/pdf");
5
6 JRPdfExporter exporter = new JRPdfExporter();
7
8 exporter.setExporterInput(new SimpleExporterInput(
9 jasperPrint));
10 exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(
11 outputStream));
12 return exporter;
13 }


 

8.



1     public static JRXlsAbstractExporter<XlsxReportConfiguration, XlsxExporterConfiguration, JRXlsxExporterContext> showExcel(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
2 OutputStream outputStream = response.getOutputStream();
3 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
4 response.setHeader("Content-Disposition",
5 "inline; filename=\"file.xlsx\"");
6
7 JRXlsAbstractExporter<XlsxReportConfiguration, XlsxExporterConfiguration, JRXlsxExporterContext> exporter = new JRXlsxExporter();
8
9 exporter.setExporterInput(new SimpleExporterInput(
10 jasperPrint));
11 exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(
12 outputStream));
13
14 SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
15 configuration.setOnePagePerSheet(false);
16 configuration.setWhitePageBackground(false);
17 configuration.setShowGridLines(false);
18 exporter.setConfiguration(configuration);
19
20 return exporter;
21 }


 

9.



1 public static HtmlExporter print(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
2 OutputStream outputStream = response.getOutputStream();
3 HtmlExporter exporter = new HtmlExporter();
4 SimpleHtmlExporterOutput output = new SimpleHtmlExporterOutput(outputStream);
5
6 request.getSession()
7 .setAttribute(
8 ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
9 jasperPrint);
10 WebHtmlResourceHandler webHtmlResourceHandler = new WebHtmlResourceHandler(
11 "image?time=" + new Date().getTime() + "&image={0}");
12 output.setImageHandler(webHtmlResourceHandler);
13
14 exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
15 exporter.setExporterOutput(output);
16 //报表打印
17 response.getOutputStream().print("<script src=\""+request.getContextPath()+"/static/print/print.js\" type=\"text/javascript\"></script><link href=\""+request.getContextPath()+"/static/print/print.css\" type=\"text/css\" rel=\"stylesheet\">");
18 return exporter;
19 }
20


 

 

10.showHTML



1     public static HtmlExporter showHTML(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
2 OutputStream outputStream = response.getOutputStream();
3 HtmlExporter exporter = new HtmlExporter();
4 SimpleHtmlExporterOutput output = new SimpleHtmlExporterOutput(outputStream);
5
6 request.getSession()
7 .setAttribute(
8 ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
9 jasperPrint);
10 WebHtmlResourceHandler webHtmlResourceHandler = new WebHtmlResourceHandler(
11 "image?time=" + new Date().getTime() + "&image={0}");
12 output.setImageHandler(webHtmlResourceHandler);
13
14 exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
15 exporter.setExporterOutput(output);
16
17 // configuration
18 SimpleHtmlReportConfiguration configuration = new SimpleHtmlReportConfiguration();
19 //设置当前页数
20 configuration.setPageIndex(Integer.parseInt(request.getParameter("pageNo"))-1);
21
22 exporter.setConfiguration(configuration);
23
24 return exporter;