電力營(yíng)銷(xiāo)繳費(fèi)通知程序設(shè)計(jì)與實(shí)踐
時(shí)間:2022-07-03 10:31:04
導(dǎo)語(yǔ):電力營(yíng)銷(xiāo)繳費(fèi)通知程序設(shè)計(jì)與實(shí)踐一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢(xún)客服老師,歡迎參考。
一、概述
隨著智能電網(wǎng)建設(shè)的不斷推進(jìn),很多小區(qū)安裝了預(yù)付費(fèi)智能電表。這種電表極大的方便了電力公司電費(fèi)收繳工作,減輕了工作量,減少了欠費(fèi)。但由于這種電表當(dāng)用戶(hù)購(gòu)電量小于一定額度時(shí)會(huì)自動(dòng)斷電,這給普通用戶(hù)帶來(lái)了很大的不便,極端情況下,突然斷電會(huì)中斷用戶(hù)正在進(jìn)行的工作,給用戶(hù)帶來(lái)?yè)p失。雖然在一些省市電力公司中,采取通過(guò)短信方式提醒用戶(hù)及時(shí)繳費(fèi)[1,2]。但在更多的電力公司,還沒(méi)有實(shí)現(xiàn)此項(xiàng)功能,或者此項(xiàng)功能不夠人性化,不能有效的提醒用戶(hù)剩余電量及可用時(shí)間。經(jīng)常發(fā)生的情況是,在晚上8、9點(diǎn)鐘的時(shí)候,突然斷電,使用戶(hù)正在進(jìn)行的工作由于斷電而終止,這不僅會(huì)給用戶(hù)帶來(lái)很大的損失,而且嚴(yán)重影響了電力公司的企業(yè)形象,因此迫切需要一種方便而有效的方式告知用戶(hù)的剩余電量并估算剩余電量的預(yù)計(jì)使用時(shí)間,從而方便用戶(hù)合理安排繳費(fèi)時(shí)間,也彰顯電力公司的人性化服務(wù)。電子郵件是現(xiàn)代社會(huì)中人與人之間進(jìn)行聯(lián)系的一種快捷方式,很多人都有每天收取一次以上電子郵件的習(xí)慣。Oracle數(shù)據(jù)庫(kù)在電力系統(tǒng)中有著廣泛的應(yīng)用,基于Oracle定時(shí)執(zhí)行任務(wù)和PL/SQL支持發(fā)送電子郵件的特征,利用系統(tǒng)空閑時(shí)間為用戶(hù)自動(dòng)發(fā)送剩余電量及預(yù)測(cè)使用時(shí)間,可以有效地提醒用戶(hù)及時(shí)繳費(fèi),避免出現(xiàn)斷電的情況;同時(shí),系統(tǒng)完全在數(shù)據(jù)庫(kù)服務(wù)器端完成,無(wú)需重新開(kāi)發(fā)和部署新的應(yīng)用系統(tǒng)。綜上所述,基于數(shù)據(jù)庫(kù)服務(wù)器的用戶(hù)剩余電量提醒及使用時(shí)間預(yù)測(cè)系統(tǒng)是一種可行和方便實(shí)施的方案。
二、系統(tǒng)設(shè)計(jì)
(一)數(shù)據(jù)結(jié)構(gòu)
為了盡量減少系統(tǒng)改造工作,同時(shí)考慮開(kāi)發(fā)一個(gè)新系統(tǒng)的工作量及維護(hù)難度,我們提出了基于數(shù)據(jù)庫(kù)服務(wù)器端編程實(shí)現(xiàn)的技術(shù)方案,無(wú)需修改現(xiàn)有應(yīng)用系統(tǒng),通過(guò)在數(shù)據(jù)庫(kù)服務(wù)器端創(chuàng)建一系列自動(dòng)執(zhí)行的任務(wù)自動(dòng)完成此功能,無(wú)需或只需很少的維護(hù)工作。在一般用電信息采集系統(tǒng)中,至少包括用戶(hù)用電信息的兩個(gè)關(guān)系表,一個(gè)是流水記錄表,另一個(gè)是用戶(hù)的繳費(fèi)表,表的結(jié)構(gòu)大概如下:流水表記錄每隔15分鐘或更多時(shí)間用戶(hù)的用電數(shù)據(jù),一般是通過(guò)定時(shí)采集用戶(hù)智能電表的數(shù)據(jù),是一個(gè)歷史記錄表;繳費(fèi)表記錄用戶(hù)的剩余電量及購(gòu)買(mǎi)電量信息。兩表之間通過(guò)用戶(hù)編號(hào)進(jìn)行關(guān)聯(lián)。
(二)剩余電量使用時(shí)間預(yù)測(cè)
電網(wǎng)短期負(fù)荷預(yù)測(cè)是保證電網(wǎng)安全穩(wěn)定經(jīng)濟(jì)運(yùn)行的一項(xiàng)重要的基礎(chǔ)性工作,是合理安排電網(wǎng)開(kāi)機(jī)方式、電力電量平衡的重要依據(jù)。同時(shí),有效的電力短期負(fù)荷預(yù)測(cè)也是實(shí)現(xiàn)實(shí)時(shí)電價(jià)的基礎(chǔ)。電力短期負(fù)荷預(yù)測(cè)通常是指1小時(shí)或24小時(shí)的日負(fù)荷預(yù)測(cè)或168小時(shí)的周負(fù)荷預(yù)測(cè),本文主要預(yù)測(cè)的是時(shí)或日平均負(fù)荷,對(duì)于短期負(fù)荷預(yù)測(cè),一般要求具有較高的準(zhǔn)確性和能夠?qū)崟r(shí)預(yù)測(cè)。為了幫助用戶(hù)合理安排繳費(fèi)時(shí)間,系統(tǒng)需要告知用戶(hù)剩余電量的預(yù)計(jì)使用時(shí)間,這里需要使用電力負(fù)荷預(yù)測(cè)技術(shù)?;谟脩?hù)的歷史數(shù)據(jù),為用戶(hù)提供三個(gè)層次的用電量預(yù)測(cè):剩余電量是否夠下一個(gè)月使用;是否夠未來(lái)五天使用;是否夠未來(lái)一天使用。電力負(fù)荷預(yù)測(cè)技術(shù)有多種[3],這里為了提高系統(tǒng)的執(zhí)行效率,采用歷史數(shù)據(jù)取平均值的預(yù)測(cè)方法。具體方法如下:假設(shè)某月或某天的歷史用電量為:P1,P2,…,Pn,則當(dāng)月或當(dāng)天的用電量可以估計(jì)為,歷史上同期用電量的平均值:Pn+1=(P1+P2+…+Pn)/n(1)其中,P1,P2,…,Pn為歷史同期用電量,Pn+1為預(yù)測(cè)用電量,n為歷史數(shù)據(jù)的個(gè)數(shù)。實(shí)踐證明,當(dāng)歷史數(shù)據(jù)量較大時(shí),預(yù)測(cè)方式較為準(zhǔn)確。
三、系統(tǒng)實(shí)現(xiàn)
(一)自動(dòng)執(zhí)行任務(wù)實(shí)現(xiàn)
在電力系統(tǒng)中,普遍采用高性能的Oracle數(shù)據(jù)庫(kù)作為數(shù)據(jù)存儲(chǔ)介質(zhì)。Oracle數(shù)據(jù)庫(kù)擁有豐富的編程功能,可以完成復(fù)雜的業(yè)務(wù)邏輯,所以我們通過(guò)自定義任務(wù)來(lái)完成。判斷剩余電量是否滿(mǎn)足下一個(gè)月使用的程序每月第一天運(yùn)行一次,實(shí)例的代碼如下:Selectsum(用電量)into總用電量from流水表whereto_char(采集時(shí)間,’mm’)=to_char(sysdate,’mm’);Select總用電量/(to_number(to_char(sysdate,’yyyy’))-to_number(to_char(min(采集時(shí)間),’yyyy’)))into本月預(yù)測(cè)電量from流水表;If本月預(yù)測(cè)電量>剩余電量then發(fā)送電子郵件;Endif;判斷用戶(hù)剩余電量是否滿(mǎn)足未來(lái)一天或5天的代碼每天運(yùn)行一次,為了不影響系統(tǒng)的日常業(yè)務(wù)處理,程序在每天晚上12點(diǎn)運(yùn)行或安排在系統(tǒng)空閑時(shí)間運(yùn)行。---獲取歷史上本天用電量合計(jì)數(shù)據(jù)Selectsum(用電量)into總用電量from流水表whereto_char(采集時(shí)間,’mm’)=to_char(sysdate,’mm’)andto_char(采集時(shí)間,’dd’)=to_char(sysdate,’dd’);selectcount(distinctto_char(采集時(shí)間,’yyyy-mm’))into總天數(shù)from流水表;if總用電量/總天數(shù)>剩余電量then發(fā)送電子郵件ElseSelectsum(用電量)into總用電量2from流水表Where(to_char(采集時(shí)間,’mm’)=to_char(sysdate+1,’mm’)andto_char(采集時(shí)間,’dd’)=to_char(sysdate+1,’dd’))or(to_char(采集時(shí)間,’mm’)=to_char(sysdate+2,’mm’)andto_char(采集時(shí)間,’dd’)=to_char(sysdate+2,’dd’))or(to_char(采集時(shí)間,’mm’)=to_char(sysdate+3,’mm’)andto_char(采集時(shí)間,’dd’)=to_char(sysdate+3,’dd’))or(to_char(采集時(shí)間,’mm’)=to_char(sysdate+4,’mm’)andto_char(采集時(shí)間,’dd’)=to_char(sysdate+4,’dd’));if(總用電量2+總用電量)/(總天數(shù))>剩余電量then發(fā)送電子郵件endif;Endif;通過(guò)調(diào)用Oracle的dbms_job包中的存儲(chǔ)過(guò)程,將任務(wù)加入到任務(wù)隊(duì)列中,存儲(chǔ)過(guò)程的聲明如下:dbms_job.submit(joboutbinary_integer,whatinarchar2,next_dateindate,intervalinvarchar2,no_parseinboolean)其中:job:輸出變量,是此任務(wù)在任務(wù)隊(duì)列中的編號(hào);what:執(zhí)行的任務(wù)的名稱(chēng)及其輸入?yún)?shù);next_date:任務(wù)執(zhí)行的時(shí)間;interval:任務(wù)執(zhí)行的時(shí)間間隔。在Oracle8i以后的數(shù)據(jù)庫(kù)中引入了UTL_SMTP包(SMTP代表SimpleMailTransferProtocol簡(jiǎn)單郵件傳送協(xié)議,使用TCP端口25在客戶(hù)機(jī)和服務(wù)器之間建立通信聯(lián)絡(luò)),使開(kāi)發(fā)者能夠從數(shù)據(jù)庫(kù)發(fā)送電子郵件。
(二)系統(tǒng)優(yōu)化
在流水表中存儲(chǔ)的數(shù)據(jù)量很大,基于這樣的大表進(jìn)行統(tǒng)計(jì)計(jì)算,效率較低,為了提高統(tǒng)計(jì)計(jì)算的效率,見(jiàn)兩個(gè)統(tǒng)計(jì)表,一個(gè)是月度統(tǒng)計(jì)表,一個(gè)是天統(tǒng)計(jì)表,分表記錄用戶(hù)每月的歷史用電量和每天歷史用電量,這樣在預(yù)測(cè)用戶(hù)下一階段電力需求的時(shí)候可以通過(guò)統(tǒng)計(jì)表獲取。
四、結(jié)論
本文探討了在智能電網(wǎng)建設(shè)中,隨著智能電表的普及,通過(guò)數(shù)據(jù)庫(kù)服務(wù)器的定時(shí)任務(wù)執(zhí)行功能,為用戶(hù)提供多層次的剩余電量使用時(shí)間預(yù)測(cè)功能,幫助用戶(hù)及時(shí)了解自己的剩余電量及預(yù)計(jì)使用時(shí)間,從而方便用戶(hù)及時(shí)繳費(fèi),避免出現(xiàn)突然斷電的情況,也體現(xiàn)了供電公司的社會(huì)責(zé)任。