iNESTIM系统二次开发手册.docx
- 文档编号:8798327
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:57
- 大小:4.13MB
iNESTIM系统二次开发手册.docx
《iNESTIM系统二次开发手册.docx》由会员分享,可在线阅读,更多相关《iNESTIM系统二次开发手册.docx(57页珍藏版)》请在冰点文库上搜索。
iNESTIM系统二次开发手册
iNESTIM系统
数据展示及应用分析平台
二次开发手册
目录
一、引言3
二菜单配置方式3
2.1菜单订制及查询sql定制3
三自定义WEB报表7
3.1报表制作7
3.2报表模块修改19
3.3报表导出打印22
3.4参数定义25
四自定义Excel报表26
4.1实时报表27
4.2批量报表28
4.3Excel文件模板的制作(支持界面参数传入和图表)28
4.3.1制作Excel模板文件29
4.3.2Report_unit.xlsm模板+REPORT_UNIT的SQL34
4.3.3其他报表配置34
4.3.4支持扩充的页面34
4.3.5web调用excel权限配置35
五页面查询对象树制作37
5.1Level_type的配置(一般固化)37
5.2Level_detail具体化39
5.3MODULE_TREE_RELATION树过滤表40
文件修订记录
版本
状态
修订内容
实施日期
编制
审核
批准
V1.0
编写
将原保存在操作手册中的配置内容移至本手册
2011-8-22
朱发明
V1.0
增加
Excel权限问题处理
2011-10-25
朱发明
一、引言
iNESTIM软件是面向企业(集团)应用需求而研发的专业能源监测与集中控制管理平台,帮助企业加强能源计量管理,开展企业节能降耗行动,提高能源利用率,减少资源消耗、保护环境;协助企业更好地完成资源调配、组织生产、部门结算、成本核算,对能源供应进行监测,以便企业实时掌握能源状况,为实现能源自动化调控奠定坚实的数据基础。
系统配合各用能单位的节能工作,科学合理地降低单位产值或单位产品的能源资源消耗,实现分产品、分车间的能源管理,提高能源资源的利用水平,建立科学合理的能源体系,同时为用能单位能源网络的设计、优化、改造提供全面的基础数据和分析数据;加强对用能单位能源利用状况的宏观监督管理,以及对用能单位能源资源投入产出全过程进行全面的审计,建立科学的能源审计体系;为企业的安全、可靠、高效的用能提供全面的科学指导,最大限度地延长企业生产设备的使用寿命,有效降低维护成本。
本手册定制的目的是为了对项目实施及配置过程中的一些简单二次开发方式做一些说明。
二菜单配置方式
2.1菜单订制及查询sql定制
Sql定制页面的功能是将简单的横行乘数列的表格使用web的方式展示。
原理是通过sql语句获取数据集并将获取到的数据集在web上展示出来。
此过程只涉及到2个数据表分别是module_info表与report_unit表。
也就是说在以上2张表中将记录完成就能在web上形成一个sql定制页面。
在数据库中直接配置的方法如下:
2.1.1数据表介绍
首先介绍下module_info及report_unit的主要字段:
Module_info菜单信息表
MODULEID数字型,菜单编号,
MODULETYPEID数字型,菜单种类编号大部分时候使用‘1’即可,
PARENTID数字型,父节点编号,即此菜单项下挂于菜单树的哪一级,
MODULENAME字符型,菜单名称,
MODULEURL字符型,页面地址及参数,
STATE数字型,默认0,
ADMINPERM字符型,管理权限字符串,使用‘1’,
READPERM字符型,读权限字符串,使用‘1’,
FUNCTIONID数字型,,
TREEID数字型,此菜单使用的树编号,此id对应MODULE_TREE_RELATION表中的id,
ORDERINDEX数字型,排序编号,若此菜单所属的父菜单包含多个子菜单,依照此字段的大小排序
IMG字符型,菜单在菜单树中使用的图片
MODULETYPE字符型,标识位,‘0’表示此项内容在后台系统即管理员显示,‘1’表示在前台系统即数据浏览页面显示。
SINGLE字符型,标识位,‘0’即可。
REPORT_UNIT报表信息表
RE_UNIT_ID数字型,报表编号,
RE_UNIT_NAME字符型,报表名称,显示于数据页面的正中,图形的上方,
RE_UNIT_DEGREE字符型,备用字段可为空,
RE_UNIT_SQL字符型,数据查询所用sql,
RE_UNIT_RPT字符型,模板名,可为空
RE_UNIT_CONTERT字符型,与RE_UNIT_NAME相同,
RE_UNIT_CONDITION字符型,可为空,
RE_UNIT_SQL1字符型,下钻页面所用sql,可为空,
RE_DATA字符型,标识位,是否可下钻‘1’为支持下钻,‘0’为不可下钻,
RE_TIME_VISIBLE字符型,标识位,时间字段可否下钻‘0’为显示双时间(起至),‘1’为单时间(时间点),‘2’为无时间
XAXIS字符型,x轴、横轴字段,一般为时间字段,填写字段顺序号即可,即希望做横轴的字段在sql查询数据集中为第几个字段。
YAXIS字符型,y轴、纵轴字段,一般为数据字段,填写字段顺序号即可,即希望做横轴的字段在sql查询数据集中为第几个字段。
YUNIT字符型,y轴、纵轴单位,即数据字段所对应的单位如:
kwH、A、V等,
TIMER字符型,填写字段编号,表示要进行时间下钻查询的第几个字段,
PARMER字符型,填写字段编号,表示要进行档案下钻查询的第几个字段
2.1.2编写数据查询sql
将需要进行查询的sql语句写出并按要求调整,以日电量查询为例:
SELECTa.IDas编号,b.NAMEas名称,c_tv(a.tv)as时间,a.val_ppas电量
FROMd_elea,eq_paramb
WHEREa.ID=b.ID
这样的语句就能将所有日电量表中的电量数据查询出来了,但是在web上使用常常需要加条件如id=445及时间从2011-6-20到2011-6-23那么语句变成如下格式:
SELECTa.IDas编号,b.NAMEas名称,c_tv(a.tv)as时间,a.val_ppas电量
FROMd_elea,eq_paramb
WHEREa.ID=b.ID
anda.idin(445)
andto_date('1970-01-0108:
00:
00','yyyy-mm-ddHH24:
mi:
ss')+a.tv/86400>=to_date('2011-06-20','yyyy-mm-dd')
andto_date('1970-01-0108:
00:
00','yyyy-mm-dd
HH24:
mi:
ss')+a.tv/86400<=to_date('2011-06-23','yyyy-mm-dd')
而在web中所查询的参数是非固定的,是在每次查询的时候选择的,所以id及时间字段应该使用变量,inestim_web中为这样的变量值设置了固定的变量如id为v_mp_id,起始日时间为v_timestrday,结束日时间为v_timeendday,并将查询语句中所有不符合web使用方式的单引号'替换为",所有参数变量名可以参照2.2.4的表格。
则最终结果变成
SELECTa.IDas编号,b.NAMEas名称,c_tv(a.tv)as时间,a.val_ppas电量
FROMd_elea,eq_paramb
WHEREa.ID=b.ID
anda.idin(v_mp_id)
andto_date("1970-01-0108:
00:
00","yyyy-mm-ddHH24:
mi:
ss")+a.tv/86400>=to_date("v_timestrday","yyyy-mm-ddHH24:
mi:
ss")
andto_date("1970-01-0108:
00:
00","yyyy-mm-ddHH24:
mi:
ss")+a.tv/86400<=to_date("v_timeendday","yyyy-mm-ddHH24:
mi:
ss")
2.1.3查询sql订制
在report_unit中可以指定将要制作的页面中用于图形显示的字段,如:
在查询的结果集中时间字段是第3个,数据字段是第4个,那么XAXIS为3,YAXIS为4,因为查询的结果值为电量所以单位应该是kwH,给将要增加的记录一个编号,要求在report_unit中没有被使用过的如(2014),然后按照3.6.6.1所描述的字段定义组织记录如下:
Insertintomodule_info
(RE_UNIT_ID,RE_UNIT_NAME,RE_UNIT_SQL,RE_UNIT_CONTERT,RE_DATA,RE_TIME_VISIBLE,XAXIS,YAXIS,YUNIT,TIMER,PARMER)
Values
(2014,'日电量查询',
'select
a.idas编号,b.nameas名称,
to_date("1970-01-0108:
00:
00","yyyy-mm-ddHH24:
mi:
ss")+a.tv/86400as时间,
trunc(a.val_pp,2)as电量
fromd_elea,
eq_paramb
wherea.id=b.idanda.type=3199anda.idin(v_mp_id)
andto_date("1970-01-0108:
00:
00","yyyy-mm-ddHH24:
mi:
ss")+a.tv/86400>=to_date("v_timestrday","yyyy-mm-ddHH24:
mi:
ss")
andto_date("1970-01-0108:
00:
00","yyyy-mm-ddHH24:
mi:
ss")+a.tv/86400<=to_date("v_timeendday","yyyy-mm-ddHH24:
mi:
ss")','null','1','1','3','4','KWh','3','2');
COMMIT;
将此记录插入report_unit表中,然后就可以为此报表增加一个菜单了。
2.1.4菜单添加
在module_info表为报表增加菜单记录需要注意的有:
必须使用尚未被使用的菜单编号(moduleid),即此编号不可重复;若为数据查询页面,必须将此菜单正确的挂在某一父节点(parent_id)下;选择正确的树类型(treeid);明确菜单在前台数据浏览系统或者后台档案管理系统展示(moduletype)。
以将2.2.5.2的报表挂上菜单为例:
找到一个尚未被使用的编号如:
1662;此报表属于数据查询界面所以必须有父节点,因为属于电量查询我们将它下挂在18电量统计下;他需要查询所有的对象包括虚拟节点与实际表计我们使用全树id为12(树的建立在另一章节中有说明。
);此页面应该在数据浏览系统被展示所以moduletype为1,然后我们组装关键的MODULEURL字段,以下如下地址模版进行:
pages/share/searchinterface.aspx?
flag=2&report_id=2014&dttype=d
问号之前的部分为sql定制报表页面模板文件路径,所有的定制sql页面都使用此模板,故无需改动;
flag字段为时间标识位,表示使用几个查询时间条件,可以使用的有’0’,’1’,’2’,0表示不使用时间条件,1表示时间点查询使用一个时间条件,2表示使用时间段查询,需要使用2个时间条件;
report_id为使用报表在report_unit表中的记录编号,在2.2.5.2中我们使用的是2014;
dttype为时间类型字段表示使用的查询时间条件最小单位是小时(h)或者天(d)或者月(m),所以例子的结果应该是
pages/share/searchinterface.aspx?
flag=2&report_id=2014&dttype=d。
按照2.2.5.1中的字段要求,将所有的条件组装成一条记录:
Insertintomodule_info
(MODULEID,MODULETYPEID,PARENTID,MODULENAME,MODULEURL,STATE,ADMINPERM,READPERM,FUNCTIONID,TREEID,ORDERINDEX,IMG,MODULETYPE,SINGLE)
Values
(1662,1,18,'日电量统计','pages/share/searchinterface.aspx?
flag=2&report_id=2014&dttype=d',0,'10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000','1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',1,9,4,'../../images/wasion.jpg','1',0);
插入数据库后就形成了菜单。
三自定义WEB报表
3.1报表制作
报表分类:
明细报表、分组报表、图形报表(饼图、曲线、柱图)、关联报表、比较报表
●制作明细报表:
第一步:
登录系统
(登录界面)
第二步:
输入SQL语句
管理员登录系统后,选择“报表管理”->“报表定制”
(报表制作一)
在“sql参数配置”文本框中输入SQL语句,如下图:
制作日电量查询报表:
(报表制作二输入SQL语句)
SQL示例:
SELECTd_ele.IDAS设备编号,eq_param.nameAS名称,d_ele.val_ppAS正向有功电量,
d_ele.val_pp1AS正向有功起码,d_ele.val_pp2AS正向有功止码,
d_ele.TYPEAS数据类型,
TO_DATE("1970-01-0108:
00:
00",
"yyyy-mm-ddHH24:
mi:
ss"
)
+d_ele.tv/86400AS时间
FROMeq_param,d_ele
WHEREeq_param.ID=d_ele.IDand
to_date('1970-01-0108:
00:
00','yyyy-mm-ddHH24:
mi:
ss')+D_ELE.tv/86400betweento_date('v_timestrday','yyyy-mm-ddHH24:
mi:
ss')andto_date('v_timeendday,'yyyy-mm-ddHH24:
mi:
ss')
ORDERBYeq_param.IDASC
其中“to_date('1970-01-0108:
00:
00','yyyy-mm-ddHH24:
mi:
ss')”是时间转换函数,因为存入数据库中字段”TV”为NUM数字类型,需转换为日期显示。
'v_timestrday',’v_timesendday’为参数字段,代表查询开始及结束时间,具体时间参数详见附件参数表。
输入报表名称“日电量查询”,时间标签选择“开结和结束时间”,如果时间条件参数只有一个,则选择“单时间点”,如果没有时间条件参数,则选择“不需要时间”。
单击“下一步”,如下图:
(报表制作三)
选择报表模板,根据SQL语句字段列数选择“10列明细报表模板”,明细报表模板分为5、10、15、20、25列报表模板,如果是电量、表码正向有功、反向有功、正向无功、反向无功分总、尖、峰、平、谷查询时,选择一类明细报表或二类明细报表,根据SQL语句字段需要进行选择。
(瞬时间量日查询明细报表)
电量、表码查询SQL语句示例:
(单表码日电量查询)
selectb.NameAs名称,to_date('1970-01-0108:
00:
00','yyyy-mm-ddHH24:
mi:
ss')+tv/86400As日期,
sum(casewhena.Type=3199Thenval_ppelse0end)总,
sum(casewhena.type=3101thenval_ppelse0end)尖,
sum(casewhena.type=3102thenval_ppelse0end)峰,
sum(casewhena.type=3103thenval_ppelse0end)平,
sum(casewhena.type=3104thenval_ppelse0end)谷,
sum(casewhena.type=3199thenval_npelse0end)总,
sum(casewhena.type=3101thenval_npelse0end)尖,
sum(casewhena.type=3102thenval_npelse0end)峰,
sum(casewhena.type=3103thenval_npelse0end)平,
sum(casewhena.type=3104thenval_npelse0end)谷,
sum(casewhena.type=3199thenval_pqelse0end)总,
sum(casewhena.type=3101thenval_pqelse0end)尖,
sum(casewhena.type=3102thenval_pqelse0end)峰,
sum(casewhena.type=3103thenval_pqelse0end)平,
sum(casewhena.type=3104thenval_pqelse0end)谷,
sum(casewhena.type=3199thenval_nqelse0end)总,
sum(casewhena.type=3101thenval_nqelse0end)尖,
sum(casewhena.type=3102thenval_nqelse0end)峰,
sum(casewhena.type=3103thenval_nqelse0end)平,
sum(casewhena.type=3104thenval_nqelse0end)谷
fromd_ele_codea,EQ_PARAMb
wherea.Id=b.IdAndb.id='v_mp_id'andb.Type=1And
to_date('1970-01-0108:
00:
00','yyyy-mm-ddHH24:
mi:
ss')+tv/86400betweento_date('v_timestrday','yyyy-mm-dd')andto_date('v_timeendday','yyyy-mm-dd')GroupByb.Name,a.tvorderbya.tv
(注:
多表电量查询请使用in(v_mp_id))
(单表表码日电量查询)
第三步:
预览及保存报表
点击“预览”,可以验证SQL语句是否有错,同时可以看到报表显示信息。
点击“显示/隐藏说明”则可以看到参数信息及报表模板详细说明,如下图:
(报表制作四)
如果报表需要关联到别的报表,选择“关联”
(报表制作五)
单击“保存”将定制好的报表模块进行保存,定制成功会弹出对话框
“电压合格率”报表模块定制成功。
●制作分组报表
分组报表的制作过程与明细报表制作前两步相同,(详见制作明细报表)只是在SQL语句写法上进行注意,同时选择模板根据SQL语句需求选择一层分组报表、二层分组报表、三层分组报表。
一层分组报表:
根据SQL语句第一列进行分组。
二层分组报表:
根据SQL语句第一列、第二列进行分组。
三层分组报表:
根据SQL语句第一列、第二列、第三列进行分组。
如下SQL示例(瞬时量电流查询)
Selectb.NameAs表计名称,to_date('1970-01-0108:
00:
00','yyyy-mm-ddHH24:
mi:
ss')+a.tv/86400As日期,val_aA相,val_bB相,val_cC相Frompvv_ia,EQ_PARAMb
Wherea.Id=b.IdAndto_date('1970-01-0108:
00:
00','yyyy-mm-ddHH24:
mi:
ss')+tv/86400betweento_date('v_timestrday','yyyy-mm-ddHH24:
mi:
ss')andto_date('v_timeendday','yyyy-mm-ddHH24:
mi:
ss')
OrderByb.Name,a.tv
(分组关联报表)
制作图形报表
柱形报表
饼形报表
曲线报表
第二列为曲线图表X轴,第三、四、五、六、七列为数据显示列,数据列最多为五列
制作关联报表
Sql语句示例:
Selectb.Name表计名,to_date("1970-01-0108:
00:
00","yyyy-mm-ddHH24:
mi:
ss")+tv/86400As日期,val_aA相,val_bB相,val_cC相
frompvc_va,eq_parambWherea.Id=b.IdAndto_date("1970-01-0108:
00:
00","yyyy-mm-ddHH24:
mi:
ss")+tv/86400betweento_date("v_timestrday","yyyy-mm-dd")andto_date("v_t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- iNESTIM 系统 二次开发 手册
![提示](https://static.bingdoc.com/images/bang_tan.gif)