protected override List<object> GetDataSource() { List<DeviceInfo> attendanceReaders = (new DeviceInfoBLL(AppSettings.CurrentSetting.ConnectUri)).GetAttendanceReaders().QueryObjects; if (attendanceReaders == null || attendanceReaders.Count == 0) { MessageBox.Show("还没有指定考勤点,请先在 \"考勤点选择\" 上指定考勤点"); return null; } List<string> readers = attendanceReaders.Select(it => it.ID).ToList(); List<Staff> users = departmentTreeview1.SelectedStaff; if (users != null && users.Count > 0) { List<int> staff = users.Select(item => item.ID).ToList(); AttendanceLogSearchCondition con = new AttendanceLogSearchCondition(); con.Staff = staff; con.ContainManualLogs = true; con.Readers = readers; con.ReadDateTime = new DatetimeRange(ucDateTimeInterval1.StartDateTime, ucDateTimeInterval1.EndDateTime.Date.AddDays(1).AddSeconds(-1)); List<AttendanceLog> arranges = (new AttendanceLogBLL(AppSettings.CurrentSetting.ConnectUri)).GetItems(con).QueryObjects; List<object> items = new List<object>(); foreach (Staff s in users) { List<AttendanceLog> rets = (from it in arranges where it.StaffID == s.ID orderby it.ReadDateTime ascending select it).ToList(); if (rets != null && rets.Count > 0) { rets.ForEach(it => it.StaffName = s.Name); List<IGrouping<string, AttendanceLog>> groups = rets.GroupBy(item => item.ReadDateTime.ToString("yyyy-MM-dd")).ToList(); List<object> sas = (from g in groups select (object)g).ToList(); items.AddRange(sas); } } return items; } return null; }
private bool CreateAttendanceResults(Staff staff, DatetimeRange dr, List<string> readers) { ShiftArrangeSearchCondition con1 = new ShiftArrangeSearchCondition(); con1.StaffID = staff.ID; con1.ShiftDate = dr; List<ShiftArrange> sas = (new ShiftArrangeBLL(AppSettings.CurrentSetting.ConnectUri)).GetItems(con1).QueryObjects; TASheetSearchCondition con2 = new TASheetSearchCondition(); con2.StaffID = staff.ID; List<TASheet> sheets = (new TASheetBLL(AppSettings.CurrentSetting.ConnectUri)).GetItems(con2).QueryObjects; AttendanceLogSearchCondition con3 = new AttendanceLogSearchCondition(); con3.Staff = new List<int>(); con3.Staff.Add(staff.ID); con3.Readers = readers; con3.ReadDateTime = dr; con3.ContainManualLogs = true; List<AttendanceLog> records = (new AttendanceLogBLL(AppSettings.CurrentSetting.ConnectUri)).GetItems(con3).QueryObjects; List<AttendanceResult> results = (new AttendanceAnalyst()).Analist(staff, sas, records, sheets, dr); CommandResult ret = (new AttendanceResultBLL(AppSettings.CurrentSetting.ConnectUri)).Add(staff.ID, dr, results); return ret.Result == ResultCode.Successful; }