Checker.pas 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. {*******************************************************************************
  2. 单元名称: Checker.pas
  3. 单元说明: 审核人类、管理类。
  4. 作者时间: Chenshilong, 2015-04-20
  5. *******************************************************************************}
  6. unit Checker;
  7. interface
  8. uses
  9. Classes, SysUtils;
  10. type
  11. TChecker = class(TObject) // 审核人类
  12. private
  13. FID: Integer;
  14. FRole: string;
  15. FMemo: string;
  16. FName: string;
  17. FNo: Integer;
  18. FCheckedDateTime: string;
  19. procedure SetID(const Value: Integer);
  20. procedure SetMemo(const Value: string);
  21. procedure SetName(const Value: string);
  22. procedure SetRole(const Value: string);
  23. procedure SetNo(const Value: Integer);
  24. public
  25. property No: Integer read FNo write SetNo; // 序号(审核人1、审核人2...)
  26. property ID: Integer read FID write SetID; // 审核人ID
  27. property Name: string read FName write SetName; // 审核人姓名
  28. property Role: string read FRole write SetRole; // 审核人职务
  29. property Memo: string read FMemo write SetMemo; // 审核人审核意见
  30. property CheckedDateTime: string read FCheckedDateTime write FCheckedDateTime;
  31. constructor Create;
  32. destructor Destroy; override;
  33. end;
  34. TCheckers = class(TObject) // 审核人管理类
  35. private
  36. FList: TList;
  37. FLastChecker: TChecker;
  38. function GetItem(Index: Integer): TChecker;
  39. function GetCount: Integer;
  40. public
  41. constructor Create;
  42. destructor Destroy; override;
  43. function Add(AChecker: TChecker): Integer; overload;
  44. function Add(AID: Integer; AName, ARole, AMemo, ATime: string): Integer; overload;
  45. procedure Delete(AIndex: Integer); overload;
  46. procedure Delete(AChecker: TChecker); overload;
  47. procedure Clear;
  48. procedure Exchange(AChecker1, AChecker2: TChecker);
  49. function FindByID(AID: Integer): TChecker;
  50. property Item[Index: Integer]: TChecker read GetItem; default;
  51. property Count: Integer read GetCount;
  52. property LastChecker: TChecker read FLastChecker write FLastChecker;
  53. end;
  54. implementation
  55. uses UtilMethods;
  56. { TCheckers }
  57. function TCheckers.Add(AID: Integer; AName, ARole, AMemo, ATime: string): Integer;
  58. var vCM: TChecker;
  59. begin
  60. vCM := TChecker.Create;
  61. Result := Add(vCM);
  62. vCM.No := Result;
  63. vCM.ID := AID;
  64. vCM.Name := AName;
  65. vCM.Role := ARole;
  66. vCM.Memo := RecoverCharsFromJson(AMemo);
  67. vCM.CheckedDateTime := ATime;
  68. end;
  69. function TCheckers.Add(AChecker: TChecker): Integer;
  70. begin
  71. Result := FList.Add(AChecker);
  72. end;
  73. procedure TCheckers.Clear;
  74. var
  75. i: Integer;
  76. begin
  77. for i := 0 to FList.Count - 1 do
  78. TChecker(FList[i]).Free;
  79. FList.Clear;
  80. end;
  81. constructor TCheckers.Create;
  82. begin
  83. FList := TList.Create;
  84. end;
  85. procedure TCheckers.Delete(AIndex: Integer);
  86. begin
  87. TChecker(FList[AIndex]).Free;
  88. FList.Delete(AIndex);
  89. end;
  90. procedure TCheckers.Delete(AChecker: TChecker);
  91. begin
  92. FList.Remove(AChecker);
  93. end;
  94. destructor TCheckers.Destroy;
  95. begin
  96. Clear;
  97. FList.Free;
  98. inherited;
  99. end;
  100. procedure TCheckers.Exchange(AChecker1,
  101. AChecker2: TChecker);
  102. var
  103. idx1, idx2: Integer;
  104. begin
  105. idx1 := FList.IndexOf(AChecker1);
  106. idx2 := FList.IndexOf(AChecker2);
  107. if idx1 < 0 then Exit;
  108. if idx2 < 0 then Exit;
  109. FList.Exchange(idx1, idx2);
  110. end;
  111. function TCheckers.FindByID(AID: Integer): TChecker;
  112. var i: Integer;
  113. begin
  114. Result := nil;
  115. for i := 0 to FList.Count - 1 do
  116. begin
  117. if TChecker(FList[i]).ID = AID then
  118. begin
  119. Result := TChecker(FList[i]);
  120. Break;
  121. end;
  122. end;
  123. end;
  124. function TCheckers.GetCount: Integer;
  125. begin
  126. Result := FList.Count;
  127. end;
  128. function TCheckers.GetItem(Index: Integer): TChecker;
  129. begin
  130. Result := nil;
  131. if (Index > -1) and (Index < FList.Count) then
  132. Result := TChecker(FList[Index]);
  133. end;
  134. { TChecker }
  135. constructor TChecker.Create;
  136. begin
  137. end;
  138. destructor TChecker.Destroy;
  139. begin
  140. inherited;
  141. end;
  142. procedure TChecker.SetID(const Value: Integer);
  143. begin
  144. FID := Value;
  145. end;
  146. procedure TChecker.SetMemo(const Value: string);
  147. begin
  148. FMemo := StringReplace(Value, '\r\n', '|', [rfReplaceAll, rfIgnoreCase]);
  149. end;
  150. procedure TChecker.SetName(const Value: string);
  151. begin
  152. FName := Value;
  153. end;
  154. procedure TChecker.SetNo(const Value: Integer);
  155. begin
  156. FNo := Value;
  157. end;
  158. procedure TChecker.SetRole(const Value: string);
  159. begin
  160. FRole := Value;
  161. end;
  162. end.