报表程序开发
程序开发报表,涉及到语义模型编写,自由报表编写
1.语义模型
后台编写接口,用于组装sql
nc.pub.smart.context.SmartContext context = getContext();
String sql = nc.bs.mon.NCLocator.getInstance()
.lookup(nc.itf.ipmrm.report.equity.IEquityInvestmentReport.class)
.queryEquityInvestment(context);
setResultSQL(sql);
2.语义模型接口编写
3.实现类编写
4.配置接口文件
5.接口实现类需要返回sql,语义模型使用返回的sql查询数据并展示出来。所以我们可以在实现类中编写临时表等复杂操作,组装好数据,后面使用简单的sql查询出报表的内容并展示。
6.实现类获取前端设置的参数
ConditionVO[] convos = null;
if(context.getAttribute("freereport_querycondition_innode") != null) {
//获取查询条件
convos = (ConditionVO[]) ((BaseQueryCondition)context.getAttribute("freereport_querycondition_innode")).getUserContext().get("freereport_querycondition_vos");
}
if(convos == null) {
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD HH:mm:ss");
param_begin = sdf.format(new Date());
param_end = sdf.format(new Date());
}else {
for(int i = 0; i < convos.length; i++) {
String fieldCode = convos[i].getFieldCode();
if("paramdate".equals(fieldCode)) {
param_begin = convos[i].getValue().split(",")[0];
param_end = convos[i].getValue().split(",")[1];
}
}
}
前提是语义模型设置参数,自由报表也要设置参数,如下图