MaiXinRong 8 years ago
parent
commit
45fd2d9f5d
2 changed files with 38 additions and 1 deletions
  1. 28 1
      Units/ProjectCommands.pas
  2. 10 0
      Units/ProjectData.pas

+ 28 - 1
Units/ProjectCommands.pas

@@ -289,17 +289,26 @@ type
     property AuditStatus: Integer read FAuditStatus;
   end;
 
+  TTenderZipCheckType = (zctAllPhase, zctLastPhase);
+
   // Îļþ¼ìÑé
   TTenderZipCompleteChecker = class
   private
     FFileName: string;
     FTempFolder: string;
     FProjectData: TProjectData;
+    FCheckType: TTenderZipCheckType;
 
     function CheckMain: Boolean;
     function CheckAllPhase: Boolean;
+    function CheckLastPhase: Boolean;
   public
+    constructor Create;
+    destructor Destroy; override;
+
     function CheckFileValid(const AFileName: string): Boolean;
+
+    property CheckType: TTenderZipCheckType read FCheckType write FCheckType;
   end;
 
 implementation
@@ -1199,12 +1208,20 @@ begin
   FFileName := AFileName;
   FTempFolder := GenerateTempFolder(GetTempFilePath);
   try
-    Result := UnZipFile(AFileName, FTempFolder) and CheckMain and CheckAllPhase;
+    case CheckType of
+      zctAllPhase: Result := UnZipFile(AFileName, FTempFolder) and CheckMain and CheckAllPhase;
+      zctLastPhase: Result := UnZipFile(AFileName, FTempFolder) and CheckMain and CheckLastPhase;
+    end;
   finally
     DeleteFileOrFolder(FTempFolder);
   end;
 end;
 
+function TTenderZipCompleteChecker.CheckLastPhase: Boolean;
+begin
+  Result := Assigned(FProjectData) and FProjectData.CheckPhaseFileComplete;
+end;
+
 function TTenderZipCompleteChecker.CheckMain: Boolean;
 begin
   Result := False;
@@ -1222,4 +1239,14 @@ begin
   end;
 end;
 
+constructor TTenderZipCompleteChecker.Create;
+begin
+  FCheckType := zctAllPhase;
+end;
+
+destructor TTenderZipCompleteChecker.Destroy;
+begin
+  inherited;
+end;
+
 end.

+ 10 - 0
Units/ProjectData.pas

@@ -191,7 +191,9 @@ type
     procedure ImportDmfFile(const AFileName: string);
 
     function CheckPassword: Boolean;
+
     function CheckPhaseFileComplete: Boolean;
+    function CheckLastPhaseFileExist: Boolean;
 
     function CurUserIsOwner: Boolean;
     function CurUserIsAuthor: Boolean;
@@ -529,6 +531,8 @@ begin
     FConnection.Save;
     UpdateSysProgress(190, 'ÕýÔÚ±£´æÊý¾Ý');
 
+    DeleteFileOrFolder(MainFileName);
+
     ZipFolder(FTempFolder, FileName);
     SaveInfoToManager;
     UpdateSysProgress(200, '¾ÍÐ÷');
@@ -2120,6 +2124,7 @@ procedure TProjectData.SaveAndCheck;
   begin
     Checker := TTenderZipCompleteChecker.Create;
     try
+      Checker.CheckType := zctLastPhase;
       Result := Checker.CheckFileValid(AFileName);
     finally
       Checker.Free;
@@ -2139,4 +2144,9 @@ begin
   end;
 end;
 
+function TProjectData.CheckLastPhaseFileExist: Boolean;
+begin
+  Result := FileExists(Format('%s\Phase%d.dat', [TempPath, FProjProperties.PhaseCount]));
+end;
+
 end.