stgGatherControl.pas 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. unit stgGatherControl;
  2. interface
  3. uses
  4. Classes, stgGatherCacheData, stgGatherDm, stgResultFrm,
  5. stgGather;
  6. type
  7. TstgGatherControl = class
  8. private
  9. FProjects: TList;
  10. FSumBaseFile: string;
  11. FGatherCacheData: tstgGatherCacheData;
  12. FGatherData: TstgGatherData;
  13. FResultForm: TstgResultForm;
  14. FHintPosition: Integer;
  15. procedure LoadHint(const ATenderName: string);
  16. procedure LoadSumBaseFile;
  17. procedure GatherSubTenderFiles;
  18. procedure CheckErrorData;
  19. procedure SaveGatherResult;
  20. procedure ShowGatherResult;
  21. public
  22. constructor Create;
  23. destructor Destroy; override;
  24. procedure Gather;
  25. property Projects: TList read FProjects;
  26. property SumBaseFile: string read FSumBaseFile write FSumBaseFile;
  27. end;
  28. implementation
  29. uses
  30. ProgressHintFrm, SysUtils;
  31. { TstgGatherControl }
  32. procedure TstgGatherControl.CheckErrorData;
  33. var
  34. vChecker: TstgErrorChecker;
  35. begin
  36. vChecker := TstgErrorChecker.Create;
  37. try
  38. vChecker.Check(FGatherCacheData);
  39. finally
  40. vChecker.Free;
  41. end;
  42. end;
  43. constructor TstgGatherControl.Create;
  44. begin
  45. FProjects := TList.Create;
  46. FGatherCacheData := TstgGatherCacheData.Create;
  47. FGatherData := TstgGatherData.Create(nil);
  48. end;
  49. destructor TstgGatherControl.Destroy;
  50. begin
  51. FGatherData.Free;
  52. FGatherCacheData.Free;
  53. FProjects.Free;
  54. inherited;
  55. end;
  56. procedure TstgGatherControl.Gather;
  57. begin
  58. FHintPosition := 0;
  59. ShowProgressHint('正在导入总包基准文件数据...', FProjects.Count + 2);
  60. LoadSumBaseFile;
  61. GatherSubTenderFiles;
  62. UpdateProgressHint('正在检查汇总结果...');
  63. UpdateProgressPosition(FProjects.Count + 1);
  64. CheckErrorData;
  65. UpdateProgressPosition(FProjects.Count + 2);
  66. SaveGatherResult;
  67. CloseProgressHint;
  68. ShowGatherResult;
  69. end;
  70. procedure TstgGatherControl.GatherSubTenderFiles;
  71. var
  72. vGather: TstgSubTenderFileGather;
  73. begin
  74. vGather := TstgSubTenderFileGather.Create;
  75. try
  76. vGather.LoadHint := LoadHint;
  77. vGather.GatherTo(FGatherCacheData, FProjects);
  78. finally
  79. vGather.Free;
  80. end;
  81. end;
  82. procedure TstgGatherControl.LoadHint(const ATenderName: string);
  83. begin
  84. Inc(FHintPosition);
  85. UpdateProgressHint(Format('正在汇总分包标段"%s"...', [ATenderName]));
  86. UpdateProgressPosition(FHintPosition);
  87. end;
  88. procedure TstgGatherControl.LoadSumBaseFile;
  89. var
  90. vLoader: TstgSumBaseFileLoader;
  91. begin
  92. vLoader := TstgSumBaseFileLoader.Create(FGatherCacheData.GatherTree, FSumBaseFile);
  93. try
  94. vLoader.LoadData;
  95. finally
  96. vLoader.Free;
  97. end;
  98. end;
  99. procedure TstgGatherControl.SaveGatherResult;
  100. begin
  101. FGatherData.LoadGatherData(FGatherCacheData);
  102. end;
  103. procedure TstgGatherControl.ShowGatherResult;
  104. var
  105. Form: TstgResultForm;
  106. begin
  107. Form := TstgResultForm.Create(nil);
  108. try
  109. Form.SetGatherData(FGatherData);
  110. Form.ShowModal;
  111. finally
  112. Form.Free;
  113. end;
  114. end;
  115. end.