关键字:组织机构 Organ
适用版本:1434-?
建议使用递归的方式实现比较合适
全局变量
iOrganArray //用于数组下标
sOrganEofTierUrl:array of string; //用于记录最后一层机构的URL
sOrganEofTierCode:array of string; //用于记录最后一层机构的编码
这3个变量的用途是记录创建的机构的最后一层机构对象的URL和编码,为创建部门奠定基础
说明
iOrganBaseNumber 输入参数,表示创建机构每层数量
iOrganTierNumber 输入参数,表示创建机构层数
sParentName 表示父类编码
}
procedure TMainForm.CreateOrgan(sBizUrl,sParentName:string;iOrganBaseNumber,iOrganTierNumber:integer);
var
sTestOrgID,sTestOrgName:string; //机构ID
lBizUrl:TBizUrl;
li:integer;
begin
lBizUrl:=TBizUrl.Create;
lBizUrl.URL:=sBizUrl;
for li:=1 to iOrganBaseNumber do
begin
sTestOrgName:=sParentName+SysUtils.inttostr(li);
//利用机构名称的拼音开头转化为机构ID
Business.Model.ExtUtils.StringToPYCapitals(sTestOrgName,sTestOrgID);
orgsys.OrgSystem.CreateOrgan (lBizUrl,sTestOrgID,sTestOrgName);
//如果iOrganTierNumber层数等于1说明为最后一层,不必再进入递归循环了
if iOrganTierNumber>1 then
CreateOrganRamus(sBizUrl+''+sTestOrgID+'.ogn',sTestOrgName,iOrganBaseNumber,iOrganTierNumber-1);
if iOrganTierNumber=1 then
begin
sOrganEofTierUrl[iOrganArray]:=lBizUrl.Url+''+sTestOrgID+'.ogn';
sOrganEofTierCode[iOrganArray]:=business.System.StrUtils.RightStr(sTestOrgID,length(sTestOrgID)-4);
//数组下标增加1
iOrganArray:=iOrganArray+1;
end;
end;
end;
//用于调用上面创建机构的过程
procedure TMainForm.CreateOrganRamus(sBizUrl,sParentName:string;iOrganBaseNumber,iOrganTierNumber:integer);
begin
CreateOrgan(sBizUrl,sParentName,iOrganBaseNumber,iOrganTierNumber);
end;
//调用创建整个的程序
procedure TMainForm.DoCreateOrgan;
var
iOrganTierNumber:integer; //层数
iOrganBaseNumber:integer; // 基数
begin
CreateOrgan('org:\root','测试机构',iOrganBaseNumber,iOrganTierNumber);
end; |