public void ImportData(IEnumerable <OverWork> ows) { var ist = HrManagerContext.GetInstance(); ist.OverWorks.AddRange(ows); ist.SaveChanges(); }
public List <Employee> GetLastMonthLeaveEmployees() { return (HrManagerContext.GetInstance() .Employees.Where(e => DateTime.Parse(e.ExpireDate).Month < DateTime.Now.Month) .ToList()); }
public static void UpdateData() { //using (var dbContext = new HrManagerContext()) { // dbContext.Database.CreateIfNotExists(); //} Employees = new EntityCollection <Employee>(new EmployeeControl()); Departments = new EntityCollection <Department>(new DepartmentControl()); OperatingPosts = new EntityCollection <OperatingPost>(new OperatingPostControl()); Dormitories = new EntityCollection <Dormitory>(new DormitoryControl()); EmployeePostAdjusts = new EntityCollection <EmployeePostAdjust>(new EmployeePostAdjustControl()); ArrangeWorks = new EntityCollection <ArrangeWork>(new ArrangeWorkControl()); AsignedArrangeWorks = new EntityCollection <ArrangeWork>(new ArrangeWorkControl(), w => !w.IsCommonDefine); DefinedArrangeWorks = new EntityCollection <ArrangeWork>(new ArrangeWorkControl(), w => w.IsCommonDefine); VacationPlans = new EntityCollection <VacationPlan>(new VacationPlanControl()); AsignedVacationPlans = new EntityCollection <VacationPlan>(new VacationPlanControl(), w => !w.IsCommonDefine); DefVacationPlans = new EntityCollection <VacationPlan>(new VacationPlanControl(), w => w.IsCommonDefine); AskLeaves = new EntityCollection <AskLeave>(new AskLeaveControl()); BusinessTrips = new EntityCollection <BusinessTrip>(new BusinessTripControl()); ReSignIns = new EntityCollection <ReSignIn>(new ReSignInControl()); OverWorks = new EntityCollection <OverWork>(new OverWorkControl()); SystemArguments = new EntityCollection <SystemArgument>(new SystemArgumentControl()); AskLeaveTypes = new EntityCollection <AskLeaveType>(new AskLeaveTypeControl()); CardFillRecords = new EntityCollection <CardFillRecord>(new CardFillRecordControl()); Attendances = new ObservableCollection <Attendance>(HrManagerContext.GetInstance().Attendances.ToList()); AttendanceResults = new EntityCollection <AttendanceResult>(new AttendanceResultControl()); TiaoXius = new EntityCollection <TiaoXiu>(new TiaoXiuControl()); SalaryDetails = new EntityCollection <WageDetail>(new WageDetailControl()); AttArgControl = new AttendanceArguControl(); BaseSalaryControl = new BaseSalaryControl(); TaxControl = new TaxControl(); SystemRoles = new EntityCollection <SystemRole>(new SystemRoleControl()); if (!SystemRoles.ToList().Exists(s => s.IsDefaultRole)) { SystemRoles.AddWithEntity(SystemRole.Default); } SystemUsers = new EntityCollection <SystemUser>(new SystemUserControl()); if (!SystemUsers.ToList().Exists(s => s.IsDefaultUser)) { SystemUsers.AddWithEntity(SystemUser.DefaultAdmin); } Couples = new EntityCollection <Couple>(new CoupleControl()); WorkAreaHeight = System.Windows.SystemParameters.WorkArea.Height; WorkAreaWidth = System.Windows.SystemParameters.WorkArea.Width; TipWidth = 300; TipHeight = 200; ExpectedTipLeft = WorkAreaWidth - TipWidth; ExpectedTipTop = WorkAreaHeight - TipHeight; }
public static List <string> GetArguments(ArguType type) { return (HrManagerContext.GetInstance() .SystemArguments.Where(a => a.ArguType == type) .ToList() .ConvertAll(s => s.ArguValue)); }
public static List <string> GetLeaveTypeNames() { return (HrManagerContext.GetInstance() .AskLeaveTypes .ToList() .ConvertAll(s => s.LeaveName)); }
private void DetachMonthForWork(List <DateTimeExtend> workDays, List <DateTimeExtend> LeaveDays, DateTime now, Employee employee) { var vacation = GetVactionPlans(employee); int daycount = DateTime.DaysInMonth(now.Year, now.Month); DateTime begDateTime = new DateTime(now.Year, now.Month, 1); DateTime endDateTime = new DateTime(now.Year, now.Month, daycount); while (begDateTime <= endDateTime) { if (vacation.VacationDays.Contains(begDateTime)) { LeaveDays.Add(new DateTimeExtend() { DateTime = begDateTime, type = DateTimeExtendtype.Holiday }); } else if (vacation.Saturdays.Contains(begDateTime) || vacation.Sundays.Contains(begDateTime)) { LeaveDays.Add(new DateTimeExtend() { DateTime = begDateTime, type = DateTimeExtendtype.WeeKendDay, }); } else { workDays.Add(new DateTimeExtend() { DateTime = begDateTime, type = DateTimeExtendtype.WorkDay, }); } begDateTime = begDateTime.AddDays(1); } var tiaoxius = HrManagerContext.GetInstance() .TiaoXius.Where(t => t.EmployeeId == employee.EmployeeId).ToList().Where(t => t.CurDateTime.Month == now.Month).ToList(); foreach (var tiaoxiu in tiaoxius) { var theholiDay = LeaveDays.Single(w => w.DateTime.Day == tiaoxiu.TiaoXiuDateTime.Day); var theDay = workDays.Single(w => w.DateTime.Day == tiaoxiu.CurDateTime.Day); if (!tiaoxiu.IsHalfDay) { workDays.Remove(theDay); workDays.Add(theholiDay); LeaveDays.Remove(theholiDay); theDay.type = theholiDay.type; LeaveDays.Add(theDay); } } }
/// <summary> /// 处理出差时间 请假时间 /// </summary> /// <param name="attendanceToday"></param> /// <param name="aResult"></param> private void processUnnormal(AttendanceToday attendanceToday, AttendanceResult aResult) { var groups = attendanceToday.AskleavesToDay.GroupBy(a => a.AskLeaveType.AskLeaveTypeId); foreach (var group in groups) { AskLeaveTypeForAttendance atfa = new AskLeaveTypeForAttendance(); var askLeaveType = HrManagerContext.GetInstance().AskLeaveTypes.Find(group.Key); atfa.AskLeaveType = askLeaveType; foreach (var item in group) { atfa.TimeCount += item.EndDateToDateTime.Subtract(item.BeginDateToDateTime).TotalHours; } aResult.AskLeaveTypeForAttendances.Add(atfa); } foreach (BusinessTrip tmp_bust in attendanceToday.BusinessTripsToDay) { aResult.BusTrip += tmp_bust.EndDateToDateTime.Subtract(tmp_bust.BeginDateToDateTime).TotalHours; } var tiaoxius = HrManagerContext.GetInstance() .TiaoXius.Where(t => t.EmployeeId == attendanceToday.Employee.EmployeeId) .ToList() .Where(t => t.CurDateTime.Day == attendanceToday.Day) .ToList(); if (tiaoxius.Count != 0) { if (tiaoxius[0].IsHalfDay) { aResult.TiaoXiu = "0.5"; } else { aResult.TiaoXiu = "1"; } } else { aResult.TiaoXiu = "0"; } //foreach (OverWork tmp_over in attendanceToday.OverWorksToday) //{ // aResult.OverWork_normal += double.Parse(tmp_over.ApplyTime); //} aResult.ReSignIn = attendanceToday.ReSiginToday.Count; }
public void Analysis(DateTime now) { try { CalculateWage wage = new CalculateWage(); var wages = wage.getWages(now); HrManagerContext.GetInstance().WageDetails.AddRange(wages); HrManagerContext.GetInstance().SaveChanges(); } catch (Exception e) { Console.WriteLine(e.StackTrace); } }
private VacationPlan GetVactionPlans(Employee employee) { var vactionPlans = HrManagerContext.GetInstance().VacationPlans; if (vactionPlans.Any(v => v.EmployeeId == employee.Id)) { return(vactionPlans.Where(v => v.EmployeeId == employee.Id).ToList()[0]); } if (vactionPlans.Any(v => v.OperatingPostId == employee.OperatingPostId)) { return(vactionPlans.Where(v => v.DepartmentId == employee.DepartmentId).ToList()[0]); } if (vactionPlans.Any(v => v.DepartmentId == employee.DepartmentId)) { return(vactionPlans.Where(v => v.DepartmentId == employee.DepartmentId).ToList()[0]); } return(vactionPlans.ToList().Where(a => a.IsCommonDefine).ToList()[0]); }
private List <ArrangeWork> GetArrangeWorks(Employee employee) { var arrangeWorks = HrManagerContext.GetInstance().ArrangeWorks.ToList(); var emparrangeWorks = arrangeWorks.Where(a => a.Employee == employee).ToList(); if (emparrangeWorks.Count != 0) { return(emparrangeWorks); } var operatarrangeWorks = arrangeWorks.Where(a => a.OperatingPost == employee.OperatingPost).ToList(); if (operatarrangeWorks.Count != 0) { return(operatarrangeWorks); } var departarrangeWorks = arrangeWorks.Where(a => a.Department == employee.Department).ToList(); if (departarrangeWorks.Count != 0) { return(departarrangeWorks); } return(arrangeWorks.Where(a => a.IsCommonDefine).ToList()); }
public bool Analysis(DateTime nowDateTime) { try { var employees = HrManagerContext.GetInstance().Employees.ToList(); foreach (var employee in employees) { var deleterange = HrManagerContext.GetInstance().AttendanceResults.Where(a => a.EmployeeNo == employee.EmployeeNO).ToList().Where(a => a.AttendanceDateMonth == nowDateTime.Month.ToString()); HrManagerContext.GetInstance().AttendanceResults.RemoveRange(deleterange); var results = CalculateTime(employee, nowDateTime); HrManagerContext.GetInstance().AttendanceResults.AddRange(results); HrManagerContext.GetInstance().SaveChanges(); } WageDetailControl wageDetail = new WageDetailControl(); wageDetail.Analysis(nowDateTime); return(true); } catch (Exception e) { Console.WriteLine(e.StackTrace); return(false); } }
public EntityControl() { Factory = new EntityDataFactory <T>(HrManagerContext.GetDbSetInstance <T>()); }
protected override bool DeleteProtected(Employee t) { var attendances = HrManagerContext.GetInstance().Attendances.ToList().Any(a => a.EmployeeNo == t.EmployeeNO && a.RecordTimeToDateTime.Month == DateTime.Now.Month); return(!attendances); }
public List <AttendanceResult> CalculateTime(Employee employee, DateTime now) { int i = 0; var attendanceResults = new List <AttendanceResult>(); var arrageworks = GetArrangeWorks(employee).ToList(); #region 获取一个月的数据 var attendanceForMonth = HrManagerContext.GetInstance() .Attendances.Where(a => a.EmployeeNo == employee.EmployeeNO) .ToList() .FindAll(a => a.RecordTimeToDateTime.Month == now.Month) .ToList(); var overWorkForMonth = HrManagerContext.GetInstance() .OverWorks.Where(o => o.EmployeeId == employee.EmployeeId) .ToList().FindAll(a => a.BeginDateTimeToDateTime.Month == now.Month).ToList(); var businessTripsForMonth = HrManagerContext.GetInstance() .BusinessTrips.Where(b => b.EmployeeId == employee.EmployeeId).ToList() .FindAll(a => a.BeginDateToDateTime.Month == now.Month).ToList(); var reSignInForMonth = HrManagerContext.GetInstance() .ReSignIns.Where(r => r.EmployeeId == employee.EmployeeId) .ToList() .FindAll(a => a.ReSignInDateToDateTime.Month == now.Month) .ToList(); var askLeaveForMonth = HrManagerContext.GetInstance() .AskLeaves.Where(a => a.EmployeeId == employee.EmployeeId) .ToList() .FindAll(a => a.BeginDateToDateTime.Month == now.Month) .ToList(); #endregion var WorkDays = new List <DateTimeExtend>(); var LeaveDays = new List <DateTimeExtend>(); var analysis = new AttendanceAnalysis(); DetachMonthForWork(WorkDays, LeaveDays, now, employee); foreach (var workDay in WorkDays) { // Console.WriteLine("workday: " + i); i++; var attendanceToday = analysis.GetAttendanceToday(attendanceForMonth, overWorkForMonth, businessTripsForMonth, reSignInForMonth, askLeaveForMonth, workDay.DateTime.Day); attendanceToday.Employee = employee; var aResult = new AttendanceResult(); attendanceResults.Add(aResult); aResult.EmployeeName = employee.EmployeeBaseInfo.EmployName; aResult.EmployeeNo = employee.EmployeeNO; aResult.AttendanceDate = workDay.DateTime.ToString("d"); var result = attendanceToday.AskleavesToDay.Count > 0 || attendanceToday.BusinessTripsToDay.Count > 0 || attendanceToday.OverWorksToday.Count > 0 || attendanceToday.AttendancesForDay.Count > 0; if (result) { //处理出差、加班、请假, processUnnormal(attendanceToday, aResult); if (attendanceToday.AttendancesForDay.Count != 0) { var workListDate = new List <NearByDateTimeClass>(); attendanceToday = analysis.AnalysisForPresonByDay(attendanceToday, arrageworks); var curArrageworks = arrageworks.Where(a => a.ArrangeWorkNo == attendanceToday.ArrangeWorkNo).ToList(); if (curArrageworks.Count != 0) { aResult.BanCi = curArrageworks.First().WorkName; } //foreach (var work in curArrageworks) //{ // if (attendanceToday.AskleavesToDay.Exists(a => a.BeginDateToDateTime.Hour < work.OnDutyTimeToDateTime.Hour)) // attendanceToday.VirAttendanceDateTimes.Add(new DateTime(workDay.DateTime.Year, workDay.DateTime.Month, workDay.DateTime.Day, work.OnDutyTimeToDateTime.Hour, work.OnDutyTimeToDateTime.Minute, 0)); // if (attendanceToday.AskleavesToDay.Exists(a => a.BeginDateToDateTime.Hour < work.OffDutyTimeToDateTime.Hour)) // attendanceToday.VirAttendanceDateTimes.Add(new DateTime(workDay.DateTime.Year, workDay.DateTime.Month, workDay.DateTime.Day, work.OffDutyTimeToDateTime.Hour, work.OffDutyTimeToDateTime.Minute, 0)); // if (attendanceToday.BusinessTripsToDay.Exists(a => a.BeginDateToDateTime.Hour < work.OnDutyTimeToDateTime.Hour)) // attendanceToday.VirAttendanceDateTimes.Add(new DateTime(workDay.DateTime.Year, workDay.DateTime.Month, workDay.DateTime.Day, work.OnDutyTimeToDateTime.Hour, work.OnDutyTimeToDateTime.Minute, 0)); // if (attendanceToday.BusinessTripsToDay.Exists(a => a.BeginDateToDateTime.Hour < work.OffDutyTimeToDateTime.Hour)) // attendanceToday.VirAttendanceDateTimes.Add(new DateTime(workDay.DateTime.Year, workDay.DateTime.Month, workDay.DateTime.Day, work.OffDutyTimeToDateTime.Hour, work.OffDutyTimeToDateTime.Minute, 0)); //} workListDate = GetCorrectWorkList(attendanceToday.VirAttendanceDateTimes, curArrageworks); var workList = workListDate.ConvertAll(w => !w.IsDispalyRecord() ? "" :w.Datetime.ToString("T")); aResult.OnDutyMorning = workList[0]; aResult.OffDutyMorning = workList[1]; aResult.OnDutyNoon = workList[2]; aResult.OffDutyNoon = workList[3]; aResult.OnDutyNight = workList[4]; aResult.OffDutyNight = workList[5]; Action <NearByDateTimeClass, int> setAResult = delegate(NearByDateTimeClass duty, int worktype) { var resultint = duty.IsValidRecord(worktype); if (resultint == 1) { aResult.KuanGongTimes += duty.Span; } if (resultint == 2) { aResult.ChiDaoTimes.Add(duty.Span); } if (resultint == 2) { aResult.ZaoTuiTimes.Add(duty.Span); } }; Action <NearByDateTimeClass, NearByDateTimeClass, ArrangeWork> Action1 = delegate(NearByDateTimeClass w1, NearByDateTimeClass w2, ArrangeWork work) { DateTime realonduty; DateTime realOffduty; if (w1.IsDispalyRecord()) { realonduty = w1.Datetime; setAResult(w1, 1); } else { realonduty = new DateTime(workDay.DateTime.Year, workDay.DateTime.Month, workDay.DateTime.Day, work.OnDutyTimeToDateTime.Hour, work.OnDutyTimeToDateTime.Minute, 0); } if (w2.IsDispalyRecord()) { realOffduty = w2.Datetime; setAResult(w2, 2); } else { realOffduty = new DateTime(workDay.DateTime.Year, workDay.DateTime.Month, workDay.DateTime.Day, work.OffDutyTimeToDateTime.Hour, work.OffDutyTimeToDateTime.Minute, 0); if (work.IsPassDayWork) { realonduty = realonduty.AddDays(1); } } aResult.normalWorkTime += realOffduty.Subtract(realonduty).TotalMinutes; }; foreach (var work in curArrageworks) { if (work.SpanType == ArrangeWorkTimeSpanType.Moning) { //if (workListDate[0].IsDispalyRecord()) //{ // realonduty = workListDate[0].Datetime; // setAResult(workListDate[0], 1); //} //else //{ // realonduty = new DateTime(workDay.DateTime.Year, workDay.DateTime.Month, workDay.DateTime.Day, work.OnDutyTimeToDateTime.Hour, work.OnDutyTimeToDateTime.Minute, 0); //} //if (workListDate[1].IsDispalyRecord()) //{ // realOffduty = workListDate[1].Datetime; // setAResult(workListDate[1], 2); //} //else //{ // realOffduty = new DateTime(workDay.DateTime.Year, workDay.DateTime.Month, workDay.DateTime.Day, work.OffDutyTimeToDateTime.Hour, work.OffDutyTimeToDateTime.Minute, 0); // if (work.IsPassDayWork) // realonduty = realonduty.AddDays(1); //} //aResult.normalWorkTime += realOffduty.Subtract(realonduty).TotalMinutes; Action1(workListDate[0], workListDate[1], work); } else if (work.SpanType == ArrangeWorkTimeSpanType.Afternoon) { //if (workListDate[2].IsDispalyRecord()) // setAResult(workListDate[2], 1); //if (workListDate[3].IsDispalyRecord()) // setAResult(workListDate[3], 2); Action1(workListDate[2], workListDate[3], work); } else { //setAResult(workListDate[4], 1); //if (workListDate[4].IsDispalyRecord()) // setAResult(workListDate[5], 2); //if (workListDate[5].IsDispalyRecord()) Action1(workListDate[4], workListDate[5], work); //添加夜班次数 aResult.IsNightDuty = true; } } } } else { // 旷工一天 aResult.KuanGongTimes = 8; } } foreach (var workDay in LeaveDays) { //var attendanceToday = analysis.GetAttendanceToday(attendanceForMonth, overWorkForMonth, // businessTripsForMonth, reSignInForMonth, askLeaveForMonth, leaveDay.DateTime.Day); //attendanceToday.Employee = employee; //var aResult = new AttendanceResult(); //attendanceResults.Add(aResult); //aResult.EmployeeName = employee.EmployeeBaseInfo.EmployName; //aResult.EmployeeNo = employee.EmployeeNO; //aResult.AttendanceDate = leaveDay.DateTime.ToString("d"); //var result = attendanceToday.AskleavesToDay.Count > 0 || attendanceToday.BusinessTripsToDay.Count > 0 || attendanceToday.OverWorksToday.Count > 0 || attendanceToday.AttendancesForDay.Count > 0; //if (result) //{ // if(leaveDay.type == DateTimeExtendtype.Holiday) // { // aResult.OverWork_voc = GetOverWork(attendanceToday); // } // else if(leaveDay.type == DateTimeExtendtype.WeeKendDay) // { // aResult.OverWork_weekend = GetOverWork(attendanceToday); // } // else // { // aResult.OverWork_normal = GetOverWork(attendanceToday); // } //} var attendanceToday = analysis.GetAttendanceToday(attendanceForMonth, overWorkForMonth, businessTripsForMonth, reSignInForMonth, askLeaveForMonth, workDay.DateTime.Day); attendanceToday.Employee = employee; var aResult = new AttendanceResult(); attendanceResults.Add(aResult); aResult.EmployeeName = employee.EmployeeBaseInfo.EmployName; aResult.EmployeeNo = employee.EmployeeNO; aResult.AttendanceDate = workDay.DateTime.ToString("d"); var result = attendanceToday.AskleavesToDay.Count > 0 || attendanceToday.BusinessTripsToDay.Count > 0 || attendanceToday.OverWorksToday.Count > 0 || attendanceToday.AttendancesForDay.Count > 0; if (result) { //处理出差、加班、请假, processUnnormal(attendanceToday, aResult); if (workDay.type == DateTimeExtendtype.Holiday) { aResult.OverWork_voc = GetOverWork(attendanceToday); } else if (workDay.type == DateTimeExtendtype.WeeKendDay) { aResult.OverWork_weekend = GetOverWork(attendanceToday); } else { aResult.OverWork_normal = GetOverWork(attendanceToday); } if (attendanceToday.AttendancesForDay.Count != 0) { var workListDate = new List <NearByDateTimeClass>(); attendanceToday = analysis.AnalysisForPresonByDay(attendanceToday, arrageworks); var curArrageworks = arrageworks.Where(a => a.ArrangeWorkNo == attendanceToday.ArrangeWorkNo).ToList(); if (curArrageworks.Count != 0) { aResult.BanCi = curArrageworks.First().WorkName; } workListDate = GetCorrectWorkList(attendanceToday.VirAttendanceDateTimes, curArrageworks); var workList = workListDate.ConvertAll(w => !w.IsDispalyRecord() ? "" : w.Datetime.ToString("T")); aResult.OnDutyMorning = workList[0]; aResult.OffDutyMorning = workList[1]; aResult.OnDutyNoon = workList[2]; aResult.OffDutyNoon = workList[3]; aResult.OnDutyNight = workList[4]; aResult.OffDutyNight = workList[5]; Action <NearByDateTimeClass, int> setAResult = delegate(NearByDateTimeClass duty, int worktype) { var resultint = duty.IsValidRecord(worktype); if (resultint == 1) { aResult.KuanGongTimes += duty.Span; } if (resultint == 2) { aResult.ChiDaoTimes.Add(duty.Span); } if (resultint == 2) { aResult.ZaoTuiTimes.Add(duty.Span); } }; Action <NearByDateTimeClass, NearByDateTimeClass, ArrangeWork> Action1 = delegate(NearByDateTimeClass w1, NearByDateTimeClass w2, ArrangeWork work) { DateTime realonduty; DateTime realOffduty; if (w1.IsDispalyRecord()) { realonduty = w1.Datetime; setAResult(w1, 1); } else { realonduty = new DateTime(workDay.DateTime.Year, workDay.DateTime.Month, workDay.DateTime.Day, work.OnDutyTimeToDateTime.Hour, work.OnDutyTimeToDateTime.Minute, 0); } if (w2.IsDispalyRecord()) { realOffduty = w2.Datetime; setAResult(w2, 2); } else { realOffduty = new DateTime(workDay.DateTime.Year, workDay.DateTime.Month, workDay.DateTime.Day, work.OffDutyTimeToDateTime.Hour, work.OffDutyTimeToDateTime.Minute, 0); if (work.IsPassDayWork) { realonduty = realonduty.AddDays(1); } } aResult.normalWorkTime += realOffduty.Subtract(realonduty).TotalMinutes; }; foreach (var work in curArrageworks) { if (work.SpanType == ArrangeWorkTimeSpanType.Moning) { Action1(workListDate[0], workListDate[1], work); } else if (work.SpanType == ArrangeWorkTimeSpanType.Afternoon) { Action1(workListDate[2], workListDate[3], work); } else { Action1(workListDate[4], workListDate[5], work); //添加夜班次数 aResult.IsNightDuty = true; } } // Console.WriteLine("levavDay " + i); i++; } } } return(attendanceResults); }
public List <WageDetail> getWages(DateTime nowDateTime) { List <WageDetail> wages = new List <WageDetail>(); // AttendanceResultControl arc = new AttendanceResultControl(); var employees = HrManagerContext.GetInstance().Employees.ToList(); foreach (var employee in employees) { //这些加班的参数在 attendanceresult 里面就有 OverWorkList owl = new OverWorkList(); int yebanjintienum = 0; int gongLingJiShu = 0; double tiaoxu_time = 0; double normal_work_time = 0; double askLeave_nopay = 0; double absenteeismTime = 0; //夫妻取值 var couple = HrManagerContext.GetInstance().Couples.ToList().Where(a => a.EmployeeNan.Id == employee.EmployeeId || a.EmployeeNv.Id == employee.EmployeeId).ToList(); List <AttendanceResult> tmp_nanResult = new List <AttendanceResult>(); List <AttendanceResult> tmp_nvResult = new List <AttendanceResult>(); if (couple.Count != 0) { var no1 = couple[0].EmployeeNan.EmployeeNO; var no2 = couple[0].EmployeeNv.EmployeeNO; tmp_nanResult = HrManagerContext.GetInstance().AttendanceResults.Where(a => a.EmployeeNo == no1).ToList().Where(a => DateTime.Parse(a.AttendanceDate).Month == nowDateTime.Month).ToList(); tmp_nvResult = HrManagerContext.GetInstance().AttendanceResults.Where(a => a.EmployeeNo == no2).ToList().Where(a => DateTime.Parse(a.AttendanceDate).Month == nowDateTime.Month).ToList(); } int ccount = 0; double couple_work_time = 0; var results = HrManagerContext.GetInstance().AttendanceResults.Where(a => a.EmployeeNo == employee.EmployeeNO).ToList().Where(a => DateTime.Parse(a.AttendanceDate).Month == nowDateTime.Month).ToList(); var salay = HrManagerContext.GetInstance().Salarys.Single(s => s.EmployeeId == employee.EmployeeId); var base_salay = BaseSalary.GetInstance(); int ChiDaoKouXin = 0; double ZaoTuiTimeTotal = 0; foreach (var result in results) { // 夫妻津贴处理 if (tmp_nanResult.Count > 0 && tmp_nvResult.Count > 0) { if (tmp_nanResult[ccount].normalWorkTime - tmp_nvResult[ccount].normalWorkTime >= 0) { couple_work_time += tmp_nvResult[ccount].normalWorkTime; } else { couple_work_time += tmp_nvResult[ccount].normalWorkTime; } } foreach (double zaoTui in result.ZaoTuiTimes) { ZaoTuiTimeTotal += zaoTui / 60; } if (result.IsNightDuty) { if (result.normalWorkTime >= 8) { // 若为夜班且考勤满8小时,则夜班津贴次数加1 yebanjintienum++; } } // 迟到处理 int tmp_cnt = 0; tmp_cnt += result.ChiDaoTimesCount; foreach (double times in result.ChiDaoTimes) { if (tmp_cnt <= 3) { if (times <= 15) { ChiDaoKouXin += 5; } else if (times > 15 && times <= 30) { ChiDaoKouXin += 10; } else { } } else { if (times <= 15) { ChiDaoKouXin += 10; } else if (times > 15 && times <= 30) { ChiDaoKouXin += 20; } else { } } } // 计算工龄是6的几倍 int years = result.AttendanceDateToDatetime.Year - DateTime.Parse(employee.HireDate).Year; int months = years * 12 + result.AttendanceDateToDatetime.Month - DateTime.Parse(employee.HireDate).Month; if (months % 6 == 0) { gongLingJiShu = months / 6; } // 加班特殊处理 if (employee.EmployeeBaseInfo.EmployName == "屈志勇" || employee.EmployeeBaseInfo.EmployName == "万正新" || employee.EmployeeBaseInfo.EmployName == "万松鹤") { if (result.OverWork_normal >= 120) { result.OverWork_normal = 120; } if (result.OverWork_weekend >= 600) { result.OverWork_weekend = 600; } } owl.overwork_normal_month += result.OverWork_normal / 60; owl.overwork_weekend_month += result.OverWork_weekend / 60; owl.overwork_voc_month += result.OverWork_voc / 60; tiaoxu_time += Convert.ToDouble(result.TiaoXiu) * 8; // 满8小时为一个工日 normal_work_time += result.normalWorkTime / 60; if (result.AskLeaveTypeForAttendances.Count > 0) { foreach (var tmp_res in result.AskLeaveTypeForAttendances) { if (!tmp_res.AskLeaveType.IsWithPay) { askLeave_nopay += tmp_res.TimeCount / 60; } else { normal_work_time += tmp_res.TimeCount / 60; } } } // 产假特殊处理 absenteeismTime += result.KuanGongTimes / 60; } if (salay.HaveOverWorkLimitForMonth) { if (owl.overwork_normal_month >= 42) { owl.overwork_normal_month = 42; } if (owl.overwork_weekend_month >= 40) { owl.overwork_weekend_month = 40; } if (owl.overwork_voc_month >= 40) { owl.overwork_voc_month = 40; } } wages.Add(CalculateWageForPerson(employee, owl, salay, base_salay, tiaoxu_time, normal_work_time, askLeave_nopay, absenteeismTime, yebanjintienum, gongLingJiShu, ChiDaoKouXin, ZaoTuiTimeTotal, couple_work_time)); ccount++; } return(wages); }