SignReports.pas 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. unit SignReports;
  2. interface
  3. uses
  4. Classes, CslJson;
  5. type
  6. TSignReport = class
  7. private
  8. FPhaseNo: Integer;
  9. FName: string;
  10. FOwnerID: Integer;
  11. public
  12. constructor Create(APhaseNo: Integer; const AName: string; AOwnerID: Integer);
  13. property PhaseNo: Integer read FPhaseNo;
  14. property Name: string read FName;
  15. property OwnerID: Integer read FOwnerID;
  16. end;
  17. TSignReports = class
  18. private
  19. FList: TList;
  20. procedure LoadSignReport(AStr: string);
  21. procedure LoadSignReports(AInfos: TStrings);
  22. public
  23. constructor Create;
  24. destructor Destroy; override;
  25. function AddSignReport(APhaseNo: Integer; const AName: string; AOwnerID: Integer): TSignReport;
  26. function LoadAllSignReports(const AUrl: string; AProjWebID, APhaseNo: Integer): Boolean;
  27. function FindSignReport(APhaseNo: Integer; const AName: string): TSignReport;
  28. end;
  29. implementation
  30. uses
  31. PHPWebDm, UtilMethods, ZhAPI, SysUtils;
  32. { TSignReports }
  33. function TSignReports.AddSignReport(APhaseNo: Integer; const AName: string;
  34. AOwnerID: Integer): TSignReport;
  35. var
  36. vSignReport: TSignReport;
  37. begin
  38. vSignReport := TSignReport.Create(APhaseNo, AName, AOwnerID);
  39. FList.Add(vSignReport);
  40. end;
  41. constructor TSignReports.Create;
  42. begin
  43. FList := TList.Create;
  44. end;
  45. destructor TSignReports.Destroy;
  46. begin
  47. FList.Free;
  48. inherited;
  49. end;
  50. function TSignReports.FindSignReport(APhaseNo: Integer;
  51. const AName: string): TSignReport;
  52. var
  53. i: Integer;
  54. vSignReport: TSignReport;
  55. begin
  56. Result := nil;
  57. for i := 0 to FList.Count - 1 do
  58. begin
  59. vSignReport := TSignReport(FList.Items[i]);
  60. if (vSignReport.PhaseNo = APhaseNo) and (vSignReport.Name = AName) then
  61. begin
  62. Result := vSignReport;
  63. Break;
  64. end;
  65. end;
  66. end;
  67. function TSignReports.LoadAllSignReports(const AUrl: string; AProjWebID,
  68. APhaseNo: Integer): Boolean;
  69. var
  70. iResult: Integer;
  71. sgsUrlResult: TStrings;
  72. begin
  73. sgsUrlResult := TStringList.Create;
  74. try
  75. sgsUrlResult.Add(Format('tender=%d', [AProjWebID]));
  76. sgsUrlResult.Add(Format('phaseno=%d', [APhaseNo]));
  77. iResult := PHPWeb.UrlGet(AUrl, sgsUrlResult, sgsUrlResult);
  78. case iResult of
  79. 1: LoadSignReports(sgsUrlResult);
  80. 0: WarningMessage('网络错误:' + sgsUrlResult[0]);
  81. -1: WarningMessage('网络错误:无法连接到云端');
  82. end;
  83. Result := iResult = 1;
  84. finally
  85. sgsUrlResult.Free;
  86. end;
  87. end;
  88. procedure TSignReports.LoadSignReport(AStr: string);
  89. var
  90. vJ: TCslJson;
  91. sPhaseNo, sName, sOwnerID: string;
  92. iPhaseNo, iOwnerID: Integer;
  93. begin
  94. vJ := TCslJson.Create;
  95. try
  96. vJ.Text := AStr;
  97. sPhaseNo := vJ.Value['phaseno'];
  98. sName := vJ.Value['name'];
  99. sOwnerID := vJ.Value['ownuid'];
  100. if (sPhaseNo <> '') and TryStrToInt(sPhaseNo, iPhaseNo) and (sName <> '') and (sOwnerID <> '') and TryStrToInt(sOwnerID, iOwnerID) then
  101. AddSignReport(iPhaseNo, sName, iOwnerID);
  102. finally
  103. vJ.Free;
  104. end;
  105. end;
  106. procedure TSignReports.LoadSignReports(AInfos: TStrings);
  107. var
  108. i: Integer;
  109. begin
  110. ClearObjects(FList);
  111. for i := 0 to AInfos.Count - 1 do
  112. LoadSignReport(AInfos[i]);
  113. end;
  114. { TSignReport }
  115. constructor TSignReport.Create(APhaseNo: Integer; const AName: string;
  116. AOwnerID: Integer);
  117. begin
  118. FPhaseNo := APhaseNo;
  119. FName := AName;
  120. FOwnerID := AOwnerID;
  121. end;
  122. end.