Browse Source

Merge branch 'master' of http://192.168.1.12:3000/maixinrong/measure

builder 8 years ago
parent
commit
82660ddd05
6 changed files with 151 additions and 49 deletions
  1. 5 0
      Units/ConfigDoc.pas
  2. 21 2
      Units/Connections.pas
  3. 12 1
      Units/Globals.pas
  4. 5 0
      Units/PhaseData.pas
  5. 86 41
      Units/ProjectData.pas
  6. 22 5
      Units/UtilMethods.pas

+ 5 - 0
Units/ConfigDoc.pas

@@ -22,6 +22,7 @@ type
     FAutoSaveInterval: Integer;
     FOverRangeType: Integer;
     FExcelWithMis: Boolean;
+    FIsLog: Boolean;
 
     procedure LoadSectionOfUnitList;
     procedure LoadSectionOfStdFile;
@@ -48,6 +49,8 @@ type
     property StandardXmLib: string read GetStandardXmLib write SetStandardXmLib;
     property StandardGclLib: string read GetStandardGclLib write SetStandardGclLib;
 
+    property IsLog: Boolean read FIsLog;
+
     // Path
     property AuditPath: string read GetAuditPath;
     property OutputPath: string read GetOutputPath;
@@ -105,6 +108,8 @@ begin
   LoadSectionOfStdFile;
   LoadSectionOfPath;
   LoadSectionOfOptions;
+
+  FIsLog := FIniFile.ReadBool('Other', 'IsLog', True);
 end;
 
 procedure TConfigInfo.LoadSectionOfOptions;

+ 21 - 2
Units/Connections.pas

@@ -19,6 +19,8 @@ type
     FFileName: string;
     FOrgFile: string;
     function GetConnection: TADOConnection; virtual; abstract;
+  protected
+    procedure AppendLog(const ALog: string);
   public
     procedure Open(const AFileName: string); virtual; abstract;
     procedure Save; virtual; abstract;
@@ -99,7 +101,7 @@ type
 implementation
 
 uses
-  CompactDB, TransFile, UtilMethods;
+  CompactDB, TransFile, UtilMethods, Globals;
 
 const
   MDBOrgHead: array [0..15] of Byte =
@@ -219,6 +221,7 @@ procedure TEncryptConnection.Encrypt;
 var
   sTempFile, sEncryptFile: string;
 begin
+  AppendLog('Save File-E');
   if (FFileName <> '') and FileExists(FFileName) then
   begin
     sTempFile := GetTempFileName;
@@ -228,15 +231,23 @@ begin
       AutoEncryptFile(sTempFile, sEncryptFile);
       RefreshFileHead;
       WriteAndAddHead(sEncryptFile);
+      AppendLog('Check File-E');
       if CheckFileValid(sEncryptFile) then
-        CopyFile(PChar(sEncryptFile), PChar(FOrgFile), False)
+      begin
+        AppendLog('Check File-E --> Pass');
+        CopyFile(PChar(sEncryptFile), PChar(FOrgFile), False);
+      end
       else
+      begin
+        AppendLog('Check File-E --> Error');
         Abort;
+      end;
     finally
       DeleteFile(PChar(sTempFile));
       DeleteFile(PChar(sEncryptFile));
     end;
   end;
+  AppendLog('Save File-E --> End');
 end;
 
 destructor TEncryptConnection.Destroy;
@@ -405,8 +416,10 @@ end;
 
 procedure TEncryptConnection.Save;
 begin
+  AppendLog('Save File');
   RecoverFileHead(FFileName);
   Encrypt;
+  AppendLog('Save File --> End');
 end;
 
 procedure TEncryptConnection.RefreshFileHead;
@@ -509,6 +522,12 @@ end;
 
 { TConnection }
 
+procedure TConnection.AppendLog(const ALog: string);
+begin
+  if SupportManager.ConfigInfo.IsLog then
+    MeasureLog.AppendLogTo(ALog);
+end;
+
 procedure TConnection.Close;
 begin
   Connection.Close;

+ 12 - 1
Units/Globals.pas

@@ -2,7 +2,7 @@ unit Globals;
 
 interface
 
-uses OpenProjectManager, SupportUnit, ProjectManagerDm, ReportManager;
+uses OpenProjectManager, SupportUnit, ProjectManagerDm, ReportManager, LogUtils;
 
 function OpenProjectManager: TOpenProjectManager;
 
@@ -16,6 +16,8 @@ function ReportConfig: TReportConfig;
 
 function MemoryReportManager: TMemoryReportManager;
 
+function MeasureLog: TLogUtils;
+
 implementation
 
 var
@@ -25,6 +27,7 @@ var
   _ReportTemplateManager: TTemplateManager;
   _ReportConfig: TReportConfig;
   _MemoryReportManager: TMemoryReportManager;
+  _MeasureLog: TLogUtils;
 
 function OpenProjectManager: TOpenProjectManager;
 begin
@@ -68,6 +71,13 @@ begin
   Result := _MemoryReportManager;
 end;
 
+function MeasureLog: TLogUtils;
+begin
+  if not Assigned(_MeasureLog) then
+    _MeasureLog := TLogUtils.Create;
+  Result := _MeasureLog;
+end;
+
 initialization
 
 finalization
@@ -77,4 +87,5 @@ finalization
   _ReportTemplateManager.Free;
   _ReportConfig.Free;
   _MemoryReportManager.Free;
+  _MeasureLog.Free;
 end.

+ 5 - 0
Units/PhaseData.pas

@@ -179,6 +179,8 @@ end;
 
 procedure TPhaseData.Save;
 begin
+  TProjectData(FProjectData).AppendProjectLog('Save Phase Data');
+
   UpdateSysProgress(30, '正在保存数据');
   FPhaseProperty.Save;
   UpdateSysProgress(80, '正在保存数据');
@@ -190,6 +192,9 @@ begin
   UpdateSysProgress(180, '正在保存数据');
   FConnection.Save;
   UpdateSysProgress(200, '就绪');
+
+  TProjectData(FProjectData).AppendProjectLog('Save Phase Data --> End');
+  
 end;
 
 procedure TPhaseData.SimpleOpen(const AProjectName: string);

+ 86 - 41
Units/ProjectData.pas

@@ -87,6 +87,8 @@ type
     procedure CloseAllData;
     procedure OpenAllData;
 
+    procedure InnerSave;
+
     function GetMainFileName: string;
     procedure SetPhaseIndex(const Value: Integer);
     function GetTempPath: string;
@@ -108,6 +110,7 @@ type
 
     procedure Open(AProjRec: TsdDataRecord);
     procedure Save;
+    function SaveAs(const AFileName: string): Boolean;
     procedure SaveAndCheck;
     //----------------------- Begin ---后台打开 ------------------------
     {总说明:
@@ -195,6 +198,8 @@ type
     function CheckPhaseFileComplete: Boolean;
     function CheckLastPhaseFileExist: Boolean;
 
+    procedure AppendProjectLog(const ALog: string);
+
     function CurUserIsOwner: Boolean;
     function CurUserIsAuthor: Boolean;
     function CurUserIsChecker: Boolean;
@@ -496,46 +501,9 @@ end;
 procedure TProjectData.Save;
 begin
   try
-    UpdateSysProgress(5, '正在保存数据');
-    SaveLastestPhaseMainData;
-    UpdateSysProgress(10, '正在保存数据');
-    if (FPhaseData.Active) and (FPhaseIndex = ProjProperties.PhaseCount) then
-      FPhaseData.Save;
-    UpdateSysProgress(40, '正在保存数据');
-    FMainListData.Save;
-    FDealPaymentData.Save;
-    UpdateSysProgress(50, '正在保存数据');
-    FStaffData.Save;
-    UpdateSysProgress(60, '正在保存数据');
-    FBGLData.Save;
-    UpdateSysProgress(70, '正在保存数据');
-    FDealBillsData.Save;
-    UpdateSysProgress(80, '正在保存数据');
-
-    FProjectGLData.Save;
-    FDetailGLData.Save;
-    UpdateSysProgress(100, '正在保存数据');
-
-    FBillsCompileData.ReLockBaseData;
-    UpdateSysProgress(110, '正在保存数据');
-    FBillsData.Save;
-    UpdateSysProgress(165, '正在保存数据');
-
-    FOtherMeasureOnceData.Save;
-    FOtherMeasurePhaseData.Save;
-    UpdateSysProgress(170, '正在保存数据');
-
-    FProjProperties.AuditCompany := FStaffData.FinalStaffCompany;
-    FProjProperties.Save;
-    UpdateSysProgress(180, '正在保存数据');
-    FConnection.Save;
-    UpdateSysProgress(190, '正在保存数据');
-
+    InnerSave;
     ZipFolder(FTempFolder, FileName);
     SaveInfoToManager;
-    UpdateSysProgress(200, '就绪');
-
-    ProjectManager.AddSaveTenderBackup(FProjectID);
   except
     ErrorMessage('保存数据出错。请重试,或联系纵横客服:企业QQ:800003850   客服热线:(0756)3850888');
   end;
@@ -1156,7 +1124,9 @@ procedure TProjectData.CopyPhaseData;
   end;
 
 begin
-  Save;
+  AppendProjectLog('Display Reports Prepare');
+
+  InnerSave;
   ClearReportCacheData;
   CopyCacheReportsData;
   if FPhaseIndex > 0 then
@@ -1167,6 +1137,8 @@ begin
     SaveCloudInfo;
   if _IsDebugView then
     SaveDebugFile('Report.dat');
+
+  MeasureLog.AppendLogTo('Display Reports Prepare --> Pass');
 end;
 
 procedure TProjectData.ExecuteSql(const ASql: string);
@@ -2130,16 +2102,24 @@ procedure TProjectData.SaveAndCheck;
   end;
 
 begin
+  AppendProjectLog('Save Project');
   Save;
   if not CheckFile(FFileName) then
   begin
+    AppendProjectLog('Save Project --> Error');
     Save;
     if not CheckFile(FFileName) then
     begin
+      AppendProjectLog('Save Project --> Error-2');
       ErrorMessage('保存数据出错。请重试,或联系纵横客服:企业QQ:800003850   客服热线:(0756)3850888');
       Abort;
-    end;
-  end;
+    end
+    else
+      ProjectManager.AddSaveTenderBackup(FProjectID);
+  end
+  else
+    ProjectManager.AddSaveTenderBackup(FProjectID);
+  AppendProjectLog('Save Project --> End');
 end;
 
 function TProjectData.CheckLastPhaseFileExist: Boolean;
@@ -2150,4 +2130,69 @@ begin
     Result := True;
 end;
 
+procedure TProjectData.InnerSave;
+begin
+  try
+    AppendProjectLog('Save Main Data');
+
+    UpdateSysProgress(5, '正在保存数据');
+    SaveLastestPhaseMainData;
+    UpdateSysProgress(10, '正在保存数据');
+    if (FPhaseData.Active) and (FPhaseIndex = ProjProperties.PhaseCount) then
+      FPhaseData.Save;
+    UpdateSysProgress(40, '正在保存数据');
+    FMainListData.Save;
+    FDealPaymentData.Save;
+    UpdateSysProgress(50, '正在保存数据');
+    FStaffData.Save;
+    UpdateSysProgress(60, '正在保存数据');
+    FBGLData.Save;
+    UpdateSysProgress(70, '正在保存数据');
+    FDealBillsData.Save;
+    UpdateSysProgress(80, '正在保存数据');
+
+    FProjectGLData.Save;
+    FDetailGLData.Save;
+    UpdateSysProgress(100, '正在保存数据');
+
+    FBillsCompileData.ReLockBaseData;
+    UpdateSysProgress(110, '正在保存数据');
+    FBillsData.Save;
+    UpdateSysProgress(165, '正在保存数据');
+
+    FOtherMeasureOnceData.Save;
+    FOtherMeasurePhaseData.Save;
+    UpdateSysProgress(170, '正在保存数据');
+
+    FProjProperties.AuditCompany := FStaffData.FinalStaffCompany;
+    FProjProperties.Save;
+    UpdateSysProgress(180, '正在保存数据');
+
+    FConnection.Save;
+    UpdateSysProgress(200, '就绪');
+
+    AppendProjectLog('Save Main Data --> End');
+  except
+    ErrorMessage('保存数据出错。请重试,或联系纵横客服:企业QQ:800003850   客服热线:(0756)3850888');
+    AppendProjectLog('Save Main Data --> Error');
+  end;
+end;
+
+function TProjectData.SaveAs(const AFileName: string): Boolean;
+begin
+  try
+    InnerSave;
+    ZipFolder(FTempFolder, AFileName);
+    SaveInfoToManager;
+  except
+    Result := False;
+  end;
+end;
+
+procedure TProjectData.AppendProjectLog(const ALog: string);
+begin
+  if SupportManager.ConfigInfo.IsLog then
+    MeasureLog.AppendLogTo(Format('%s: %s', [FProjectName, ALog]));
+end;
+
 end.

+ 22 - 5
Units/UtilMethods.pas

@@ -96,7 +96,7 @@ type
   procedure EndUpdateWindow(AHandle: THandle);
 
   {Zip}
-  procedure ZipFolder(AFileFolder, AFileName: string);
+  procedure ZipFolder(AFileFolder, AFileName: string; ACheckMode: Integer = 0);
   function UnZipFile(AFileName, AFileFolder: string): Boolean;
 
   {Copy By Stream}
@@ -922,22 +922,34 @@ begin
 end;
 
 {Zip}
-function ZipComplete(const AFileName: string): Boolean;
+function ZipComplete(const AFileName: string; ACheckMode: Integer): Boolean;
+const
+  i4k = 4096;
 var
   iSize1, iSize2: Integer;
 begin
   iSize1 := FileSizeByName(AFileName);
   Sleep(200);
   iSize2 := FileSizeByName(AFileName);
-  Result := iSize1 = iSize2;
+  Result := (iSize1 = iSize2);
+  if ACheckMode = 0 then
+    Result := Result and (iSize1 > i4k);
 end;
 
-procedure ZipFolder(AFileFolder, AFileName: string);
+procedure ZipFolder(AFileFolder, AFileName: string; ACheckMode: Integer = 0);
+
+  procedure AppendLog(const ALog: string);
+  begin
+    if SupportManager.ConfigInfo.IsLog then
+      MeasureLog.AppendLogTo(ALog);
+  end;
+
 var
   sTempFile: string;
   vZip: TVCLZip;
   iCount: Integer;
 begin
+  AppendLog('Zip');
   sTempFile := GetTempFileName;
   vZip := TVCLZip.Create(nil);
   iCount := 0;
@@ -951,12 +963,17 @@ begin
     //vZip.RecreateDirs := True;
     vZip.FilesList.Add(AFileFolder + '\*.*');
     vZip.Zip;
-    while not ZipComplete(sTempFile) and (iCount < 10) do
+    AppendLog(Format('Check Zip File, FileSize - %d', [FileSizeByName(sTempFile)]));
+    while not ZipComplete(sTempFile, ACheckMode) and (iCount < 10) do
     begin
       Sleep(200);
       Inc(iCount);
+      AppendLog(Format('Check Zip File - %d, FileSize - %d', [iCount + 1, FileSizeByName(sTempFile)]));
     end;
+    AppendLog('Check Zip File --> Pass');
     CopyFileOrFolder(sTempFile, AFileName);
+
+    AppendLog('Zip --> Pass');
   finally
     vZip.Free;
     if FileExists(sTempFile) then