SignReports.pas 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. unit SignReports;
  2. interface
  3. uses
  4. Classes, CslJson, superobject;
  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. //iSO: ISuperObject;
  94. begin
  95. {*
  96. try
  97. iSO := SO(AStr);
  98. sPhaseNo := iSO['phaseno'].AsString;
  99. sName := iSO['name'].AsString;
  100. sOwnerID := iSO['ownuid'].AsString;
  101. if (sPhaseNo <> '') and TryStrToInt(sPhaseNo, iPhaseNo) and (sName <> '') and (sOwnerID <> '') and TryStrToInt(sOwnerID, iOwnerID) then
  102. AddSignReport(iPhaseNo, sName, iOwnerID);
  103. finally
  104. iSO := nil;
  105. end;
  106. *}
  107. vJ := TCslJson.Create;
  108. try
  109. vJ.Text := AStr;
  110. sPhaseNo := vJ.Value['phaseno'];
  111. sName := vJ.Value['name'];
  112. sOwnerID := vJ.Value['ownuid'];
  113. if (sPhaseNo <> '') and TryStrToInt(sPhaseNo, iPhaseNo) and (sName <> '') and (sOwnerID <> '') and TryStrToInt(sOwnerID, iOwnerID) then
  114. AddSignReport(iPhaseNo, sName, iOwnerID);
  115. finally
  116. vJ.Free;
  117. end;
  118. end;
  119. procedure TSignReports.LoadSignReports(AInfos: TStrings);
  120. var
  121. i: Integer;
  122. begin
  123. ClearObjects(FList);
  124. for i := 0 to AInfos.Count - 1 do
  125. LoadSignReport(AInfos[i]);
  126. end;
  127. { TSignReport }
  128. constructor TSignReport.Create(APhaseNo: Integer; const AName: string;
  129. AOwnerID: Integer);
  130. begin
  131. FPhaseNo := APhaseNo;
  132. FName := AName;
  133. FOwnerID := AOwnerID;
  134. end;
  135. end.