完成,代码如下:高手帮忙看看有些什么需要改进的啊,里面循环的地方用得比较多
//***********************************************************************************************************
//取管理权限下属的URL,返回所有管理下属人员成员列表
function TRCCS.GetSubPersonURL : TStrings; //1
var
i : integer;
j : integer;
lBizUrl :TBizURl;
ResultsURL : TStrings;
UnitURl : string;
lOrgUnit : TOrgUnit;
rs : TStrings;
PersonURL : TStrings;
begin
PersonURL := TStringList.Create;
try
lBizUrl :=TBizUrl.Create;
ResultsURL := GetSubordinationURLs; //取所有下属bizURL
for i :=0 to ResultsURL.Count-1 do
begin
lBizUrl.URL := ResultsURL.ToString;
lOrgUnit := org.OrgSys.OrgSystem.GetUnit(lBizURL);
UnitURL := lOrgUnit.ID.ToString;
rs := GetOrgSubPerson(UnitURL); //调用GetOrgSubPerson,返回组织机构下的所有人员成员的URL
//PersonURL.AddStrings(rs);
if rs.Count>0 then
begin
for j :=0 to rs.Count-1 do
begin
PersonURL.Add(rs[j].ToString); //将管理权限管理的部门下的所有人员的URL存入PersonURL中
end;
rs.Clear;
end;
end;
finally
Result := PersonURL;
end;
end;
//根据传进来的组织机构URL取所有下属人员成员,返回组织机构下的所有人员成员的URL
function TRCCS.GetOrgSubPerson(UnitURL : string) : TStrings; //2
var
lTemp : TStrings;
Results : TStrings;
lpos, lcon, lOrgExpr : String;
i : Integer;
lContextCurrent: Business.Model.TContextCurrent;
begin
lContextCurrent := Business.Model.TContextCurrent.Create(Self.Context);
lpos :=''''+UnitURL+''''; //'''HZD''';
lcon := '''*.psm''';
lOrgExpr := SysUtils.Format('OrgChildren(OrgKey(%s, '''', ''''), OrgCondition(%s, '''', ''''), True, False)', [lpos, lcon]);
lTemp := TStringList.Create;
try
OrgSys.OrgSystem.GetBizURLsByOrgExpr(lOrgExpr, lTemp);
finally
Result := lTemp;
//lTemp.Free;
end;
end;
procedure TRCCS.Button6Click(Sender: TObject);
var
i : integer;
Results : TStrings;
lBizUrl :TBizURl;
lOrgUnit : TOrgUnit;
idstr : string;
SqlFilterString : string; //sqlfilter1
begin
lBizUrl := TBizURL.Create;
try
Results := GetSubPersonURL;
memo1.Clear;
for i :=0 to Results.Count-1 do
begin
lBizUrl.URL :=Results.ToString; //'ORG:\ROOT\ZJRBJDYXGS.OGN\XSB.DPT\HZRBJDYXGS.DPT\HZD.DPT\FGSYWY.PTM\YWY2.PSM'; //
lOrgUnit := org.OrgSys.OrgSystem.GetUnit(lBizURL);
idstr := lOrgUnit.ID.ToString;
SqlFilterString := SqlFilterString + 'YWYSZGS like ''%'+idstr +'%'''; //idstr换成Results.ToString
if i<>Results.Count - 1 then
SqlFilterString := SqlFilterString +' OR ';
end;
finally
lBizURL.Free;
memo1.Lines.add(SqlFilterString);
DataSetBrokerRZRCXX.DataSet.Filter :=SqlFilterString;//'YWYSZGS like ''%'+idstr+'%'''; //过滤
DataSetBrokerRZRCXX.DataSet.Filtered := True;
DataSetBrokerRZRCXX.DataSet.Refresh;
end;
end; |