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 + -
显示快捷键?