private void mnu_AttendanceAnalyst_Click(object sender, EventArgs e) { List <string> readers = GetAttendanceReaders(); if (readers == null || readers.Count == 0) { MessageBox.Show("还未指定考勤点"); return; } FrmAttendanceAnalyst frm = new FrmAttendanceAnalyst(); if (frm.ShowDialog() == DialogResult.OK) { List <Staff> staffs = frm.Staffs; CreateAttendanceResults(staffs, frm.DateRange, readers); StaffAttendanceResultSearchCondition con = new StaffAttendanceResultSearchCondition(); con.ShiftDate = frm.DateRange; con.Staff = staffs.Select(it => it.ID).ToList(); FrmShiftResultMaster form = ShowSingleForm <FrmShiftResultMaster>(); if (form != null) { form.Fresh(con); } } }
protected override List <object> GetDataSource() { List <Staff> users = departmentTreeview1.SelectedStaff; if (users != null && users.Count > 0) { List <int> staff = users.Select(item => item.ID).ToList(); StaffAttendanceResultSearchCondition con = new StaffAttendanceResultSearchCondition(); con.Staff = staff; con.ShiftDate = new DatetimeRange(ucDateTimeInterval1.StartDateTime, ucDateTimeInterval1.EndDateTime); List <AttendanceResult> arranges = (new AttendanceResultBLL(AppSettings.CurrentSetting.ConnectUri)).GetItems(con).QueryObjects; List <IGrouping <int, AttendanceResult> > groups = arranges.GroupBy(item => item.StaffID).ToList(); List <object> items = new List <object>(); foreach (Staff s in users) { IGrouping <int, AttendanceResult> group = groups.SingleOrDefault(item => item.Key == s.ID); if (group != null) { items.Add(group); } } return(items); } return(null); }
protected override List <AttendanceResult> GetingItems(AttendanceDataContext attendance, SearchCondition search) { DataLoadOptions opts = new DataLoadOptions(); opts.LoadWith <AttendanceResult>(item => item.AbsentItems); attendance.LoadOptions = opts; IQueryable <AttendanceResult> ret = attendance.GetTable <AttendanceResult>(); if (search is StaffAttendanceResultSearchCondition) { StaffAttendanceResultSearchCondition con = search as StaffAttendanceResultSearchCondition; if (con.ShiftDate != null) { ret = ret.Where(item => item.ShiftDate >= con.ShiftDate.Begin && item.ShiftDate <= con.ShiftDate.End); } if (con.Staff != null && con.Staff.Count > 0) { ret = ret.Where(item => con.Staff.Contains(item.StaffID)); } if (con.ShiftID != null) { ret = ret.Where(item => item.ShiftID == con.ShiftID); } } return(ret.ToList()); }
/// <summary> /// 增加考勤结果,此用户在此时间段内的所以考勤结果都清除,再写入新结果 /// </summary> /// <param name="staffID"></param> /// <param name="range"></param> /// <param name="arranges"></param> /// <returns></returns> public CommandResult Add(int staffID, DatetimeRange range, List <AttendanceResult> arranges) { IAttendanceResultProvider provider = ProviderFactory.Create <IAttendanceResultProvider>(_RepoUri); StaffAttendanceResultSearchCondition con = new StaffAttendanceResultSearchCondition(); con.Staff = new List <int>(); con.Staff.Add(staffID); con.ShiftDate = range; List <AttendanceResult> items = provider.GetItems(con).QueryObjects; IUnitWork unitWork = ProviderFactory.Create <IUnitWork>(_RepoUri); foreach (AttendanceResult item in items) { provider.Delete(item, unitWork); } if (arranges != null && arranges.Count > 0) { foreach (AttendanceResult item in arranges) { if (item.AbsentItems != null && item.AbsentItems.Count > 0) { item.AbsentItems.ForEach(it => it.ResultID = item.ID); } provider.Insert(item, unitWork); } } return(unitWork.Commit()); }
protected override List <object> GetDataSource() { List <Staff> users = departmentTreeview1.SelectedStaff; if (users != null && users.Count > 0) { List <int> staff = users.Select(item => item.ID).ToList(); StaffAttendanceResultSearchCondition con = new StaffAttendanceResultSearchCondition(); con.Staff = staff; con.ShiftDate = new DatetimeRange(ucDateTimeInterval1.StartDateTime, ucDateTimeInterval1.EndDateTime); List <AttendanceResult> arranges = (new AttendanceResultBLL(AppSettings.CurrentSetting.ConnectUri)).GetItems(con).QueryObjects; List <object> items = new List <object>(); foreach (Staff s in users) { List <AttendanceResult> rets = (from it in arranges where it.StaffID == s.ID orderby it.StartTime ascending select it).ToList(); if (rets != null && rets.Count > 0) { rets.ForEach(it => it.StaffName = s.Name); List <IGrouping <DateTime, AttendanceResult> > groups = rets.GroupBy(item => item.ShiftDate).ToList(); List <object> sas = (from g in groups select(object) g).ToList(); items.AddRange(sas); } } return(items); } return(null); }
public override void Fresh(SearchCondition search) { if (search != null && search is StaffAttendanceResultSearchCondition) { StaffAttendanceResultSearchCondition con = search as StaffAttendanceResultSearchCondition; if (con.ShiftDate != null) { this.ucDateTimeInterval1.StartDateTime = con.ShiftDate.Begin; this.ucDateTimeInterval1.EndDateTime = con.ShiftDate.End; } if (con.Staff != null && con.Staff.Count > 0) { this.departmentTreeview1.SelectedStaffIDs = con.Staff; } } base.Fresh(search); }
protected override List <object> GetDataSource() { List <Staff> users = departmentTreeview1.SelectedStaff; if (users != null && users.Count > 0) { List <int> staff = users.Select(item => item.ID).ToList(); StaffAttendanceResultSearchCondition con = new StaffAttendanceResultSearchCondition(); con.Staff = staff; con.ShiftDate = new DatetimeRange(ucDateTimeInterval1.StartDateTime, ucDateTimeInterval1.EndDateTime); List <AttendanceResult> arranges = (new AttendanceResultBLL(AppSettings.CurrentSetting.ConnectUri)).GetItems(con).QueryObjects; return((from item in arranges orderby item.StaffName ascending, item.ShiftDate ascending select(object) item).ToList()); } return(null); }
/// <summary> /// 导出相关人员在某一段时间的考勤报表 /// </summary> /// <param name="staff"></param> /// <param name="dr"></param> /// <returns></returns> public void Export(List <Staff> users, int year, int month, string path) { Workbook book = null; try { Application app = new Application(); book = app.Workbooks.Add(ReportModal); //打开模板 Worksheet sheet = book.ActiveSheet as Worksheet; Exportweek(year, month, sheet); if (users != null && users.Count > 0) { List <Department> depts = (new DepartmentBLL(AppSettings.CurrentSetting.ConnectUri)).GetItems(null).QueryObjects; List <int> staff = users.Select(item => item.ID).ToList(); StaffAttendanceResultSearchCondition con = new StaffAttendanceResultSearchCondition(); con.Staff = staff; DateTime dt = new DateTime(year, month, 1); con.ShiftDate = new DatetimeRange(dt, dt.AddMonths(1).AddSeconds(-1)); List <AttendanceResult> arranges = (new AttendanceResultBLL(AppSettings.CurrentSetting.ConnectUri)).GetItems(con).QueryObjects; int row = 1; foreach (Staff s in users) { List <AttendanceResult> rets = (from it in arranges where it.StaffID == s.ID orderby it.StartTime ascending select it).ToList(); if (rets != null && rets.Count > 0) { AddStaff(s, rets, depts, sheet, row); row++; } } sheet.get_Range("A1", GetColName(49) + (2 + (row - 1) * 3)).Borders.LineStyle = XlLineStyle.xlContinuous; } book.SaveAs(path, XlFileFormat.xlXMLSpreadsheet, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); } catch (Exception ex) { LJH.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex); } finally { book.Close(false, Type.Missing, Type.Missing); } }