【内部或二开】星瀚合并报表:取数公式开发指导文档(2022115update)


一、 公式配置
• 公式分类配置及本领域取数微服务定义
公式分类顾名思义就是当存在多个公式时,需要对公式进行一个分类使用户更能明确的找到对应的公式;微服务定义因存在跨领域取数,所以需要定义对应的微服务调用的领域APPID及接口信息,暴露由合并报表应用所调用,范例:
{
//-------公式分类定义列表
"catalogs": [
{
"name": "财务取数公式",
"number": "financial"
},
{
"name": "报表辅助公式",
"number": "assistant"
}
],
//-------微服务接口定义,用于接收公式取数参数及返回公式计算结果
"mservice": {
"appId": "bcm",
"cloudId": "fi",
//单个公式的取数接口
"method": "dispatchFormula",
//【可选】针对浮动表按列批量取数使用,常规下不需要设置
“batchMethod”:”dispatchBatchFormula”,
"service": "CslService"
}
}
• 公式定义列表配置
[
{
//----公式编码
"number": "rptdate",
//----公式名称
"name": "获取报表日期数据",
//----公式分类,与上面分类相对应
"catalog": "assistant",
//公式支持浮动批量取数,与上面设置的批量接口相对应,默认可不设该参数则不支持批量取数
"isSupportedBatch": "true",
//----公式描述
"description": "数据来源:不可为空日期格式:不可为空,用于设置日期显示格式",
//向导界面
"guidepage": 公式向导需要打开的动态表单,
//----公式参数列表定义
"param": [
{
//----参数名,对应组件上的唯一标识
"number": "datesource",
//----显示名称
"name": "日期来源",
//----组件类型
"type": "combofield",
//-----如下拉列表的值列表
"value": {
"modifytime": "报表日期"
},
//-----是否必录项
"mustinput": true
},
{
"mustinput": true,
"name": "日期格式",
"number": "datefield",
"type": "combofield",
"items": {
"DD/MM/YYYY": "DD/MM/YYYY",
"MM/DD/YYYY": "MM/DD/YYYY",
"YYYY-MM-DD": "YYYY-MM-DD",
"YYYY.MM.DD": "YYYY.MM.DD",
"YYYY/MM/DD": "YYYY/MM/DD"
}
}
]
}
]
说明:
公式参数定义支持的组件类型有,列举不全,后面根据需要可追加:
a) combofield下列列表
b) basedatafield 基础资料组件
c) integerfield数值组件
注意:具体组件编码看元数据上的默认值,新增一个控件,生成的默认编码就是该编码,会根据此配置生成向导的控件

d) 对于F7如果需要设置过滤条件的,可以在公式定义中增加类似如下的设置:
"filter":{"sql":"number =? and name =?","param":[v1,v2]};
Param可以是具体的值或者公式里定义的其他组件值,比如前后有联动关系的情况可以这么使用。
e) 对于多类别基础资料组件暂不支持,建议做成多个公式进行处理
2、 调用微服务统一接口接收参数格式public String dispatchXXX(String formulaName,String paramJson);
参数说明:
• dispatchXXX:对应的微服务接口命名,该接口建议一个领域定义一个统一入口,该微服务用于公式调用取数的分发功能,这样就不需要每个公式暴露一个接口给合并报表调用,避免对外暴露过多定义信息。
• formulaName:要处理的公式名
• paramJson:对应接收的公式的参数,json格式如下:
{
"commParam": { //公共参数
"fy": 2020, //财年
"org": "ZSJ001", //组织
"period": 2 //期间
},
"formulaName": "ACCT",
"param": {
"A": //对应公式的唯一ID
[
参数1,
参数2,
…….
]
}
}
例如:
{
//------公共参数信息,包括执行的组织编码,财年、和期间,以后有需要可增加
"commParam": {
"fy": 2020,
"org": "ZSJ001",
"period": 2
},
//--------对应公式名
"formulaName": "ACCT",
//--------多个公式参数列表
"param": {
"A": [
"org-A",
2020,
2,
"2020-02-13"
],
"B": [
"org-B",
2020,
2,
"2020-02-12"
],
"C": [
"org-C",
2020,
2,
"2020-02-11"
]
}
}
• 返回结果:json格式,格式如下:
{
“id”: //公式id,传参数时对应的公式参数ID
{
“v”: //取数结果,当取数异常时可返回错误信息
“type”: //值类型,-1:异常;1:数值,默认可不填,2:文本;3:日期;
}
}
3、 【可选】调用微服务批量取数统一接口接收参数格式public String dispatchBatchXXX(String formulaName,String paramJson);
参数说明:
• dispatchBatchXXX:对应的微服务批量取数接口命名,该接口建议一个领域定义一个统一入口,该微服务用于公式调用取数的分发功能,这样就不需要每个公式暴露一个接口给合并报表调用,避免对外暴露过多定义信息。
• formulaName:要处理的公式名
• paramJson:对应接收的公式的参数,json格式如下:
{
"commParam": { //公共参数
"fy": 2020, //财年
"org": "ZSJ001", //组织
"period": 2 //期间
},
“ref_param”:{
“p1”:[v1,v2], //多浮动的场景下各个填充参数值列表
“p2”:[v3,v4],
……
},
"formulaName": "ACCT",
"param": {
"A": //对应公式的唯一ID
[
参数1,
参数2,
…….
]
}
}
例如:
{
//------公共参数信息,包括执行的组织编码,财年、和期间,以后有需要可增加
"commParam": {
"fy": 2020,
"org": "ZSJ001",
"period": 2
},
“ref_param”:{
“p1”:[v1,v2], //多浮动的场景下各个填充参数值列表
“p2”:[v3,v4],
……
},
//--------对应公式名
"formulaName": "ACCT",
//--------多个公式参数列表
"param": {
"A": [
"org-A",
2020,
2,
"2020-02-13"
],
"B": [
"org-B",
2020,
2,
"2020-02-12"
],
"C": [
"org-C",
2020,
2,
"2020-02-11"
]
}
}
• 返回结果:json格式,格式如下:
{
“id”: //公式id,传参数时对应的公式参数ID
{
“v”:{“p1|p2”:100,“p3|p4”:200},//取数结果, 返回浮动填充成员组合key的值
“success”:”true”,//false:查询出现异常,这是个整体状态,不烦回该参数默认为true
“failmsg”:”取数错误信息”
}
}
4、 公式注册机制
因合并报表需要知道哪些公式需要加入到合并报表公式平台中,其他领域需往合并报表的公式登记表中插入记录完成登记,登记信息需告知获取配置公式的相关微服务接口,返回公式定义信息,以供合并报表公式平台进行公式向导展示及公式计算所调用的微服务接口。登记表信息字段如下:
表:T_BCM_FormulaRegister
字段 | 字段名 | 类型 | 说明 |
FID | 主键ID | bigint | |
FcloudId | 云服务编码 | VARCHAR(50) | |
FA |
【内部或二开】星瀚合并报表:取数公式开发指导文档(2022115update)
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



