///<summary> ///</summary> ///<param name="outInTimeCondition"></param> ///<returns></returns> public static string GetOutInTimeConditionEnumName(OutInTimeConditionEnum outInTimeCondition) { switch (outInTimeCondition) { case OutInTimeConditionEnum.All: return(""); case OutInTimeConditionEnum.InAndOutTimeIsNull: return("进入时间为空并且离开时间为空"); case OutInTimeConditionEnum.InOrOutTimeIsNull: return("进入时间为空或者离开时间为空"); case OutInTimeConditionEnum.InTimeIsNull: return("进入时间为空"); case OutInTimeConditionEnum.OutTimeIsNull: return("离开时间为空"); case OutInTimeConditionEnum.InOrOutTimeOnlyOneIsNull: return("进入时间为空或者离开时间只有一个为空"); default: return(""); } }
public bool Vaildate() { _ItsView.ErrorMessage = string.Empty; if (!int.TryParse(_ItsView.DepartmentID, out _DepartmentID)) { _ItsView.ErrorMessage = "部门ID必须为整数!"; return(false); } if (!DateTime.TryParse(_ItsView.SearchFrom, out _SearchFrom)) { _ItsView.ErrorMessage = "查询时间格式不正确!"; return(false); } if (_SearchFrom.Equals(Convert.ToDateTime("0001-1-1 0:00:00"))) { _SearchFrom = Convert.ToDateTime("1900-1-1 0:00:00"); } if (!DateTime.TryParse(_ItsView.SearchTo, out _SearchTo)) { _ItsView.ErrorMessage = "查询时间格式不正确!"; return(false); } if (_SearchTo.Equals(Convert.ToDateTime("0001-1-1 0:00:00"))) { _SearchTo = Convert.ToDateTime("2900-12-31 0:00:00"); } _OutInTimeCondition = GetOutInTimeConditionEnum(_ItsView.OutInTimeCondition); return(true); }
/// <summary> /// /// </summary> public List <Employee> GetAttendanceOutInRecordByCondition(string employeeName, int?gradesId, int departmentID, DateTime from, DateTime to, OutInTimeConditionEnum outInTimeCondition) { List <Employee> retEmployeeList = new List <Employee>(); //List<Account> accountList = _IAccountBll.GetAccountByBaseCondition(employeeName, departmentID, -1, gradesId, true, null); //if (departmentID == -1) //{ // accountList = Tools.RemoteUnAuthAccount(accountList, AuthType.HRMIS, _LoginUser, HrmisPowers.A503); //} //_GetEmployee = new GetEmployee(); //List<Employee> EmployeeList = _GetEmployee.GetEmployeeAttendenceInfoByAccountList(accountList, EmployeeTypeEnum.All, -1); int?powerID = null; if (departmentID == -1) { powerID = HrmisPowers.A503; } var EmployeeList = EmployeeLogic.GetEmployeeBasicInfoByBasicConditionRetModel(employeeName, EmployeeTypeEnum.All, -1, gradesId, departmentID, null, true, powerID, _LoginUser.Id, -1, new List <int>() { (int)EmployeeTypeEnum.BorrowedEmployee }, true); for (int i = 0; i < EmployeeList.Count; i++) { if (EmployeeList[i].EmployeeType == EmployeeTypeEnum.BorrowedEmployee) { continue; } ////获取排班信息 //EmployeeList[i].EmployeeAttendance.PlanDutyDetailList = // new PlanDutyDal().GetPlanDutyDetailByAccount( // EmployeeList[i].Account.Id, from, to); ////如果员工没有排班信息 //if (EmployeeList[i].EmployeeAttendance.PlanDutyDetailList == null // || EmployeeList[i].EmployeeAttendance.PlanDutyDetailList.Count == 0) //{ // continue; //} DateTime employeeFromDate = DateTime.Compare(EmployeeList[i].EmployeeDetails.Work.ComeDate, from) > 0 ? EmployeeList[i].EmployeeDetails.Work.ComeDate : from; DateTime employeeToDate; if (EmployeeList[i].EmployeeType == EmployeeTypeEnum.DimissionEmployee && EmployeeList[i].EmployeeDetails.Work.DimissionInfo != null) { employeeToDate = DateTime.Compare(EmployeeList[i].EmployeeDetails.Work.DimissionInfo.DimissionDate, to) < 0 ? EmployeeList[i].EmployeeDetails.Work.DimissionInfo.DimissionDate : to; } else { employeeToDate = to; } if (DateTime.Compare(employeeFromDate, employeeToDate) > 0) { continue; } EmployeeList[i].EmployeeAttendance.FromDate = employeeFromDate; EmployeeList[i].EmployeeAttendance.ToDate = employeeToDate; EmployeeList[i].EmployeeAttendance.AttendanceInAndOutRecordList = _dalAttendanceInAndOutRecord.GetAttendanceInAndOutRecordByCondition(EmployeeList[i].Account.Id, "", from, to, InOutStatusEnum.All, OutInRecordOperateStatusEnum.All, Convert.ToDateTime("1900-1-1"), Convert.ToDateTime("2900-12-31")); //日详细 EmployeeList[i].EmployeeAttendance.DayAttendanceList = new List <DayAttendance>(); EmployeeList[i].EmployeeAttendance.DayAttendanceList.AddRange(new GetBadAttendance(_LoginUser).GetCalendarByEmployee(EmployeeList[i].Account.Id, EmployeeList[i].EmployeeAttendance.FromDate, EmployeeList[i].EmployeeAttendance.ToDate, AttendanceTypeEmnu.All)); //请假 EmployeeList[i].EmployeeAttendance.DayAttendanceList.AddRange( new GetLeaveRequest().GetCalendarByEmployee(EmployeeList[i].Account.Id, from, to)); //加班 EmployeeList[i].EmployeeAttendance.DayAttendanceList.AddRange( new GetOverWork().GetCalendarByEmployee(EmployeeList[i].Account.Id, from, to)); //外出 EmployeeList[i].EmployeeAttendance.DayAttendanceList.AddRange( new GetOutApplication().GetCalendarByEmployee(EmployeeList[i].Account.Id, from, to)); //统计考勤 EmployeeList[i].EmployeeAttendance.InAndOutStatistics(employeeFromDate); if (EmployeeList[i].EmployeeAttendance.IsOutInTimeCondition(outInTimeCondition, true)) { retEmployeeList.Add(EmployeeList[i]); } } return(retEmployeeList); }
/// <summary> /// 系统自动发信 /// </summary> private void SystemSendEmailByCondition(OutInTimeConditionEnum outInTimeCondition) { sendMail = new AttendanceSendEmail(); StringBuilder emailContentBuilder = new StringBuilder(); for (int i = 0; i < AllEmployeeList.Count; i++) { //找前一天数据 DateTime tempDate = _SearchTo.AddDays(-1); while (DateTime.Compare(Convert.ToDateTime(_SearchFrom.ToShortDateString()), Convert.ToDateTime(tempDate.ToShortDateString())) <= 0) { AllEmployeeList[i].EmployeeAttendance.AttendanceInAndOutRecordList = _DalRecord. GetAttendanceInAndOutRecordByCondition (AllEmployeeList[i].Account.Id, "", tempDate, tempDate.AddDays(1), InOutStatusEnum.All, OutInRecordOperateStatusEnum.All, Convert.ToDateTime("1900-1-1"), Convert.ToDateTime("2900-12-31")); AllEmployeeList[i].EmployeeAttendance.InAndOutStatistics(tempDate); bool isOnDuty = true; PlanDutyDetail dayPlanDutyDetail = PlanDutyDetail.GetPlanDutyDetailByDate( AllEmployeeList[i].EmployeeAttendance.PlanDutyDetailList, tempDate); if (dayPlanDutyDetail == null) { if (tempDate.DayOfWeek == DayOfWeek.Saturday || tempDate.DayOfWeek == DayOfWeek.Sunday) { isOnDuty = false; } } else if (dayPlanDutyDetail.PlanDutyClass.DutyClassID == -1) { isOnDuty = false; } string absentString = ""; //如果这一天是休息日且进出单打卡 或者 非休息日且满足发信条件 或者 不正常数据 if ((!isOnDuty && AllEmployeeList[i].EmployeeAttendance.IsOutInTimeCondition(OutInTimeConditionEnum.InOrOutTimeOnlyOneIsNull)) || (isOnDuty && AllEmployeeList[i].EmployeeAttendance.IsOutInTimeCondition(outInTimeCondition)) || !AllEmployeeList[i].EmployeeAttendance.StatisticIsNormal(tempDate, out absentString)) { string inTime = AllEmployeeList[i].EmployeeAttendance.AttendanceInAndOutStatistics.InTime.ToString(); string outTime = AllEmployeeList[i].EmployeeAttendance.AttendanceInAndOutStatistics.OutTime.ToString(); string status = AllEmployeeList[i].EmployeeAttendance.AttendanceInAndOutStatistics.LeaveRequestAndOut; SendEmailForEmployees(AllEmployeeList[i], inTime, outTime, status, tempDate); SendMessageForEmployees(AllEmployeeList[i], tempDate); emailContentBuilder.Append(AllEmployeeList[i].Account.Name); emailContentBuilder.Append(tempDate.ToShortDateString()); emailContentBuilder.Append(" 进入时间:"); emailContentBuilder.Append(inTime == "2999-12-31 0:00:00" ? "无打卡记录" : inTime); emailContentBuilder.Append(" 离开时间:"); emailContentBuilder.Append(outTime == "1900-1-1 0:00:00" ? "无打卡记录" : outTime); emailContentBuilder.Append(" 请假或外出情况:"); emailContentBuilder.Append(string.IsNullOrEmpty(status) ? "无" : status); if (absentString != "") { emailContentBuilder.Append(absentString); } emailContentBuilder.Append(Environment.NewLine); } tempDate = tempDate.AddDays(-1); } } if (emailContentBuilder.Length > 0) { emailContentBuilder.Append("请核对打卡信息和外出请假情况,如果信息有误,请登录系统查看!"); string subject = _SearchFrom + "--" + _SearchTo + "期间的考勤信息"; sendMail.AttendanceSendEmailToHR(subject, emailContentBuilder); } }
public List <Employee> GetAttendanceOutInRecordByCondition(string employeeName, int?gradesId, int departmentID, DateTime from, DateTime to, OutInTimeConditionEnum outInTimeCondition, Account loginUser) { return(new AttendanceOutInRecord(loginUser).GetAttendanceOutInRecordByCondition(employeeName, gradesId, departmentID, from, to, outInTimeCondition)); }