Преглед изворни кода

1. SignOnline: Check Signed by ProjectID & PhaseNo
2. Report: forcible save past phase Data to report, keep un-save past phase data for project
3. ZJJL: change ZJJL Type, keep history without ZJJL
4. Encrypt: CheckFileValid

MaiXinRong пре 8 година
родитељ
комит
452dc16571

+ 0 - 6
DataModules/ZJJLDm.pas

@@ -93,7 +93,6 @@ type
 
     procedure Open(AConnection: TADOConnection);
     procedure Save;
-    procedure ClearHistory;
 
     procedure GenerateAll;
     procedure GenerateAllByB_Code;
@@ -757,9 +756,4 @@ begin
   end;
 end;
 
-procedure TZJJLData.ClearHistory;
-begin
-  sddHistory.DeleteAll;
-end;
-
 end.

+ 3 - 3
Forms/SignOnlineReportsFrm.pas

@@ -174,7 +174,7 @@ begin
   FTempPath := GetAppTempPath + IntToStr(AProjNode.ID) + '\';
   CreateDirectoryInDeep(FTempPath);
 
-  FPostedSignReports.LoadAllSignReports(PhPWeb.MeasureURL + 'sign/list', IntToStr(FWebTenderID), IntToStr(FSignPhase));
+  FPostedSignReports.LoadAllSignReports(PhPWeb.MeasureURL + 'sign/list', FWebTenderID, FSignPhase);
 end;
 
 procedure TSignOnlineReportsForm.LoadReportTemplates;
@@ -214,7 +214,7 @@ begin
     cbFillZero.Visible := Assigned(vTemplate);
     pnlPageControl.Visible := Assigned(vTemplate);
 
-    FPostedSignReports.LoadAllSignReports(PhPWeb.MeasureURL + 'sign/list', IntToStr(FWebTenderID), IntToStr(FSignPhase));
+    FPostedSignReports.LoadAllSignReports(PhPWeb.MeasureURL + 'sign/list', FWebTenderID, FSignPhase);
     lblAlreadyUpload.Visible := Assigned(vTemplate) and Assigned(FPostedSignReports.FindSignReport(FSignPhase, vTemplate.TemplateName));
 
     ReportTemplateManager.Current := vTemplate;
@@ -1165,7 +1165,7 @@ begin
   Result := False;
   sOrgName := AName;
   iCount := 0;
-  FPostedSignReports.LoadAllSignReports(PhPWeb.MeasureURL + 'sign/list', IntToStr(FWebTenderID), IntToStr(FSignPhase));
+  FPostedSignReports.LoadAllSignReports(PhPWeb.MeasureURL + 'sign/list', FWebTenderID, FSignPhase);
   while Assigned(FPostedSignReports.FindSignReport(FSignPhase, AName)) do
   begin
     Inc(iCount);

+ 4 - 14
Frames/ZJJLFme.pas

@@ -199,13 +199,8 @@ procedure TZJJLFrame.actnGenerateFxZJJLExecute(Sender: TObject);
 begin
   with TPhaseData(FZJJLData.PhaseData).PhaseProperty do
   begin
-    if (ZJJLType = 0) or QuestMessage('当前为“总量控制”格式, 切换至“0号台账”将情况数据并重新生成,确定要切换么?') then
-    begin
-      if ZJJLType = 1 then
-        FZJJLData.ClearHistory;
-      ZJJLType := 0;
-      GenerateZJJL;
-    end;
+    ZJJLType := 0;
+    GenerateZJJL;
   end;
 end;
 
@@ -231,13 +226,8 @@ procedure TZJJLFrame.actnGenerateGclZJJLExecute(Sender: TObject);
 begin
   with TPhaseData(FZJJLData.PhaseData).PhaseProperty do
   begin
-    if (ZJJLType = 1) or (QuestMessage('当前为“0号台账”格式, 切换至“总量控制”将情况数据并重新生成,确定要切换么?')) then
-    begin
-      if ZJJLType = 0 then
-        FZJJLData.ClearHistory;
-      ZJJLType := 1;
-      GenerateZJJL;
-    end;
+    ZJJLType := 1;
+    GenerateZJJL;
   end;
 end;
 

+ 48 - 13
Units/Connections.pas

@@ -73,6 +73,7 @@ type
     procedure DamageFileHead(AFileName: string);
     procedure RecoverFileHead(AFileName: string);
     procedure WriteAndAddHead(AFileName: string);
+    procedure RemoveHead(const AFileName: string);
     procedure ReadAndRemoveHead(AFileName: string);
 
     procedure ResetFileHead;
@@ -231,7 +232,6 @@ begin
       AutoEncryptFile(sTempFile, sEncryptFile);
       RefreshFileHead;
       WriteAndAddHead(sEncryptFile);
-      AppendLog('Check File-E');
       if CheckFileValid(sEncryptFile) then
       begin
         AppendLog('Check File-E --> Pass');
@@ -481,6 +481,7 @@ var
   sConnectFile, sTempFile: string;
   vCon: TADOConnection;
 begin
+  AppendLog('Check File-E');
   Result := False;
   try
     sConnectFile := GetTempFileName;
@@ -490,21 +491,29 @@ begin
 
     if FileExists(AFileName) then
     begin
-      CopyFileOrFolder(AFileName, sTempFile);
-      if CheckFileEncrypt(sTempFile) then
+      AppendLog('Check File Exist');
+      if CopyFileOrFolder(AFileName, sTempFile) then
       begin
-        ReadAndRemoveHead(sTempFile);
-        AutoDecryptFile(sTempFile, sConnectFile);
-      end
-      else
-        CopyFileOrFolder(sTempFile, sConnectFile);
-      RecoverFileHead(sConnectFile);
-      vCon.ConnectionString := Format(SAdoConnectStr, [sConnectFile]);
-      vCon.Open;
-      Result := True;
+        AppendLog('Copy Check File -- Pass');
+        if CheckFileEncrypt(sTempFile) then
+        begin
+          RemoveHead(sTempFile);
+          AutoDecryptFile(sTempFile, sConnectFile);
+        end
+        else
+          sConnectFile := sTempFile;
+        RecoverFileHead(sConnectFile);
+        AppendLog('prepare to Connect Check File');
+        vCon.ConnectionString := Format(SAdoConnectStr, [sConnectFile]);
+        AppendLog('Checking File');
+        vCon.Open;
+        Result := True;
+        AppendLog('File Valid');
+      end;
     end;
   finally
-    vCon.Free;
+    if Assigned(vCon) then
+      vCon.Free;
     if FileExists(sConnectFile) then
       DeleteFile(PChar(sConnectFile));
     if FileExists(sConnectFile) then
@@ -523,6 +532,32 @@ begin
   Result := Trim(FFileHead.FileVersion);
 end;
 
+procedure TEncryptConnection.RemoveHead(const AFileName: string);
+var
+  sTempFile: string;
+  FileStream, FileStreamTemp: TFileStream;
+begin
+  if FileExists(AFileName) then
+  begin
+    sTempFile := GetTempFileName;
+    FileStream := TFileStream.Create(AFileName, fmOpenRead);
+    FileStreamTemp := TFileStream.Create(sTempFile, fmCreate);
+    try
+      try
+        FileStream.Position := SizeOf(TDrawingFileHead);
+        FileStreamTemp.CopyFrom(FileStream, FileStream.Size - SizeOf(TDrawingFileHead));
+      finally
+        FileStream.Free;
+        FileStreamTemp.Free;
+      end;
+      CopyFileOrFolder(sTempFile, AFileName);
+    finally
+      if FileExists(sTempFile) then
+        DeleteFile(PChar(sTempFile));
+    end;
+  end;
+end;
+
 { TConnection }
 
 procedure TConnection.AppendLog(const ALog: string);

+ 12 - 1
Units/PhaseData.pas

@@ -51,6 +51,7 @@ type
 
     procedure Open(const AProjectName: string);
     procedure Save;
+    procedure SaveDebugFile(const AFileName: string);
     {½ö´ò¿ªÏîÄ¿ÊôÐÔ}
     procedure SimpleOpen(const AProjectName: string);
     procedure SimpleSave;
@@ -194,7 +195,6 @@ begin
   UpdateSysProgress(200, '¾ÍÐ÷');
 
   TProjectData(FProjectData).AppendProjectLog('Save Phase Data --> End');
-  
 end;
 
 procedure TPhaseData.SimpleOpen(const AProjectName: string);
@@ -331,4 +331,15 @@ begin
   FZJJLData.Open(FConnection.Connection);
 end;
 
+procedure TPhaseData.SaveDebugFile(const AFileName: string);
+begin
+  TProjectData(FProjectData).AppendProjectLog('Save Phase Data');
+  FPhaseProperty.Save;
+  FStageData.Save;
+  FPhasePayData.Save;
+  FZJJLData.Save;
+  FConnection.SaveDebugFile(AFileName);
+  TProjectData(FProjectData).AppendProjectLog('Save Phase Data --> End');
+end;
+
 end.

+ 1 - 1
Units/ProjectData.pas

@@ -964,7 +964,7 @@ procedure TProjectData.CopyPhaseData;
   begin
     sTempFile := GetTempFileName;
     try
-      SimpleDecrypt(Format('%s\Phase%d.dat', [TempPath, FPhaseIndex]), sTempFile);
+      FPhaseData.SaveDebugFile(sTempFile);
       // 复制当前阶段数据
       CopyStageData(sTempFile, PhaseData.StageData.sdpStage.TableName, 'P_Stage');
       // 复制原报、审核、批复数据

+ 5 - 3
Units/SignReports.pas

@@ -30,7 +30,7 @@ type
     destructor Destroy; override;
 
     function AddSignReport(APhaseNo: Integer; const AName: string; AOwnerID: Integer): TSignReport;
-    function LoadAllSignReports(const AUrl: string; AProjWebID, APhaseNo: string): Boolean;
+    function LoadAllSignReports(const AUrl: string; AProjWebID, APhaseNo: Integer): Boolean;
 
     function FindSignReport(APhaseNo: Integer; const AName: string): TSignReport;
   end;
@@ -81,14 +81,16 @@ begin
 end;
 
 function TSignReports.LoadAllSignReports(const AUrl: string; AProjWebID,
-  APhaseNo: string): Boolean;
+  APhaseNo: Integer): Boolean;
 var
   iResult: Integer;
   sgsUrlResult: TStrings;
 begin
   sgsUrlResult := TStringList.Create;
   try
-    iResult := PHPWeb.UrlGet(AUrl, nil, sgsUrlResult);
+    sgsUrlResult.Add(Format('tender=%d', [AProjWebID]));
+    sgsUrlResult.Add(Format('phaseno=%d', [APhaseNo]));
+    iResult := PHPWeb.UrlGet(AUrl, sgsUrlResult, sgsUrlResult);
     case iResult of
       1: LoadSignReports(sgsUrlResult);
       0: WarningMessage('ÍøÂç´íÎó£º' + sgsUrlResult[0]);