/// <summary>
        /// 设置班别数据
        /// </summary>
        /// <param name="entities"></param>
        /// <returns></returns>
        public OpResult SetClassType(List <AttendClassTypeModel> entities, string opPerson)
        {
            int record = 0;

            try
            {
                if (entities == null || entities.Count == 0)
                {
                    return(OpResult.SetSuccessResult("entities can't be null", false));
                }
                AttendClassTypeDetailModel mdl   = null;
                AttendClassTypeModel       ctMdl = null;
                entities.ForEach(dto =>
                {
                    dto.DateFrom    = dto.DateFrom.AddDays(1).ToDate();
                    dto.DateTo      = dto.DateTo.AddDays(1).ToDate();
                    dto.OpDate      = DateTime.Now;
                    dto.IsAlwaysDay = "否";
                    dto.OpPerson    = opPerson;
                    StoreClassTypeData(ref record, ctMdl, dto);
                    StoreClassTypeDetailData(ref record, mdl, dto);
                    //同步总表中的班别信息
                    ArchiveService.ArchivesManager.ChangeClassType(dto.WorkerId, dto.ClassType);
                });
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return(OpResult.SetSuccessResult("设置班别成功!", record > 0));
        }
        /// <summary>
        /// 根据部门载入班别信息
        /// </summary>
        /// <param name="department"></param>
        /// <returns></returns>
        public List <AttendClassTypeModel> LoadDatasBy(string department, string workerId = null, string classType = null)
        {
            List <AttendClassTypeModel> getDatas = new List <AttendClassTypeModel>();

            try
            {
                QueryWorkersDto qry = new QueryWorkersDto()
                {
                    Department = department, WorkerId = workerId
                };
                //在档案中载入部门数据
                List <ArWorkerInfo> workers = workerId == null?ArchiveService.ArchivesManager.FindWorkers(qry, 1) : ArchiveService.ArchivesManager.FindWorkers(qry, 2);

                //在班别设置中载入部门班别数据信息
                List <AttendClassTypeModel> classTypes = GetClassTypeDatas(department, workerId, classType);
                AttendClassTypeModel        mdl        = null;
                //合并数据
                workers.ForEach(w =>
                {
                    mdl    = new AttendClassTypeModel();
                    var ct = classTypes.FirstOrDefault(c => c.WorkerId == w.WorkerId);
                    if (ct != null)
                    {
                        //根据部门信息添加数据
                        getDatas.Add(ct);
                        //移除要搜索的数据,减少查询时间
                        classTypes.Remove(ct);
                    }
                    else
                    {
                        mdl.WorkerId   = w.WorkerId;
                        mdl.WorkerName = w.Name;
                        mdl.Department = w.Department;
                        mdl.ClassType  = w.ClassType;
                        getDatas.Add(mdl);
                    }
                });
                //清空班别设置中离职人员数据信息
                if (classTypes != null && classTypes.Count > 0)
                {
                    classTypes.ForEach(c =>
                    {
                        var item = workers.FirstOrDefault(e => e.WorkerId == c.WorkerId);
                        //人员信息列表中已经找不到此数据,则清空
                        if (item == null)
                        {
                            this.irep.Delete(d => d.WorkerId == c.WorkerId);
                        }
                    });
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            getDatas = getDatas.OrderBy(e => e.WorkerId).ToList();
            return(getDatas);
        }
 private void StoreClassTypeData(ref int record, AttendClassTypeModel ctMdl, AttendClassTypeModel dto)
 {
     ctMdl = this.irep.Entities.FirstOrDefault(e => e.WorkerId == dto.WorkerId);
     if (ctMdl != null)
     {
         dto.Id_Key = ctMdl.Id_Key;
         //如果存在,则直接修改信息
         record += this.irep.Update(u => u.WorkerId == dto.WorkerId, dto);
     }
     else
     {
         //不存在,则直接添加
         record += this.irep.Insert(dto);
     }
 }
        private void StoreClassTypeDetailData(ref int record, AttendClassTypeDetailModel mdl, AttendClassTypeModel dto)
        {
            DateTime dateFrom = dto.DateFrom;
            DateTime dateTo   = dto.DateTo;

            while (dateFrom <= dateTo)
            {
                mdl = this.irepDetail.Entities.FirstOrDefault(e => e.WorkerId == dto.WorkerId && e.DateAt == dateFrom);
                if (mdl != null)
                {
                    mdl.ClassType = dto.ClassType;
                    //如果存在,则直接修改信息
                    record += this.irepDetail.Update(u => u.WorkerId == dto.WorkerId && u.DateAt == dateFrom, mdl);
                }
                else
                {
                    mdl = new AttendClassTypeDetailModel()
                    {
                        ClassType   = dto.ClassType,
                        DateAt      = dateFrom,
                        Department  = dto.Department,
                        IsAlwaysDay = dto.IsAlwaysDay,
                        OpPerson    = dto.OpPerson,
                        WorkerId    = dto.WorkerId,
                        WorkerName  = dto.WorkerName,
                        OpDate      = dto.DateFrom,
                        OpSign      = "add"
                    };
                    //不存在,则直接添加
                    record += this.irepDetail.Insert(mdl);
                }
                //同步汇总考勤中的数据信息,待写
                this.attendanceHandler.UpdateClassTypeInfo(dto.ClassType, dateFrom);
                dateFrom = dateFrom.AddDays(1);
            }
        }