起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1046|回复: 0

代码创建组织机构的例子

[复制链接]
发表于 2004-5-24 10:56:49 | 显示全部楼层 |阅读模式
关键字:组织机构 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;
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-23 04:27 , Processed in 0.034177 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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