public static List <CalendarADay> Turn(List <AttendanceInAndOutRecord> originalDataList, List <CalendarADay> retList , List <PlanDutyDetail> planDutyDetailList , DateTime from, DateTime to) { for (int i = 0; from.AddDays(i).Date <= to.Date; i++) { PlanDutyDetail planDutyDetail = PlanDutyDetail.GetPlanDutyDetailByDate(planDutyDetailList, from.AddDays(i).Date); if (planDutyDetail == null || planDutyDetail.PlanDutyClass.IsWeek) { continue; } CalendarADay calendarADay = CalendarADay.CreateOrGetCalendarADayByDate(retList, from.AddDays(i).Date); List <AttendanceInAndOutRecord> dtOriginalDataList = AttendanceInAndOutRecord.GetAttendanceInAndOutRecordByDate(originalDataList, from.AddDays(i).Date); if (dtOriginalDataList.Count == 0) { MonthItem monthNoRecord = new MonthItem(); monthNoRecord.CType = CalendarShowType.Attendance; monthNoRecord.Title = "无打卡记录"; monthNoRecord.Date = from.AddDays(i).Date; monthNoRecord.Detail = "无打卡记录"; calendarADay.MonthItems.Add(monthNoRecord); Utility.Clean(calendarADay); continue; } DateTime dtStart = AttendanceInAndOutRecord.FindEarlistTime(dtOriginalDataList); DateTime dtEnd = AttendanceInAndOutRecord.FindLatestTime(dtOriginalDataList); if (!IsInitTime(dtStart)) { DayItem day = new DayItem(); day.CType = CalendarShowType.Attendance; day.Start = day.End = dtStart; day.DayDetail = "打卡 " + dtStart.ToShortTimeString(); calendarADay.DayItems.Add(day); } if (!IsInitTime(dtEnd)) { DayItem day = new DayItem(); day.CType = CalendarShowType.Attendance; day.Start = day.End = dtEnd; day.DayDetail = "打卡 " + dtEnd.ToShortTimeString(); calendarADay.DayItems.Add(day); } MonthItem month = new MonthItem(); month.CType = CalendarShowType.Attendance; month.Title = "打卡 " + (!IsInitTime(dtStart) ? dtStart.ToShortTimeString() : "") + "--" + (!IsInitTime(dtEnd) ? dtEnd.ToShortTimeString() : ""); month.Date = from.AddDays(i).Date; month.Detail = "最早打卡时间:" + (!IsInitTime(dtStart) ? dtStart.ToString() : "--") + "<br>" + "最晚打卡时间:" + (!IsInitTime(dtEnd) ? dtEnd.ToString() : "--"); calendarADay.MonthItems.Add(month); Utility.Clean(calendarADay); } return(retList); }
public static List <CalendarADay> Turn(List <PlanDutyDetail> originalDataList, List <CalendarADay> retList) { foreach (PlanDutyDetail originalData in originalDataList) { CalendarADay calendarADay = CalendarADay.CreateOrGetCalendarADayByDate(retList, originalData.Date); MonthItem month = new MonthItem(); month.CType = CalendarShowType.DutyClass; month.ObjectID = originalData.PlanDutyClass.DutyClassID; month.Date = originalData.Date; month.Title = originalData.PlanDutyClass.DutyClassName; if (originalData.PlanDutyClass.DutyClassID != -1) { TimeSpan ts = originalData.PlanDutyClass.FirstStartToTime - originalData.PlanDutyClass.FirstStartFromTime; DayItem day1 = new DayItem(); DayItem day2 = new DayItem(); day1.CType = CalendarShowType.DutyClass; day1.ObjectID = originalData.PlanDutyClass.DutyClassID; day1.Start = originalData.PlanDutyClass.FirstStartFromTime; day1.End = originalData.PlanDutyClass.FirstEndTime; day1.DayDetail = ""; calendarADay.DayItems.Add(day1); day2.CType = CalendarShowType.DutyClass; day2.ObjectID = originalData.PlanDutyClass.DutyClassID; day2.Start = originalData.PlanDutyClass.SecondStartTime; day2.End = originalData.PlanDutyClass.SecondEndTime.Add(ts); day2.DayDetail = ""; calendarADay.DayItems.Add(day2); month.Detail = "上午上班时间:" + originalData.PlanDutyClass.FirstStartFromTime.ToShortTimeString() + "/" + originalData.PlanDutyClass.FirstStartToTime.ToShortTimeString() + "--" + originalData.PlanDutyClass.FirstEndTime.ToShortTimeString() + "<br>下午午上班时间:" + originalData.PlanDutyClass.SecondStartTime.ToShortTimeString() + "--" + originalData.PlanDutyClass.SecondEndTime.ToShortTimeString() + "/" + originalData.PlanDutyClass.SecondEndTime.Add(ts).ToShortTimeString() + "<br>迟到判定:上班晚于" + originalData.PlanDutyClass.LateTime + "分钟记迟到<br>早退判定:下班早于" + originalData.PlanDutyClass.EarlyLeaveTime + "分钟记早退<br>旷工判定:迟到" + originalData.PlanDutyClass.AbsentLateTime + "分钟或早退" + originalData.PlanDutyClass.AbsentEarlyLeaveTime + "分钟,为旷工"; } else { month.BackgroundColor = "#FFEDED"; month.Detail = originalData.PlanDutyClass.DutyClassName; } calendarADay.MonthItems.Add(month); Utility.Clean(calendarADay); } return(retList); }
public static List <CalendarADay> Turn(List <OverWork> originalDataList, List <PlanDutyDetail> planDutyDetailList, List <SpecialDate> specialList, List <CalendarADay> retList) { foreach (OverWork overWork in originalDataList) { foreach (OverWorkItem originalDataItem in overWork.Item) { string typeName = "加班"; // -1 全部;0 新增;1 提交;2 审核不通过;3 审核通过;4 取消请假;5 拒绝取消假期;6 批准取消假期;7 审核中;8 审核取消中 if (originalDataItem.Status == RequestStatus.New || originalDataItem.Status == RequestStatus.Submit || originalDataItem.Status == RequestStatus.Approving || originalDataItem.Status == RequestStatus.CancelApproving || originalDataItem.Status == RequestStatus.Cancelled) { typeName = typeName + "(" + originalDataItem.Status.Name + ")"; } CalendarADay calendarADay = CalendarADay.CreateOrGetCalendarADayByDate(retList, originalDataItem.FromDate.Date); DayItem day = new DayItem(); day.ObjectID = originalDataItem.ItemID; day.CType = CalendarShowType.OverWork; day.Start = originalDataItem.FromDate; day.End = originalDataItem.ToDate; day.DayDetail = typeName + " " + originalDataItem.CostTime + "小时<br>项目:" + overWork.ProjectName + "<br>理由:" + overWork.Reason; calendarADay.DayItems.Add(day); MonthItem month = new MonthItem(); month.ObjectID = originalDataItem.ItemID; month.CType = CalendarShowType.OverWork; month.Title = typeName + " " + originalDataItem.CostTime + "小时"; month.Date = originalDataItem.FromDate; month.Detail = typeName + " 时段:" + originalDataItem.FromDate.ToShortDateString() + " " + originalDataItem.FromDate.ToShortTimeString() + "--" + originalDataItem.ToDate.ToShortDateString() + " " + originalDataItem.ToDate.ToShortTimeString() + " 加班时间(小时):" + originalDataItem.CostTime + " 项目:" + overWork.ProjectName + " 理由:" + overWork.Reason; calendarADay.MonthItems.Add(month); Utility.Clean(calendarADay); } } return(retList); }
private static void CreateOutApplicationInfoInADay(List <CalendarADay> retList, DateTime date, decimal hour, OutApplication originalData, OutApplicationItem originalDataItem, DateTime from, DateTime to) { CalendarADay calendarADay = CalendarADay.CreateOrGetCalendarADayByDate(retList, date.Date); string typeName = originalData.OutType.Name; // -1 全部;0 新增;1 提交;2 审核不通过;3 审核通过;4 取消请假;5 拒绝取消假期;6 批准取消假期;7 审核中;8 审核取消中 if (originalDataItem.Status == RequestStatus.New || originalDataItem.Status == RequestStatus.Submit || originalDataItem.Status == RequestStatus.Approving || originalDataItem.Status == RequestStatus.CancelApproving || originalDataItem.Status == RequestStatus.Cancelled) { typeName = typeName + "(" + originalDataItem.Status.Name + ")"; } DayItem day = new DayItem(); day.ObjectID = originalDataItem.ItemID; day.CType = CalendarShowType.Out; day.Start = from; day.End = to; day.DayDetail = typeName + " " + Convert.ToSingle(hour) + "小时<br>地点:" + originalData.OutLocation + "<br>理由:" + originalData.Reason; calendarADay.DayItems.Add(day); MonthItem month = new MonthItem(); month.ObjectID = originalDataItem.ItemID; month.CType = CalendarShowType.Out; month.Title = typeName + " " + Convert.ToSingle(hour) + "小时"; month.Date = date; month.Detail = typeName + " 时段:" + originalDataItem.FromDate.ToShortDateString() + " " + originalDataItem.FromDate.ToShortTimeString() + "--" + originalDataItem.ToDate.ToShortDateString() + " " + originalDataItem.ToDate.ToShortTimeString() + " 外出时间(小时):" + originalDataItem.CostTime + " 地点:" + originalData.OutLocation + " 理由:" + originalData.Reason; calendarADay.MonthItems.Add(month); Utility.Clean(calendarADay); }
public static List <CalendarADay> Turn(List <WorkTask> originalDataList, List <CalendarADay> retList, List <PlanDutyDetail> planDutyDetailList, int accountID, DateTime startDate, DateTime endDate) { foreach (WorkTask originalData in originalDataList) { for (int i = 0; originalData.StartDate.AddDays(i).Date <= originalData.EndDate.Date; i++) { if (originalData.StartDate.AddDays(i).Date < startDate.Date || originalData.StartDate.AddDays(i).Date > endDate.Date) { continue; } PlanDutyDetail detail = PlanDutyDetail.GetPlanDutyDetailByDate(planDutyDetailList, originalData.StartDate.AddDays(i).Date); if (detail != null && detail.PlanDutyClass != null && detail.PlanDutyClass.IsWeek) { continue; } CalendarADay calendarADay = CalendarADay.CreateOrGetCalendarADayByDate(retList, originalData.StartDate.AddDays(i).Date); MonthItem month = new MonthItem(); month.CType = CalendarShowType.WorkTask; month.Title = originalData.Title; month.Date = originalData.StartDate.AddDays(i).Date; month.Detail = month.Title + (originalData.Account.Id == accountID ? "" : "<br>创建人:" + originalData.Account.Name) + "<br>时段:" + originalData.StartDate.ToShortDateString() + "--" + originalData.EndDate.ToShortDateString() + " 状态:<span class=\"" + originalData.Status.Style + "\">" + originalData.Status.Name + "</span><br>" + originalData.Description; calendarADay.MonthItems.Add(month); DayItem day = new DayItem(); day.CType = CalendarShowType.WorkTask; day.Start = day.End = originalData.StartDate.AddDays(i).Date; if (detail != null) { day.Start = new DateTime(day.Start.Year, day.Start.Month, day.Start.Day, detail.PlanDutyClass.FirstStartFromTime.Hour, detail.PlanDutyClass.FirstStartFromTime.Minute, detail.PlanDutyClass.FirstStartFromTime.Second); //todo by wsl day.End = new DateTime(day.End.Year, day.End.Month, day.End.Day, detail.PlanDutyClass.SecondEndTime.Hour, detail.PlanDutyClass.SecondEndTime.Minute, detail.PlanDutyClass.SecondEndTime.Second); } else { day.Start = new DateTime(day.Start.Year, day.Start.Month, day.Start.Day, 9, 0, 0); day.End = new DateTime(day.End.Year, day.End.Month, day.End.Day, 17, 0, 0); } day.DayDetail = month.Title + (originalData.Account.Id == accountID ? "" : "<br>创建人:" + originalData.Account.Name) + "<br>时段:" + originalData.StartDate.ToShortDateString() + "--" + originalData.EndDate.ToShortDateString() + "<br>状态:" + originalData.Status.Name + "<br>" + originalData.Description; calendarADay.DayItems.Add(day); Utility.Clean(calendarADay); } } return(retList); }
public static List <CalendarADay> Turn(List <AttendanceBase> originalDataList, List <CalendarADay> retList, List <PlanDutyDetail> planDutyDetailList, List <OutApplication> outApplicationList, List <LeaveRequest> leaveRequestList, List <AttendanceInAndOutRecord> attendanceInAndOutRecordList) { foreach (AttendanceBase originalData in originalDataList) { PlanDutyDetail theDayPlanDuty = PlanDutyDetail.GetPlanDutyDetailByDate(planDutyDetailList, originalData.TheDay); if (theDayPlanDuty == null) { continue; } CalendarADay calendarADay = CalendarADay.CreateOrGetCalendarADayByDate(retList, originalData.TheDay); DayItem day = new DayItem(); MonthItem month = new MonthItem(); day.ObjectID = month.ObjectID = originalData.AttendanceId; day.CType = month.CType = CalendarShowType.Absent; day.ObjectID = month.ObjectID = originalData.AttendanceId; month.Date = calendarADay.Date; LaterAttendance late; EarlyLeaveAttendance early; if (originalData is AbsentAttendance) { day.Start = theDayPlanDuty.PlanDutyClass.FirstStartFromTime; day.End = originalData.Days == 1 ? theDayPlanDuty.PlanDutyClass.SecondEndTime : theDayPlanDuty.PlanDutyClass.FirstEndTime; if (originalData.Days != 1) { List <UnKownTimeSpan> uktsList = CaculateAbsentTimes(originalData.TheDay, theDayPlanDuty, outApplicationList, leaveRequestList, attendanceInAndOutRecordList); foreach (UnKownTimeSpan span in uktsList) { if ((span.To - span.From).TotalMinutes >= theDayPlanDuty.PlanDutyClass.AbsentLateTime || (span.To - span.From).TotalMinutes >= theDayPlanDuty.PlanDutyClass.AbsentEarlyLeaveTime) { day.Start = span.From; day.End = span.To; } } } day.DayDetail = originalData.Name + " " + Utility.FormatNumData(originalData.Days * 8) + "小时"; month.Title = month.Detail = originalData.Name + " " + Utility.FormatNumData(originalData.Days * 8) + "小时"; } else if ((early = originalData as EarlyLeaveAttendance) != null) { day.Start = theDayPlanDuty.PlanDutyClass.SecondEndTime.AddMinutes(-early.EarlyLeaveMinutes); day.End = theDayPlanDuty.PlanDutyClass.SecondEndTime; day.DayDetail = early.Name + " " + Utility.FormatNumData(early.EarlyLeaveMinutes) + "分钟"; month.Title = month.Detail = early.Name + " " + Utility.FormatNumData(early.EarlyLeaveMinutes) + "分钟"; } else if ((late = originalData as LaterAttendance) != null) { day.Start = theDayPlanDuty.PlanDutyClass.FirstStartFromTime; day.End = theDayPlanDuty.PlanDutyClass.FirstStartFromTime.AddMinutes(late.LaterMinutes); day.DayDetail = late.Name + " " + Utility.FormatNumData(late.LaterMinutes) + "分钟"; month.Title = month.Detail = late.Name + " " + Utility.FormatNumData(late.LaterMinutes) + "分钟"; } calendarADay.DayItems.Add(day); calendarADay.MonthItems.Add(month); Utility.Clean(calendarADay); } return(retList); }