/// <summary> /// 将id部门下的人员转到parentid部门下 /// </summary> /// <param name="id"></param> /// <param name="parentid"></param> private static void DepartmentUserMove(string id, int parentid) { GetDepartmentList DepartmentList = DepartmentBll.GetList(); var dddd = DepartmentList.department.Where(e => e.id.Equals(id)).ToList().FirstOrDefault(); if (dddd != null) { //钉钉中存在该部门,检查该部门下是否有人,没人的并且重复的部门删除钉钉中该部门,并且删除钉钉关系表和钉钉树关系表 GetDepartmentForUserList UserList = DepartmentBll.GetByDepartmentIdForUserInfoList(dddd.id); Console.Write("\n" + dddd.name + " DD_ID=" + dddd.id + ",其下共有" + UserList.userlist.Count + "个人!\r\n"); foreach (var Useritem in UserList.userlist) { string EmployeeJson = EmployeeForDingTalkBll.GetEmployee(Useritem.userid); EmployeeEntity Emodel = JsonHelper.JsonToModel <EmployeeEntity>(EmployeeJson); Emodel.department = new List <int>() { parentid }; string param = Emodel.ToJson(); Result uResult = EmployeeBll.Update(param); if (uResult.errcode != "0") { Console.Write("\r\n" + uResult.errmsg + "\r\n"); } } } }
private static void GetDepartmentList() { try { GetDepartmentList model = DepartmentBll.GetList(); if (model != null) { if (model.errcode == 0) { var d = model.department.Where(e => e.name.Contains("IT部")).First(); string json = model.department.ToJson(); Console.Write("成功:\n" + json); } else { Console.Write(model.errmsg); } } else { Console.Write("无返回数据"); } } catch (Exception ex) { Console.Write(ex.Message); } }
/// <summary> /// 获取部门列表 /// </summary> /// <returns></returns> public static GetDepartmentList GetList() { AccessToken accessToken = TokenHelp.GetAccessToken(); string url = DingTalkUrlHelp.GetDepartmentList(accessToken.Value); GetDepartmentList model = new GetDepartmentList(); model = DingTalkHttpHelp <GetDepartmentList> .Get(url); return(model); }
/// <summary> /// 根据部门名称获取钉钉中的部门信息 /// </summary> /// <param name="name"></param> /// <returns></returns> public static Department GetByName(string name) { AccessToken accessToken = TokenHelp.GetAccessToken(); GetDepartmentList DepartmentList = GetList(); if (DepartmentList.errcode == 90002) { System.Threading.Thread.Sleep(1500); DepartmentList = GetList(); } Department model = DepartmentList.department.Where(e => e.name.Equals(name)).ToList().FirstOrDefault(); return(model); }
private static void OperationRepeatData4() { GetDepartmentList DepartmentList = DepartmentBll.GetList(); string sql = @"with ta as( select * from DepartmentTrees where DepartmentId in( select DepartmentId from DepartmentTrees group by DepartmentId having count(1)>1 ) ) select a.ESB_DepartmentName aa,ta.* from ta left join DepartmentResult a on ta.DD_Id=a.id where a.ESB_DepartmentName is null"; SqlSugarClient Ddb = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.DingTalkConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute }); List <DepartmentTrees> list = Ddb.Ado.SqlQuery <DepartmentTrees>(sql); foreach (var item in list) { var dddd = DepartmentList.department.Where(e => e.id.Equals(item.DD_Id)).ToList().FirstOrDefault(); if (dddd != null) { //钉钉中存在该部门,检查该部门下是否有人,没人的并且重复的部门删除钉钉中该部门,并且删除钉钉关系表和钉钉树关系表 GetDepartmentForUserList UserList = DepartmentBll.GetByDepartmentIdForUserInfoList(dddd.id); Console.Write("\n" + dddd.name + " DD_ID=" + dddd.id + ",其下共有" + UserList.userlist.Count + "个人!\r\n"); if (UserList.userlist.Count == 0) { //删除钉钉中的部门 var a = DepartmentBll.Delete(dddd.id); //删除钉钉关系表和钉钉树关系表 int i = Ddb.Deleteable <DepartmentResult>().Where(it => it.id.Equals(item.DD_Id)).ExecuteCommand(); i = Ddb.Deleteable <DepartmentTrees>().Where(it => it.DD_Id.Equals(item.DD_Id)).ExecuteCommand(); } } else { //当钉钉中不存在该部门时,只删除关系表中重复的数据 //int i = Ddb.Deleteable<DepartmentResult>().Where(it => it.id.Equals(item.id)).ExecuteCommand(); //int i = Ddb.Deleteable<DepartmentTrees>().Where(it => it.Id.Equals(item.Id)).ExecuteCommand(); } } Console.Write("\r\n处理完毕"); }
private static void OperationRepeatData2() { GetDepartmentList DepartmentList = DepartmentBll.GetList(); string sql = @" select * from DepartmentResult where ESB_DepartmentID in( '1000003530', '1000003531', '1000003532', '1000003534', '1000003535', '1000003536', '1000003537', '1000003538' ) "; SqlSugarClient Ddb = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.DingTalkConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute }); List <DepartmentResult> list = Ddb.Ado.SqlQuery <DepartmentResult>(sql); foreach (var item in list) { var dddd = DepartmentList.department.Where(e => e.id.Equals(item.id)).ToList().FirstOrDefault(); if (dddd != null) { DepartmentEntity model = new DepartmentEntity(); string DepartmentJson = GetDepartment(item.id); model = JsonHelper.JsonToModel <DepartmentEntity>(DepartmentJson); //如果部门名或者部门父ID与钉钉的不同的时候就更新,如果相同就不调用更新接口 if (!model.name.Equals(item.ESB_DepartmentName)) { model.name = item.ESB_DepartmentName; model.sourceIdentifier = item.ESB_DepartmentID; string param = model.ToJson(); Result result = DepartmentBll.Update(param); } } } Console.Write("\r\n处理完毕"); }
private static void OperationRepeatData3() { GetDepartmentList DepartmentList = DepartmentBll.GetList(); string sql = @" with ta as( select * from DepartmentResult where ESB_DepartmentID in( select ESB_DepartmentID from DepartmentResult group by ESB_DepartmentID having count(1)>1 ) ),tb as( select a.* from [PM.WebApi].dbo.V_Effective_Tbiz_DepartmentInfo a inner join [PM.WebApi].dbo.V_Effective_Tbiz_DepartmentTreeas b on a.DepartmentId=b.TreeNode ),tc as( select tb.fullname a,ta.* from ta left join tb on ta.ESB_DepartmentName=tb.FullName where tb.fullname is null ),td as( select a.* from [PM.WebApi].dbo.V_Effective_Tbiz_DepartmentInfo a inner join tc on tc.ESB_DepartmentId=a.DepartmentId ) select distinct td.fullname aa,tc.* from tc right join td on tc.ESB_DepartmentId=td.DepartmentId order by td.fullname "; string sql2 = @" with ta as( select * from DepartmentResult where ESB_DepartmentID in( select ESB_DepartmentID from DepartmentResult group by ESB_DepartmentID having count(1)>1 ) ),tb as( select a.* from [PM.WebApi].dbo.V_Effective_Tbiz_DepartmentInfo a inner join [PM.WebApi].dbo.V_Effective_Tbiz_DepartmentTreeas b on a.DepartmentId=b.TreeNode ),tc as( select tb.fullname a,ta.* from ta left join tb on ta.ESB_DepartmentName=tb.FullName where tb.fullname is null ),td as( select a.* from [PM.WebApi].dbo.V_Effective_Tbiz_DepartmentInfo a inner join tc on tc.ESB_DepartmentId=a.DepartmentId ),te as( select a.* from td inner join DepartmentResult a on td.DepartmentID=a.ESB_DepartmentID and td.FullName=a.ESB_DepartmentName )select '' aa,'' a ,* from te order by ESB_DepartmentID "; SqlSugarClient Ddb = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.DingTalkConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute }); List <DepartmentResult> list = Ddb.Ado.SqlQuery <DepartmentResult>(sql); List <DepartmentResult> list2 = Ddb.Ado.SqlQuery <DepartmentResult>(sql2); foreach (var item in list) { var dddd = DepartmentList.department.Where(e => e.id.Equals(item.id)).ToList().FirstOrDefault(); if (dddd != null) { //钉钉中存在该部门,检查该部门下是否有人,没人的并且重复的部门删除钉钉中该部门,并且删除钉钉关系表和钉钉树关系表 GetDepartmentForUserList UserList = DepartmentBll.GetByDepartmentIdForUserInfoList(dddd.id); Console.Write("\n" + dddd.name + " DD_ID=" + dddd.id + ",其下共有" + UserList.userlist.Count + "个人!\r\n"); string id = list2.Where(it => it.ESB_DepartmentID.Equals(item.ESB_DepartmentID)).FirstOrDefault().id; if (UserList.userlist.Count != 0) { //将该部门下的人迁移到正确的部门下 foreach (var Useritem in UserList.userlist) { string EmployeeJson = EmployeeForDingTalkBll.GetEmployee(Useritem.userid); EmployeeEntity Emodel = JsonHelper.JsonToModel <EmployeeEntity>(EmployeeJson); Emodel.department = new List <int>() { Convert.ToInt32(id) }; string param = Emodel.ToJson(); Result uResult = EmployeeBll.Update(param); if (uResult.errcode != "0") { Console.Write("\r\n" + uResult.errmsg + "\r\n"); } } //删除钉钉中的部门 var a = DepartmentBll.Delete(dddd.id); //删除钉钉关系表和钉钉树关系表 int i = Ddb.Deleteable <DepartmentResult>().Where(it => it.id.Equals(item.id)).ExecuteCommand(); i = Ddb.Deleteable <DepartmentTrees>().Where(it => it.DD_Id.Equals(item.id)).ExecuteCommand(); } } } Console.Write("\r\n处理完毕"); }
public static string FirstInitialize(SqlSugarClient Ddb) { Ddb.CodeFirst.InitTables(typeof(Tbiz_ExistData)); Ddb.DbMaintenance.TruncateTable("Tbiz_ExistData"); //创建一个临时部门,用于存放管理员 DepartmentEntity Deptmodel = new DepartmentEntity(); Deptmodel.name = "TempDepartment"; Deptmodel.parentid = "1"; Deptmodel.sourceIdentifier = ""; DepartmentResult DepResult = DepartmentBll.Create(Deptmodel); string TempDDDeptID = DepResult.id; //查出所有部门id GetDepartmentList DepartmentList = DepartmentBll.GetList(); if (string.IsNullOrWhiteSpace(TempDDDeptID)) { TempDDDeptID = DepartmentList.department.Where(e => e.name.Equals("TempDepartment")).ToList().FirstOrDefault().id; } var list = DepartmentList.department.Where(e => !e.id.Equals("1") && !e.id.Equals(TempDDDeptID)).ToList(); foreach (var item in list) { //遍历每个id下的所有人员 GetDepartmentForUserList UserList = DepartmentBll.GetByDepartmentIdForUserInfoList(item.id); foreach (var Useritem in UserList.userlist) { try { //删除所有人员 Result Result = EmployeeBll.Delete(Useritem.userid); //当删除失败时,将该人员转移到临时部门中 if (Result.errcode != "0") { Tbiz_ExistData model = new Tbiz_ExistData(); model.ObjectId = Useritem.userid; model.Type = 1; model.CreateDate = DateTime.Now; Ddb.Insertable <Tbiz_ExistData>(model).ExecuteCommand(); string EmployeeJson = EmployeeForDingTalkBll.GetEmployee(Useritem.userid); EmployeeEntity Emodel = Newtonsoft.Json.JsonConvert.DeserializeObject <EmployeeEntity>(EmployeeJson); for (int i = 0; i < Emodel.department.Count; i++) { if (!Emodel.department[i].ToString().Equals("1")) { Emodel.department.Remove(Emodel.department[i]); } } Emodel.department.Add(Convert.ToInt32(TempDDDeptID)); string param = Emodel.ToJson(); Result uResult = EmployeeBll.Update(param); if (uResult.errcode != "0") { Console.Write("\r\n" + uResult.errmsg + "\r\n"); } } } catch (Exception e) { Console.Write("\r\n InitializeDingTalk-FirstInitialize() " + e + "\r\n"); log.Error(e); } } //最后删除公司下的所有部门 Result r = DepartmentBll.Delete(item.id); if (r.errcode != "0") { Tbiz_ExistData model = new Tbiz_ExistData(); model.ObjectId = item.id; model.Type = 0; model.CreateDate = DateTime.Now; Ddb.Insertable <Tbiz_ExistData>(model).ExecuteCommand(); Console.Write("\r\n" + r.errmsg + "\r\n"); } Console.Write("\r\n 当前进度" + Math.Round(Convert.ToDecimal((Convert.ToDecimal(list.IndexOf(item)) / list.Count())), 2, MidpointRounding.AwayFromZero) * 100 + "%"); } return(TempDDDeptID); }
private static void DeleteEmp() { SqlSugarClient Ddb = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.DingTalkConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute }); string TempDDDeptID = ""; //查出所有部门id GetDepartmentList DepartmentList = DepartmentBll.GetList(); if (string.IsNullOrWhiteSpace(TempDDDeptID)) { TempDDDeptID = DepartmentList.department.Where(e => e.name.Equals("TempDepartment")).ToList().FirstOrDefault().id; } var list = DepartmentList.department.Where(e => !e.id.Equals("1") && !e.id.Equals(TempDDDeptID)).ToList(); foreach (var item in list) { //遍历每个id下的所有人员 GetDepartmentForUserList UserList = DepartmentBll.GetByDepartmentIdForUserInfoList(item.id); foreach (var Useritem in UserList.userlist) { try { //删除所有人员 Result Result = EmployeeBll.Delete(Useritem.userid); //当删除失败时,将该人员转移到临时部门中 if (Result.errcode != "0") { Tbiz_ExistData model = new Tbiz_ExistData(); model.ObjectId = Useritem.userid; model.Type = 1; model.CreateDate = DateTime.Now; Ddb.Insertable <Tbiz_ExistData>(model).ExecuteCommand(); string EmployeeJson = EmployeeForDingTalkBll.GetEmployee(Useritem.userid); EmployeeEntity Emodel = Newtonsoft.Json.JsonConvert.DeserializeObject <EmployeeEntity>(EmployeeJson); for (int i = 0; i < Emodel.department.Count; i++) { if (!Emodel.department[i].ToString().Equals("1")) { Emodel.department.Remove(Emodel.department[i]); } } Emodel.department.Add(Convert.ToInt32(TempDDDeptID)); string param = Emodel.ToJson(); Result uResult = EmployeeBll.Update(param); if (uResult.errcode != "0") { Console.Write("\r\n" + uResult.errmsg + "\r\n"); } } } catch (Exception e) { Console.Write("\r\n" + e + "\r\n"); log.Error("\r\n InitializeDingTalk-DeleteEmp() " + e); } } Console.Write("\r\n 当前进度" + Math.Round(Convert.ToDecimal((Convert.ToDecimal(list.IndexOf(item)) / list.Count())), 2, MidpointRounding.AwayFromZero) * 100 + "%"); } }