能源数采系统的日报月报系统

 

        能源数采的日报月报是能源数采系统的一个后继系统,在数采系统在既定的固定或随机的时钟下,把自动化的一些智能仪表的值,像水电煤气的用量值,存入到Label 表中,这是一个很庞大的运算,用C实现的话,得用多个TIMER, 每个TIMER定时进行同间隔频率数据的读写,还得把时钟均匀分布,让同等吞吐量的数据库存取更多的数值。这些数据可应用于过程控制,也可用于大数据分析。其中日报月报就是用于ERP成本。

下面是日报月报系统的几个模块。

  1. 日报的初始化模块

CREATE OR REPLACE PROCEDURE DW.label1_csh(date1 in date,date2 in date,lock1 in varchar2) IS

/*date1是当天值,DATE2是昨天的日期,lock1是个标识,‘1’时可删除数据重算。

 

tmpVar NUMBER;

cnt1  number;

sql1  varchar(1000);

v0    number(30,6);

 

/*游标存一下日报当天的数据。

      cursor cur1

       is

       select  date_day,label_bm,label_id

       from    label1_day_report

       where   date_day = date1;

       c_row   cur1%rowtype;

BEGIN

if   lock1='1' then

  delete from label1_day_report where date_day=date1;

end if;

   tmpVar := 0;

   /* label1_area 是所有标签的编码库,其中 day_report_flag='1' 是计入日报的。

    select count(*) into cnt1 from label1_day_report where date_day=date1;

    if cnt1=0 then

         insert into label1_day_report(label_id,label_bm,date_day,parent_id,count_bz)  select label_id,label_bm,date1,parent_id,count_bz from label1_area where  day_report_flag='1' ;

    end if ;     

      --昨日末值,今日初值。

    update label1_day_report  a

   set    (a.v1_day_begin)=(select b.v1_day_end

                                     from   label1_day_report b

                                     where     to_char(a.date_DAY,'yyyy-mm-dd')=to_char(date1,'yyyy-mm-dd') and to_char(b.date_day,'yyyy-mm-dd')=to_char(date2,'yyyy-mm-dd')

                                           and a.label_bm=b.label_bm

                                           and a.label_id=b.label_id )

                                        where exists (select 1

                                         from   label1_day_report b

                                       where   to_char(a.date_DAY,'yyyy-mm-dd')=to_char(date1,'yyyy-mm-dd') and to_char(b.date_day,'yyyy-mm-dd')=to_char(date2,'yyyy-mm-dd')

                                           and a.label_bm=b.label_bm

                                           and a.label_id=b.label_id );

----游标循环,日报值依次从LABEL1中取来。

     FOR c_row in cur1 loop

        select MIN(b.v1)  into v0

                                         from      label1 b

                                          where    to_char(b.date_time1,'yyyy-mm-dd')=to_char(date1,'YYYY-MM-DD') 

                                           and b.label_bm=c_row.label_bm

                                          and b.label_id=c_row.label_id;

         update   label1_day_report 

          set               v1_day_end=v0       

                 where     date_DAY=date1 and label_bm=c_row.label_bm

                                          and  label_id=c_row.label_id;

                          end loop;

 COMMIT; 

---给取的基本库中的值加一个标志。

 label1_jbz1(date1,'1'); 

 commit;

 

    

 

  EXCEPTION

     WHEN NO_DATA_FOUND THEN

       NULL;

     WHEN OTHERS THEN

       -- Consider logging the error and then re-raise

        commit;

       

END label1_csh;

/

 

 

 

 

 

 

 

下面是一个递归的算父项的值。/

CREATE OR REPLACE function DW.label1_rb_count1(date1 in date,label_id1  in  number) return number

is

tmpVar NUMBER;

cnt1  number;

sql1  varchar(1000);

v0    number(30,6);

v3    number(30,6);

T1  number(30,6);

month1  varchar(7);

month2  varchar(7);

str1    varchar(10);

date2   date;

 

cursor cur1( f01 varchar2,parent_id1 number)

       is

       select  parent_id,label_bm,label_id,count_bz

       from    label1_area

       where   day_report_flag=f01   and parent_id=parent_id1;

     

 c_row   cur1%rowtype;

begin

select  to_char(date1,'yyyy-mm-dd') into str1 from dual;

select  to_char(add_months(date1, -1),'yyyy-mm') into month2 from dual;

T1:=0;

 FOR c_row in cur1('1',label_id1) loop

    if c_row.count_bz='1' then

       select  nvl(a.v1_day_end,0) - nvl(a.v1_day_begin,0)  into  v3 from label1_day_report  a

                                         where    to_char(a.date_day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')   

                                          and a.label_id= c_row.label_id ;

                                                   

         update   label1_day_report a  set a.V1_read=nvl(v3,0),a.v1_cnt=nvl(v3,0) 

                                       where     to_char(a.date_day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')

                                             and a.label_id= c_row.label_id ;

           

              T1:=T1+nvl(v3,0);

          v3:=label1_rb_count1(date1,c_row.label_id) ;

         

         

    end if ;

    if c_row.count_bz='2' then

        

        v3:=label1_rb_count1(date1,c_row.label_id) ;

      

    

         update label1_day_report a

         set   a.V1_cnt=v3

                                       where    to_char(a.date_day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')  

                                             and a.label_id= c_row.label_id ;

                                         

 

      

         T1:=T1+v3;

        end if;

   

    if c_row.count_bz='3' then

        

        v3:=label1_rb_count1(date1,c_row.label_id) ;

     ----如果是标志3 ,又没有子项,V1_CNT=V1END-V1BEGIN.  

    

         update label1_day_report a

         set   a.V1_cnt=v3

                                       where    to_char(a.date_day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')  

                                             and a.label_id= c_row.label_id ;

 

       

        end if;

  

   

   

                            

      end loop;

 

 

 update label1_day_report  a set a.v1_cnt=T1 

                                  where    to_char(a.date_day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')   

                                             and a.label_id= label_id1 ;

         

    return T1;

  

 

 

return T1;

end;

/

 

 

 

 

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值