起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 234|回复: 5

如何获取下属成员列表**

[复制链接]
发表于 2008-7-15 11:31:24 | 显示全部楼层 |阅读模式
如题,如何获取下属成员的列表,包括继承得到的管理权限,以及下属的下属?
比如A有个下属B,B又有个下属C,则BC都是A的下属!
回复

使用道具 举报

发表于 2008-7-15 11:37:28 | 显示全部楼层
{取指定人员的管理权限,所有的岗位}
static function TZYJ.GetSubordinations(APersonID: String; IncludeSelf: boolean): TStrings;
var
  i, j  : integer;
  lList : TList;
  lPersonMember: TOrgUnit;
  lSubs : TStrings;
  ResultUrls :Tstrings;
begin
  ResultUrls := TStringlist.Create;                             //隐式向上转型
  lList := TList.Create;
  try
    OrgSys.OrgSystem.GetPersonMembers(APersonID, lList);        //取出所有的人员成员
    for i := 0 to lList.Count-1 do
      begin
        lPersonMember := lList.Items As TOrgUnit;
        lSubs := GetSubordinations(lPersonMember As TPersonMember, IncludeSelf);    //取出该人员成员对应的管理权限
        for j := 0 to lSubs.Count-1 do
          if ResultUrls.IndexOf(lSubs[j]) < 0 then
            ResultUrls.Add(lSubs[j]);
        lSubs.Free;
      end;
  finally
    lList.Free;
    Result := ResultUrls;
  end;
end;

static function TZYJ.GetSubordinations(AContext: TContext; IncludeSelf: boolean): TStrings;
var
  lOperator : TOPerator;
begin
  lOperator := TContextUtils.GetOperator(AContext);  //取出操作者
  Result := GetSubordinations(lOperator.ID, IncludeSelf);
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-15 14:31:29 | 显示全部楼层
lSubs := GetSubordinations(lPersonMember As TPersonMember, IncludeSelf);    //取出该人员成员对应的管理权限

这个哪个类下的方法啊?
回复 支持 反对

使用道具 举报

发表于 2008-7-15 15:12:16 | 显示全部楼层
需要自己定义。
主要是要调用OrgSys.OrgSystem.GetAllSubordinationItems(APersonMember, lOrgSubordinationItems);
回复 支持 反对

使用道具 举报

发表于 2008-7-15 15:15:49 | 显示全部楼层
{取指定人员成员的管理权限}
static function TZYJ.GetSubordinations(APersonMember: TPersonMember; IncludeSelf: boolean): TStrings;
var
  lOrgUnit : TOrgUnit;
  lOrgSubordinationItems : TOrgSubordinationItems;
  i : integer;
  ResultUrls : TStrings;
begin
  ResultUrls := TStringList.Create;
  lOrgSubordinationItems := TOrgSubordinationItems.Create;
  try
    OrgSys.OrgSystem.GetAllSubordinationItems(APersonMember, lOrgSubordinationItems);
    if lOrgSubordinationItems.Count > 0 then
      for i := 0 to lOrgSubordinationItems.Count-1 do
        begin
          lOrgUnit := OrgSys.OrgSystem.FindUnit(lOrgSubordinationItems.DeptID,
            lOrgSubordinationItems.PositionID, lOrgSubordinationItems.PersonID);
          ResultUrls.Add(lOrgUnit.BizUrl.URL);
        end
    else
      if IncludeSelf then                //如果没有管理权限,则返回自己的URL
        ResultUrls.Add(APersonMember.BizUrl.URL);
  finally
    lOrgSubordinationItems.Free;
    Result := ResultUrls;
  end;
end;
回复 支持 反对

使用道具 举报

发表于 2008-7-16 08:49:20 | 显示全部楼层
请楼主反馈下问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-19 07:52 , Processed in 0.038192 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表