private static long DateDiff(DateIntervalType intervalType, DateTime startDate, DateTime endDate, DayOfWeek firstDayOfWeek) { if (intervalType == DateIntervalType.Year) return endDate.Year - startDate.Year; if (intervalType == DateIntervalType.Month) return (endDate.Month - startDate.Month) + (12 * (endDate.Year - startDate.Year)); var ts = endDate - startDate; if (intervalType == DateIntervalType.Day || intervalType == DateIntervalType.DayOfYear) return Round(ts.TotalDays); if (intervalType == DateIntervalType.Hour) return Round(ts.TotalHours); if (intervalType == DateIntervalType.Minute) return Round(ts.TotalMinutes); if (intervalType == DateIntervalType.Second) return Round(ts.TotalSeconds); if (intervalType == DateIntervalType.Weekday) {return Round(ts.TotalDays / 7.0);} if (intervalType == DateIntervalType.WeekOfYear) { while (endDate.DayOfWeek != firstDayOfWeek) endDate = endDate.AddDays(-1); while (startDate.DayOfWeek != firstDayOfWeek) startDate = startDate.AddDays(-1); ts = endDate - startDate; return Round(ts.TotalDays / 7.0); } if (intervalType == DateIntervalType.Quarter) { var d1Quarter = GetQuarter(startDate.Month); var d2Quarter = GetQuarter(endDate.Month); var d1 = d2Quarter - d1Quarter; var d2 = (4 * (endDate.Year - startDate.Year)); return Round(d1 + d2); } return 0; }
/// <summary> /// 构造函数 /// </summary> /// <param name="interval">间隔毫秒数(默认为1000毫秒)(此属性作为检查是否到时间点用途)</param> /// <param name="startTime">服务运行开始时间</param> /// <param name="intervalType">时间间隔类型:year,month,week,day,hour,minute</param> /// <param name="intervalValue">间隔值(正整数)</param> /// <param name="logService"><see cref="ILogService"/></param> protected ScheduleRunner(double interval, DateTime startTime, DateIntervalType intervalType, int intervalValue, ILogService logService) : base(interval) { this.startTime = startTime; this.intervalType = intervalType; this.intervalValue = intervalValue; this.logService = logService; }
public static void GetInterval(DateIntervalType intervalType, out DateTime dateTime1, out DateTime dateTime2) { DateTime dt1 = default(DateTime), dt2 = default(DateTime); DateTime now = DateTime.Now; switch (intervalType) { case DateIntervalType.Today: dt1 = now.Date; dt2 = dt1.AddDays(1.0).AddSeconds(-1.0); break; case DateIntervalType.Yesterday: dt1 = now.Date.AddDays(-1.0).Date; dt2 = now.Date.AddSeconds(-1.0); break; case DateIntervalType.ThisWeek: dt1 = now.Date.AddDays(-1 * (int)DateTime.Now.DayOfWeek).AddDays(1.0); dt2 = now.Date.AddDays(7 - (int)now.DayOfWeek).AddDays(1.0).AddSeconds(-1.0); break; case DateIntervalType.ThisMonth: dt1 = new DateTime(now.Year, now.Month, 1); dt2 = dt1.AddMonths(1).AddSeconds(-1.0); break; case DateIntervalType.LastMonth: dt1 = new DateTime(now.Year, now.Month, 1).AddMonths(-1); dt2 = new DateTime(now.Year, now.Month, 1).AddSeconds(-1); break; case DateIntervalType.LastWeek: dt1 = now.Date.AddDays(-1 * (int)now.DayOfWeek).AddDays(-6); dt2 = dt1.AddDays(7).AddSeconds(-1.0); break; case DateIntervalType.Last7Days: dt1 = now.Date.AddDays(-7.0); dt2 = now.Date.AddDays(1.0).AddSeconds(-1.0); break; case DateIntervalType.Last14Days: dt1 = now.Date.AddDays(-14.0); dt2 = now.Date.AddDays(1.0).AddSeconds(-1.0); break; case DateIntervalType.Last30Days: dt1 = now.Date.AddDays(-30.0); dt2 = now.Date.AddDays(1.0).AddSeconds(-1.0); break; default: break; } dateTime1 = dt1; dateTime2 = dt2; }
public DateIntervalPreset(DateIntervalType type, string friendlyName = "") { Type = type; FriendlyName = friendlyName; DateTimeHelper.GetInterval(Type, out DateTime dt1, out DateTime dt2); Date1 = dt1; Date2 = dt2; }
public SQMMetricMgr Load(DateIntervalType dateInterval, DateSpanOption dateSpanType) { switch (this.perspective) { case "0": // overall company targets YTD this.TargetsCtl = new TargetCalcsMgr().CreateNew(this.Company.COMPANY_ID, SessionManager.FYStartDate(), this.ToDate).LoadCurrentMetrics(true, true, DateIntervalType.month); this.ehsCtl = new EHSCalcsCtl().CreateNew(SessionManager.FYStartDate().Month, dateSpanType).LoadMetricHistory(this.PlantArray, this.FromDate.AddYears(this.AddFromYear), this.ToDate, dateInterval, true).SetTargets(this.TargetsCtl); break; case "E": this.TargetsCtl = new TargetCalcsMgr().CreateNew(this.Company.COMPANY_ID, SessionManager.FYStartDate(), this.ToDate).LoadCurrentMetrics(true, true, DateIntervalType.month); this.ehsCtl = new EHSCalcsCtl().CreateNew(SessionManager.FYStartDate().Month, dateSpanType).LoadMetricHistory(this.PlantArray, this.FromDate.AddYears(this.AddFromYear), this.ToDate, dateInterval, true).SetTargets(this.TargetsCtl); break; case "HS": //this.TargetsCtl.LoadCurrentMetrics(true, true, DateIntervalType.year); this.ehsCtl = new EHSCalcsCtl().CreateNew(SessionManager.FYStartDate().Month, dateSpanType).LoadMetricHistory(this.PlantArray, this.FromDate.AddYears(this.AddFromYear), this.ToDate, dateInterval, true).LoadIncidentHistory(this.PlantArray, this.FromDate.AddYears(this.AddFromYear), this.ToDate, dateInterval).SetTargets(this.TargetsCtl); break; case "I": this.ehsCtl = new EHSCalcsCtl().CreateNew(SessionManager.FYStartDate().Month, dateSpanType).LoadMetricInputs(this.FromDate, this.ToDate, this.PlantArray); break; case "IR": this.ehsCtl = new EHSCalcsCtl().CreateNew(SessionManager.FYStartDate().Month, dateSpanType).LoadMetricInputs(this.FromDate, this.ToDate, this.PlantArray, "IR"); break; case "QS": case "CST": case "RCV": this.TargetsCtl.LoadCurrentMetrics(true, true, DateIntervalType.year); this.qsCtl = new QSCalcsCtl().CreateNew().LoadIncidentHistory(this.PlantArray, this.FromDate.AddYears(this.AddFromYear), this.ToDate, this.perspective, dateInterval).SetTargets(this.TargetsCtl); break; default: break; } return(this); }
public DateInterval(DateTimeOffset dateTimeOffsetNow, DateIntervalType dateIntervalType) { this.dateTimeOffsetNow = dateTimeOffsetNow; DateIntervalType = dateIntervalType; var quarterMonths = dateTimeOffsetNow.Month % 3; switch (DateIntervalType) { case DateIntervalType.Undefined: { dateFrom = dateTo = null; break; } case DateIntervalType.Today: { dateFrom = dateTo = dateTimeOffsetNow; break; } case DateIntervalType.Yesterday: { dateFrom = dateTo = dateTimeOffsetNow.AddDays(-1); break; } case DateIntervalType.CurrentWeek: { dateFrom = dateTo = dateTimeOffsetNow; if (dateTimeOffsetNow.DayOfWeek == DayOfWeek.Sunday) { dateFrom = dateFrom.Value.AddDays(-6); } else { dateFrom = dateFrom.Value.AddDays(1 - (int)dateFrom.Value.DayOfWeek); dateTo = dateTo.Value.AddDays(7 - (int)dateTo.Value.DayOfWeek); } break; } case DateIntervalType.LastWeek: { dateFrom = dateTo = dateTimeOffsetNow.AddDays(-7); if (dateTimeOffsetNow.DayOfWeek == DayOfWeek.Sunday) { dateFrom = dateFrom.Value.AddDays(-6); } else { dateFrom = dateFrom.Value.AddDays(1 - (int)dateFrom.Value.DayOfWeek); dateTo = dateTo.Value.AddDays(7 - (int)dateTo.Value.DayOfWeek); } break; } case DateIntervalType.CurrentMonth: { dateFrom = dateTo = dateTimeOffsetNow; dateFrom = new DateTimeOffset( dateFrom.Value.Year, dateFrom.Value.Month, 1, dateFrom.Value.Hour, dateFrom.Value.Minute, dateFrom.Value.Second, dateFrom.Value.Millisecond, dateTimeOffsetNow.Offset); dateTo = new DateTimeOffset( dateTo.Value.Year, dateTo.Value.Month, 1, dateTo.Value.Hour, dateTo.Value.Minute, dateTo.Value.Second, dateTo.Value.Millisecond, dateTimeOffsetNow.Offset); dateTo = dateTo.Value.AddMonths(1).AddDays(-1); break; } case DateIntervalType.LastMonth: { dateFrom = dateTo = dateTimeOffsetNow.AddMonths(-1); dateFrom = new DateTimeOffset( dateFrom.Value.Year, dateFrom.Value.Month, 1, dateFrom.Value.Hour, dateFrom.Value.Minute, dateFrom.Value.Second, dateFrom.Value.Millisecond, dateTimeOffsetNow.Offset); dateTo = new DateTimeOffset( dateTo.Value.Year, dateTo.Value.Month, 1, dateTo.Value.Hour, dateTo.Value.Minute, dateTo.Value.Second, dateTo.Value.Millisecond, dateTimeOffsetNow.Offset); dateTo = dateTo.Value.AddMonths(1).AddDays(-1); break; } case DateIntervalType.CurrentQuarter: { dateFrom = dateTo = dateTimeOffsetNow; if (quarterMonths == 0) { dateFrom = dateFrom.Value.AddMonths(-2); } else { dateFrom = dateFrom.Value.AddMonths(1 - quarterMonths); dateTo = dateTo.Value.AddMonths(3 - quarterMonths); } dateFrom = new DateTimeOffset( dateFrom.Value.Year, dateFrom.Value.Month, 1, dateFrom.Value.Hour, dateFrom.Value.Minute, dateFrom.Value.Second, dateFrom.Value.Millisecond, dateTimeOffsetNow.Offset); dateTo = new DateTimeOffset( dateTo.Value.Year, dateTo.Value.Month, 1, dateTo.Value.Hour, dateTo.Value.Minute, dateTo.Value.Second, dateTo.Value.Millisecond, dateTimeOffsetNow.Offset); dateTo = dateTo.Value.AddMonths(1).AddDays(-1); break; } case DateIntervalType.LastQuarter: { dateFrom = dateTo = dateTimeOffsetNow.AddMonths(-3); if (quarterMonths == 0) { dateFrom = dateFrom.Value.AddMonths(-2); } else { dateFrom = dateFrom.Value.AddMonths(1 - quarterMonths); dateTo = dateTo.Value.AddMonths(3 - quarterMonths); } dateFrom = new DateTimeOffset( dateFrom.Value.Year, dateFrom.Value.Month, 1, dateFrom.Value.Hour, dateFrom.Value.Minute, dateFrom.Value.Second, dateFrom.Value.Millisecond, dateTimeOffsetNow.Offset); dateTo = new DateTimeOffset( dateTo.Value.Year, dateTo.Value.Month, 1, dateTo.Value.Hour, dateTo.Value.Minute, dateTo.Value.Second, dateTo.Value.Millisecond, dateTimeOffsetNow.Offset); dateTo = dateTo.Value.AddMonths(1).AddDays(-1); break; } case DateIntervalType.CurrentYear: { dateFrom = dateTo = dateTimeOffsetNow; dateFrom = new DateTimeOffset( dateFrom.Value.Year, 1, 1, dateFrom.Value.Hour, dateFrom.Value.Minute, dateFrom.Value.Second, dateFrom.Value.Millisecond, dateTimeOffsetNow.Offset); dateTo = new DateTimeOffset( dateTo.Value.Year, 12, 31, dateTo.Value.Hour, dateTo.Value.Minute, dateTo.Value.Second, dateTo.Value.Millisecond, dateTimeOffsetNow.Offset); break; } case DateIntervalType.LastYear: { dateFrom = dateTo = dateTimeOffsetNow.AddYears(-1); dateFrom = new DateTimeOffset( dateFrom.Value.Year, 1, 1, dateFrom.Value.Hour, dateFrom.Value.Minute, dateFrom.Value.Second, dateFrom.Value.Millisecond, dateTimeOffsetNow.Offset); dateTo = new DateTimeOffset( dateTo.Value.Year, 12, 31, dateTo.Value.Hour, dateTo.Value.Minute, dateTo.Value.Second, dateTo.Value.Millisecond, dateTimeOffsetNow.Offset); break; } } }
public static long DateDiff(DateIntervalType intervalType,DateTime startDate, DateTime endDate) { return DateDiff(intervalType, startDate, endDate, DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek); }
public ScheduleRunAttribute(DateIntervalType intervalType, int intervalValue) { this.IntervalType = intervalType; this.IntervalValue = intervalValue; }
public TargetCalcsMgr LoadCurrentMetrics(bool periodYearOnly, bool companyOverallOnly, DateIntervalType dateIntervalType) { this.DateInterval = dateIntervalType; try { decimal[] targetArray = this.TargetList.Select(l => l.TARGET_ID).ToArray(); List <PERSPECTIVE_TARGET_CALC> tcList; if (dateIntervalType == DateIntervalType.month) { tcList = (from c in this.Entities.PERSPECTIVE_TARGET_CALC where (targetArray.Contains(c.TARGET_ID) && c.PERIOD_YEAR == this.ToDate.Year && c.PERIOD_MONTH == this.ToDate.Month) select c).OrderByDescending(l => l.TARGET_ID).ToList(); } else if (dateIntervalType == DateIntervalType.year) { tcList = (from c in this.Entities.PERSPECTIVE_TARGET_CALC where (targetArray.Contains(c.TARGET_ID) && EntityFunctions.CreateDateTime(c.PERIOD_YEAR, c.PERIOD_MONTH, 1, 0, 0, 0) >= this.FromDate && EntityFunctions.CreateDateTime(c.PERIOD_YEAR, c.PERIOD_MONTH, 1, 0, 0, 0) <= this.ToDate) select c).OrderByDescending(c => EntityFunctions.CreateDateTime(c.PERIOD_YEAR, c.PERIOD_MONTH, 1, 0, 0, 0)).ThenBy(l => l.TARGET_ID).ToList(); } else { tcList = (from c in this.Entities.PERSPECTIVE_TARGET_CALC where (targetArray.Contains(c.TARGET_ID)) select c).OrderByDescending(c => EntityFunctions.CreateDateTime(c.PERIOD_YEAR, c.PERIOD_MONTH, 1, 0, 0, 0)).ThenBy(l => l.TARGET_ID).ToList(); } if (tcList != null) { foreach (PERSPECTIVE_TARGET_CALC tc in tcList) { this.TargetList.Where(t => t.TARGET_ID == tc.TARGET_ID).FirstOrDefault().PERSPECTIVE_TARGET_CALC.Add(tc); } } } catch (Exception e) { // SQMLogger.LogException(e); } return(this); }
public ScheduleHost(double interval, DateTime startTime, DateIntervalType intervalType, int intervalValue, ILogService logService, IServiceHandler serviceHandler) : base(interval, startTime, intervalType, intervalValue, logService) { this.serviceHandler = serviceHandler; }
public ScheduleHost(double interval, DateTime startTime, DateIntervalType intervalType, int intervalValue, IServiceHandler serviceHandler, ILogService logService) : base(interval, startTime, intervalType, intervalValue) { this.LogService = logService; this.serviceHandler = serviceHandler; }
public QSCalcsCtl LoadIncidentHistory(decimal[] plantIDS, DateTime fromDate, DateTime toDate, string qsActivity, DateIntervalType dateIntervalType) { this.DateInterval = dateIntervalType; this.RecordList = new List <QualityIncidentData>(); try { this.RecordList = (from i in this.Entities.INCIDENT join o in this.Entities.QI_OCCUR on i.INCIDENT_ID equals o.INCIDENT_ID join t in this.Entities.QI_OCCUR_ITEM on o.QIO_ID equals t.QIO_ID join s in this.Entities.QI_OCCUR_NC on t.QIO_ITEM_ID equals s.QIO_ITEM_ID into s_t join p in this.Entities.PART on o.PART_ID equals p.PART_ID into p_i join l in this.Entities.PLANT on i.DETECT_PLANT_ID equals l.PLANT_ID into l_i where (i.INCIDENT_TYPE == "QI" && (i.INCIDENT_DT >= fromDate && i.INCIDENT_DT <= toDate) && (plantIDS.Contains((decimal)i.DETECT_PLANT_ID) || plantIDS.Contains((decimal)i.RESP_PLANT_ID)) && o.QS_ACTIVITY == qsActivity) from s in s_t.DefaultIfEmpty() from p in p_i.DefaultIfEmpty() from l in l_i.DefaultIfEmpty() join nc in this.Entities.NONCONFORMANCE on s.NONCONF_ID equals nc.NONCONF_ID into nc_s from nc in nc_s.DefaultIfEmpty() orderby(i.INCIDENT_DT) select new QualityIncidentData { Incident = i, QIIssue = o, QIItem = t, QISample = s, Part = p, Plant = l, Nonconform = nc }).ToList(); } catch (Exception ex) { // SQMLogger.LogException(ex); } return(this); }
public SampleServiceRunner(double interval, DateTime startTime, DateIntervalType intervalType, int intervalValue, ILogService logService) : base(interval, startTime, intervalType, intervalValue, logService) { }
public DateInterval(DateIntervalType dateIntervalType) : this(DateTimeOffset.Now, dateIntervalType) { }
public DateInterval(DateIntervalType type, int value) { Type = type; Value = value; }
/// <summary> /// 构造函数 /// </summary> /// <param name="interval">间隔毫秒数(默认为1000毫秒)(此属性作为检查是否到时间点用途)</param> /// <param name="startTime">服务运行开始时间</param> /// <param name="intervalType">时间间隔类型:year,month,week,day,hour,minute</param> /// <param name="intervalValue">间隔值(正整数)</param> protected ScheduleRunner(double interval, DateTime startTime, DateIntervalType intervalType, int intervalValue) : base(interval) { this.StartTime = startTime; this.IntervalType = intervalType; this.IntervalValue = intervalValue; }
public static Expression DateInterval(DateIntervalType type, int value) { return new DateInterval(type, value); }