记录上次打印时间
需求背景:
客户有时候希望可以在本次打印本报表的时候显示上次打印的时间。
解决方案:
可以把本次打印的时间作为参数传给报表保存进去作为一个默认参数值。
需要使用print_over()这个回调函数,可以取到打印时的服务器时间。
然后把这个时间存到报表,下次打印再由函数取到。也可以在取到时间后,把时间存到数据库,下次打印直接从数据库去取。
部分代码如下:
response.setContentType(“text/html”);
request.setCharacterEncoding(“GBK”);
String report = request.getParameter(“report”);
String reportFileHome = Context.getInitCtx().getMainDir();
// 保证报表名称的完整性
int iTmp = 0;
if ((iTmp = report.lastIndexOf(“.raq”)) <= 0) {
report = report + “.raq”;
iTmp = 0;
}
ServletContext application = this.getServletContext();
// System.out.println(application.getRealPath(reportFileHome + report));
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
String dateString = formatter.format(currentTime);
// System.out.println(“dateString>>>” + dateString);
try {
ReportDefine rd = (ReportDefine) ReportUtils.read(application
.getRealPath(reportFileHome + “\\” + report));
rd.getParamMetaData().getParam(“print”).setValue(dateString);
ReportUtils.write(application.getRealPath(reportFileHome + “\\”
+ report), rd);
} catch (Exception e) {
e.printStackTrace();
}