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;
		}
Exemple #2
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;
 }
Exemple #5
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 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);
		}
Exemple #9
0
 public ScheduleRunAttribute(DateIntervalType intervalType, int intervalValue)
 {
     this.IntervalType  = intervalType;
     this.IntervalValue = intervalValue;
 }
Exemple #10
0
        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);
        }
Exemple #11
0
 public ScheduleHost(double interval, DateTime startTime, DateIntervalType intervalType, int intervalValue, ILogService logService, IServiceHandler serviceHandler)
     : base(interval, startTime, intervalType, intervalValue, logService)
 {
     this.serviceHandler = serviceHandler;
 }
Exemple #12
0
 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);
        }
Exemple #14
0
 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;
 }
Exemple #17
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>
 protected ScheduleRunner(double interval, DateTime startTime, DateIntervalType intervalType, int intervalValue) : base(interval)
 {
     this.StartTime     = startTime;
     this.IntervalType  = intervalType;
     this.IntervalValue = intervalValue;
 }
Exemple #18
0
 public SampleServiceRunner(double interval, DateTime startTime, DateIntervalType intervalType, int intervalValue, ILogService logService) : base(interval, startTime, intervalType, intervalValue, logService)
 {
 }
Exemple #19
0
 public static Expression DateInterval(DateIntervalType type, int value) {
   return new DateInterval(type, value);
 }