李 萍,曹 衛(wèi)(新疆師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,烏魯木齊830054)
基于Flex的能源監(jiān)測(cè)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
李萍,曹衛(wèi)
(新疆師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,烏魯木齊830054)
隨著國(guó)家能源使用的增加,能源大量減少,為了監(jiān)控能源的使用情況以及規(guī)范能源的合理利用,提出構(gòu)建基于Flex技術(shù)的能源監(jiān)控管理系統(tǒng)。該系統(tǒng)采用互聯(lián)網(wǎng)先進(jìn)的前端框架結(jié)合當(dāng)前流行的后臺(tái)框架進(jìn)行開(kāi)發(fā),在系統(tǒng)開(kāi)發(fā)前期采用面向?qū)ο蟮姆治雠c設(shè)計(jì)的思想,構(gòu)建系統(tǒng)的模型。能源監(jiān)測(cè)系統(tǒng)的研發(fā)能讓政府時(shí)刻關(guān)注到國(guó)家能源的使用情況,對(duì)過(guò)量使用及不當(dāng)使用及時(shí)報(bào)警,為政府提供決策支持,在很大程度上能夠節(jié)約能源。
能源;Flex;面向?qū)ο?;模?/p>
新疆師范大學(xué)優(yōu)秀青年教師科研啟動(dòng)基金項(xiàng)目(No.XJNU201420)
國(guó)家要制定能源政策、加強(qiáng)能源宏觀管理、提升節(jié)能效果,需要大量詳盡的能源基礎(chǔ)數(shù)據(jù),而要獲得這些數(shù)據(jù)還需要與耗能企業(yè)進(jìn)行信息交互,能源綜合管理信息平臺(tái)就是利用計(jì)算機(jī)技術(shù)與互聯(lián)網(wǎng)技術(shù)來(lái)實(shí)現(xiàn)政府的這一需求。因此,提出了搭建基于Flex的能源監(jiān)測(cè)管理系統(tǒng)。平臺(tái)提供的主要功能有:企業(yè)能源數(shù)據(jù)網(wǎng)上填報(bào)、能源圖表分析、能源數(shù)據(jù)綜合查詢(xún)、能源項(xiàng)目管理、企業(yè)能源管理、企業(yè)能源審計(jì)、新聞發(fā)布等功能。
隨著Web技術(shù)的發(fā)展和Web 2.0[1]應(yīng)用的普及,富客戶(hù)端技術(shù)逐漸進(jìn)入了人們的視野[2]。Flex就是一個(gè)典型的富客戶(hù)端技術(shù),F(xiàn)lex技術(shù)是由Macromedia公司推出的富客戶(hù)端技術(shù),具有豐富的前端組件。Flex框架是基于組件的開(kāi)發(fā)框架,開(kāi)發(fā)完成后可生成SWF文件,并且能在Adobe Flash Player上運(yùn)行查看效果,是一種豐富互聯(lián)網(wǎng)的應(yīng)用程序[3]。通過(guò)Flex技術(shù),開(kāi)發(fā)人員可高效地開(kāi)發(fā)出來(lái)豐富漂亮的前端界面,為開(kāi)發(fā)人員節(jié)省大量的時(shí)間和精力。Flex技術(shù)支持跨平臺(tái)并且支持對(duì)系統(tǒng)外觀進(jìn)行自定義,與系統(tǒng)后臺(tái)的交互方法很多。Flex應(yīng)用程序框架由MXML、ActionScript及Flex類(lèi)庫(kù)構(gòu)成。用Flex構(gòu)建的Web應(yīng)用程序能夠有效地將桌面軟件的強(qiáng)交互和豐富內(nèi)容與Web的廣度結(jié)合在一起[4]。在系統(tǒng)實(shí)現(xiàn)時(shí),主要基于Flex的富客戶(hù)端實(shí)現(xiàn),前臺(tái)使用的框架有Flex,blaseDS用于與后臺(tái)交互,parsley用于前臺(tái)事件、Aop[5]等,后臺(tái)使用的框架是Spring[6]、Hibernate[7],使用的開(kāi)發(fā)模式是SpringMVC[8]。
2.1能源監(jiān)測(cè)管理系統(tǒng)的需求模型
根據(jù)調(diào)研以及對(duì)用戶(hù)進(jìn)行需求分析,自治區(qū)工業(yè)能源監(jiān)測(cè)管理系統(tǒng)主要涵蓋:
(1)用戶(hù)注冊(cè)登錄。企業(yè)用戶(hù)注冊(cè)和登錄,政府用戶(hù)登錄,企業(yè)用戶(hù)的注冊(cè)信息需要政府用戶(hù)的審核。
(2)系統(tǒng)設(shè)置。企業(yè)用戶(hù)和政府用戶(hù)對(duì)個(gè)人的信息包括密碼修改,政府用戶(hù)可以對(duì)系統(tǒng)賬號(hào)進(jìn)行管理、對(duì)部門(mén)信息進(jìn)行管理、對(duì)員工進(jìn)行管理等。
(3)企業(yè)能源數(shù)據(jù)填報(bào)。企業(yè)用戶(hù)對(duì)企業(yè)的能源數(shù)據(jù)相關(guān)信息進(jìn)行填報(bào),其中包括基本情況數(shù)據(jù),能源消費(fèi)結(jié)構(gòu)、能源實(shí)物平衡、單位產(chǎn)品綜合能耗指標(biāo)數(shù)據(jù),產(chǎn)值能耗變化因素,節(jié)能目標(biāo)完成情況,節(jié)能目標(biāo)責(zé)任自評(píng)價(jià)考核,主要能耗設(shè)備狀況,合理用能?chē)?guó)家標(biāo)準(zhǔn)執(zhí)行情況,規(guī)劃期內(nèi)節(jié)能技術(shù)改造項(xiàng)目,節(jié)能項(xiàng)目變更情況。
(4)能源綜合數(shù)據(jù)統(tǒng)計(jì)分析。系統(tǒng)通過(guò)對(duì)能耗情況、消費(fèi)結(jié)構(gòu)、單耗指標(biāo)計(jì)算、節(jié)能量等數(shù)據(jù)進(jìn)行統(tǒng)計(jì)匯總分析,可自動(dòng)生成某段時(shí)間(可定義)監(jiān)管區(qū)域內(nèi)相關(guān)行業(yè)總體用能情況的分析報(bào)告,為政府督查全市重點(diǎn)耗能單位節(jié)能降耗指標(biāo)完成情況,科學(xué)制定節(jié)能監(jiān)管決策提供多方位、可視化的數(shù)據(jù)信息查詢(xún)和決策支持服務(wù)。
(5)基本操作。政府用戶(hù)對(duì)企業(yè)注冊(cè)信息進(jìn)行審批,設(shè)置企業(yè)報(bào)表填報(bào)時(shí)間,對(duì)企業(yè)能源指標(biāo)進(jìn)行定義,對(duì)公司信息進(jìn)行管理。
通過(guò)對(duì)系統(tǒng)進(jìn)行分析構(gòu)建了系統(tǒng)的需求模型[9],需求模型如圖1。
圖1 系統(tǒng)需求模型
針對(duì)需求模型中的用況,本文給出描述,用況描述中包括很多內(nèi)容,本節(jié)主要是給出用況描述中的主要事件流。
(1)注冊(cè)。企業(yè)端相關(guān)操作員進(jìn)入系統(tǒng)主界面,點(diǎn)擊“注冊(cè)”按鈕,進(jìn)入注冊(cè)界面,填寫(xiě)完相應(yīng)的注冊(cè)信息,并點(diǎn)擊“注冊(cè)”按鈕提交注冊(cè)信息。提交信息后等待政府端的審批,政府端審批通過(guò)后會(huì)發(fā)郵件(發(fā)送郵件到所填寫(xiě)的E-mail)通知企業(yè),審批通過(guò)后方可登錄系統(tǒng)進(jìn)行填報(bào)。
(2)登錄。進(jìn)入系統(tǒng)主界面,輸入用戶(hù)名、密碼,點(diǎn)擊“登錄”,進(jìn)入系統(tǒng)主界面。
(3)個(gè)人信息修改。用戶(hù)進(jìn)入系統(tǒng),在左邊導(dǎo)航欄選擇“系統(tǒng)設(shè)置”,再點(diǎn)擊“個(gè)人信息”進(jìn)入個(gè)人信息修改界面,填寫(xiě)要修改的信息,點(diǎn)擊保存。
(4)密碼修改。用戶(hù)進(jìn)入系統(tǒng)在左邊導(dǎo)航欄選擇“系統(tǒng)設(shè)置”,再點(diǎn)擊“修改密碼”進(jìn)入密碼修改頁(yè)面。
(5)能源數(shù)據(jù)填報(bào)。進(jìn)入系統(tǒng)在左邊導(dǎo)航欄選擇“企業(yè)能源數(shù)據(jù)填報(bào)”,再點(diǎn)擊“企業(yè)能源數(shù)據(jù)填報(bào)”進(jìn)入能源數(shù)據(jù)填報(bào)界面,選擇要填報(bào)的數(shù)據(jù)的年份、月份和數(shù)據(jù)類(lèi)型,填報(bào)相應(yīng)信息,點(diǎn)擊“保存”進(jìn)行提交。提交完成后關(guān)閉當(dāng)前頁(yè)面,返回之前的頁(yè)面刷新,可以看到一月份的報(bào)表狀態(tài)為“已填報(bào)”,此時(shí)仍可以進(jìn)行編輯和查看,點(diǎn)擊“編輯”可進(jìn)入進(jìn)行修改操作,而“查看”不能進(jìn)行修改操作;如果確認(rèn)填報(bào)無(wú)誤,便可點(diǎn)擊“確認(rèn)提交”。
(6)能源數(shù)據(jù)統(tǒng)計(jì)分析。在左邊導(dǎo)航欄點(diǎn)擊能源綜合查詢(xún)的“綜合查詢(xún)”,進(jìn)入能源統(tǒng)計(jì)分析界面,該界面可以按期間、行業(yè)、地州以及不同類(lèi)型進(jìn)行分析企業(yè)的用能情況。例如:這里分析2011年1月份到3月份,增加值能耗表,所有烏魯木齊市“煤炭”、“電力”和“其他”企業(yè)的用能情況,點(diǎn)擊“按行業(yè)分”或“按地州分”可得到不同的統(tǒng)計(jì)分析圖。
(7)注冊(cè)信息審批。在左邊導(dǎo)航欄選擇“政府基本操作”,點(diǎn)擊“企業(yè)注冊(cè)審批”進(jìn)入注冊(cè)審批界面,這里會(huì)顯示當(dāng)前已經(jīng)進(jìn)行注冊(cè)但是沒(méi)有通過(guò)審批的企業(yè),通過(guò)審核后可以進(jìn)行選擇然后點(diǎn)擊右上角的“審核通過(guò)”按鈕即可完成對(duì)企業(yè)的審批。
(8)能源填報(bào)期間設(shè)置。點(diǎn)擊“企業(yè)報(bào)表填報(bào)期間設(shè)置”進(jìn)入能源填報(bào)時(shí)間設(shè)置界面,雙擊當(dāng)前已經(jīng)定義的年份可以查看或修改已定義的期間。點(diǎn)擊右上角的“增加”按鈕,可增加新年份并進(jìn)行期間設(shè)置。
(9)能源指標(biāo)定義。點(diǎn)擊“企業(yè)能源指標(biāo)定義”進(jìn)入界面,界面顯示了已經(jīng)定義的能源指標(biāo),可以根據(jù)需要點(diǎn)擊下方的綠色小加號(hào)按鈕來(lái)添加一條新記錄。填寫(xiě)能源指標(biāo)信息,點(diǎn)擊保存。
(10)部門(mén)管理。點(diǎn)擊“部門(mén)管理”進(jìn)入部門(mén)管理界面,界面顯示了當(dāng)前所有部門(mén),可以在右邊的操作列對(duì)相關(guān)的部門(mén)信息進(jìn)行增刪改查操作。
(11)員工管理。點(diǎn)擊“員工管理”進(jìn)入管理界面,界面顯示了當(dāng)前系統(tǒng)的所有操作員信息,可以根據(jù)需要在下方的操作欄對(duì)相關(guān)操作員信息進(jìn)行增刪改查。
圖2 系統(tǒng)的基本模型圖
2.2能源監(jiān)測(cè)管理系統(tǒng)的基本模型
系統(tǒng)的類(lèi)圖是面向?qū)ο笙到y(tǒng)分析時(shí)的一個(gè)基本模型[10],基本模型是建立在需求模型的基礎(chǔ)上,同時(shí)是整個(gè)系統(tǒng)的面向?qū)ο蠓治龊驮O(shè)計(jì)的一個(gè)核心模型。能源監(jiān)測(cè)管理系統(tǒng)的基本模型如圖2。
3.1總體架構(gòu)設(shè)計(jì)系統(tǒng)總體架構(gòu)設(shè)計(jì)如圖3所示。
圖3 總體架構(gòu)設(shè)計(jì)
重點(diǎn)用能企業(yè)登錄系統(tǒng)將數(shù)據(jù)按要求進(jìn)行上報(bào),政府管理人員查看企業(yè)上報(bào)的能源數(shù)據(jù),并可以對(duì)這些數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,生成報(bào)表,對(duì)特殊情況可以及時(shí)得到了解,時(shí)刻監(jiān)控到企業(yè)的能源使用情況,企業(yè)上報(bào)的數(shù)據(jù)統(tǒng)一存放到系統(tǒng)綜合數(shù)據(jù)庫(kù)中。
3.2系統(tǒng)核心功能設(shè)計(jì)與實(shí)現(xiàn)
(1)企業(yè)用戶(hù)登錄
企業(yè)用戶(hù)在登錄頁(yè)輸入用戶(hù)名和密碼,點(diǎn)擊登錄,進(jìn)入系統(tǒng)主界面。根據(jù)不同的權(quán)限獲得不同的功能模塊,實(shí)現(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);
//用戶(hù)存在
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);
//如查有些沒(méi)有設(shè)置具體權(quán)限的,默認(rèn)為空,默認(rèn)為有全部權(quán)限
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ù)填報(bào)
進(jìn)入系統(tǒng)在左邊導(dǎo)航欄選擇“企業(yè)能源數(shù)據(jù)填報(bào)”,再點(diǎn)擊“企業(yè)能源數(shù)據(jù)填報(bào)”進(jìn)入能源數(shù)據(jù)填選擇界面,在報(bào)表名稱(chēng)下拉列表選擇“基本情況表”,在一月份的操作列點(diǎn)擊“編輯”,進(jìn)入如圖4所示填報(bào)界面。
填報(bào)相應(yīng)信息,點(diǎn)擊“保存”進(jìn)行提交。提交完成后關(guān)閉當(dāng)前頁(yè)面,返回之前的頁(yè)面刷新,可以看到一月份的報(bào)表狀態(tài)為“已填報(bào)”,此時(shí)仍可以進(jìn)行編輯和查看,點(diǎn)擊“編輯”可進(jìn)入進(jìn)行修改操作,而“查看”不能進(jìn)行修改操作;如果確認(rèn)填報(bào)無(wú)誤,便可點(diǎn)擊“確認(rèn)提交”。
圖4 能源數(shù)據(jù)填報(bào)頁(yè)面
(3)能源數(shù)據(jù)查詢(xún)
在左邊導(dǎo)航欄點(diǎn)擊能源綜合查詢(xún)的“綜合查詢(xún)”,進(jìn)入數(shù)據(jù)查詢(xún)界面,該界面可以按期間、行業(yè)、地州以及不同類(lèi)型進(jìn)行分析企業(yè)的用能情況。例如:分析2011 年1月份到3月份,增加值能耗表,所有烏魯木齊市“煤炭”、“電力”和“其他”企業(yè)的用能情況,點(diǎn)擊“按行業(yè)分”或“按地州分”可查出如圖5所示,實(shí)現(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)控國(guó)家能源的使用情況,開(kāi)發(fā)能源監(jiān)控系統(tǒng)很有必要,本文采用了Flex技術(shù)并結(jié)合了優(yōu)秀的后臺(tái)技術(shù),在進(jìn)行開(kāi)發(fā)之前,采用了面向?qū)ο蟮乃枷脒M(jìn)行系統(tǒng)分析與設(shè)計(jì),構(gòu)建了系統(tǒng)的需求模型和基本模型。目前系統(tǒng)已經(jīng)完成開(kāi)發(fā),并投入到了使用。系統(tǒng)的研發(fā)和使用,響應(yīng)了國(guó)家的節(jié)能減排號(hào)召,也為能源的可持續(xù)發(fā)展做出一定的貢獻(xiàn)。
[1]王偉軍,孫晶.Web2.0的研究與應(yīng)用綜述[J].情報(bào)科學(xué).2007,25(12):1907~1913
[2]謝佶蕓.基于Flex的企業(yè)級(jí)富客戶(hù)端系統(tǒng)的研究與設(shè)計(jì)[D].浙江大學(xué)計(jì)算機(jī)學(xué)院浙江大學(xué),2010
[3]陳顯軍.基于Flex的RIA應(yīng)用與研究[D].電子科技大學(xué),2007
[4]尹金發(fā).基于Flex和J2EE技術(shù)的RIA系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西南交通大學(xué),2008
[5]周磊,王書(shū)懷,邢建春,李決龍,楊啟亮.AOP技術(shù)在管理信息系統(tǒng)中的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用與軟件,2012,29(6):189~195
[6]王昆.Spring框架下Web查詢(xún)性能優(yōu)化研究[D].西南交通大學(xué),2009
[7]杜玲玲.基于Hibernate框架的數(shù)據(jù)持久化應(yīng)用開(kāi)發(fā)[J].微計(jì)算機(jī)信息,2008(6)
[8]劉玲.基于Spring MVC的旅游電子商務(wù)平臺(tái)構(gòu)建[D].復(fù)旦大學(xué),2009
[9]印桂生,王宇華.基于本體的需求模型到UML模型轉(zhuǎn)換方法[J].哈爾濱工程大學(xué)學(xué)報(bào),2012,33(6):735~740
[10]陳娟.基于UML的面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì)[D].武漢理工大學(xué),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-),女,湖南株洲人,碩士研究生,助教,研究方向?yàn)樽匀徽Z(yǔ)言處理
曹衛(wèi)(1986-),女,湖北隨州人,碩士研究生,助教,研究方向?yàn)樽匀徽Z(yǔ)言處理
2015-04-09
2015-05-11