SignReports.pas 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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: string): 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: string): Boolean;
  69. var
  70. iResult: Integer;
  71. sgsUrlResult: TStrings;
  72. begin
  73. sgsUrlResult := TStringList.Create;
  74. try
  75. iResult := PHPWeb.UrlGet(AUrl, nil, sgsUrlResult);
  76. case iResult of
  77. 1: LoadSignReports(sgsUrlResult);
  78. 0: WarningMessage('网络错误:' + sgsUrlResult[0]);
  79. -1: WarningMessage('网络错误:无法连接到云端');
  80. end;
  81. Result := iResult = 1;
  82. finally
  83. sgsUrlResult.Free;
  84. end;
  85. end;
  86. procedure TSignReports.LoadSignReport(AStr: string);
  87. var
  88. vJ: TCslJson;
  89. sPhaseNo, sName, sOwnerID: string;
  90. iPhaseNo, iOwnerID: Integer;
  91. begin
  92. vJ := TCslJson.Create;
  93. try
  94. vJ.Text := AStr;
  95. sPhaseNo := vJ.Value['phaseno'];
  96. sName := vJ.Value['name'];
  97. sOwnerID := vJ.Value['ownuid'];
  98. if (sPhaseNo <> '') and TryStrToInt(sPhaseNo, iPhaseNo) and (sName <> '') and (sOwnerID <> '') and TryStrToInt(sOwnerID, iOwnerID) then
  99. AddSignReport(iPhaseNo, sName, iOwnerID);
  100. finally
  101. vJ.Free;
  102. end;
  103. end;
  104. procedure TSignReports.LoadSignReports(AInfos: TStrings);
  105. var
  106. i: Integer;
  107. begin
  108. ClearObjects(FList);
  109. for i := 0 to AInfos.Count - 1 do
  110. LoadSignReport(AInfos[i]);
  111. end;
  112. { TSignReport }
  113. constructor TSignReport.Create(APhaseNo: Integer; const AName: string;
  114. AOwnerID: Integer);
  115. begin
  116. FPhaseNo := APhaseNo;
  117. FName := AName;
  118. FOwnerID := AOwnerID;
  119. end;
  120. end.