123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- unit SignReports;
- interface
- uses
- 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;
- implementation
- uses
- 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.
|