/// <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); } }
/// <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<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<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; }
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; }