报表开发步骤
1.什么是报表?
例如从两张表里面查出数据,查出来的这个数据不需要存数据库,只需要把这些数据查出来,然后展示出来。
2.报表的两种开发方法
开发方法1(不用代码)
报表开发的位置:动态建模平台 --> 报表平台
首先在:语义模型 --> 语义模型-全局(最高) 或 语义模型- 集团(第二高)
语义模型:存报表的sql语句和字段名等信息,相当于报表的后端
- 新建办公费预算明细表语义模型
然后在:自由报表 --> 自由报表-全局(最高) 或 自由报表-集团(第二高)
自由报表:用于画报表的结构,相当于报表的前端
- 新建办公费预算明细表自由报表
注意:组织类型得选业务单元,不可以是全局组织类型选择全局
分配权限
重新登录一下客户端
添加插件类
nc.itf.jgxc.report.newcont.INewContReport
两种设置查询条件的查询方法:
- 用它自带的查询模板
- 创建查询模板
1.用它自带的查询模板
2.创建查询模板的方法配置
分配节点
这个地方的节点标识应该不填,而不应该是qt,如果填qt的话加额外的代码处理会报错;资产层次这个地方应改是水平,而不应该是平台
(功能节点默认模板设置中新加的在pub_systemplate_base这个表里面)
开发方法2(用代码)
下面的代码拿过来直接用就行
nc.pub.smart.context.SmartContext context = getContext();
String sql = nc.bs.framework.common.NCLocator.getInstance()
.lookup(nc.ift.wgbfb.report.bgmxys.IBgmxysReport.class)
.getBgmxysReportSql(context);
setResultSQL(sql);
除了接口类名以外,方法名也要改为对应的方法名,不然编译会不通过
upm注册
代码逻辑:(生成一个临时表,然后展示)
这一步是生成一个空的临时表,往里面插数据,然后查询临时表
创建临时表
对应临时表里的类型
查数据
获取查询模板上传过来的数据(多选数组类型,单选不是数组类型)
从查询模板上选的数据,存到这里面(比如选了好几个组织,需要把主键拿出来存到数组中,一会写sql语句会用到),把查询到的数据拆解到对应的VO(把数组类型的数据根据逗号进行分割,然后一个个存到数组中)
组织这个东西有点奇怪,他传过来的不是组织,而是sql语句
向临时表中插入数据
对应vo里的类型
把临时表中的数据拿出来
上面3步所有的逻辑,就根下图作用一样
自由报表部分和第一种一模一样
3.两种方法的选择
用不用代码的方法取决于是否需要对数据进行二次加工;如果只是单纯的把两张表里面的数据合并到一起,然后直接展示出来,就可以不用代码的方式;如果是从一张表里面查出数据,然后通过一系列的计算,然后再去展示,这时候就要用代码的方式