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

📄 repclass.pas

📁 一个电力企业的后台管理程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit RepClass;
interface
Uses Windows, Messages, SysUtils, Classes, SubRepClass, dbtables;
Type TOpAmountRpt= Class
Private
  FDt_Curr,Dt_Addup:Tdatetime;
  Fb_OverlayCurrData,Fb_OverLayhisData:boolean;
  opD_GZBX,opD_TSJB,opD_ZXCX,opD_TDXX,opD_DFCJ,opD_XXGZ:TOpAmountDealInfo;
  opC_GZBX,opC_TSJB,opC_ZXCX,opC_TDXX,opC_DFCJ,opC_XXGZ:TOpAmountCompareInfo;//TOpCompareAmountInfo;
  M_LMonRation,M_LYearRation,M_LYeraAdRation,M_AllPercent : String;
  M_MonORation,M_TORation,M_MonSRation,M_TSRation: String;
  KeyStr : Array of Array of String;
  SubKeyStr: Array of Array of String;
  function CheckRecord(STableName: String): Boolean;
  function DeleteRec(STableName: String): Boolean;
  procedure CreateDealInfo;
  function CreateSubDealInfo(SubInfo: TOpAmountDealInfo;Qry_Insert:TQuery): Boolean;
  function CreateCompInfo:Boolean;
  function CalPercent(ComType: TOpAmountCompareInfo): Boolean;
 // function InsertDealInfo(BusiInfo: TOpAmountDealInfo;InsertQuery: TQuery): Boolean;
  function WriteTable(OpType,OpID,SCurrDate: String;IsSub: Boolean;SubNo: Integer): Boolean;
  procedure CalRation(Busin: TOpAmountDealInfo);
  function MakeComSql:String;
Public
  Function createOpDealAmountInfo:Boolean;  //创建业务处理信息
  Function createOpCompareAmountInfo:Boolean;  //创建业务比较信息
  Function printOpDealAmountRpt(reporttype:integer):boolean; //打印业务处理报表
  function MakeInsert(SCurrDate: String): Boolean;
//  function InserTable(Query: TQuery;Str: String): Boolean;
  Function printOpCompareAmountRpt(reporttype:integer):boolean;//打印比较分析报表
  //构造函数  参数:当前时间、累计时间、是否覆盖当前数据、是否覆盖历史数据
  constructor Create(Dt_Curr,Dt_AddupDate:Tdatetime;b_OverlayCurrData,b_Overlayhisdata:boolean);
end;
const
   DealTitleStr = '业务分类,本月,累计,本月,累计,本月,累计,本月,累计,本月,累计,本月,累计,本月,累计';
   CompTitleStr = '分类,本月,累计,同比上月增长率,同比去年同期增长率,同比去年累计增长率,占总数百分比';



implementation
uses SystemDM , pubReport,CommonFunc;
{ TOpAmountRpt }

function TOpAmountRpt.CalPercent(ComType: TOpAmountCompareInfo): Boolean;
begin
 Result := False;
 with ComType do
 begin
  if M_iTotalLYApNum <> 0 then
   M_LYeraAdRation := Format('%F',[(m_iTotalApNum - M_iTotalLYApNum) / M_iTotalLYApNum * 100])
  else
   M_LYeraAdRation := '去年没数据';
  if M_iTotalLMNum <> 0 then
   M_LMonRation := Format('%F',[(M_iTotalCMNum - M_iTotalLMNum) / M_iTotalLMNum * 100])
  else
   M_LMonRation := '上月没数据';
  if m_iTotalLYCMNum <> 0 then
   M_LYearRation := Format('%F',[(M_iTotalCMNum - m_iTotalLYCMNum) / m_iTotalLYCMNum * 100])
  else
   M_LYearRation := '去年没数据';
  if m_iTotalApNum <> 0 then
   M_AllPercent := Format('%F',[M_iTotalCMNum / m_iTotalApNum * 100])
  else
   M_AllPercent := '累计没数据';
 end;
end;

procedure TOpAmountRpt.CalRation(Busin: TOpAmountDealInfo);
begin
 if Busin.M_iTotalCMNum <> 0 then
  M_MonORation := Format('%F',[Busin.M_iOtAcmpCMNum / Busin.M_iTotalCMNum * 100])
 else
  M_MonORation := '0';
 if Busin.m_iTotalApNum <> 0 then
  M_TORation := Format('%F',[Busin.m_iOtAcmpApNum  / Busin.m_iTotalApNum * 100])
 else
  M_TORation := '0';
 if Busin.M_iTotalCMNum <> 0 then
  M_MonSRation := Format('%F',[Busin.M_iCmUserSatisfyNum / Busin.M_iTotalCMNum * 100])
 else
  M_MonSRation := '0';
 if Busin.m_iTotalApNum <> 0 then
  M_TSRation := Format('%F',[Busin.m_iApUserSatisfyNum / Busin.m_iTotalApNum * 100])
 else
  M_TSRation := '0';
end;

function TOpAmountRpt.CheckRecord(STableName: String): Boolean;
var
 SCurrDate,SAdDate: String;
begin
 Result := False;
 SCurrDate := FormatDateTime('YYYY-MM',FDt_Curr);
 SAdDate := FormatDateTime('YYYY-MM',Dt_Addup);
 with TQuery.Create(nil) do
 try
  Close;
  DataBaseName := SysDM.DBMain.DatabaseName;
//  if SType = '1' then
   Sql.Text := Format('SELECT * FROM %S WHERE STAT_MONTH = ''%S''',[STableName,SCurrDate]);
   //Sql.SaveToFile('c:\rep3.txt');
  //else
   //Sql.Text := Format('SELECT * FROM %S WHERE STAT_MONTH = ''%S''',[STableName,SCurrDate]);
  Open;
  if RecordCount > 0 then
   Result := True;
 finally
  Free;
 end;
end;

constructor TOpAmountRpt.Create(Dt_Curr, Dt_AddupDate: Tdatetime;
  b_OverlayCurrData, b_Overlayhisdata: boolean);
begin
 Fb_OverlayCurrData :=  b_OverlayCurrData;
 Fb_OverLayhisData :=  b_Overlayhisdata;
 FDt_Curr := Dt_Curr;
 Dt_Addup := Dt_AddUpDate;
end;

function TOpAmountRpt.CreateCompInfo: Boolean;
var
 SCurrDate : String;
 Qry_Insert: TQuery;
begin
 SCurrDate := FormatDateTime('YYYY-MM',FDt_Curr);
 Qry_Insert := TQuery.Create(nil);
 opC_GZBX := TOpAmountCompareInfo.Create(FDt_Curr,Dt_Addup,True,'A','2');
 opC_ZXCX := TOpAmountCompareInfo.Create(FDt_Curr,Dt_Addup,True,'A','1');
 opC_TSJB := TOpAmountCompareInfo.Create(FDt_Curr,Dt_Addup,True,'A','3');
 opC_TDXX := TOpAmountCompareInfo.Create(FDt_Curr,Dt_Addup,True,'A','5');
 opC_DFCJ := TOpAmountCompareInfo.Create(FDt_Curr,Dt_Addup,True,'A','6');
 opC_XXGZ := TOpAmountCompareInfo.Create(FDt_Curr,Dt_Addup,True,'A','4');
 try
  with Qry_Insert do
   begin
    Close;
    DataBaseName := SysDm.DBMain.DatabaseName;
    opC_GZBX.FillAllData;
    CalPercent(opC_GZBX);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_COMPARE_INFO VALUES '+
                   '(''2'',''A'',''%S'',:A,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                   [SCurrDate,opC_GZBX.M_iTotalCMNum,opC_GZBX.m_iTotalApNum,
                    M_LMonRation,M_LYearRation,M_LYeraAdRation,M_AllPercent]));
    opC_ZXCX.FillAllData;
    CalPercent(opC_ZXCX);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_COMPARE_INFO VALUES '+
                   '(''1'',''A'',''%S'',:A,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                   [SCurrDate,opC_ZXCX.M_iTotalCMNum,opC_ZXCX.m_iTotalApNum,
                    M_LMonRation,M_LYearRation,M_LYeraAdRation,M_AllPercent]));
    opC_TSJB.FillAllData;
    CalPercent(opC_TSJB);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_COMPARE_INFO VALUES '+
                   '(''3'',''A'',''%S'',:A,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                   [SCurrDate,opC_TSJB.M_iTotalCMNum,opC_TSJB.m_iTotalApNum,
                    M_LMonRation,M_LYearRation,M_LYeraAdRation,M_AllPercent]));
    opC_TDXX.FillAllData;
    CalPercent(opC_TDXX);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_COMPARE_INFO VALUES '+
                   '(''5'',''A'',''%S'',:A,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                   [SCurrDate,opC_TDXX.M_iTotalCMNum,opC_TDXX.m_iTotalApNum,
                    M_LMonRation,M_LYearRation,M_LYeraAdRation,M_AllPercent]));

    opC_DFCJ.FillAllData;
    CalPercent(opC_DFCJ);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_COMPARE_INFO VALUES '+
                   '(''6'',''A'',''%S'',:A,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                   [SCurrDate,opC_DFCJ.M_iTotalCMNum,opC_DFCJ.m_iTotalApNum,
                    M_LMonRation,M_LYearRation,M_LYeraAdRation,M_AllPercent]));
    opC_XXGZ.FillAllData;
    CalPercent(opC_XXGZ);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_COMPARE_INFO VALUES '+
                   '(''4'',''A'',''%S'',:A,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                   [SCurrDate,opC_XXGZ.M_iTotalCMNum,opC_XXGZ.m_iTotalApNum,
                    M_LMonRation,M_LYearRation,M_LYeraAdRation,M_AllPercent]));

    ParamByName('A').AsDate := FDt_Curr;
    ExecSql;
    Result := True;
   end;
 finally
  Qry_Insert.Free;
  opC_GZBX.Free;
  opC_ZXCX.Free;
  opC_TDXX.Free;
  opC_XXGZ.Free;
  opC_TSJB.Free;
  opC_DFCJ.Free;
 end;
end;

procedure TOpAmountRpt.CreateDealInfo;
var
 Qry_Insert: TQuery;
 SCurrDate: String;
begin
 opD_GZBX := TOpAmountDealInfo.Create(FDt_Curr,Dt_AddUp,'A','2');
 opD_ZXCX := TOpAmountDealInfo.Create(FDt_Curr,Dt_Addup,'A','1');
 opD_TSJB := TOpAmountDealInfo.Create(FDt_Curr,Dt_Addup,'A','3');
 opD_TDXX := TOpAmountDealInfo.Create(FDt_Curr,Dt_Addup,'A','5');
 opD_DFCJ := TOpAmountDealInfo.Create(FDt_Curr,Dt_Addup,'A','6');
 opD_XXGZ := TOpAmountDealInfo.Create(FDt_Curr,Dt_Addup,'A','4');
 Qry_Insert := TQuery.Create(nil);
 try
  SCurrDate := FormatDateTime('YYYY-MM',FDt_Curr);
  opD_GZBX.CalBusiSum;
  opD_ZXCX.CalBusiSum;
  opD_TSJB.CalBusiSum;
  opd_TDXX.CalBusiSum;
  opD_DFCJ.CalBusiSum;
  opD_XXGZ.CalBusiSum;
  with Qry_Insert do
   begin
    Close;
    DataBaseName := SysDm.DBMain.DatabaseName;
    CreateSubDealInfo(opD_GZBX,Qry_Insert);
    CalRation(Opd_Gzbx);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_DEAL_INFO '+
                       'VALUES (''2'',''A'',''%S'',:A,%D,%D,%D,%D,%D,%D,%D,%D,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                       [SCurrDate,opD_GZBX.M_iTotalCMNum,opD_GZBX.m_iTotalApNum,
                        opD_GZBX.M_iACMPCMNum,opD_GZBX.m_iACMPApNum,opD_GZBX.M_iNoAcmpCMNum,
                        opD_GZBX.m_iNoAcmpApNum,opD_GZBX.M_iOtAcmpCMNum,opD_GZBX.m_iOtAcmpApNum,
                        opD_GZBX.M_iCmUserSatisfyNum,opD_GZBX.m_iApUserSatisfyNum,M_MonORation,M_TORation,M_MonSRation,M_TSration
                        ]));
    CreateSubDealInfo(opD_ZXCX,Qry_Insert);
    CalRation(Opd_ZXCX);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_DEAL_INFO '+
                       'VALUES (''1'',''A'',''%S'',:A,%D,%D,%D,%D,%D,%D,%D,%D,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                       [SCurrDate,opD_ZXCX.M_iTotalCMNum,opD_ZXCX.m_iTotalApNum,
                        opD_ZXCX.M_iACMPCMNum,opD_ZXCX.m_iACMPApNum,opD_ZXCX.M_iNoAcmpCMNum,
                        opD_ZXCX.m_iNoAcmpApNum,opD_ZXCX.M_iOtAcmpCMNum,opD_ZXCX.m_iOtAcmpApNum,
                        opD_ZXCX.M_iCmUserSatisfyNum,opD_ZXCX.m_iApUserSatisfyNum,M_MonORation,M_TORation,M_MonSRation,M_TSration
                        ]));
    CreateSubDealInfo(opD_TSJB,Qry_Insert);
    CalRation(Opd_TSJB);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_DEAL_INFO '+
                       'VALUES (''3'',''A'',''%S'',:A,%D,%D,%D,%D,%D,%D,%D,%D,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                       [SCurrDate,opD_TSJB.M_iTotalCMNum,opD_TSJB.m_iTotalApNum,
                        opD_TSJB.M_iACMPCMNum,opD_TSJB.m_iACMPApNum,opD_TSJB.M_iNoAcmpCMNum,
                        opD_TSJB.m_iNoAcmpApNum,opD_TSJB.M_iOtAcmpCMNum,opD_TSJB.m_iOtAcmpApNum,
                        opD_TSJB.M_iCmUserSatisfyNum,opD_TSJB.m_iApUserSatisfyNum,M_MonORation,M_TORation,M_MonSRation,M_TSration
                        ]));
    CreateSubDealInfo(opD_TDXX,Qry_Insert);
    CalRation(Opd_TDXX);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_DEAL_INFO '+
                       'VALUES (''5'',''A'',''%S'',:A,%D,%D,%D,%D,%D,%D,%D,%D,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                       [SCurrDate,opD_TDXX.M_iTotalCMNum,opD_TDXX.m_iTotalApNum,
                        opD_TDXX.M_iACMPCMNum,opD_TDXX.m_iACMPApNum,opD_TDXX.M_iNoAcmpCMNum,
                        opD_TDXX.m_iNoAcmpApNum,opD_TDXX.M_iOtAcmpCMNum,opD_TDXX.m_iOtAcmpApNum,
                        opD_TDXX.M_iCmUserSatisfyNum,opD_TDXX.m_iApUserSatisfyNum,M_MonORation,M_TORation,M_MonSRation,M_TSration
                        ]));
    CreateSubDealInfo(opD_DFCJ,Qry_Insert);
    CalRation(Opd_DFCJ);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_DEAL_INFO '+
                       'VALUES (''6'',''A'',''%S'',:A,%D,%D,%D,%D,%D,%D,%D,%D,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                       [SCurrDate,opD_DFCJ.M_iTotalCMNum,opD_DFCJ.m_iTotalApNum,
                        opD_DFCJ.M_iACMPCMNum,opD_DFCJ.m_iACMPApNum,opD_DFCJ.M_iNoAcmpCMNum,
                        opD_DFCJ.m_iNoAcmpApNum,opD_DFCJ.M_iOtAcmpCMNum,opD_DFCJ.m_iOtAcmpApNum,
                        opD_DFCJ.M_iCmUserSatisfyNum,opD_DFCJ.m_iApUserSatisfyNum,M_MonORation,M_TORation,M_MonSRation,M_TSration
                        ]));
    CreateSubDealInfo(opD_XXGZ,Qry_Insert);
    CalRation(Opd_XXGZ);
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_DEAL_INFO '+
                       'VALUES (''4'',''A'',''%S'',:A,%D,%D,%D,%D,%D,%D,%D,%D,%D,%D,''%S'',''%S'',''%S'',''%S'')',
                       [SCurrDate,opD_XXGZ.M_iTotalCMNum,opD_XXGZ.m_iTotalApNum,
                        opD_XXGZ.M_iACMPCMNum,opD_XXGZ.m_iACMPApNum,opD_XXGZ.M_iNoAcmpCMNum,
                        opD_XXGZ.m_iNoAcmpApNum,opD_XXGZ.M_iOtAcmpCMNum,opD_XXGZ.m_iOtAcmpApNum,
                        opD_XXGZ.M_iCmUserSatisfyNum,opD_XXGZ.m_iApUserSatisfyNum,M_MonORation,M_TORation,M_MonSRation,M_TSration
                        ]));

    ParamByName('A').AsDate := FDt_Curr;
    //Sql.SaveToFile('c:\ty.ty');
    ExecSql;
   end;

 finally
  opD_GZBX.Free;
  opD_ZXCX.Free;
  opD_TDXX.Free;
  opD_XXGZ.Free;
  opD_TSJB.Free;
  opD_DFCJ.Free;
  Qry_Insert.Free;
 end;
end;

function TOpAmountRpt.createOpCompareAmountInfo: Boolean;
begin
 Result := False;
 if CheckRecord ('STAT_OPAMOUNT_COMPARE_INFO') then
  begin
   if Fb_OverLayhisData then
    begin
     DeleteRec('STAT_OPAMOUNT_COMPARE_INFO');
     CreateCompInfo;
     Result := True;
    end
   else Exit;
  end
 else
   begin
    CreateCompInfo;
    Result := True;

⌨️ 快捷键说明

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