报表框架使用说明

报表框架使用说明

水雨情报表基础版

开始


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_CONDESysCodev_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/OracleReportPage/v_1_0_0/Config/MSSQLCommon.xml里面有可复用的脚本代码片段,在对应的业务的xml文件中写业务脚本,原始雨量的脚本写在如Rain.xml,其中的namespaceid对应报表配置中的脚本执行内容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()
)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,132评论 25 707
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,039评论 9 467
  • 《离人》这首歌最早演唱者是张学友,后来被林志炫翻唱。今天无意间听到,就一下子被林志炫版的歌声所陶醉。这首歌是...
    普洱茶里的阳光阅读 1,579评论 0 0
  • 偶,在泰山的庙里干活很累啊!希望在十一假期里大家可以宅在家休息休息(小小心愿)。
    痕无阅读 112评论 0 1
  • S01E05 H:这大概就是一个母亲的眼泪 能考上这方圆三镇最好的高中,进入其中应试成绩最好的实验班,H深知其中的...
    喜歌raki阅读 321评论 3 1