public void SetShowNewCheckData(bool v) { EmpChecks.ForEach(p => { p.ShowNewCheckData = v; }); }
public void SetJSTimeByCheck(bool v) { EmpChecks.ForEach(p => { p.JSTimeByCheck = v; }); }
public void SetIgnore15MinuteCheck(bool v) { EmpChecks.ForEach(p => { p.Ignore15MinuteCheck = v; }); }
public void SetWorkHourTo8(bool v) { EmpChecks.ForEach(p => { p.WorkHourIs8 = v; }); }
/// <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)); }); }
/// <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); }
/// <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]); } } } } } }); }
/// <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); } }
/// <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; }
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; }
/// <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(); }
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); }); } }