| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 | unit SignReports;interfaceuses  Classes, CslJson;type  TSignReport = class  private    FPhaseNo: Integer;    FName: string;    FOwnerID: Integer;  public    constructor Create(APhaseNo: Integer; const AName: string; AOwnerID: Integer);    property PhaseNo: Integer read FPhaseNo;    property Name: string read FName;    property OwnerID: Integer read FOwnerID;  end;  TSignReports = class  private    FList: TList;    procedure LoadSignReport(AStr: string);    procedure LoadSignReports(AInfos: TStrings);  public    constructor Create;    destructor Destroy; override;    function AddSignReport(APhaseNo: Integer; const AName: string; AOwnerID: Integer): TSignReport;    function LoadAllSignReports(const AUrl: string; AProjWebID, APhaseNo: Integer): Boolean;    function FindSignReport(APhaseNo: Integer; const AName: string): TSignReport;  end;implementationuses  PHPWebDm, UtilMethods, ZhAPI, SysUtils;{ TSignReports }function TSignReports.AddSignReport(APhaseNo: Integer; const AName: string;  AOwnerID: Integer): TSignReport;var  vSignReport: TSignReport;begin  vSignReport := TSignReport.Create(APhaseNo, AName, AOwnerID);  FList.Add(vSignReport);end;constructor TSignReports.Create;begin  FList := TList.Create;end;destructor TSignReports.Destroy;begin  FList.Free;  inherited;end;function TSignReports.FindSignReport(APhaseNo: Integer;  const AName: string): TSignReport;var  i: Integer;  vSignReport: TSignReport;begin  Result := nil;  for i := 0 to FList.Count - 1 do  begin    vSignReport := TSignReport(FList.Items[i]);    if (vSignReport.PhaseNo = APhaseNo) and (vSignReport.Name = AName) then    begin      Result := vSignReport;      Break;    end;  end;end;function TSignReports.LoadAllSignReports(const AUrl: string; AProjWebID,  APhaseNo: Integer): Boolean;var  iResult: Integer;  sgsUrlResult: TStrings;begin  sgsUrlResult := TStringList.Create;  try    sgsUrlResult.Add(Format('tender=%d', [AProjWebID]));    sgsUrlResult.Add(Format('phaseno=%d', [APhaseNo]));    iResult := PHPWeb.UrlGet(AUrl, sgsUrlResult, sgsUrlResult);    case iResult of      1: LoadSignReports(sgsUrlResult);      0: WarningMessage('网络错误:' + sgsUrlResult[0]);      -1: WarningMessage('网络错误:无法连接到云端');    end;    Result := iResult = 1;  finally    sgsUrlResult.Free;  end;end;procedure TSignReports.LoadSignReport(AStr: string);var  vJ: TCslJson;  sPhaseNo, sName, sOwnerID: string;  iPhaseNo, iOwnerID: Integer;begin  vJ := TCslJson.Create;  try    vJ.Text := AStr;    sPhaseNo := vJ.Value['phaseno'];    sName := vJ.Value['name'];    sOwnerID := vJ.Value['ownuid'];    if (sPhaseNo <> '') and TryStrToInt(sPhaseNo, iPhaseNo) and (sName <> '') and (sOwnerID <> '') and TryStrToInt(sOwnerID, iOwnerID) then      AddSignReport(iPhaseNo, sName, iOwnerID);  finally    vJ.Free;  end;end;procedure TSignReports.LoadSignReports(AInfos: TStrings);var  i: Integer;begin  ClearObjects(FList);  for i := 0 to AInfos.Count - 1 do    LoadSignReport(AInfos[i]);end;{ TSignReport }constructor TSignReport.Create(APhaseNo: Integer; const AName: string;  AOwnerID: Integer);begin  FPhaseNo := APhaseNo;  FName := AName;  FOwnerID := AOwnerID;end;end.
 |