报表框架使用说明
水雨情报表基础版
开始
1.版本管理
每个应用的项目,下载源码后,拷贝到各自项目的源码中。目前固化版本已经提供常见的基础水雨情报表,适配oracle和sqlserver,内置三套皮肤,处理了大部分常见bug。各项目根据实际需求可对拷贝后的源码随意更改。
若发现严重bug,rtx反馈@wsn,处理后会更新到固化版。
2.源码地址
https://rtx.strongsoft.net:9443/svn/ProductCenter/软件研发一部/通用平台/水雨情报表
3.初始化脚本(不存在的)
库表依赖
1.配置表
T_RP --主配置表
T_RP_FIELD --字段配置表
T_TP_MENU --菜单配置表
T_RP_ST_TREE --测站树配置表
T_RP_DBCONFIG --业务数据库连接配置
2.业务数据表
/*基础数据*/
ST_STBPRP_B --测站基础表
SS_STATIONEXTEND --测站信息扩展表,adcd,strongtype不能为空
SS_AREA --行政区划表
SS_BASIN_B --流域信息表
/*雨情*/
ST_PPTN_R --降水量表
ST_PSTAT_R --雨量统计表,月年雨量统计依赖
/*水库水情*/
ST_RSVR_R --水库水情表
ST_RSVRFCCH_B --水库防洪指标表
ST_RSVRFSR_B --水库汛限水位表
ST_ZVARL_B --库容曲线表
/*河道水情*/
ST_RIVER_R --河道水情表
ST_RVFCCH_B --河道防洪指标表
/*咸情*/
ST_SALT_R --实时咸情表,注:该表并非国标表
/*风情*/
ST_WDWV_R --实时风情
/*潮汐*/
ST_TIDE_R --实时潮位
/*数据库函数*/
GETKR() --库容计算
GETKNYL() --可纳雨量计算
常见配置
1.目前都是基本都为单系统,所有涉及DB_CONDE
、SysCode
、v_1_0_0
的地方,不了解具体实现的请不要做修改。
2.报表配置数据库
<!--Config/AppSettings.xml-->
<!--报表配置所在数据库类型和连接串配置地址,两个配置二选一-->
<add key="RpDBType" value="ORACLE"/>
<add key="DBConfig" value="FrameWork/Config/SqlMap_Oracle.config"/>
<add key="RpDBType" value="MSSQL"/>
<add key="DBConfig" value="FrameWork/Config/SqlMap_MSSql.config"/>
<!--Config/ConfigDBConStr.config-->
<!--报表配置数据库连接串-->
<add key="DataSource" value="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=202.109.200.36)(PORT=6201))(CONNECT_DATA=(SID=flood)));User Id=strong_report;Password=strong;"/>
3.业务数据库
/*连接串配置文件位置*/
select * from t_rp_dbconfig
image
<!--ReportPage/v_1_0_0/Config/SqlMap_ORACLE.config-->
<!--广东防指数据库-->
<dataSource name="Default" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=202.109.200.36)(PORT=6201))(CONNECT_DATA=(SID=flood)));User Id=strong_hn;Password=strong;"/>
4.部署配置
<!--AppSettings.xml-->
<!--网站的物理目录,根据实际环境,199珠海系统下为"E:\软件一部\9043_API_珠海市三防指挥系统_jsg\report\"-->
<add key="WebPhysicalPath" value=""/>
<!--报表系统,用于过滤T_RP_MENU中的SYS_CODE字段-->
<add key="SysCode" value="v_1_0_0"/>
<!--系统的配置文件路径(多个用,分割) -->
<add key="SysConfigFile" value="/ReportPage/v_1_0_0/Config/SysConfig.config"/>
/*Script/packages.json*/
/*修改ReportRootPath为部署时所在虚拟目录名称*/
"params": {
"window": {
"ReportRootPath": "/report/"
}
}
5.皮肤配置
/*Script/packages.json*/
/*皮肤配置本质是切换css文件, 目前支持blue/darkblue/green三种皮肤样式,需要扩展新的皮肤直接拷贝样式文件夹,修改后改变引用路径即可*/
"alias": {
"theme": "CSS/darkblue/default.css"
}
6.根节点行政区划配置,不在该节点范畴内的测站会被归属为境外站
<!--ReportPage/v_1_0_0/Config/SysConfig.config-->
<add key="RootAreaode" value="440000" />
7.是否开启行政区划过滤,开启后只能看到当前登录区划下的测站
<!--ReportPage/v_1_0_0/Config/SysConfig.config-->
<1--1为开启,0为关闭-->
<add key="IsAareFilter" value="0" />
8.模拟时间
/*Script/packages.json*/
"params": {
"window": {
"DemoTime": {
"startTime": "2016-06-01 08:00:00",
"endTime": "2016-06-01 12:00:00"
}
}
}
9.水情查询范围阈值,超过该时间范围则认为无实时数据
/*Script/packages.json*/
"params": {
"window": {
"DemoTime": {
"diffHours": 3
}
}
}
10.菜单配置参数
1.菜单链接:/report/PreportPage/v_1_0_0/Default.html
2.模块过滤参数,只显示某类报表:MD_CODE=Rain
雨情:Rain
水库水情:RSVR
河道水情:River
风情:Wind
咸情:Salt
潮位:Tide
3.默认显示某个报表:RP_CODE=Rain_Origin
报表配置
可视化配置页面
基于表单简单开发了一个界面实现4个配置表的配置,暂时部署在9108的表单上面,点我跳转, 修改配置库连接串到当前项目
<!--master/Config/ConnectionStrings.config-->
<!--报表配置库-->
<add key="Report" value="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=202.109.200.36)(PORT=6201))(CONNECT_DATA=(SID=flood)));User Id=strong_gdfz;Password=strong;" />
当然,直接用表单固化版源码打开/ReportConfig/T_RP.html也是可以的,多人共用一个配置页面的时候连接串改来改去
1.菜单配置
点击配置页面左上角‘添加菜单’打开菜单配置弹框
菜单配置
- 菜单编码:系统有扩展业务模块的菜单过滤,菜单编码按照 父节点编号(Rain) + 序号(01) 的方式填写
- 报表配置:在T_RP表中已配置的报表配置
2.报表配置
保存菜单后,在中间配置报表主配置,基本在placeholder都有配置说明
image
3.字段配置
在右侧配置报表相关的列
image
image
4.脚本配置
打开脚本目录ReportPage/v_1_0_0/Config/Oracle
或ReportPage/v_1_0_0/Config/MSSQL
,Common.xml
里面有可复用的脚本代码片段,在对应的业务的xml文件中写业务脚本,原始雨量的脚本写在如Rain.xml
,其中的namespace
和id
对应报表配置中的脚本执行内容Rain.Origin
前后两部分
xml脚本的实现机制基于iBatis,写之前可以网上了解下基本标签的用法
image
5.页面配置
在目录ReportPage/v_1_0_0
下新建文件,如Rain_Origin.html
,这里的文件路径和菜单配置中的报表链接对应
折腾了个简单的资源加载器include.js,反正照着下面的代码用就好,有兴趣的可以看看代码
image
6.搜索、表头
涉及复杂的表头,可以在ReportPage/HeadHTML
下新建表头的thead
标签,然后在报表配置中配置表头地址指向该文件
需要自定义搜索头的,可以在ReportPage/SearchHTML
下新建搜索文件,目前已经内置了常见业务的搜索文件,在报表配置中配置搜索文件路径即可
简单的配置就这样,打开ReportPage/v_1_0_0/Default.html
即可看到配置的报表页面
框架结构
不存在的
二次开发
页面个性化配置见/FrameWork/Script/Report/RP_TableJS.js
,调用在报表初始化代码中MainRp.Init(option)
image
数据流-框架
Deafult.html->loaded.js (
页面参数、布局、事件、搜索初始化
->JSReport.InitReport()
->JSReport.js(
菜单参数: RP_MenuJS --> RP_MenuTreeOption
接口:RpHandler.ashx?OPtype=GetAllMenuList 请求菜单,设置默认选中和点击事件 -> JSReport.ChangeRPMenu(url)
菜单切换请求配置:RpHandler.ashx?OPtype=GetConfig&RP_CODE=Rain_Origin&DataType=1,2,3
DatyType:1:主配置表(RP标签) 2:字段表(RP_FIELD标签) 3:树分类(ST_TREE)
回调:
1.JSReport.ConfigData = data;
2.$("#SearchHtmlDiv").html(data.RP.SEARCH_HTML); --渲染搜索栏
接口内部:1.SEARCH_HTML = new SearchBuilder(mT_RP).GetHtml();
2.HEAD_HTML = new HeadBuilder(mT_RP).GetHtml();
3.RP_SiteTreeJS.Init(data.ST_TREE) -->RP_SiteTreeJS.js 生成该报表对应测站树
)
)
数据流-表格页
Init(初始化)
->GetConfigData(请求报表配置,返回->this.ConfigData);JSReport.ConfigData = ConfigData;JSReport.ConfigData = ConfigData;
->RequestDataBefore(请求数据前的操作,会清空上次渲染结果,请求表头数据)
->RequestData(
回调:BeforeRequestServerEvent,获取参数之前,请求之前
开启:loadingJs.Show(),
参数:QueryPostKeyParStr=GetPostData(),POST请求返回后端的数据
回调:AfterGetPostDataEven(QueryPostKeyParStr),获取参数之后
自定义数据接口:this.options.DataHtmlUrl,
自定义数据源:this.options.CustomeData ->InitTableData(),
标准AJAX请求:返回{HEAD: [{}, {}], DATA: [{}, {}]}, ->InitTableData()
)
->InitTableData(
回调:DataRequestEvent,接口数据返回之后
回调:this.Sdata=BeforeDataHtmlEvent(this.Sdata),渲染之前的数据二次处理
回调:DataHtmlEvent(this.Sdata),自定义渲染方式
渲染:-->ResponsesHtmlTable()
)
->ResponsesHtmlTable(
表头及列表生成:->CreateHeadAndTableHtml()
)