public List <MonitorDailyeventEntity> GetListForShow() { try { var list = MonitorDailyeventMgr.GetListForShow(ShareUtil.ZoneId); if (list != null) { foreach (var entity in list) { double date = Convert.ToDouble((DateTime.Now.Date - entity.OpenTime.Date).Days); if (date < 0) { date = 0; } entity.OpenTimeTick = ShareUtil.GetTimeTick(entity.OpenTime.AddDays(date)); entity.StartTimeTick = ShareUtil.GetTimeTick(entity.StartTime.AddDays(date)); entity.EndTimeTick = ShareUtil.GetTimeTick(entity.EndTime.AddDays(date)); } } return(list); } catch (Exception ex) { SystemlogMgr.Error("DailyEventThread-GetListForShow", ex); return(null); } }
public void Invoke(DateTime curTime) { if (curTime < _nextInvokeTime) { return; } else if (curTime >= _endTime) { CalNextTime(curTime); return; } if (0 == Interlocked.Exchange(ref _syncInvoke, 1)) { try { DateTime curDate = curTime.Date; var openTime = DailyEventThread.CalTime(curDate, _config.OpenHour, _config.OpenMinute); var startTime = DailyEventThread.CalTime(curDate, _config.StartHour, _config.StartMinute); var endTime = DailyEventThread.CalTime(curDate, _config.EndHour, _config.EndMinute); _dailyeventEntity.OpenTime = openTime; _dailyeventEntity.StartTime = startTime; _dailyeventEntity.EndTime = endTime; _dailyeventEntity.RecordDate = curDate; try { _startDelegate(startTime, endTime); } catch (Exception ex) { SystemlogMgr.Error("Dailyevent info Invoke inner", ex); } MonitorDailyeventMgr.Save(_dailyeventEntity.ZoneId, _dailyeventEntity.EventType, _dailyeventEntity.OpenTime, _dailyeventEntity.StartTime, _dailyeventEntity.EndTime, _dailyeventEntity.RecordDate); CalNextTime(curTime); } catch (Exception ex) { SystemlogMgr.Error("Dailyevent info Invoke", ex); } finally { Interlocked.Exchange(ref _syncInvoke, 0); } } }
public bool RegisterEvent(EnumDailyevent eventEnum, DailyeventStartDelegate startDelegate) { var eventType = (int)eventEnum; if (_dailyeventDic.ContainsKey(eventType)) { return(true); } var config = CacheFactory.ActivityCache.GetDailyevent(eventType); if (config == null) { SystemlogMgr.Error("Dailyevent register", "can't find dailyevent config,id:" + eventType); return(false); } DateTime curDate = DateTime.Today; _rwl.AcquireWriterLock(Timeout.Infinite); try { var dailyEvent = MonitorDailyeventMgr.GetByZoneEvent(ShareUtil.ZoneId, eventType); if (dailyEvent == null) { var lastDate = curDate.AddDays(-1); dailyEvent = new MonitorDailyeventEntity(); dailyEvent.EventType = eventType; dailyEvent.ZoneId = ShareUtil.ZoneId; dailyEvent.OpenTime = CalTime(lastDate, config.OpenHour, config.OpenMinute); dailyEvent.StartTime = CalTime(lastDate, config.StartHour, config.StartMinute); dailyEvent.EndTime = CalTime(lastDate, config.EndHour, config.EndMinute); dailyEvent.RecordDate = lastDate; dailyEvent.NextInvokeTime = dailyEvent.OpenTime.AddDays(1); dailyEvent.Status = 0; dailyEvent.UpdateTime = DateTime.Now; MonitorDailyeventMgr.Insert(dailyEvent); } _dailyeventDic.Add(eventType, new DailyEventInfo(dailyEvent, config, startDelegate)); LogHelper.Insert(eventEnum.ToString() + " register success.", LogType.Info); return(true); } finally { _rwl.ReleaseWriterLock(); } }