callrecordform.pas

来自「一个电力企业的后台管理程序」· PAS 代码 · 共 299 行

PAS
299
字号
unit CallRecordForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Spin, ComCtrls, StdCtrls, fcButton, fcImgBtn, fcShapeBtn, ExtCtrls;

type
  TFrm_CallRep = class(TForm)
    PC_Content: TPageControl;
    TabSheet1: TTabSheet;
    Panel3: TPanel;
    Bevel1: TBevel;
    Rb_Normal: TRadioButton;
    Rb_Word: TRadioButton;
    Sb_SelfDef: TfcShapeBtn;
    Panel4: TPanel;
    Panel5: TPanel;
    Label1: TLabel;
    RB_CallIn: TRadioButton;
    RB_CallOut: TRadioButton;
    SB_SelWork: TfcShapeBtn;
    Edt_SeledWork: TEdit;
    Panel2: TPanel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    RB_ByDay: TRadioButton;
    Rb_ByMon: TRadioButton;
    DTP_CountDate: TDateTimePicker;
    Se_Year: TSpinEdit;
    Se_Mon: TSpinEdit;
    Panel1: TPanel;
    Se_Ok: TfcShapeBtn;
    Se_Cancel: TfcShapeBtn;
    Label2: TLabel;
    Label6: TLabel;
    Cb_CallSuc: TComboBox;
    Cb_OverFlow: TComboBox;
    Cb_HangUp: TComboBox;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    procedure SB_SelWorkClick(Sender: TObject);
    procedure Se_OkClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Sb_SelfDefClick(Sender: TObject);
    procedure Se_CancelClick(Sender: TObject);
    procedure RB_CallInClick(Sender: TObject);
    procedure RB_CallOutClick(Sender: TObject);
    procedure RB_ByDayClick(Sender: TObject);
    procedure Rb_ByMonClick(Sender: TObject);
  private
    { Private declarations }
   //function MakeSql: String;
   function MakeStr: String;
   function GetWorkID : String;
  public
    { Public declarations }
  end;
const
 CallInTitle = '座席工号,主叫号码,业务组,座席电话号码,呼入时间,IVR应答时间,座席应答时间,挂机时间,排队时长,呼叫成功,排队溢出,座席先挂机';
 CallOutTitle = '座席工号,被叫号码,业务组,设备ID,座席电话号码,呼出时间,用户应答时间,挂机时间,座席先挂机';
var
  Frm_CallRep: TFrm_CallRep;

implementation

uses Form_WorkSel, systemDM, pubReport, CommonFunc;

{$R *.DFM}

function TFrm_CallRep.GetWorkID: String;
var
 I: Integer;
 Str : String;
begin
 Str := '';
   for I := Low(Frm_WorkSel.m_ASelWorkID) to High(Frm_WorkSel.m_ASelWorkID) do
    begin
     if I = Low(Frm_WorkSel.m_ASelWorkID) then
      Str := 'AGENT_WORKID = ''' + Frm_WorkSel.m_ASelWorkID[I] + ''''
     else
      Str := Str + ' OR AGENT_WORKID = ''' +  Frm_WorkSel.m_ASelWorkID[I] + '''';
    end;
   Result := Str;
end;


function TFrm_CallRep.MakeStr: String;
var
 Str,SYear,SMon,SDay,SubStr : String;
begin
 Str := '';
 if Rb_ByDay.Checked then
  begin

   SYear := FormatDateTime('YYYY',Dtp_CountDate.Date);
   SMon := FormatDateTime('M',Dtp_CountDate.Date);
   SDay := FormatDateTime('D',Dtp_CountDate.Date);
   if Rb_CallIn.Checked then
    Str := Format('WHERE YEAR(CALLIN_TIME) = %S AND MONTH(CALLIN_TIME) = %S'+
                  ' AND DAY(CALLIN_TIME) = %S',[SYear,SMon,SDay]);
   if Rb_CallOut.Checked then
    Str := Format('WHERE YEAR(CALLOUT_TIME) = %S AND MONTH(CALLOUT_TIME) = %S'+
                  ' AND DAY(CALLOUT_TIME) = %S',[SYear,SMon,SDay]);
  end;
 if Rb_ByMon.Checked then
  begin
   SYear := IntToStr(Se_Year.Value);
   SMon := IntToStr(Se_Mon.Value);
   if Rb_CallIn.Checked then
    Str := Format('WHERE YEAR(CALLIN_TIME) = %S AND MONTH(CALLIN_TIME) = %S'
                  ,[SYear,SMon]);
   if Rb_CallOut.Checked then
    Str := Format('WHERE YEAR(CALLOUT_TIME) = %S AND MONTH(CALLOUT_TIME) = %S'
                  ,[SYear,SMon]);
  end;
 if Rb_CallIn.Checked then
  begin
   case Cb_CallSuc.ItemIndex of
    1: SubStr := ' AND CALLSUC_F = 1';
    2: SubStr := ' AND CALLSUC_F = 0';
   end;
   Str := Str + SubStr;
   Case Cb_OverFlow.ItemIndex of
    1: SubStr := ' AND QUEUE_OUT_F = 1';
    2: SubStr := ' AND QUEUE_OUT_F = 0';
   end;
   Str := Str + SubStr;
   case Cb_HangUp.ItemIndex of
    1: SubStr := ' AND AGENT_HANGUP_F = 1';
    2: SubStr := ' AND AGENT_HANGUP_F = 0';
   end;
   Str := Str + SubStr;
  end;
 if Rb_CallOut.Checked then
  begin
   case Cb_HangUp.ItemIndex of
    1: SubStr := ' AND AGENT_HANGUP_F = 1';
    2: SubStr := ' AND AGENT_HANGUP_F = 0';
   end;
  end;
 if Edt_SeledWork.Text <> '' then
  begin
   SubStr := GetWorkId;
   Str := Str + ' AND (' + SubStr + ')';
  end; 
 if Rb_CallIn.Checked then
  begin
   SubStr := 'SELECT AGENT_WORKID,CALLING_NU'+
             'MBER,OPERATION_GRP,AGENT_NUMBER'+
             ',CALLIN_TIME,IVR_RESPONSE_TIME,A'+
             'GENT_RESPONSE_TIME,HANGUP_TIME,QU'+
             'EUE_TIMELENGTH,CALLSUC_F,QUEUE_OUT'+
             '_F,AGENT_HANGUP_F FROM CALL_IN_BILL ';
   Str := SubStr + Str;
  end;
 if Rb_CallOut.Checked then
  begin
   SubStr := 'SELECT AGENT_WORKID,CALLED_NUMBER,O'+
             'PERATION_GRP,DEVICE_ID,AGENT_NUMBER'+
             ',CALLOUT_TIME,USER_REPONSE_TIME,HAN'+
             'GUP_TIME,AGENT_HANGUP_F FROM CALL_OUT_BILL ';
   Str := SubStr + Str;
  end;
 Result := Str;
end;

procedure TFrm_CallRep.SB_SelWorkClick(Sender: TObject);
var
 I: Integer;
begin
//   .ShowModal;

  Frm_WorkSel.ShowModal;
//  begin
   for I := Low(Frm_WorkSel.m_ASelWorkID) to High(Frm_WorkSel.m_ASelWorkID) do
    begin
     if I = Low(Frm_WorkSel.m_ASelWorkID)then
      Edt_SeledWork.Text := Frm_WorkSel.m_ASelWorkID[I]
     else
      Edt_SeledWork.Text := Edt_SeledWork.Text + ',' + Frm_WorkSel.m_ASelWorkID[I];
    end;
//  end;
end;

procedure TFrm_CallRep.Se_OkClick(Sender: TObject);
//var
// Str : String;
begin
 if Rb_Normal.Checked then
  begin
   if Rb_CallIn.Checked then
    PreviewReport('CallInRep',MakeStr,'','','座席呼入详单统计');
   if Rb_CallOut.Checked then
    PreviewReport('CallOutRep',MakeStr,'','','座席呼出详单统计');
  end;
 if Rb_Word.Checked then
  begin
   if Rb_CallIn.Checked then
    MakeWordReport(SysDm.WReport,MakeStr,CallInTitle,'座席呼入详单统计');
   if Rb_CallOut.Checked then
    MakeWordReport(SysDm.WReport,MakeStr,CallOutTitle,'座席呼出详单统计');
  end;

end;

procedure TFrm_CallRep.FormCreate(Sender: TObject);
begin
 Frm_WorkSel := TFrm_WorkSel.Create(Self);
 Cb_HangUp.ItemIndex := 0;
 Cb_CallSuc.ItemIndex := 0;
 Cb_OverFlow.ItemIndex := 0;
 DTP_CountDate.Date := Date;
 Se_Year.Value := StrToInt(FormatDateTime('YYYY',Date));
 Se_Mon.Value := StrToInt(FormatDateTime('M',Date));
end;

procedure TFrm_CallRep.Sb_SelfDefClick(Sender: TObject);
begin
 if Rb_CallIn.Checked then
  DesignReport('CallInRep',MakeStr,'','','座席呼入详单统计');
 if Rb_CallOut.Checked then
  DesignReport('CallOutRep',MakeStr,'','','座席呼出详单统计');
end;

procedure TFrm_CallRep.Se_CancelClick(Sender: TObject);
begin
 Close;
end;

procedure TFrm_CallRep.RB_CallInClick(Sender: TObject);
begin
 if Rb_CallIn.Checked then
  begin
   Cb_CallSuc.Enabled := True;
   Cb_HangUp.Enabled := True;
   Cb_OverFlow.Enabled := True;
  end;
 if Rb_CallOut.Checked then
  begin
   Cb_CallSuc.Enabled := False;
   Cb_HangUp.Enabled := True;
   Cb_OverFlow.Enabled := False;
  end;
end;

procedure TFrm_CallRep.RB_CallOutClick(Sender: TObject);
begin
 if Rb_CallIn.Checked then
  begin
   Cb_CallSuc.Enabled := True;
   Cb_HangUp.Enabled := True;
   Cb_OverFlow.Enabled := True;
  end;
 if Rb_CallOut.Checked then
  begin
   Cb_CallSuc.Enabled := False;
   Cb_HangUp.Enabled := True;
   Cb_OverFlow.Enabled := False;
  end;
end;

procedure TFrm_CallRep.RB_ByDayClick(Sender: TObject);
begin
 if Rb_ByDay.Checked then
  begin
   Dtp_CountDate.Enabled := True;
   Se_Year.Enabled := False;
   Se_Mon.Enabled := False;
  end;
 if Rb_ByMon.Checked then
  begin
   Se_Year.Enabled := True;
   Se_Mon.Enabled := True;
   Dtp_CountDate.Enabled := False;
  end;
end;

procedure TFrm_CallRep.Rb_ByMonClick(Sender: TObject);
begin
 if Rb_ByDay.Checked then
  begin
   Dtp_CountDate.Enabled := True;
   Se_Year.Enabled := False;
   Se_Mon.Enabled := False;
  end;
 if Rb_ByMon.Checked then
  begin
   Se_Year.Enabled := True;
   Se_Mon.Enabled := True;
   Dtp_CountDate.Enabled := False;
  end;
end;

end.

⌨️ 快捷键说明

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