| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package com.uas.report.controller;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.util.HashMap;
- import java.util.Map;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.commons.lang.ArrayUtils;
- import org.apache.log4j.Logger;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.util.StringUtils;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import com.uas.report.service.PrintService;
- /**
- * 报表打印
- *
- * @author sunyj
- * @since 2016年8月16日 下午3:49:02
- */
- @Controller
- @RequestMapping("/print")
- public class PrintController {
- private static Logger logger = Logger.getLogger(PrintController.class);
- @Autowired
- private PrintService printService;
- /**
- * 打印报表
- *
- * @param reportName
- * 不为null;需要打印的报表的名称,不带任何后缀(如打印采购单,即为"Purchase")
- * @param whereCondition
- * 可为null;where之后的条件(包括where)
- * @param otherParameters
- * 若模板已指定需要的参数,则不可为null;其他参数,区别于whereCondition,报表某些字段的值取决于这些参数
- * @param response
- * @return
- */
- @RequestMapping("")
- @ResponseBody
- public String print(String reportName, String whereCondition, Map<String, Object> otherParameters,
- HttpServletResponse response) {
- String message = "";
- if (StringUtils.isEmpty(reportName)) {
- message = "报表名称无效!";
- logger.error(message);
- return message;
- }
- logger.info("开始打印报表: " + reportName);
- byte[] results = printService.print(reportName, whereCondition, otherParameters);
- if (ArrayUtils.isEmpty(results)) {
- message = "报表 " + reportName + " 打印失败!";
- logger.error(message);
- return message;
- }
- OutputStream outputStream = null;
- try {
- response.setContentType("application/pdf");
- outputStream = response.getOutputStream();
- outputStream.write(results);
- outputStream.flush();
- outputStream.close();
- } catch (IOException e) {
- logger.error("连接被关闭!");
- e.printStackTrace();
- }
- message = "报表 " + reportName + " 打印完成!";
- logger.info(message);
- return message;
- }
- /**
- * 测试打印
- *
- * @param response
- * @return
- */
- @RequestMapping("/test")
- @ResponseBody
- public String testPrint(HttpServletResponse response) {
- String reportName = "Purchase";
- String whereCondition = "where pu_code = 'MP160800017' and pd_qty > 1000";
- Map<String, Object> otherParameters = new HashMap<>();
- otherParameters.put("OTHER_PARAMETER_1", "天气真好!");
- return print(reportName, whereCondition, otherParameters, response);
- }
- }
|