⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frm_normalstatic.pas

📁 一个电力企业的后台管理程序
💻 PAS
字号:
unit Frm_NormalStatic;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Buttons, ExtCtrls;

type
  TForm_NormalStatic = class(TForm)
    Panel2: TPanel;
    btn_Stat: TSpeedButton;
    btn_Close: TSpeedButton;
    btn_AddNote: TSpeedButton;
    GroupBox3: TGroupBox;
    Label1: TLabel;
    Dt_Seg2Time: TDateTimePicker;
    Dt_Seg2Date: TDateTimePicker;
    Dt_Seg1Time: TDateTimePicker;
    Dt_Seg1Date: TDateTimePicker;
    Rb_Normal: TRadioButton;
    Rb_Word: TRadioButton;
    procedure FormCreate(Sender: TObject);
    procedure btn_CloseClick(Sender: TObject);
    procedure btn_StatClick(Sender: TObject);
  private
    { Private declarations }
    //故障报修  合计数   完成数  超时完成数  及时完成数  未完成数
    procedure CalClientElecOut(const Dt_Seg1,Dt_Seg2:TDateTime;
              var iSendNum,iFinishNum,iOverTimeFinishNum,iInTimeFinishNum,iNoFinishNum:integer);
    //用户投诉  合计数   完成数  超时完成数  及时完成数  未完成数
    procedure CalClientComp(const Dt_Seg1,Dt_Seg2:TDateTime;
              var iSendNum,iFinishNum,iOverTimeFinishNum,iInTimeFinishNum,iNoFinishNum:integer);
    //咨询登记  合计数   完成数  超时完成数  及时完成数  未完成数
    procedure CalClientAsk(const Dt_Seg1,Dt_Seg2:TDateTime;
              var iSendNum,iFinishNum,iOverTimeFinishNum,iInTimeFinishNum,iNoFinishNum:integer);
    //用电申请  合计数   完成数  超时完成数  及时完成数  未完成数
    procedure CalElecApply(const Dt_Seg1,Dt_Seg2:TDateTime;
              var iSendNum,iFinishNum,iOverTimeFinishNum,iInTimeFinishNum,iNoFinishNum:integer);
  public
    { Public declarations }
  end;

var
  Form_NormalStatic: TForm_NormalStatic;

implementation

uses SystemDM;

{$R *.DFM}

procedure TForm_NormalStatic.FormCreate(Sender: TObject);
begin
  Dt_Seg2Date.Date:=date;
  Dt_Seg1Date.Date:=date-7;
  Dt_Seg1Time.Time :=EnCodeTime(0,0,0,0);
  Dt_Seg2Time.Time :=EnCodeTime(0,0,0,0);
end;

procedure TForm_NormalStatic.btn_CloseClick(Sender: TObject);
begin
  close;
end;

procedure TForm_NormalStatic.btn_StatClick(Sender: TObject);
var
  Dt_Seg1,Dt_Seg2:TDateTime;
  GZBX_iSendNum, GZBX_iFinishNum, GZBX_iOverTimeFinishNum,GZBX_iInTimeFinishNum, GZBX_iNoFinishNum:integer;
  YHTS_iSendNum, YHTS_iFinishNum, YHTS_iOverTimeFinishNum,YHTS_iInTimeFinishNum, YHTS_iNoFinishNum:integer;
  ZXDJ_iSendNum, ZXDJ_iFinishNum, ZXDJ_iOverTimeFinishNum,ZXDJ_iInTimeFinishNum, ZXDJ_iNoFinishNum:integer;
  YDSQ_iSendNum, YDSQ_iFinishNum, YDSQ_iOverTimeFinishNum,YDSQ_iInTimeFinishNum, YDSQ_iNoFinishNum:integer;
begin
  Dt_Seg1:=Dt_Seg1Date.Date;
  Replacetime(Dt_Seg1,Dt_Seg1Time.time);
  Dt_Seg2:=Dt_Seg2Date.Date;
  Replacetime(Dt_Seg2,Dt_Seg2Time.time);

  CalClientElecOut(Dt_Seg1,Dt_Seg2,GZBX_iSendNum, GZBX_iFinishNum, GZBX_iOverTimeFinishNum,GZBX_iInTimeFinishNum, GZBX_iNoFinishNum);
  CalClientComp(Dt_Seg1,Dt_Seg2,YHTS_iSendNum, YHTS_iFinishNum, YHTS_iOverTimeFinishNum,YHTS_iInTimeFinishNum, YHTS_iNoFinishNum);
  CalClientAsk(Dt_Seg1,Dt_Seg2,ZXDJ_iSendNum, ZXDJ_iFinishNum, ZXDJ_iOverTimeFinishNum,ZXDJ_iInTimeFinishNum, ZXDJ_iNoFinishNum);
  CalElecApply(Dt_Seg1,Dt_Seg2,YDSQ_iSendNum, YDSQ_iFinishNum, YDSQ_iOverTimeFinishNum,YDSQ_iInTimeFinishNum, YDSQ_iNoFinishNum);

  SysDM.WorddotRpt.Title.Clear ;
  if Rb_Word.Checked then
  begin
    with SysDM.WorddotRpt.Title do
    begin
      Add(Format('DateSeg=统计范围:%s',[FormatDateTime('YYYY"-"MM"-"DD',Dt_Seg1)+' 至 '+FormatDateTime('YYYY"-"MM"-"DD',Dt_Seg2)]));
      Add(Format('gzbx_notnormal=%d',[GZBX_iNoFinishNum]));
      Add(Format('gzbx_normal=%d',[GZBX_iInTimeFinishNum]));
      Add(Format('gzbx_chaonormal=%d',[GZBX_iOverTimeFinishNum]));
      Add(Format('gzbx_totalnormal=%d',[GZBX_iSendNum]));
      Add(Format('yhts_notnormal=%d',[YHTS_iNoFinishNum]));
      Add(Format('yhts_normal=%d',[YHTS_iInTimeFinishNum]));
      Add(Format('yhts_chaonormal=%d',[YHTS_iOverTimeFinishNum]));
      Add(Format('yhts_totalnormal=%d',[YHTS_iSendNum]));
      Add(Format('zxdj_notnormal=%d',[ZXDJ_iNoFinishNum]));
      Add(Format('zxdj_normal=%d',[ZXDJ_iInTimeFinishNum]));
      Add(Format('zxdj_chaonormal=%d',[ZXDJ_iOverTimeFinishNum]));
      Add(Format('zxdj_totalnormal=%d',[ZXDJ_iSendNum]));
      Add(Format('ydsq_notnormal=%d',[YDSQ_iNoFinishNum]));
      Add(Format('ydsq_normal=%d',[YDSQ_iInTimeFinishNum]));
      Add(Format('ydsq_chaonormal=%d',[YDSQ_iOverTimeFinishNum]));
      Add(Format('ydsq_totalnormal=%d',[YDSQ_iSendNum]));
      Add(Format('PrintDate=%s',[FormatDateTime('YYYY"-"MM"-"DD',NOW)]));
    end;
    SysDm.WorddotRpt.MasterDataset := nil;
    SysDm.WorddotRpt.Preview := True;
    SysDm.WorddotRpt.TemplateName := ExtractFilePath(Application.ExeName)+'HcWorkRep.dot';
    SysDm.WorddotRpt.Execute;
  end;
  close;
end;

procedure TForm_NormalStatic.CalClientElecOut(const Dt_Seg1,
  Dt_Seg2: TDateTime; var iSendNum, iFinishNum, iOverTimeFinishNum,
  iInTimeFinishNum, iNoFinishNum: integer);
begin
  with SysDM.Qr_Temp do
  begin
    //合计数
    close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from ClientElecOut');
    Sql.Add('where zzsbsj>=:A and zzsbsj<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iSendNum:=Fieldbyname('RecCount').AsInteger;
    //完成数
    close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from ClientElecOut');
    Sql.Add('where State=2 and zzsbsj>=:A and zzsbsj<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iFinishNum:=Fieldbyname('RecCount').AsInteger;
    //超期完成数
    close;
    Sql.Clear ;
    Sql.Add('Select ');
    Sql.Add('(select Count(*) from ClientElecOut where IsOverTime=1 and state=2 and datediff(minute,zzflsj,pcsj)>45 and zzsbsj>=:A and zzsbsj<=:B)+');
    Sql.Add('(select Count(*) from ClientElecOut where IsOverTime=2 and state=2 and datediff(minute,zzflsj,pcsj)>90 and zzsbsj>=:A and zzsbsj<=:B)+');
    Sql.Add('(select Count(*) from ClientElecOut where IsOverTime=3 and state=2 and datediff(hour,zzflsj,pcsj)>2 and zzsbsj>=:A and zzsbsj<=:B) ');
    Sql.Add('RecCount');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iOverTimeFinishNum:=Fieldbyname('RecCount').AsInteger;
    //超期未完成
    {close;
    Sql.Clear ;
    Sql.Add('Select ');
    Sql.Add('(select Count(*) from ClientElecOut where IsOverTime=1 and state=0 and datediff(minute,zzflsj,getdate())>45 and zzsbsj>=:A and zzsbsj<=:B)+');
    Sql.Add('(select Count(*) from ClientElecOut where IsOverTime=2 and state=0 and datediff(minute,zzflsj,getdate())>90 and zzsbsj>=:A and zzsbsj<=:B)+');
    Sql.Add('(select Count(*) from ClientElecOut where IsOverTime=3 and state=0 and datediff(hour,zzflsj,getdate())>2 and zzsbsj>=:A and zzsbsj<=:B) ');
    Sql.Add('RecCount');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iOverTimeNoFinishNum:=Fieldbyname('RecCount').AsInteger;}
    //未完成数
    iNoFinishNum:=iSendNum-iFinishNum;
    //及时完成数
    iInTimeFinishNum:=iFinishNum-iOverTimeFinishNum;
  end;
end;

procedure TForm_NormalStatic.CalClientComp(const Dt_Seg1,
  Dt_Seg2: TDateTime; var iSendNum, iFinishNum, iOverTimeFinishNum,
  iInTimeFinishNum, iNoFinishNum: integer);
begin
  with SysDM.Qr_Temp do
  begin
    //合计数
    close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from ClientComp');
    Sql.Add('where slsj>=:A and slsj<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iSendNum:=Fieldbyname('RecCount').AsInteger;
    //完成数
    close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from ClientComp');
    Sql.Add('where ((State=2) or (state=7) or(state=8) or (state=9)) and slsj>=:A and slsj<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iFinishNum:=Fieldbyname('RecCount').AsInteger;
    //超期完成数
    close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from ClientComp');
    Sql.Add('where state=2 and xdsj<fhsj and slsj>=:A and slsj<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iOverTimeFinishNum:=Fieldbyname('RecCount').AsInteger;
    //超期未完成
    {close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from ClientComp');
    Sql.Add('where state=0 and xdsj<getdate() and slsj>=:A and slsj<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iOverTimeNoFinishNum:=Fieldbyname('RecCount').AsInteger;}
    //未完成数
    iNoFinishNum:=iSendNum-iFinishNum;
    //及时完成数
    iInTimeFinishNum:=iFinishNum-iOverTimeFinishNum;
  end;
end;

procedure TForm_NormalStatic.CalClientAsk(const Dt_Seg1,
  Dt_Seg2: TDateTime; var iSendNum, iFinishNum, iOverTimeFinishNum,
  iInTimeFinishNum, iNoFinishNum: integer);
begin
  with SysDM.Qr_Temp do
  begin
    //合计数
    close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from ClientAsk');
    Sql.Add('where slsj>=:A and slsj<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iSendNum:=Fieldbyname('RecCount').AsInteger;
    //完成数
    close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from ClientAsk');
    Sql.Add('where State=2 and slsj>=:A and slsj<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iFinishNum:=Fieldbyname('RecCount').AsInteger;
    //超期完成数
    close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from ClientAsk');
    Sql.Add('where state=2 and xdsj<fhsj and slsj>=:A and slsj<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iOverTimeFinishNum:=Fieldbyname('RecCount').AsInteger;
    //超期未完成
    {close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from ClientAsk');
    Sql.Add('where state=0 and xdsj<getdate() and slsj>=:A and slsj<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iOverTimeNoFinishNum:=Fieldbyname('RecCount').AsInteger;}
    //未完成数
    iNoFinishNum:=iSendNum-iFinishNum;
    //及时完成数
    iInTimeFinishNum:=iFinishNum-iOverTimeFinishNum;
  end;
end;

procedure TForm_NormalStatic.CalElecApply(const Dt_Seg1,
  Dt_Seg2: TDateTime; var iSendNum, iFinishNum, iOverTimeFinishNum,
  iInTimeFinishNum, iNoFinishNum: integer);
begin
  with SysDM.Qr_Temp do
  begin
    //合计数
    close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from CLIENT_ELEC_APPLY');
    Sql.Add('where APPLY_DATETIME>=:A and APPLY_DATETIME<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iSendNum:=Fieldbyname('RecCount').AsInteger;
    //完成数
    close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from CLIENT_ELEC_APPLY');
    Sql.Add('where State=2 and APPLY_DATETIME>=:A and APPLY_DATETIME<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iFinishNum:=Fieldbyname('RecCount').AsInteger;
    //超期完成数
    close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from CLIENT_ELEC_APPLY');
    Sql.Add('where state=2 and LIMIT_DATETIME<FINISH_DATETIME and APPLY_DATETIME>=:A and APPLY_DATETIME<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iOverTimeFinishNum:=Fieldbyname('RecCount').AsInteger;
    //超期未完成
    {close;
    Sql.Clear ;
    Sql.Add('Select count(*) RecCount from CLIENT_ELEC_APPLY');
    Sql.Add('where state=0 and LIMIT_DATETIME<getdate() and APPLY_DATETIME>=:A and APPLY_DATETIME<=:B');
    Parambyname('A').AsDateTime:=Dt_Seg1;
    Parambyname('B').AsDateTime:=Dt_Seg2;
    Prepare;
    Open;
    iOverTimeNoFinishNum:=Fieldbyname('RecCount').AsInteger;}
    //未完成数
    iNoFinishNum:=iSendNum-iFinishNum;
    //及时完成数
    iInTimeFinishNum:=iFinishNum-iOverTimeFinishNum;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -