Example #1
0
 public void SetShowNewCheckData(bool v)
 {
     EmpChecks.ForEach(p =>
     {
         p.ShowNewCheckData = v;
     });
 }
Example #2
0
 public void SetJSTimeByCheck(bool v)
 {
     EmpChecks.ForEach(p =>
     {
         p.JSTimeByCheck = v;
     });
 }
Example #3
0
 public void SetIgnore15MinuteCheck(bool v)
 {
     EmpChecks.ForEach(p =>
     {
         p.Ignore15MinuteCheck = v;
     });
 }
Example #4
0
 public void SetWorkHourTo8(bool v)
 {
     EmpChecks.ForEach(p =>
     {
         p.WorkHourIs8 = v;
     });
 }
Example #5
0
        /// <summary>
        /// 设置时间范围
        /// </summary>
        /// <param name="beginDate"></param>
        /// <param name="endDate"></param>
        public void SetDate(DateTime beginDate, DateTime endDate)
        {
            BeginDate = beginDate;
            EndDate   = endDate;
            for (DateTime d = beginDate; d <= endDate.AddDays(1); d = d.AddDays(1))
            {
                var emp = new EmpCheckDay(Emp, d)
                {
                    DeptName = DeptName,
                    DayType  = GetDayType(d),
                };
                if (Shifts.Count > 0)
                {
                    emp.EmpShift = Shifts[0];
                }

                EmpChecks.Add(emp);
            }
            //连接上下天
            EmpChecks.ForEach(p =>
            {
                p.PreCheckDay   = EmpChecks.SingleOrDefault(d => d.CheckDate == p.CheckDate.AddDays(-1));
                p.AfterCheckDay = EmpChecks.SingleOrDefault(d => d.CheckDate == p.CheckDate.AddDays(1));
            });
        }
Example #6
0
        /// <summary>
        /// 写入数据库
        /// </summary>
        public void FastWriteToDate(attContent dc)
        {
            List <CHECKINOUT> newlist = new List <CHECKINOUT>();

            ///删除考勤
            if (Checks.Count > 0)
            {
                var df1 = GetEmpChecks.Where(p => p.FirstCheck != null).OrderBy(p => p.CheckDate).FirstOrDefault();
                var dl2 = GetEmpChecks.Where(p => p.FirstCheck != null).OrderBy(p => p.CheckDate).LastOrDefault();
                if (df1 != null & dl2 != null)
                {
                    var d1 = df1.FirstCheck.Value;
                    if (df1.PreCheckDay != null && df1.PreCheckDay.ShiftName != df1.ShiftName)
                    {
                        d1 = (df1.PreCheckDay.CheckDate + df1.PreCheckDay.EmpShift.EndTime).AddMinutes(10);
                    }
                    var d2  = dl2.LastCheck.Value;
                    var cd1 = Checks.OrderBy(p => p.CHECKTIME).First();
                    if (d1 != cd1.CHECKTIME)
                    {
                        if (cd1.Memoinfo == null)
                        {
                            d1 = cd1.CHECKTIME;
                        }
                    }
                    ;
                    string delstr = string.Format("delete checkinout where userid={0} and checktime>='{1}' and checktime<='{2}';", Emp.USERID, d1.AddMinutes(-1), d2.AddMinutes(1));
                    if (delstr != "")
                    {
                        dc.Database.ExecuteSqlCommand(delstr);
                    }
                }
            }

            //添加考勤
            EmpChecks.ForEach(p =>
            {
                if (p.NewChecks.Count > 0)
                {
                    if (p.NewChecks.Count > 0)
                    {
                        newlist.AddRange(p.NewChecks);
                    }
                }
            });


            //去重
            newlist.ForEach(p =>
            {
                if (newlist.Count(n => n.CHECKTIME == p.CHECKTIME) > 0)
                {
                    p.CHECKTIME.AddSeconds(3);
                }
            });
            var l = new HashSet <CHECKINOUT>(newlist);

            EFBatchOperation.For(dc, dc.CHECKINOUT).InsertAll(l);
        }
Example #7
0
        /// <summary>
        /// 设置班次
        /// </summary>
        public void SetShifts()
        {
            //设置员工默认班次
            if (EmpNote.Shifts.Count > 0)
            {
                if (EmpNote.AutoShift)
                {
                    AutoChangeShift(EmpNote.Shifts);
                }
                else
                {
                    ChangeShift(EmpNote.Shifts[0]);
                }
            }


            //设置当天已更改的默认班次
            EmpChecks.ForEach(p =>
            {
                if (p.Checks.Count > 0)
                {
                    var mc = p.Checks.OrderBy(o => o.CHECKTIME).First();
                    if (mc.Memoinfo != null)
                    {
                        var cshift = Shifts.SingleOrDefault(s => s.ID == mc.Memoinfo);
                        if (cshift != null)
                        {
                            ChangeShift(p, cshift);
                        }
                    }
                }
            });


            EmpChecks.ForEach(p =>
            {
                if (p.Checks.Count > 0)
                {
                    if (p.AfterCheckDay != null)
                    {
                        for (int i = p.Checks.Count - 1; i >= 0; i--)
                        {
                            if (p.AfterCheckDay.Checks.Contains(p.Checks[i]))
                            {
                                if (p.IsRestDay)
                                {
                                    p.Checks.Remove(p.Checks[i]);
                                }
                                else
                                {
                                    p.AfterCheckDay.Checks.Remove(p.Checks[i]);
                                }
                            }
                        }
                    }
                }
            });
        }
Example #8
0
        /// <summary>
        /// 添加考勤记录
        /// </summary>
        /// <param name="obj"></param>
        public void Add(CHECKINOUT obj)
        {
            Checks.Add(obj);
            var emp = EmpChecks.Where(p => p.CheckDate == obj.CHECKTIME.Date).SingleOrDefault();

            if (emp != null)
            {
                emp.Add(obj);
            }
        }
Example #9
0
 /// <summary>
 /// 更改员工全部的班次
 /// </summary>
 /// <param name="newShift"></param>
 public void ChangeShift(Shift newShift)
 {
     EmpChecks.ForEach(p =>
     {
         ChangeShift(p, newShift);
     });
     ///更新员工默认班次
     EmpNote.Shifts.Clear();
     EmpNote.Shifts.Add(newShift);
     EmpNote.AutoShift = false;
 }
Example #10
0
        public void AutoChangeShift(List <Shift> shifts)
        {
            EmpChecks.ForEach(p =>
            {
                Shift preShift = p.EmpShift;
                ChangeShift(p, shifts[0]);
                var lm = p.ShiftPoint;
                shifts.ForEach(s =>
                {
                    if (p.FirstAmend != null)
                    {
                        var oldShift = p.EmpShift;
                        ChangeShift(p, s);
                        if (p.ShiftPoint < lm)
                        {
                            ChangeShift(p, oldShift);
                        }
                        else
                        {
                            lm = p.ShiftPoint;
                        }
                        preShift = p.EmpShift;
                    }
                    else
                    {
                        ChangeShift(p, preShift);
                    }
                });
            });

            ///修正中间班次不一样问题
            var elist = EmpChecks.OrderBy(p => p.CheckDate).ToList();

            for (int i = 0; i < elist.Count; i++)
            {
                if (i == 0 && elist[i + 1].EmpShift.ShiftName == elist[i + 2].EmpShift.ShiftName && elist[i + 1].EmpShift.ShiftName != elist[i].EmpShift.ShiftName)
                {
                    ChangeShift(elist[i], elist[i + 1].EmpShift);
                }
                else if (i > 0 && i < elist.Count - 1 && elist[i - 1].EmpShift.ShiftName == elist[i + 1].EmpShift.ShiftName && elist[i + 1].EmpShift.ShiftName != elist[i].EmpShift.ShiftName)
                {
                    ChangeShift(elist[i], elist[i + 1].EmpShift);
                }
                else if (i == elist.Count - 1 && elist[i - 1].EmpShift.ShiftName == elist[i - 2].EmpShift.ShiftName && elist[i - 1].EmpShift.ShiftName != elist[i].EmpShift.ShiftName)
                {
                    ChangeShift(elist[i], elist[i - 1].EmpShift);
                }
            }

            EmpNote.Shifts.Clear();
            EmpNote.Shifts.AddRange(shifts);
            EmpNote.AutoShift = true;
        }
Example #11
0
 /// <summary>
 /// 写入数据库
 /// </summary>
 public void WriteToDate(attContent dc, bool IsAllWriteMode)
 {
     EmpChecks.ForEach(p =>
     {
         if (p.NewChecks.Count > 0)
         {
             dc.CHECKINOUT.RemoveRange(p.Checks);
             if (p.NewChecks.Count > 0)
             {
                 dc.CHECKINOUT.AddRange(p.NewChecks);
             }
         }
     });
     dc.SaveChanges();
 }
Example #12
0
        public void BuildWeekCheck()
        {
            if (EmpWeeks == null)
            {
                EmpWeeks = new List <EmpCheckWeek>();

                EmpChecks.ForEach(p =>
                {
                    var wn = p.CheckDate.Year + GetWeekOfYear(p.CheckDate).ToString();//取得周数

                    var week = EmpWeeks.SingleOrDefault(w => w.WeekNum == wn);
                    if (week == null)
                    {
                        week = new EmpCheckWeek(Emp, wn);
                        EmpWeeks.Add(week);
                    }
                    week.Add(p);
                });
            }
        }