你好。这次主要的代码部分
try
DataSetSelectNode.DisableControls;
DsPersonRole.DisableControls;
DataSetSelectNode.First;
while not DataSetSelectNode.Eof do
begin
if DataSetSelectNode.FieldByName('XZ').AsInteger=1 then
begin
BookMark:=DataSetSelectNode.Bookmark;
for i:=0 to olvPerson.SelectedNodes.Count-1 do
begin
URL:=TBizNode(olvPerson.SelectedNodes.Objects[I]).BizURL.URL; //类型转换取得人员成员的URL
SYSTEMUTILS.TOrgUtils.GetOrgIDs(URL,iDept,iPosition,iPerson); //用GetOrgIDs函数通过人员成员的URL获得人员的PersonID,DetpID, PositionID.
lPerson:=org.OrgSys.OrgSystem.GetPerson(iPerson);
if (RadioGroup.ItemIndex=0) or (RadioGroup.ItemIndex=4) then //执行主体和执行协同不能是同一个人或者已经完成。
begin
lResult:=DsPersonRole.Locate('FSchemeID;FNodeID;FRole;FPersonID',
Variants.VarArrayOf([
DataSetSelectNode.FieldByName('FSchemeID').AsString,
DataSetSelectNode.FieldByName('FNodeID').AsString,
RadioIndex(0),lPerson.ID]),[]) or
DsPersonRole.Locate('FSchemeID;FNodeID;FRole;FPersonID',
Variants.VarArrayOf([
DataSetSelectNode.FieldByName('FSchemeID').AsString,
DataSetSelectNode.FieldByName('FNodeID').AsString,
RadioIndex(4),lPerson.ID]),[]) or
(DataSetSelectNode.FieldByName('FExecutState').AsString='1');
end
else if (RadioGroup.ItemIndex=1) then //责任主体不能是同一个人或者已经完成。
begin
lResult:=DsPersonRole.Locate('FSchemeID;FNodeID;FRole;FPersonID',
Variants.VarArrayOf([
DataSetSelectNode.FieldByName('FSchemeID').AsString,
DataSetSelectNode.FieldByName('FNodeID').AsString,
RoleType,lPerson.ID]),[]) or
(DataSetSelectNode.FieldByName('FResponState').AsString='1');
end
else if (RadioGroup.ItemIndex=2) then //核算主体不能是同一个人或者已经完成。
begin
lResult:=DsPersonRole.Locate('FSchemeID;FNodeID;FRole;FPersonID',
Variants.VarArrayOf([
DataSetSelectNode.FieldByName('FSchemeID').AsString,
DataSetSelectNode.FieldByName('FNodeID').AsString,
RoleType,lPerson.ID]),[]) or
(DataSetSelectNode.FieldByName('FAccountState').AsString='1');
end
else if (RadioGroup.ItemIndex=3) then //控制主体不能是同一个人或者已经完成。
begin
lResult:=DsPersonRole.Locate('FSchemeID;FNodeID;FRole;FPersonID',
Variants.VarArrayOf([
DataSetSelectNode.FieldByName('FSchemeID').AsString,
DataSetSelectNode.FieldByName('FNodeID').AsString,
RoleType,lPerson.ID]),[]) or
(DataSetSelectNode.FieldByName('FControllState').AsString='1');
end;
//如果为真则定位下一条。为假则添加进去。
if lResult then
begin
end
else
begin
DsPersonRole.Append;
DsPersonRole.FieldByName('FProjectGUID').AsString:=DataSetSelectNode.FieldByName('FProjectGUID').AsString; //项目ID
DsPersonRole.FieldByName('FProjectNodeGUID').AsString:=DataSetSelectNode.FieldByName('FID').AsString; //项目节点ID
DsPersonRole.FieldByName('FProjectID').AsString:=DataSetSelectNode.FieldByName('FProjectID').AsString; //项目分期ID
DsPersonRole.FieldByName('FSchemeID').AsString:=DataSetSelectNode.FieldByName('FSchemeID').AsString; //分期ID
DsPersonRole.FieldByName('FNodeID').AsString:=DataSetSelectNode.FieldByName('FNodeID').AsString; //节点ID
DsPersonRole.FieldByName('FRole').AsString:=RoleType; //取得人员角色
DsPersonRole.FieldByName('FPersonURL').AsString:=URL; //人员URL
DsPersonRole.FieldByName('FPersonID').AsString:=lPerson.ID; //人员ID
DsPersonRole.FieldByName('FPerson').AsString:=lPerson.DisplayName; //人员
lPostion:=org.OrgSys.OrgSystem.GetPosition(iPosition);
DsPersonRole.FieldByName('FPositionID').AsString:=lPostion.ID; //岗位ID
DsPersonRole.FieldByName('FPosition').AsString:=lPostion.DisplayName; //岗位
lDept:=Business.Model.Org.OrgSys.OrgSystem.FindUnit(iDept,'','');
DsPersonRole.FieldByName('FDeptID').AsString:=lDept.ID; //部门ID
DsPersonRole.FieldByName('FDept').AsString:=lDept.DisplayName; //部门
DsPersonRole.Post;
end;
end;
IsSelected:=True;
DataSetSelectNode.Next;
end
else
begin
DataSetSelectNode.Next;
end;
end; //更新项目人员表。
finally
DataSetSelectNode.EnableControls;
DsPersonRole.EnableControls;
if Bookmark<>'' then
DataSetSelectNode.Bookmark:=Bookmark;
DsPersonRole.Filter:='FNodeID='''+DataSetSelectNode.FieldByName('FNodeID').AsString+'''';
DsPersonRole.Filtered:=True;
end; |