public List<ShiftArrange> ApplyTemplateTo(Staff staff, DatetimeRange range) { if (Items != null && Items.Count > 0 && Items.Exists(it => it.Duration <= 0)) return null; //如果存在某个班次持续时间小于0,直接退出 List<ShiftArrange> sas = new List<ShiftArrange>(); if (this.Items != null && this.Items.Count > 0) { DateTime dt = range.Begin; while (dt <= range.End) { foreach (TemplateItem item in Items) { int duration = 1; while (duration <= item.Duration) { if (HolidaySetting.Current != null && HolidaySetting.Current.IsHoliday(dt) && (this.Options & TemplateOptions.HolidayShifted) == 0) //节假日不排班 { dt = dt.AddDays(1); if (item.DurationUnit == 0) duration++; //按天为单位,即使不排班也要减少次数 } else if (HolidaySetting.Current != null && HolidaySetting.Current.IsWeekend(dt) && (this.Options & TemplateOptions.WeekendShifted) == 0)//周末不排班 { dt = dt.AddDays(1); if (item.DurationUnit == 0) duration++; //按天为单位,即使不排班也要减少次数 } else { duration++; if (item.Shifts != null && item.Shifts.Count > 0 && staff.HireDate.Date <= dt.Date) //考虑到员工入职日期,入职日期之前排班无意义 { foreach (Shift shift in item.Shifts) { ShiftArrange sa = new ShiftArrange(); sa.StaffID = staff.ID; sa.ShiftDate = dt; sa.ShiftID = shift.ID; sa.Shift = shift; sas.Add(sa); } } dt = dt.AddDays(1); } if (dt > range.End) return sas; } for (int i = 1; i <= item.RestDays; i++) { dt = dt.AddDays(1); if (dt > range.End) return sas; } } } } return sas; }
public CommandResult Add(ShiftArrange info) { IShiftArrangeProvider provider = ProviderFactory.Create<IShiftArrangeProvider>(_RepoUri); ShiftArrangeID id = new ShiftArrangeID(info.StaffID, info.ShiftID, info.ShiftDate); ShiftArrange item = provider.GetByID(id).QueryObject; if (item == null) { IUnitWork unitWork = ProviderFactory.Create<IUnitWork>(_RepoUri); provider.Insert(info, unitWork); return unitWork.Commit(); } else //如果已经存在则直接返回 { return new CommandResult(ResultCode.Successful, ResultCodeDecription.GetDescription(ResultCode.Successful)); } }
private List <AttendanceResult> CreateAttendanceResult(Staff staff, ShiftArrange item) { List <AttendanceResult> items = new List <AttendanceResult>(); if (item.Shift != null && item.Shift.Items != null && item.Shift.Items.Count > 0) { foreach (ShiftItem si in item.Shift.Items) { AttendanceResult st = new AttendanceResult(); st.ID = Guid.NewGuid(); st.StaffID = staff.ID; st.StaffName = staff.Name; st.ShiftDate = item.ShiftDate; st.ShiftID = item.ShiftID; st.ShiftName = item.Shift.Name; MyTime mt = si.StartTime; st.StartTime = item.ShiftDate.AddHours(mt.Hour).AddMinutes(mt.Minute).AddSeconds(mt.Second); st.NewStartTime = st.StartTime; st.LogWhenArrive = si.LogAtStart; mt = si.EndTime; st.EndTime = item.ShiftDate.AddHours(mt.Hour).AddMinutes(mt.Minute).AddSeconds(mt.Second); if (si.NextDay) { st.EndTime = st.EndTime.AddDays(1); } st.NewEndTime = st.EndTime; st.LogWhenLeave = si.LogAtEnd; st.ShiftTime = si.Duration; //设置班次时段的上班时间 st.Present = si.Duration; st.EarlyestTime = st.NewStartTime.AddMinutes((int)-si.BeforeStartTime); st.LatestTime = st.NewEndTime.AddMinutes((int)si.AfterEndTime); st.AllowLateTime = si.AllowLateTime; st.AllowLeaveEarlyTime = si.AllowLeaveEarlyTime; st.AbsentItems = new List <AbsentItem>(); st.LogWhenArrive = true; st.LogWhenLeave = true; st.EnableLate = true; st.EnableLeaveEarly = true; st.EnableAbsent = true; items.Add(st); } } return(items); }
private List<ShiftArrange> GetShiftArranges() { List<ShiftArrange> items = new List<ShiftArrange>(); DateTime dt = dtBegin.Value; while (dt <= dtEnd.Value) { if (HolidaySetting.Current != null && HolidaySetting.Current.IsHoliday(dt) && chkHolidayShifted.Checked) //节假日不排班 { continue; } if ((dt.DayOfWeek == DayOfWeek.Monday && chkMonday.Checked) || (dt.DayOfWeek == DayOfWeek.Tuesday && chkTuesday.Checked) || (dt.DayOfWeek == DayOfWeek.Wednesday && chkWednesday.Checked) || (dt.DayOfWeek == DayOfWeek.Thursday && chkThursday.Checked) || (dt.DayOfWeek == DayOfWeek.Friday && chkFriday.Checked) || (dt.DayOfWeek == DayOfWeek.Saturday && chkSaturday.Checked) || (dt.DayOfWeek == DayOfWeek.Sunday && chkSunday.Checked) || ((dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday) && chkWeekendToWorkdayShifted.Checked && !HolidaySetting.Current.IsWeekend(dt)) // ) { if (SourceShifts != null && SourceShifts.Count > 0) { foreach (Shift s in SourceShifts) { ShiftArrange sa = new ShiftArrange() { StaffID = Staff.ID, ShiftDate = dt, ShiftID = s.ID, Shift = s }; items.Add(sa); } } } dt = dt.AddDays(1); } return items; }
private void mnu_Clear_Click(object sender, EventArgs e) { List<ShiftArrange> sas = new List<ShiftArrange>(); foreach (DataGridViewCell cell in GridView.SelectedCells) { if (cell.Tag is List<Shift>) //人员排班的单元格 { DateTime dt = Convert.ToDateTime(GridView.Columns[cell.ColumnIndex].Tag); Staff staff = GridView.Rows[cell.RowIndex].Tag as Staff; List<Shift> shifts = cell.Tag as List<Shift>; foreach (Shift shift in shifts) { ShiftArrange sa = new ShiftArrange(); sa.StaffID = staff.ID; sa.ShiftDate = dt; sa.ShiftID = shift.ID; sa.Shift = shift; sas.Add(sa); } } } ShiftArrangeBLL bll = new ShiftArrangeBLL(AppSettings.CurrentSetting.ConnectUri); CommandResult ret = bll.Delete(sas); btnFresh_Click(btnFresh, EventArgs.Empty); }
private List<AttendanceResult> CreateAttendanceResult(Staff staff, ShiftArrange item) { List<AttendanceResult> items = new List<AttendanceResult>(); if (item.Shift != null && item.Shift.Items != null && item.Shift.Items.Count > 0) { foreach (ShiftItem si in item.Shift.Items) { AttendanceResult st = new AttendanceResult(); st.ID = Guid.NewGuid(); st.StaffID = staff.ID; st.StaffName = staff.Name; st.ShiftDate = item.ShiftDate; st.ShiftID = item.ShiftID; st.ShiftName = item.Shift.Name; MyTime mt = si.StartTime; st.StartTime = item.ShiftDate.AddHours(mt.Hour).AddMinutes(mt.Minute).AddSeconds(mt.Second); st.NewStartTime = st.StartTime; st.LogWhenArrive = si.LogAtStart; mt = si.EndTime; st.EndTime = item.ShiftDate.AddHours(mt.Hour).AddMinutes(mt.Minute).AddSeconds(mt.Second); if (si.NextDay) st.EndTime = st.EndTime.AddDays(1); st.NewEndTime = st.EndTime; st.LogWhenLeave = si.LogAtEnd; st.ShiftTime = si.Duration; //设置班次时段的上班时间 st.Present = si.Duration; st.EarlyestTime = st.NewStartTime.AddMinutes((int)-si.BeforeStartTime); st.LatestTime = st.NewEndTime.AddMinutes((int)si.AfterEndTime); st.AllowLateTime = si.AllowLateTime; st.AllowLeaveEarlyTime = si.AllowLeaveEarlyTime; st.AbsentItems = new List<AbsentItem>(); st.LogWhenArrive = true; st.LogWhenLeave = true; st.EnableLate = true; st.EnableLeaveEarly = true; st.EnableAbsent = true; items.Add(st); } } return items; }
public List <ShiftArrange> ApplyTemplateTo(Staff staff, DatetimeRange range) { if (Items != null && Items.Count > 0 && Items.Exists(it => it.Duration <= 0)) { return(null); //如果存在某个班次持续时间小于0,直接退出 } List <ShiftArrange> sas = new List <ShiftArrange>(); if (this.Items != null && this.Items.Count > 0) { DateTime dt = range.Begin; while (dt <= range.End) { foreach (TemplateItem item in Items) { int duration = 1; while (duration <= item.Duration) { if (HolidaySetting.Current != null && HolidaySetting.Current.IsHoliday(dt) && (this.Options & TemplateOptions.HolidayShifted) == 0) //节假日不排班 { dt = dt.AddDays(1); if (item.DurationUnit == 0) { duration++; //按天为单位,即使不排班也要减少次数 } } else if (HolidaySetting.Current != null && HolidaySetting.Current.IsWeekend(dt) && (this.Options & TemplateOptions.WeekendShifted) == 0)//周末不排班 { dt = dt.AddDays(1); if (item.DurationUnit == 0) { duration++; //按天为单位,即使不排班也要减少次数 } } else { duration++; if (item.Shifts != null && item.Shifts.Count > 0 && staff.HireDate.Date <= dt.Date) //考虑到员工入职日期,入职日期之前排班无意义 { foreach (Shift shift in item.Shifts) { ShiftArrange sa = new ShiftArrange(); sa.StaffID = staff.ID; sa.ShiftDate = dt; sa.ShiftID = shift.ID; sa.Shift = shift; sas.Add(sa); } } dt = dt.AddDays(1); } if (dt > range.End) { return(sas); } } for (int i = 1; i <= item.RestDays; i++) { dt = dt.AddDays(1); if (dt > range.End) { return(sas); } } } } } return(sas); }
public CommandResult Delete(ShiftArrange info) { return ProviderFactory.Create<IShiftArrangeProvider>(_RepoUri).Delete(info); }