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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }