Esempio n. 1
0
        /// <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");
                    }
                }
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        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处理完毕");
        }
Esempio n. 6
0
        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处理完毕");
        }
Esempio n. 7
0
        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 + "%");
            }
        }