unit XZFFFWCT;
interface
uses
Business.System, Business.Model, Business.Forms, Business.Data,Business.Model.Org,
Business.Model.Flow;
type
TXZFFFWCT = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
CheckBizTreeView1: TCheckBizTreeView;
imgCheckState: TImageList;
ActionList1: TActionList;
Action1: TAction;
Dsb_Detail: TDataSetBroker;
InfoBroker1: TInfoBroker;
Memo1: TMemo;
procedure BizFormShow(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Action1Execute(Sender: TObject);
procedure CheckBizTreeView1ClickCheck(Sender: TObject; ANode: TTreeNode; Checked: Boolean);
procedure BizFormCreate(Sender: TObject);
procedure BizFormDestroy(Sender: TObject);
private
{private declarations}
public
FSelected :TStringList;
{public declarations}
end;
implementation
procedure TXZFFFWCT.BizFormShow(Sender: TObject);
var
lBizNode: TBizNode;
lBizURL: TBizURL;
lRootNodes: TStrings;
begin
lBizURL := TBizURL.Create;
lRootNodes := TStringList.Create;
try
CheckBizTreeView1.ShowOptions := [TBizObjectKind.boOrgServer, TBizObjectKind.boOrgRoot,
TBizObjectKind.boOrgan, TBizObjectKind.boDept, TBizObjectKind.boPositionMember, Tbizobjectkind.boPersonMember];
lBizURL.URL := 'Org:\ROOT\SCCS.OGN'; // 改成你自己的组织机构的根的url
lBizNode := BizTree.BizTreeStructure.FindNodeByBizURL(lBizURL);
if lBizNode <> nil then
CheckBizTreeView1.CheckOptions := [TOrgUnitKind.boOrgan, TOrgUnitKind.boDept,
TOrgUnitKind.boPositionMember, TOrgUnitKind.boPersonMember];
CheckBizTreeView1.ReloadTree;
lRootNodes.AddObject(lBizNode.GUID, lBizNode);
CheckBizTreeView1.StartWithNodes := lRootNodes;
CheckBizTreeView1.ReloadTree;
finally
lBizURL.Free;
end;
end;
procedure TXZFFFWCT.SpeedButton2Click(Sender: TObject);
begin
close;
end;
procedure TXZFFFWCT.Action1Execute(Sender: TObject);
{var
lBizUrl: TBizURL;
FGUID,lcbh,wjmc: String;
i: Integer;
Org : TOrgSystem ;
lBizNode: TBizNode;
bh,bh1,zw,dl,zl:string;
ver :integer;
begin
lBizURl := TBizURL.Create;
Org := TOrgSystem.Create;
try
Memo1.Lines.Clear;
lBizURl.URL := 'Org:\ROOT\JG1.ogn';
FGUID := CheckBizTreeView1.BizTree.FindNodeByBizURL(lBizURl).GUID;
BizTree.BizTreeStructure.GetChildren(FGUID,Memo1.Lines,True);//,[TBizObjectKind.boOrgServer, TBizObjectKind.boOrgRoot,
for i := 0 to Memo1.Lines.Count -1 do
begin
lbizNode := BizTree.BizTreeStructure.FindNode(Memo1.Lines) as TBizNode;
if lbizNode.NodeKind = TBizObjectKind.boPersonMember then
begin
CheckBizTreeView1.SelectedNode := lBizNode;
if CheckBizTreeView1.Checked[CheckBizTreeView1.Selected] then
begin
Dsb_Detail.DataSet.Open;
Dsb_Detail.DataSet.Append;
Dsb_Detail.DataSet.FieldByName('FDept').AsString := lbiznode.Parent.Parent.DisplayName;
Dsb_Detail.DataSet.FieldByName('FPost').AsString := lbiznode.Parent.DisplayName;
Dsb_Detail.DataSet.FieldByName('FPer').AsString := lbiznode.DisplayName;
Dsb_Detail.DataSet.Post;
end;
end;
end;
finally
lBizURl.Free;
Org.Free;
Business.Forms.jsDialogs.ShowMsg('操作成功!','系统提示');
Dsb_Detail.dataset.Open;
end;
close;
end; }
var i,j,lCount: Integer;
lDept,lPosition:String;
lBizUrl,lPersonUrl :TBizURL;
lSelectedPerson,lSelected :TStringList;
lOrgUnit, lPersonMember:TOrgUnit;
begin
try
lBizUrl :=TBizURL.Create;
lPersonUrl :=TBizURL.Create;
lSelectedPerson :=TStringList.Create;
lSelected :=TStringList.Create;
Dsb_Detail.DataSet.Open;
Dsb_Detail.DataSet.DisableControls;
for i :=0 to FSelected.Count -1 do
begin
lBizUrl.URL :=FSelected;
lOrgUnit := org.OrgSys.Orgsystem.GetUnit(lBizUrl);
if lOrgUnit<>nil then
begin
if (lOrgUnit.OrgKind =TBizObjectKind.boOrgan) or (lOrgUnit.OrgKind =TBizObjectKind.boDept) then
begin
lDept :=lOrgUnit.ID;
org.OrgSys.OrgSystem.GetBizURLsByOrgExpr('orgchildren(orgkey('+lDept+','''',''''),orgcondition(''*.PSM'','''',''''),True,False)',lSelected);
for j:=0 to lSelected.Count-1 do
begin
if lSelectedPerson.IndexOf(lSelected[j])<0 then
lSelectedPerson.Add(lSelected[j])
end;
end
else if lOrgUnit.OrgKind=TBizObjectKind.boPositionMember then
begin
lDept :=lOrgUnit.Parent.ID;
lPosition :=lOrgUnit.ID;
org.OrgSys.OrgSystem.GetBizURLsByOrgExpr('orgchildren(orgkey('+lDept+','+lPosition+',''''),orgcondition(''*.PSM'','''',''''),True,False)',lSelected);
for j:=0 to lSelected.Count-1 do
begin
if lSelectedPerson.IndexOf(lSelected[j])<0 then
lSelectedPerson.Add(lSelected[j])
end;
end
else if lOrgUnit.OrgKind =TBizObjectKind.boPersonMember then
begin
if lSelectedPerson.IndexOf(FSelected)<0 then
lSelectedPerson.Add(FSelected);
end;
end;
end;
for lCount :=0 to lSelectedPerson.Count -1 do
begin
lPersonUrl.URL :=lSelectedPerson[lCount];
lPersonMember :=Org.OrgSys.OrgSystem.GetUnit(lPersonUrl);
if lPersonMember <> nil then
begin
Dsb_Detail.DataSet.Append;
Dsb_Detail.DataSet.FieldByName('FDept').AsString := lPersonMember.Parent.Parent.DisplayName;
Dsb_Detail.DataSet.FieldByName('FPost').AsString := lPersonMember.Parent.DisplayName;
Dsb_Detail.DataSet.FieldByName('FPer').AsString := lPersonMember.DisplayName;
Dsb_Detail.DataSet.Post;
end;
end;
finally
Dsb_Detail.DataSet.EnableControls;
lSelected.Free;
lSelectedPerson.Free;
lPersonUrl.Free;
lBizUrl.Free;
Close;
end;
end;
procedure TXZFFFWCT.CheckBizTreeView1ClickCheck(Sender: TObject; ANode: TTreeNode; Checked: Boolean);
//var lBizNode :TBizNode;
begin
if Checked and (FSelected.IndexOfObject(ANode)<0) then
FSelected.AddObject((ANode.Data as TBizNode).BizURL.URL, ANode);
if not Checked and (FSelected.IndexOfObject(ANode)>=0) then
FSelected.Delete(FSelected.IndexOfObject(ANode));
end;
procedure TXZFFFWCT.BizFormCreate(Sender: TObject);
begin
FSelected :=TStringList.Create;
end;
procedure TXZFFFWCT.BizFormDestroy(Sender: TObject);
begin
if Assigned(FSelected) then
FSelected.Free;
end;
end. |