unit CustomOrgDsgnForm;
interface
uses
Business.System, Business.Forms, Business.Model, Business.Model.Org;
type
TCustomOrgDsgnForm = class(SYSORGANDESIGNFORM.TBaseOrgDsgnForm)
procedure actNewOrganExecute(Sender: TObject);
procedure actNewDeptExecute(Sender: TObject);
private
{private declarations}
public
{public declarations}
{ 自定义新建组织单元 }
function CustomNewOrgUnit(const Parent: TBizURL; const AKind: TOrgUnitKind): TOrgUnit;
end;
implementation
function TCustomOrgDsgnForm.CustomNewOrgUnit(const Parent: TBizURL;
const AKind: TOrgUnitKind): TOrgUnit;
var
lID, lDisplayName: string;
begin
Result := nil;
// 取子部门是这样的吗?
lOrgUnit := Org.OrgSys.OrgSystem.GetUnit(Parent);
lSubordinations:=TOrgSubordinationItems.Create;
lSubordinations.Assign(lOrgUnit.Module.Subordinations);
for i:=0 to lSubordinations.Count-1 do
begin
lSubItem := TOrgSubordinationItem(lSubordinations.Items);
if lMax<SysUtils.StrToInt(lSubItem.DeptID.Substring(0,lSubItem.DeptID.Length-3)) then
lMax:=SysUtils.StrToInt(lSubItem.DeptID.Substring(0,lSubItem.DeptID.Length-3));
end;
//为什么每次lMax都是0呢?是不是写错了
{!!! 在此对 lID 和 lDisplayName 进行赋值,赋值为你经过计算加 1 后的ID,相加
计算的代码我不写,你自己补写,当是机构和部门时我暂且分别赋值为 001 和 中国
总公司、 001001 和 XXX部门 }
case AKind of
TBizObjectKind.boOrgan:
begin
lID := '001';
lDisplayName := '中国总公司';
end;
TBizObjectKind.boDept:
begin
lID := '001001';
lDisplayName := 'XXX部门';
end;
end;
if ShowInputIDNameDialog(AKind, Parent, lID, lDisplayName) then
Result := Org.OrgSys.OrgSystem.CreateUnit(Parent, lID, AKind, lDisplayName);
end;
procedure TCustomOrgDsgnForm.actNewOrganExecute(Sender: TObject);
begin
{不调用前代的方法,完全自己做。
Inherited; }
CustomNewOrgUnit(SelectedBizNode.BizURL, TBizObjectKind.boOrgan);
end;
procedure TCustomOrgDsgnForm.actNewDeptExecute(Sender: TObject);
begin
{不调用前代的方法,完全自己做。
Inherited; }
CustomNewOrgUnit(SelectedBizNode.BizURL, TBizObjectKind.boDept);
end;
end. |