第一步
添加语义模型,在查询参数里面配置对一个的查询条件
在语义脚本里设置对应的查询参数
第二步
配置自由报表,扩展区参数不记得是添加语义模型后带进来的还是自己加的了。需要修改取值方式为参数,然后选取对应的查询参数
在报表参数设置里面加上对应的参数
注册实现类
该类继承 extends DefaultQueryAction
重写 doQueryByDrill
@Override
public IQueryCondition doQueryByDrill(Container parent, IContext context,
AbsAnaReportModel reportModel, FreeReportDrillParam drillParam) {
AMBaseQueryCondition queryCondition = new AMBaseQueryCondition(true);
// 通过明细取联查明细
BusiFreeReportDrillParam busiDrillParam = (BusiFreeReportDrillParam) drillParam;
GlBusiReconResultVO resultVO = busiDrillParam.getQueryVO().getResultVO();
// 查询VO
BusiReconQryVO queryVO = busiDrillParam.getQueryVO().getQueryVO();
//parameterMap.put("paydate1", "2020-07-01");
//((Context)context).setAttribute(SmartContext.PREX_PARAM + "paydate1", "2020-01-01");
//queryCondition.setUserObject(parameterMap);
// 将查询参数放到变量池中
Parameter[] params = ReportVariableHelper.getParams(reportModel.getFormatModel());
// 设置报表参数需要放到最后来处理
for (Parameter param : params) {
String code = param.getCode();
if("enddate".equals(code)) {
param.setValue(queryVO.getEndDate());
parameterMap.put(code, queryVO.getEndDate());
((Context)context).setAttribute(SmartContext.PREX_PARAM + code, queryVO.getEndDate());
}else if("org".equals(code)) {
AccountingBookVO[] book;
try {
book = (AccountingBookVO[])HYPubBO_Client.queryByCondition(AccountingBookVO.class, "pk_accountingbook = '"+queryVO.getPk_accountingbook()+"' ");
param.setValue(book[0].getPk_relorg());
parameterMap.put(code, book[0].getPk_relorg());
((Context)context).setAttribute(SmartContext.PREX_PARAM + code, book[0].getPk_relorg());
} catch (UifException e) {
e.printStackTrace();
}
}
}
queryCondition.setUserObject(parameterMap);
List<Parameter> ParamsList = new ArrayList<>(params.length);
for(Parameter param : params) {
String code = param.getCode();
if("enddate".equals(code)) {
ParamsList.add(param);
}else if("org".equals(code)) {
ParamsList.add(param);
}
}
ReportVariableHelper.addParamsValueToPool(ReportVariableHelper.getPoolInstance(context), ParamsList.toArray(new Parameter[ParamsList.size()]));
return queryCondition;
}
第三步
发布自由报表
第四步
添加查询面板,并且分配到对应自由报表的节点
第五步
在gl_brdealclass 业务系统注册表
update gl_brdealclass set bridgecode = ‘发布自由报表节点的菜单编码’ ,nodecode = '‘查询面板的编码’ ’ where moduleid=‘对应模块编码’