只检查自己的任务,只要把自己和自己的父单元都作为执行者参数就可以了
procedure TMainForm.DoGetTaskReceivers(AOrgURLs: TOrgURLs);
var
lOrgUnit: TOrgUnit;
i: Integer;
begin
for i:=0 to SystemCore.TSystemCore.Operator.PositionCount-1 do
begin
//每一个岗位环境下的人员成员
lOrgUnit := SystemCore.TSystemCore.Operator.Positions.PersonMember;
while lOrgUnit <> nil do
begin
case lOrgUnit.OrgKind of
TOrgUnitKind.boOrgan, TOrgUnitKind.boDept:
AOrgURLs.Add(lOrgUnit.ID, '', '');
TOrgUnitKind.boPositionMember:
begin
AOrgURLs.Add(lOrgUnit.Parent.ID, lOrgUnit.ID, '');
AOrgURLs.Add('', lOrgUnit.ID, '');
end;
TOrgUnitKind.boPersonMember:
AOrgURLs.Add(lOrgUnit.Parent.Parent.ID, lOrgUnit.Parent.ID, lOrgUnit.ID);
end;
//找组织单元的父,因为分配到父单元上的任务,也是可以执行的
//例如:直接分配在部门上的任务,部门内的每一个人员成员都可以执行
lOrgUnit := lOrgUnit.Parent;
end;
end;
end;
DoGetTaskReceivers(lTaskParam.Receivers); |