Exemple #1
0
        /// <summary>
        /// 绩效管理配置 数据操作
        /// </summary>
        /// <param name="add">新增</param>
        /// <param name="del">删除</param>
        /// <param name="Listupdate">修改</param>
        /// <param name="title">当月标题头</param>
        /// <param name="Score">当月数据修正</param>
        public void operation(string time, string departmentid, List <PerformancesetupEntity> add, List <PerformancesetupEntity> del, List <PerformancesetupEntity> Listupdate)
        {
            try
            {
                //所有配置
                var setUp = service.AllTitle(departmentid);
                //获取标题
                PerformancetitleEntity title = titlebll.getTitle(time, departmentid);
                //获取数据
                List <PerformanceEntity> Score = Scorebll.getScore(time, departmentid);
                // 在处理删除 在处理新增
                #region 修改
                foreach (var item in Listupdate)
                {
                    //修改title
                    var old = setUp.First(x => x.performancetypeid == item.performancetypeid);
                    if (item.name != old.name)
                    {
                        old.name = item.name;
                    }
                    if (item.isuse != old.isuse)
                    {
                        old.isuse = item.isuse;
                    }
                }
                #endregion
                #region  除
                //根据序号去对数据进行更正
                foreach (var item in del)
                {
                    var count   = setUp.Count();
                    var delsort = setUp.First(x => x.performancetypeid == item.performancetypeid);

                    ////将后面数据重新排序
                    //for (int i = delsort.sort + 1; i < count; i++)
                    //{
                    //    //配置操作
                    //    if (Listupdate.Select(x => x.performancetypeid).ToList().Contains(setUp[i].performancetypeid))
                    //    {
                    //        var one = Listupdate.First(x => x.performancetypeid == setUp[i].performancetypeid);
                    //        one.sort = setUp[i].sort - 1;
                    //        setUp[i].sort = setUp[i].sort + 1;
                    //    }
                    //    else
                    //    {
                    //        setUp[i].sort = setUp[i].sort - 1;
                    //        Listupdate.Add(setUp[i]);
                    //    }
                    //}
                    //数据操作
                    foreach (var scoreItem in Score)
                    {
                        var ScoreInfo = scoreItem.score.Split(',').ToList();
                        //找出所在位置
                        //var num = setUp.IndexOf(delsort);
                        //if (num != -1)
                        //{
                        ScoreInfo[delsort.sort] = "0";
                        // ScoreInfo.RemoveAt(delsort.sort);
                        scoreItem.score = string.Join(",", ScoreInfo);
                        //}
                    }
                    setUp.Remove(delsort);
                }
                #endregion
                #region 新增

                foreach (var item in add)
                {
                    var typeList = setUp.Where(x => x.type == 1);
                    var sortType = typeList.Count();
                    //如果为第一类型
                    if (item.type == 1)
                    {
                        var count = setUp.Count();
                        ////将后面数据重新排序
                        //for (int i = sortType; i < count; i++)
                        //{
                        //    if (Listupdate.Select(x => x.performancetypeid).ToList().Contains(setUp[i].performancetypeid))
                        //    {
                        //        var one = Listupdate.First(x => x.performancetypeid == setUp[i].performancetypeid);
                        //        one.sort = setUp[i].sort + 1;
                        //        setUp[i].sort = setUp[i].sort + 1;
                        //    }
                        //    else
                        //    {
                        //        setUp[i].sort = setUp[i].sort + 1;
                        //        Listupdate.Add(setUp[i]);
                        //    }
                        //}
                        item.sort = sortType;
                        item.performancetypeid = Guid.NewGuid().ToString();
                        item.departmentid      = departmentid;
                        item.createtime        = DateTime.Now;
                        setUp.Add(item);
                        setUp = setUp.OrderBy(x => x.sort).ToList();

                        ////数据操作
                        //foreach (var scoreItem in Score)
                        //{
                        //    var ScoreInfo = scoreItem.score.Split(',').ToList();
                        //    //找出所在位置
                        //    var num = setUp.IndexOf(item);
                        //    if (num != -1)
                        //    {
                        //        //处理数据
                        //        var frist = ScoreInfo.Take(num).ToList();
                        //        var lastnum = ScoreInfo.Count();
                        //        var last = ScoreInfo.Skip(num).Take(lastnum - num).ToList();
                        //        ScoreInfo.Clear();
                        //        ScoreInfo.AddRange(frist);
                        //        ScoreInfo.Add("0");
                        //        ScoreInfo.AddRange(last);
                        //        scoreItem.score = string.Join(",", ScoreInfo);
                        //    }

                        //}
                    }
                    else
                    {
                        var count = setUp.Count();
                        item.departmentid = departmentid;
                        item.createtime   = DateTime.Now;
                        if (sortType == 3)
                        {
                            item.sort = count;
                        }
                        else
                        {
                            item.sort = count + 1;
                        }

                        item.performancetypeid = Guid.NewGuid().ToString();
                        setUp.Add(item);
                        setUp = setUp.OrderBy(x => x.sort).ToList();
                        //加入数据
                        //数据操作
                        //foreach (var scoreItem in Score)
                        //{
                        //    var ScoreInfo = scoreItem.score.Split(',').ToList();
                        //    ScoreInfo.Add("0");
                        //    scoreItem.score = string.Join(",", ScoreInfo);
                        //}
                    }
                }

                #endregion
                var sort = setUp.Where(x => x.isuse).ToList();
                foreach (var item in Score)
                {
                    item.sort = string.Join(",", sort.Select(x => x.sort));
                }
                title.sort = string.Join(",", sort.Select(x => x.sort));
                title.name = string.Join(",", sort.Select(x => x.name));
                service.operation(add, del, Listupdate, title, Score);
            }
            catch (Exception)
            {
                throw;
            }
        }
        /// <summary>
        /// 操作配置  对应修改当前月标题和数据
        /// </summary>
        public void operation(List <PerformancesetupEntity> add, List <PerformancesetupEntity> del, List <PerformancesetupEntity> Listupdate, PerformancetitleEntity title, List <PerformanceEntity> Score)
        {
            var db = new RepositoryFactory().BaseRepository().BeginTrans();

            try
            {
                if (add.Count > 0)
                {
                    db.Insert(add);
                }
                if (del.Count > 0)
                {
                    db.Delete(del);
                }
                if (Listupdate.Count > 0)
                {
                    db.Update(Listupdate);
                }
                var ck = false;
                //标题头数据操作
                if (title != null)
                {
                    if (title.name != null)
                    {
                        var one = db.FindEntity <PerformancetitleEntity>(title.titleid);
                        if (one != null)
                        {
                            one.name = title.name;
                            one.sort = title.sort;
                            db.Update(one);
                            ck = false;
                        }
                        else
                        {
                            ck = true;
                            db.Insert(title);
                        }
                    }
                }
                //数据列表数据操作
                if (Score.Count > 0)
                {
                    if (ck)
                    {
                        db.Insert(Score);
                    }
                    else
                    {
                        db.Update(Score);
                    }
                }
                db.Commit();
            }
            catch (Exception ex)
            {
                db.Rollback();
                throw;
            }
        }
Exemple #3
0
        /// <summary>
        ///初始化基础数据
        /// </summary>
        public void BaseDataOperation(List <DepartmentEntity> entity)
        {
            try
            {
                var time    = DateTime.Now;
                var usetime = new DateTime(time.Year, time.Month, 1).ToString("yyyy-MM-dd");
                var dept    = deptbll.GetList();



                foreach (var item in entity)
                {
                    //所有配置
                    var setUp   = service.AllTitle(item.DepartmentId);
                    var sortStr = string.Join(",", setUp.Where(x => x.isuse).Select(x => x.sort));
                    PerformancetitleEntity title = titlebll.getTitle(usetime, item.DepartmentId);

                    if (title != null)
                    {
                        // #region 何明 2019-09-20
                        //// var deptIds = entity.Select(p => p.DepartmentId).ToList();
                        List <PerformanceEntity> allData = new PerformanceBLL().getScore(usetime, item.DepartmentId);
                        var alluserList = new UserBLL().GetUserList().Where(x => x.DepartmentId == item.DepartmentId && x.DeleteMark != 1 && x.EnabledMark == 1).ToList();//所有人员
                        var delData     = new List <PerformanceEntity>();
                        var addData     = new List <PerformanceEntity>();
                        // #endregion

                        // //根据人员,来做对应的数据处理

                        // //检查各部门人员

                        var thisUsers = alluserList.Where(p => p.DepartmentId == item.DepartmentId).Select(x => x.UserId).ToList();
                        // if (Debugger.IsAttached && (thisUsers.Contains("18d4ee5a-e239-49c3-b018-993cb711d0e4") || thisUsers.Contains("d15d843d-85e1-40c7-bcae-02f705855a39")))
                        // {
                        //     //拿用户熊红做测试用
                        //     var a = string.Empty;

                        // }
                        // //找到已经不在本班组的数据,并删除数据
                        var thisDelList = allData.Where(p => p.deparmentid == item.DepartmentId && !thisUsers.Contains(p.userid)).ToList();
                        delData.AddRange(thisDelList);
                        // //找到本班组需要新增的人
                        var addedUsers = allData.Where(p => p.deparmentid == item.DepartmentId).Select(x => x.userid).ToList();
                        var addUsers   = alluserList.Where(p => p.DepartmentId == item.DepartmentId && !addedUsers.Contains(p.UserId)).ToList(); //不在数据内的用户的Id
                                                                                                                                                 //构造新增实体
                        foreach (var user in addUsers)
                        {
                            var one = new PerformanceEntity();
                            one.performanceid = Guid.NewGuid().ToString();
                            one.score         = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0";
                            one.userid        = user.UserId;
                            one.usetime       = usetime;
                            one.deparmentid   = item.DepartmentId;
                            one.titleid       = title.titleid;
                            one.sort          = sortStr;
                            one.deparmentname = item.FullName;
                            one.username      = user.RealName;
                            one.photo         = user.Photo;
                            one.quarters      = user.Quarters;
                            one.planer        = user.Planer;
                            addData.Add(one);
                        }
                        if (addData != null && addData.Count > 0)
                        {
                            Scorebll.Insert(addData);//新增的数据
                            //if (addData.Any(x => x.userid == "d15d843d-85e1-40c7-bcae-02f705855a39"))
                            //{
                            //    var b = "";
                            //}
                        }
                        if (delData != null && delData.Count > 0)
                        {
                            Scorebll.Delete(delData);//删除的数据
                        }
                    }
                    else
                    {
                        if (setUp.Count > 0)
                        {
                            var sort = setUp.Where(x => x.isuse).ToList();
                            PerformancetitleEntity Title = new PerformancetitleEntity();
                            Title.departmentid = item.DepartmentId;
                            Title.name         = string.Join(",", sort.Select(x => x.name));
                            Title.titleid      = Guid.NewGuid().ToString();
                            Title.sort         = sortStr;
                            Title.usetime      = usetime;
                            var userList = pbll.GetListByDept(item.DepartmentId).ToList();
                            List <PerformanceEntity> add = new List <PerformanceEntity>();
                            foreach (var user in userList)
                            {
                                var one = new PerformanceEntity();
                                one.performanceid = Guid.NewGuid().ToString();
                                one.score         = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0";
                                one.userid        = user.ID;
                                one.usetime       = usetime;
                                one.deparmentid   = item.DepartmentId;
                                one.titleid       = Title.titleid;
                                one.sort          = sortStr;
                                one.deparmentname = item.FullName;
                                one.username      = user.Name;
                                one.photo         = user.Photo;
                                one.quarters      = user.Quarters;
                                one.planer        = user.Planer;
                                add.Add(one);
                            }
                            service.operation(new List <PerformancesetupEntity>(), new List <PerformancesetupEntity>(), new List <PerformancesetupEntity>(), Title, add);
                            var up    = new List <PerformanceupEntity>();
                            var oneup = new PerformanceupEntity();
                            oneup.id             = Guid.NewGuid().ToString();
                            oneup.deptcode       = item.EnCode;
                            oneup.titleid        = Title.titleid;
                            oneup.departmentid   = item.DepartmentId;
                            oneup.departmentname = item.FullName;
                            oneup.parentid       = item.ParentId;
                            oneup.parentname     = dept.FirstOrDefault(x => x.DepartmentId == item.ParentId).FullName;
                            oneup.parentcode     = dept.FirstOrDefault(x => x.DepartmentId == item.ParentId).EnCode;
                            oneup.usetime        = usetime;
                            oneup.useyear        = time.Year.ToString();
                            oneup.isup           = false;
                            up.Add(oneup);
                            upbll.add(up);
                        }
                        else
                        {
                            var setup = new List <PerformancesetupEntity>();

                            for (int i = 0; i < 9; i++)
                            {
                                var OneSetUp = new PerformancesetupEntity();
                                OneSetUp.createtime        = time;
                                OneSetUp.performancetypeid = Guid.NewGuid().ToString();
                                OneSetUp.isupdate          = false;
                                OneSetUp.departmentid      = item.DepartmentId;
                                #region  固定类型
                                if (i == 2)
                                {
                                    continue;
                                }
                                switch (i)
                                {
                                case 0:
                                    OneSetUp.isuse = true;
                                    OneSetUp.name  = "绩效金额(元)";
                                    OneSetUp.type  = 1;
                                    OneSetUp.sort  = i;
                                    break;

                                case 1:
                                    OneSetUp.isuse = true;
                                    OneSetUp.name  = "绩效得分";
                                    OneSetUp.type  = 1;
                                    OneSetUp.sort  = i;
                                    break;

                                case 3:
                                    OneSetUp.isuse = true;
                                    OneSetUp.name  = "实际出勤(班次)";
                                    OneSetUp.type  = 2;
                                    OneSetUp.sort  = i;
                                    break;

                                case 4:
                                    OneSetUp.isuse = true;
                                    OneSetUp.name  = "值班(次)";
                                    OneSetUp.type  = 2;
                                    OneSetUp.sort  = i;
                                    break;

                                case 5:
                                    OneSetUp.isuse = true;
                                    OneSetUp.name  = "完成任务数";
                                    OneSetUp.type  = 2;
                                    OneSetUp.sort  = i;
                                    break;

                                case 6:
                                    OneSetUp.isuse = true;
                                    OneSetUp.name  = "任务总分";
                                    OneSetUp.type  = 2;
                                    OneSetUp.sort  = i;
                                    break;

                                case 7:
                                    OneSetUp.isuse = true;
                                    OneSetUp.name  = "奖励(元)";
                                    OneSetUp.type  = 2;
                                    OneSetUp.sort  = i;
                                    break;

                                case 8:
                                    OneSetUp.isuse = true;
                                    OneSetUp.name  = "考核(元)";
                                    OneSetUp.type  = 2;
                                    OneSetUp.sort  = i;
                                    break;
                                }

                                #endregion
                                setup.Add(OneSetUp);
                            }

                            PerformancetitleEntity Title = new PerformancetitleEntity();
                            Title.departmentid = item.DepartmentId;
                            Title.name         = "绩效金额(元),绩效得分,实际出勤(班次),值班(次),完成任务数,任务总分,奖励(元),考核(元)";
                            Title.titleid      = Guid.NewGuid().ToString();
                            Title.usetime      = usetime;
                            Title.sort         = "0,1,3,4,5,6,7,8";
                            var userList = pbll.GetListByDept(item.DepartmentId).ToList();
                            List <PerformanceEntity> add = new List <PerformanceEntity>();
                            foreach (var user in userList)
                            {
                                var one = new PerformanceEntity();
                                one.performanceid = Guid.NewGuid().ToString();
                                one.score         = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0";
                                one.userid        = user.ID;
                                one.usetime       = usetime;
                                one.titleid       = Title.titleid;
                                one.deparmentid   = item.DepartmentId;
                                one.sort          = "0,1,3,4,5,6,7,8";
                                one.deparmentname = item.FullName;
                                one.username      = user.Name;
                                one.photo         = user.Photo;
                                one.quarters      = user.Quarters;
                                one.planer        = user.Planer;
                                add.Add(one);
                            }

                            service.operation(setup, new List <PerformancesetupEntity>(), new List <PerformancesetupEntity>(), Title, add);
                            var up    = new List <PerformanceupEntity>();
                            var oneup = new PerformanceupEntity();
                            oneup.id             = Guid.NewGuid().ToString();
                            oneup.deptcode       = item.EnCode;
                            oneup.titleid        = Title.titleid;
                            oneup.departmentid   = item.DepartmentId;
                            oneup.departmentname = item.FullName;
                            oneup.parentid       = item.ParentId;
                            oneup.parentname     = dept.FirstOrDefault(x => x.DepartmentId == item.ParentId).FullName;
                            oneup.parentcode     = dept.FirstOrDefault(x => x.DepartmentId == item.ParentId).EnCode;
                            oneup.usetime        = usetime;
                            oneup.useyear        = time.Year.ToString();
                            oneup.isup           = false;
                            up.Add(oneup);
                            upbll.add(up);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                throw;
            }
        }