/// <summary> /// 保存角色用户关系 /// </summary> /// <param name="model"></param> /// <returns></returns> public JsonResult SaveRoleUsers(RoleUserViewModel model) { return(ExecuteFunctionRun(() => { ActionResult result = new ActionResult(true, "msgGlobalString.SaveSucced"); List <RoleUserViewModel> listusers = new List <RoleUserViewModel>(); try { OThinker.Organization.OrgPost post = this.Engine.Organization.GetUnit(model.RoleID) as OThinker.Organization.OrgPost; if (post != null) { if (model.UserID != null) { var ids = model.UserID.Split(';'); for (int i = 0; i < ids.Length; i++) { OThinker.Organization.OrgStaff staff = new OThinker.Organization.OrgStaff() { ObjectID = string.IsNullOrEmpty(model.ObjectID) ? "" : model.ObjectID, OUScope = model.ManagerScopeIds == null ? new string[] { } : model.ManagerScopeIds.Split(';'), UserID = ids[i], ParentObjectID = model.RoleID, ParentIndex = model.Sortkey, //ParentIndex 存储排序键 Description = model.Description }; //新增 if (string.IsNullOrEmpty(staff.ObjectID)) { //新增时判断是否有添加过 if (post.ChildList != null && post.ChildList.Count() > 0) { bool flag = false; foreach (OThinker.Organization.OrgStaff sf in post.ChildList) { if (sf.UserID == ids[i]) { flag = true; break; } } if (flag) { result.Success = false; result.Message = "用户[" + this.Engine.Organization.GetName(ids[i]) + "]已经存在记录,请选择编辑!"; return Json(result); } } staff.ObjectID = Guid.NewGuid().ToString(); post.AddChildUnit(staff); } //更新 else { post.UpdateChildUnit(staff); } } } post.ChildList = post.ChildList.OrderBy(c => c.ParentIndex).ToArray(); this.Engine.Organization.UpdateUnit(this.UserValidator.UserID, post); } return Json(result); } catch (Exception ex) { result = new ActionResult(false, "保存失败," + ex.Message); return Json(result); } })); }
/// <summary> /// 角色同步 /// </summary> private void SyncRole() { //角色 //说明V10版本中的角色相当于V9版本中职务、岗位、编制的集合。所以在同步时,要进行转化 //岗位名称->角色名称 //岗位编码->角色编码 //岗位成员->角色用户 //岗位所在部门->角色管理范围 var sqlorgjob = string.Format(@"SELECT [ObjectID] ,[Code] ,[SuperiorCode] ,[DisplayName] ,[Description] ,[ParentObjectID] ,[ParentPropertyName] ,[ParentIndex] ,[Level] FROM [OT_OrgJob] ORDER BY Code"); var dtjob = H3DBHelper.GetDataTable(sqlorgjob); foreach (DataRow item in dtjob.Rows) { var orgpost = new OThinker.Organization.OrgPost { ObjectID = item["ObjectID"].ToString(), Code = item["Code"].ToString(), Name = item["DisplayName"].ToString(), JobLevel = item["Level"].ToString() == "" ? 0 : int.Parse(item["Level"].ToString()) }; var staff = string.Format(@"SELECT t3.ChildID ,t2.ParentID ,t1.Code FROM OT_OrgJob t1 ,OT_OrgPost t2 ,OT_GroupChild t3 WHERE t1.Code = t2.JobCode AND t2.ObjectID = t3.ParentObjectID AND t1.Code='{0}' ORDER BY t1.Code, t2.Code, t2.ParentID", orgpost.Code); var dtorgstaff = H3DBHelper.GetDataTable(staff); var list = new List <OThinker.Organization.OrgStaff>(); foreach (DataRow item2 in dtorgstaff.Rows) { var orgstaff = new OThinker.Organization.OrgStaff { OUScope = new string[] { item2["ParentID"].ToString() }, UserID = item2["ChildID"].ToString(), ParentObjectID = orgpost.ObjectID }; list.Add(orgstaff); } orgpost.ChildList = list.ToArray(); OThinker.H3.Controllers.AppUtility.Engine.Organization.AddUnit("", orgpost); } //编制名称->角色名称 //编制编码->角色编码 //编制成员->角色用户 //编制管理部门->角色管理范围 //组 var sqlgroup = string.Format(@"SELECT ObjectID ,Name ,Code ,ParentID FROM [OT_Group]"); var dtgroup = H3DBHelper.GetDataTable(sqlgroup); foreach (DataRow item in dtgroup.Rows) { var group = new OThinker.Organization.Group() { ObjectID = item["ObjectID"].ToString(), Name = item["Name"].ToString(), ParentID = item["ParentID"].ToString() }; var groupchild = string.Format(@"SELECT * FROM OT_GroupChild WHERE ParentObjectID = '{0}'", item["ObjectID"].ToString()); var dtchild = H3DBHelper.GetDataTable(groupchild); foreach (DataRow item2 in dtchild.Rows) { var list = new List <OThinker.Organization.GroupChild>(); var staff = new OThinker.Organization.GroupChild { ObjectID = item2["ObjectID"].ToString(), ChildID = item2["ChildID"].ToString(), ParentObjectID = item2["ParentObjectID"].ToString() }; list.Add(staff); group.ChildList = list.ToArray(); } OThinker.H3.Controllers.AppUtility.Engine.Organization.AddUnit("", group); } }