李 萍,曹 衛(wèi)(新疆師范大學計算機科學技術學院,烏魯木齊830054)
基于Flex的能源監(jiān)測管理系統(tǒng)的設計與實現(xiàn)
李萍,曹衛(wèi)
(新疆師范大學計算機科學技術學院,烏魯木齊830054)
隨著國家能源使用的增加,能源大量減少,為了監(jiān)控能源的使用情況以及規(guī)范能源的合理利用,提出構建基于Flex技術的能源監(jiān)控管理系統(tǒng)。該系統(tǒng)采用互聯(lián)網(wǎng)先進的前端框架結合當前流行的后臺框架進行開發(fā),在系統(tǒng)開發(fā)前期采用面向對象的分析與設計的思想,構建系統(tǒng)的模型。能源監(jiān)測系統(tǒng)的研發(fā)能讓政府時刻關注到國家能源的使用情況,對過量使用及不當使用及時報警,為政府提供決策支持,在很大程度上能夠節(jié)約能源。
能源;Flex;面向對象;模型
新疆師范大學優(yōu)秀青年教師科研啟動基金項目(No.XJNU201420)
國家要制定能源政策、加強能源宏觀管理、提升節(jié)能效果,需要大量詳盡的能源基礎數(shù)據(jù),而要獲得這些數(shù)據(jù)還需要與耗能企業(yè)進行信息交互,能源綜合管理信息平臺就是利用計算機技術與互聯(lián)網(wǎng)技術來實現(xiàn)政府的這一需求。因此,提出了搭建基于Flex的能源監(jiān)測管理系統(tǒng)。平臺提供的主要功能有:企業(yè)能源數(shù)據(jù)網(wǎng)上填報、能源圖表分析、能源數(shù)據(jù)綜合查詢、能源項目管理、企業(yè)能源管理、企業(yè)能源審計、新聞發(fā)布等功能。
隨著Web技術的發(fā)展和Web 2.0[1]應用的普及,富客戶端技術逐漸進入了人們的視野[2]。Flex就是一個典型的富客戶端技術,F(xiàn)lex技術是由Macromedia公司推出的富客戶端技術,具有豐富的前端組件。Flex框架是基于組件的開發(fā)框架,開發(fā)完成后可生成SWF文件,并且能在Adobe Flash Player上運行查看效果,是一種豐富互聯(lián)網(wǎng)的應用程序[3]。通過Flex技術,開發(fā)人員可高效地開發(fā)出來豐富漂亮的前端界面,為開發(fā)人員節(jié)省大量的時間和精力。Flex技術支持跨平臺并且支持對系統(tǒng)外觀進行自定義,與系統(tǒng)后臺的交互方法很多。Flex應用程序框架由MXML、ActionScript及Flex類庫構成。用Flex構建的Web應用程序能夠有效地將桌面軟件的強交互和豐富內容與Web的廣度結合在一起[4]。在系統(tǒng)實現(xiàn)時,主要基于Flex的富客戶端實現(xiàn),前臺使用的框架有Flex,blaseDS用于與后臺交互,parsley用于前臺事件、Aop[5]等,后臺使用的框架是Spring[6]、Hibernate[7],使用的開發(fā)模式是SpringMVC[8]。
2.1能源監(jiān)測管理系統(tǒng)的需求模型
根據(jù)調研以及對用戶進行需求分析,自治區(qū)工業(yè)能源監(jiān)測管理系統(tǒng)主要涵蓋:
(1)用戶注冊登錄。企業(yè)用戶注冊和登錄,政府用戶登錄,企業(yè)用戶的注冊信息需要政府用戶的審核。
(2)系統(tǒng)設置。企業(yè)用戶和政府用戶對個人的信息包括密碼修改,政府用戶可以對系統(tǒng)賬號進行管理、對部門信息進行管理、對員工進行管理等。
(3)企業(yè)能源數(shù)據(jù)填報。企業(yè)用戶對企業(yè)的能源數(shù)據(jù)相關信息進行填報,其中包括基本情況數(shù)據(jù),能源消費結構、能源實物平衡、單位產(chǎn)品綜合能耗指標數(shù)據(jù),產(chǎn)值能耗變化因素,節(jié)能目標完成情況,節(jié)能目標責任自評價考核,主要能耗設備狀況,合理用能國家標準執(zhí)行情況,規(guī)劃期內節(jié)能技術改造項目,節(jié)能項目變更情況。
(4)能源綜合數(shù)據(jù)統(tǒng)計分析。系統(tǒng)通過對能耗情況、消費結構、單耗指標計算、節(jié)能量等數(shù)據(jù)進行統(tǒng)計匯總分析,可自動生成某段時間(可定義)監(jiān)管區(qū)域內相關行業(yè)總體用能情況的分析報告,為政府督查全市重點耗能單位節(jié)能降耗指標完成情況,科學制定節(jié)能監(jiān)管決策提供多方位、可視化的數(shù)據(jù)信息查詢和決策支持服務。
(5)基本操作。政府用戶對企業(yè)注冊信息進行審批,設置企業(yè)報表填報時間,對企業(yè)能源指標進行定義,對公司信息進行管理。
通過對系統(tǒng)進行分析構建了系統(tǒng)的需求模型[9],需求模型如圖1。
圖1 系統(tǒng)需求模型
針對需求模型中的用況,本文給出描述,用況描述中包括很多內容,本節(jié)主要是給出用況描述中的主要事件流。
(1)注冊。企業(yè)端相關操作員進入系統(tǒng)主界面,點擊“注冊”按鈕,進入注冊界面,填寫完相應的注冊信息,并點擊“注冊”按鈕提交注冊信息。提交信息后等待政府端的審批,政府端審批通過后會發(fā)郵件(發(fā)送郵件到所填寫的E-mail)通知企業(yè),審批通過后方可登錄系統(tǒng)進行填報。
(2)登錄。進入系統(tǒng)主界面,輸入用戶名、密碼,點擊“登錄”,進入系統(tǒng)主界面。
(3)個人信息修改。用戶進入系統(tǒng),在左邊導航欄選擇“系統(tǒng)設置”,再點擊“個人信息”進入個人信息修改界面,填寫要修改的信息,點擊保存。
(4)密碼修改。用戶進入系統(tǒng)在左邊導航欄選擇“系統(tǒng)設置”,再點擊“修改密碼”進入密碼修改頁面。
(5)能源數(shù)據(jù)填報。進入系統(tǒng)在左邊導航欄選擇“企業(yè)能源數(shù)據(jù)填報”,再點擊“企業(yè)能源數(shù)據(jù)填報”進入能源數(shù)據(jù)填報界面,選擇要填報的數(shù)據(jù)的年份、月份和數(shù)據(jù)類型,填報相應信息,點擊“保存”進行提交。提交完成后關閉當前頁面,返回之前的頁面刷新,可以看到一月份的報表狀態(tài)為“已填報”,此時仍可以進行編輯和查看,點擊“編輯”可進入進行修改操作,而“查看”不能進行修改操作;如果確認填報無誤,便可點擊“確認提交”。
(6)能源數(shù)據(jù)統(tǒng)計分析。在左邊導航欄點擊能源綜合查詢的“綜合查詢”,進入能源統(tǒng)計分析界面,該界面可以按期間、行業(yè)、地州以及不同類型進行分析企業(yè)的用能情況。例如:這里分析2011年1月份到3月份,增加值能耗表,所有烏魯木齊市“煤炭”、“電力”和“其他”企業(yè)的用能情況,點擊“按行業(yè)分”或“按地州分”可得到不同的統(tǒng)計分析圖。
(7)注冊信息審批。在左邊導航欄選擇“政府基本操作”,點擊“企業(yè)注冊審批”進入注冊審批界面,這里會顯示當前已經(jīng)進行注冊但是沒有通過審批的企業(yè),通過審核后可以進行選擇然后點擊右上角的“審核通過”按鈕即可完成對企業(yè)的審批。
(8)能源填報期間設置。點擊“企業(yè)報表填報期間設置”進入能源填報時間設置界面,雙擊當前已經(jīng)定義的年份可以查看或修改已定義的期間。點擊右上角的“增加”按鈕,可增加新年份并進行期間設置。
(9)能源指標定義。點擊“企業(yè)能源指標定義”進入界面,界面顯示了已經(jīng)定義的能源指標,可以根據(jù)需要點擊下方的綠色小加號按鈕來添加一條新記錄。填寫能源指標信息,點擊保存。
(10)部門管理。點擊“部門管理”進入部門管理界面,界面顯示了當前所有部門,可以在右邊的操作列對相關的部門信息進行增刪改查操作。
(11)員工管理。點擊“員工管理”進入管理界面,界面顯示了當前系統(tǒng)的所有操作員信息,可以根據(jù)需要在下方的操作欄對相關操作員信息進行增刪改查。
圖2 系統(tǒng)的基本模型圖
2.2能源監(jiān)測管理系統(tǒng)的基本模型
系統(tǒng)的類圖是面向對象系統(tǒng)分析時的一個基本模型[10],基本模型是建立在需求模型的基礎上,同時是整個系統(tǒng)的面向對象分析和設計的一個核心模型。能源監(jiān)測管理系統(tǒng)的基本模型如圖2。
3.1總體架構設計系統(tǒng)總體架構設計如圖3所示。
圖3 總體架構設計
重點用能企業(yè)登錄系統(tǒng)將數(shù)據(jù)按要求進行上報,政府管理人員查看企業(yè)上報的能源數(shù)據(jù),并可以對這些數(shù)據(jù)進行統(tǒng)計分析,生成報表,對特殊情況可以及時得到了解,時刻監(jiān)控到企業(yè)的能源使用情況,企業(yè)上報的數(shù)據(jù)統(tǒng)一存放到系統(tǒng)綜合數(shù)據(jù)庫中。
3.2系統(tǒng)核心功能設計與實現(xiàn)
(1)企業(yè)用戶登錄
企業(yè)用戶在登錄頁輸入用戶名和密碼,點擊登錄,進入系統(tǒng)主界面。根據(jù)不同的權限獲得不同的功能模塊,實現(xiàn)代碼下:
User user=User.currentUser();
IEmp loyee emp loyee=userService.getEmp loyee(user.getId());
AuthorityGroup authorityGroup=null;
if(employee!=null){
authorityGroup=authorityGroupService.get-ModuleIdsByUserId(employee.getId());
user.setEmpId(employee.getId());
user.setEmpName(employee.getEmpName());
IDepartment dept=employee.getDepartment();
if(dept!=null){
user.setDeptId(dept.getId());
user.setDeptCode(dept.getCode());
user.setDeptName(dept.getDeptName());
user.setType(dept.getType());
user.setLevel(dept.getLevel());
user.setLoginDate(new Date());
}
}else{
authorityGroup=authorityGroupService.load (AuthorityGroup.SUPER_PERMGROUP_ID);
user.setEmpId(user.getId());
user.setEmpName(user.getUsername());
}
if(authorityGroup==null){
authorityGroup=authorityGroupService.load (AuthorityGroup.DEFAULT_PERMGROUP_ID);
}
//模塊ids
String moduleIdList=authorityGroup.getModuleI-dList();
user.setModuleGroupId(authorityGroup.getId());
user.setModuleIdList(moduleIdList);
//用戶存在
FlexContext.getFlexSession().setAttribute("user",user);
if(moduleIdList==null){
return null;
}
String[]moduleIds=moduleIdList.substring(1).split (";");
String purviewList=authorityGroup.getPurviewList();
//55->,1,2,3,4,
Map<Integer,String>purviewMap=new TreeMap<Integer,String>();
//輔助用
Map<Integer,String>purviewMap2=new TreeMap<Integer,String>();
String rangList=authorityGroup.getRangList();
//55->,1,2,3,4,
Map<Integer,String>rangMap=new TreeMap<Integer,String>();
//輔助用
Map<Integer,String>rangMap2=new TreeMap<Integer,String>();
if(purviewList!=null){
generateMap(purviewList,purviewMap2);
}
if(rangList!=null){
generateMap(rangList,rangMap2);
}
for(Stringmodule:moduleIds){
IntegermoduleI=Integer.parseInt(module);
//如查有些沒有設置具體權限的,默認為空,默認為有全部權限
purviewMap.put(moduleI,purviewMap2.get (moduleI));
rangMap.put(moduleI,rangMap2.get(moduleI));
}
FlexContext.getFlexSession().setAttribute("purview Map",purviewMap);
FlexContext.getFlexSession().setAttribute(" rangMap",rangMap);
Map<String,Object>map=new TreeMap<String, Object>();
map.put("purviewMap",purviewMap);
map.put("rangMap",rangMap);
map.put("user",user);
returnmap;
(2)能源數(shù)據(jù)填報
進入系統(tǒng)在左邊導航欄選擇“企業(yè)能源數(shù)據(jù)填報”,再點擊“企業(yè)能源數(shù)據(jù)填報”進入能源數(shù)據(jù)填選擇界面,在報表名稱下拉列表選擇“基本情況表”,在一月份的操作列點擊“編輯”,進入如圖4所示填報界面。
填報相應信息,點擊“保存”進行提交。提交完成后關閉當前頁面,返回之前的頁面刷新,可以看到一月份的報表狀態(tài)為“已填報”,此時仍可以進行編輯和查看,點擊“編輯”可進入進行修改操作,而“查看”不能進行修改操作;如果確認填報無誤,便可點擊“確認提交”。
圖4 能源數(shù)據(jù)填報頁面
(3)能源數(shù)據(jù)查詢
在左邊導航欄點擊能源綜合查詢的“綜合查詢”,進入數(shù)據(jù)查詢界面,該界面可以按期間、行業(yè)、地州以及不同類型進行分析企業(yè)的用能情況。例如:分析2011 年1月份到3月份,增加值能耗表,所有烏魯木齊市“煤炭”、“電力”和“其他”企業(yè)的用能情況,點擊“按行業(yè)分”或“按地州分”可查出如圖5所示,實現(xiàn)代碼如下:
String hql="select p.powerTable."+col
+".codeName,p.powerTable."+col
+".id,avg(benQiValue),avg(shangQi-Value)from Power1_1 as p where p.powerTable.year="+year;
if(monthBegin>0&&monthEnd>0)
hql+="and(p.powerTable.month between"+ monthBegin+"and"+monthEnd+")";
hql+="and p.code='"+leiXin+
"'and p.powerTable.dept.id in(select id from Department as d where d.hangYe.id in"+ StringUtils.idStrToIds(hangYeIds)+
"and d.diShi.id in"+ StringUtils.idStrToIds(diShiIds)+
")group by p.powerTable." +col+".codeName,p.powerTable."+col+".id";
List<Object[]>res=getEntityDao().getSession(). createQuery(hql).list();
Map<Integer,List<Object[]>>map=new HashMap<Integer,List<Object[]>>();
if(xianIds!=""){
String hql2="select p.powerTable.diShi.id,p. powerTable.xian.codeName,p.powerTable.xian.id,avg(benQi-Value),avg(shangQiValue)from Power1_1 as p where p.powerTable.year="+year;
if(monthBegin>0&&monthEnd>0)
hql2+="and(p.powerTable.month between"+monthBegin+"and"+monthEnd+")";
hql2+="and p.code='"+leiXin+
"'and p.powerTable.dept.id in(select id from Department as d where d.hangYe.id in"+ StringUtils.idStrToIds(hangYeIds)+
"and d.xian.id in"+StringUtils. idStrToIds(xianIds)+
")group by p.powerTable.diShi.id, p.powerTable.xian.codeName,p.powerTable.xian.id";
List<Object[]>resXian=getEntityDao().get-Session().createQuery(hql2).list();
for(Object[]objects:resXian){
Integer diShiId=(Integer)objects[0];
List<Object[]>ss=map.get(diShiId);
if(ss==null){
ss=new ArrayList<Object[]>();
}
ss.add(objects);
map.put(diShiId,ss);
}
}
List<Map<String,Object>>maps=new ArrayList<Map<String,Object>>();
for(Object[]obj:res){
Map<String,Object>m=new HashMap<String,Object>();
m.put("theName",obj[0]);
m.put("qiJian",obj[2]);
m.put("tongQi",obj[3]);
maps.add(m);
if(xian Ids!=""){
Integer diShiId=(Integer)obj[1];
List<Object[]>dires=map.get(diShiId);
if(dires==null)continue;
for(Object[]oo:dires){
Map<String,Object>m1=new HashMap<String,Object>();
m1.put("theName","#"+oo[1]);
m1.put("qiJian",oo[3]);
m1.put("tongQi",oo[4]);
maps.add(m1);
}
}
}
return maps;
圖5 能源數(shù)據(jù)分析界面
為了監(jiān)控國家能源的使用情況,開發(fā)能源監(jiān)控系統(tǒng)很有必要,本文采用了Flex技術并結合了優(yōu)秀的后臺技術,在進行開發(fā)之前,采用了面向對象的思想進行系統(tǒng)分析與設計,構建了系統(tǒng)的需求模型和基本模型。目前系統(tǒng)已經(jīng)完成開發(fā),并投入到了使用。系統(tǒng)的研發(fā)和使用,響應了國家的節(jié)能減排號召,也為能源的可持續(xù)發(fā)展做出一定的貢獻。
[1]王偉軍,孫晶.Web2.0的研究與應用綜述[J].情報科學.2007,25(12):1907~1913
[2]謝佶蕓.基于Flex的企業(yè)級富客戶端系統(tǒng)的研究與設計[D].浙江大學計算機學院浙江大學,2010
[3]陳顯軍.基于Flex的RIA應用與研究[D].電子科技大學,2007
[4]尹金發(fā).基于Flex和J2EE技術的RIA系統(tǒng)的設計與實現(xiàn)[D].西南交通大學,2008
[5]周磊,王書懷,邢建春,李決龍,楊啟亮.AOP技術在管理信息系統(tǒng)中的應用研究[J].計算機應用與軟件,2012,29(6):189~195
[6]王昆.Spring框架下Web查詢性能優(yōu)化研究[D].西南交通大學,2009
[7]杜玲玲.基于Hibernate框架的數(shù)據(jù)持久化應用開發(fā)[J].微計算機信息,2008(6)
[8]劉玲.基于Spring MVC的旅游電子商務平臺構建[D].復旦大學,2009
[9]印桂生,王宇華.基于本體的需求模型到UML模型轉換方法[J].哈爾濱工程大學學報,2012,33(6):735~740
[10]陳娟.基于UML的面向對象的系統(tǒng)分析與設計[D].武漢理工大學,2005.
Energy;Flex;Object-Oriented;Model
Design and Im p lementation of the Energy Monitoring and Management System Based on Flex
LIPing,CAOWei
(School of Computer Science and Technology,Xinjiang Normal University,Urumqi 830054)
With the increase of the national energy use,there makes large reductions in energy.In order to monitor the usage of the energy and specify for energy utilization,presents the construction of energymonitoring and management system based on Flex technology.Uses the advanced front framework and the popular background frame to develop the system.Before developing the system,constructs the system model by using the ideas of the objected-oriented analysis and design.The research on the energy monitoring and management system can make the government concerns the usage of the energy.Also,the system can alarm the improper and excessive use of the energy, which can supply the decision support for the governmentand can save the energy to themost degree.
1007-1423(2015)15-0071-07
10.3969/j.issn.1007-1423.2015.15.018
李萍(1989-),女,湖南株洲人,碩士研究生,助教,研究方向為自然語言處理
曹衛(wèi)(1986-),女,湖北隨州人,碩士研究生,助教,研究方向為自然語言處理
2015-04-09
2015-05-11