private void Btn_LoadData_Click(object sender, EventArgs e) { if (lc == null) { lc = new LoadCheck(Doper.Depts, dc, Doper.GetDeptName); } var checks = lc.GetCheckList(out DateTime beginDate, out DateTime endDate); var users = dc.USERINFO.ToList(); var Acc = new AttControlClass(dc); Emps = new List <EmpCheckMonth>(); checks.ForEach(p => { var eobj = Emps.Where(o => o.Emp.USERID == p.USERID).SingleOrDefault(); if (eobj == null) { var user = users.Where(u => u.USERID == p.USERID).Single(); eobj = new EmpCheckMonth(user, Acc, new DeptOper(dc).GetDeptName); eobj.Shifts = this.Shifts; eobj.SetDate(beginDate, endDate); Emps.Add(eobj); } eobj.Add(p); }); Emps.ForEach(p => p.SetShifts()); var list = Emps.OrderByDescending(p => p.DeptName).ThenBy(p => p.EmpId).ToList(); empCheckMonthBindingSource.DataSource = new BindingCollection <EmpCheckMonth>(list); YearHoliday.Value = 0; }
/// <summary> /// 限制最大周工时 /// </summary> /// <param name="ed"></param> private void SetLimtWeekTime(EmpCheckMonth em) { em.BuildWeekCheck(); em.EmpWeeks.ForEach(p => { p.ShowNewCheckData = true; if (p.TotalTime > LimtBigWeekTime) { var needReHour = p.TotalTime - LimtBigWeekTime; foreach (EmpCheckDay c in p.Checks.Where(c => c.OverTime > 0).ToList().ToRandomSortList()) { var over1 = c.OverTime; if (c.OtIn != null) { c.Checks.Remove(c.OtIn); } if (c.OtOut != null) { c.Checks.Remove(c.OtOut); } c.OtIn = null; c.OtOut = null; needReHour -= (over1 - c.OverTime); if (needReHour <= 0) { break; } } ; if (needReHour > 0) { foreach (EmpCheckDay c in p.Checks.ToRandomSortList()) { var over1 = c.TotalTime; c.Checks.Clear(); c.AmIn = null; c.AmOut = null; c.PmIn = null; c.PmOut = null; needReHour -= (over1 - c.TotalTime); if (needReHour <= 0) { break; } } } } p.ShowNewCheckData = false; }); }
/// <summary> /// 载入考勤 /// </summary> /// <param name="Name"></param> /// <param name="BeginDate"></param> /// <param name="EndDate"></param> public void LoadCheck(string Name, DateTime BeginDate, DateTime EndDate) { var user = ac.USERINFO.FirstOrDefault(p => p.Name.Contains(Name) && p.DEFAULTDEPTID >= 0); if (user != null) { var getday = new AttControlClass(ac); Ecm = new EmpCheckMonth(user, getday, new DeptOper(ac).GetDeptName); Ecm.Shifts = this.shifts; Ecm.SetDate(BeginDate, EndDate); EndDate = EndDate.AddDays(2); var clist = ac.CHECKINOUT.Where(p => p.USERID == user.USERID && p.CHECKTIME >= BeginDate && p.CHECKTIME < EndDate).ToList(); clist.ForEach(p => { Ecm.Add(p); }); Ecm.SetShifts(); } }