///<summary> ///</summary> public MyAttendanceCalendar(Account account) { _GetBadAttendance = new GetBadAttendance(account); _GetOutApplication = new GetOutApplication(); _GetOverWork = new GetOverWork(); _GetLeaveRequest = new GetLeaveRequest(); }
///<summary> /// 通过员工姓名部门,得到考勤情况,只获得已经结束的考勤 ///</summary> ///<returns></returns> public List <Employee> GetEmployeeAttendanceByCondition(string EmployeeName, int DepartmentID, int?gradesId, DateTime FromDate, DateTime ToDate, Account _Account, int?powers) { _GetBadAttendance = new GetBadAttendance(_Account); List <Employee> retEmployeeList = new List <Employee>(); List <Account> AccountList = _IAccountBll.GetAccountByBaseCondition(EmployeeName, DepartmentID, -1, gradesId, true, null); if (powers != null) { AccountList = Tools.RemoteUnAuthAccount(AccountList, AuthType.HRMIS, _Account, (int)powers); } List <Employee> EmployeeList = new List <Employee>(); foreach (Account account in AccountList) { Employee employee = _dalEmployee.GetEmployeeBasicInfoByAccountID(account.Id); if (employee == null) { continue; } employee.Account = account; EmployeeList.Add(employee); } for (int i = 0; i < EmployeeList.Count; i++) { if (GetEmployeeAttendanceInfo(EmployeeList[i], FromDate, ToDate)) { retEmployeeList.Add(EmployeeList[i]); } } return(retEmployeeList); }
///<summary> /// 通过employeeID,开始结束时间得到员工的考勤信息,只获得已经结束的考勤 ///</summary> ///<param name="employeeID"></param> ///<param name="startDt"></param> ///<param name="endDt"></param> ///<returns></returns> public Employee GetEmployeeAttendanceByCondition(int employeeID, DateTime startDt, DateTime endDt) { _GetBadAttendance = new GetBadAttendance(null); Account account = _IAccountBll.GetAccountById(employeeID); Employee employee = _dalEmployee.GetEmployeeBasicInfoByAccountID(account.Id); employee.Account = account; if (GetEmployeeAttendanceInfo(employee, startDt, endDt)) { return(employee); } else { return(null); } }
///<summary> /// 通过员工姓名部门,得到考勤情况,获得正在进行审批或者审批结束的所有考勤 ///</summary> ///<returns></returns> public Employee GetAllEmployeeAttendanceByCondition(int employeeID, DateTime FromDate, DateTime ToDate) { _GetBadAttendance = new GetBadAttendance(null); Account account = _IAccountBll.GetAccountById(employeeID); Employee employee = _dalEmployee.GetEmployeeBasicInfoByAccountID(account.Id); employee.Account = account; if (employee.EmployeeType == EmployeeTypeEnum.BorrowedEmployee) { return(null); } //根据入职离职时间确定考勤的有效时间 DateTime employeeFromDate = DateTime.Compare(employee.EmployeeDetails.Work.ComeDate, FromDate) > 0 ? employee.EmployeeDetails.Work.ComeDate : FromDate; DateTime employeeToDate; if (employee.EmployeeType == EmployeeTypeEnum.DimissionEmployee && employee.EmployeeDetails.Work.DimissionInfo != null) { employeeToDate = DateTime.Compare(employee.EmployeeDetails.Work.DimissionInfo.DimissionDate, ToDate) < 0 ? employee.EmployeeDetails.Work.DimissionInfo.DimissionDate : ToDate; } else { employeeToDate = ToDate; } employeeToDate = employeeToDate.AddDays(1).AddSeconds(-1); if (DateTime.Compare(employeeFromDate, employeeToDate) > 0) { return(null); } employee.EmployeeAttendance = new EmployeeAttendance(employeeFromDate, employeeToDate); //打卡信息 employee.EmployeeAttendance.AttendanceInAndOutRecordList = _dalAttendanceInAndOutRecord.GetAttendanceInAndOutRecordByCondition(employee.Account.Id, "", employeeFromDate, employeeToDate, InOutStatusEnum.All, OutInRecordOperateStatusEnum.All, Convert.ToDateTime("1900-1-1"), Convert.ToDateTime("2900-12-31")); //考勤规则 employee.EmployeeAttendance.PlanDutyDetailList = _IPlanDutyDal.GetPlanDutyDetailByAccount(employee.Account.Id, employeeFromDate, employeeToDate); //迟到早退旷工详情 employee.EmployeeAttendance.DayAttendanceList.AddRange( _GetBadAttendance.GetCalendarByEmployee(employee.Account.Id, employee.EmployeeAttendance.FromDate, employee.EmployeeAttendance.ToDate, AttendanceTypeEmnu.All)); //请假详情 employee.EmployeeAttendance.DayAttendanceList.AddRange( _GetLeaveRequest.GetAllCalendarByEmployee(employee.Account.Id, employee.EmployeeAttendance.FromDate, employee.EmployeeAttendance.ToDate)); //加班外出申请 employee.EmployeeAttendance.DayAttendanceList.AddRange( _GetOutApplication.GetAllCalendarByEmployee(employee.Account.Id, employee.EmployeeAttendance.FromDate, employee.EmployeeAttendance.ToDate)); employee.EmployeeAttendance.DayAttendanceList.AddRange( _GetOverWork.GetAllCalendarByEmployee(employee.Account.Id, employee.EmployeeAttendance.FromDate, employee.EmployeeAttendance.ToDate)); return(employee); }
///<summary> /// 通过员工姓名部门,得到考勤情况,获得正在进行审批或者审批结束的所有考勤 ///</summary> ///<returns></returns> public List <Employee> GetAllEmployeeAttendanceByCondition(string EmployeeName, int DepartmentID, int?gradesId, DateTime FromDate, DateTime ToDate, Account _Account, int powers) { _GetBadAttendance = new GetBadAttendance(_Account); List <Employee> retEmployeeList = new List <Employee>(); //List<EmployeeAttendance> EmployeeAttendanceList=new List<EmployeeAttendance>(); //获取符合条件的员工 List <Account> AccountList = _IAccountBll.GetAccountByBaseCondition(EmployeeName, DepartmentID, -1, gradesId, true, null); if (DepartmentID == -1) { AccountList = Tools.RemoteUnAuthAccount(AccountList, AuthType.HRMIS, _Account, powers); } List <Employee> EmployeeList = new List <Employee>(); foreach (Account account in AccountList) { Employee employee = _GetEmployee.GetEmployeeByAccountID(account.Id); if (employee == null) { continue; } employee.Account = account; EmployeeList.Add(employee); } for (int i = 0; i < EmployeeList.Count; i++) { if (EmployeeList[i].EmployeeType == EmployeeTypeEnum.BorrowedEmployee) { continue; } //根据入职离职时间确定考勤的有效时间 DateTime employeeFromDate = DateTime.Compare(EmployeeList[i].EmployeeDetails.Work.ComeDate, FromDate) > 0 ? EmployeeList[i].EmployeeDetails.Work.ComeDate : FromDate; DateTime employeeToDate; if (EmployeeList[i].EmployeeType == EmployeeTypeEnum.DimissionEmployee && EmployeeList[i].EmployeeDetails.Work.DimissionInfo != null) { employeeToDate = DateTime.Compare(EmployeeList[i].EmployeeDetails.Work.DimissionInfo.DimissionDate, ToDate) < 0 ? EmployeeList[i].EmployeeDetails.Work.DimissionInfo.DimissionDate : ToDate; } else { employeeToDate = ToDate; } employeeToDate = employeeToDate.AddDays(1).AddSeconds(-1); if (DateTime.Compare(employeeFromDate, employeeToDate) > 0) { continue; } EmployeeList[i].EmployeeAttendance = new EmployeeAttendance(employeeFromDate, employeeToDate); //打卡信息 EmployeeList[i].EmployeeAttendance.AttendanceInAndOutRecordList = _dalAttendanceInAndOutRecord.GetAttendanceInAndOutRecordByCondition(EmployeeList[i].Account.Id, "", employeeFromDate, employeeToDate, InOutStatusEnum.All, OutInRecordOperateStatusEnum.All, Convert.ToDateTime("1900-1-1"), Convert.ToDateTime("2900-12-31")); //考勤规则 EmployeeList[i].EmployeeAttendance.PlanDutyDetailList = _IPlanDutyDal.GetPlanDutyDetailByAccount(EmployeeList[i].Account.Id, employeeFromDate, employeeToDate); //迟到早退旷工详情 EmployeeList[i].EmployeeAttendance.DayAttendanceList.AddRange( _GetBadAttendance.GetCalendarByEmployee(EmployeeList[i].Account.Id, EmployeeList[i].EmployeeAttendance.FromDate, EmployeeList[i].EmployeeAttendance.ToDate, AttendanceTypeEmnu.All)); //请假详情 EmployeeList[i].EmployeeAttendance.DayAttendanceList.AddRange( _GetLeaveRequest.GetAllCalendarByEmployee(EmployeeList[i].Account.Id, EmployeeList[i].EmployeeAttendance.FromDate, EmployeeList[i].EmployeeAttendance.ToDate)); //加班外出申请 EmployeeList[i].EmployeeAttendance.DayAttendanceList.AddRange( _GetOutApplication.GetAllCalendarByEmployee(EmployeeList[i].Account.Id, EmployeeList[i].EmployeeAttendance.FromDate, EmployeeList[i].EmployeeAttendance.ToDate)); EmployeeList[i].EmployeeAttendance.DayAttendanceList.AddRange( _GetOverWork.GetAllCalendarByEmployee(EmployeeList[i].Account.Id, EmployeeList[i].EmployeeAttendance.FromDate, EmployeeList[i].EmployeeAttendance.ToDate)); retEmployeeList.Add(EmployeeList[i]); } return(retEmployeeList); }
/// <summary> /// 得到某一员工,某天的考勤情况(迟到,早退,旷工) /// </summary> /// <param name="employeeID"></param> /// <param name="date"></param> /// <returns></returns> public List <AttendanceBase> GetAttendanceBaseListDetailByEmployee(int employeeID, DateTime date) { GetBadAttendance getBadAttendance = new GetBadAttendance(null); return(getBadAttendance.GetAttendanceBaseListDetailByEmployee(employeeID, date)); }