/// <summary> /// 放入缓存 /// </summary> /// <param name="deviceYearData"></param> public void Cache(CollectorMonthDayData collectorMonthDayData) { string cacheKey = CacheKeyUtil.buildCollectorEnergyMonthCountKey(collectorMonthDayData.collectorID, collectorMonthDayData.year, collectorMonthDayData.month); if (!persistentListKey.Contains(cacheKey)) persistentListKey.Add(cacheKey); //一个月3天后过期 MemcachedClientSatat.getInstance().Set(cacheKey, collectorMonthDayData, DateTime.Now.AddMonths(1).AddDays(3)); }
/// <summary> /// 取得采集器的某个年度和月度的对象 /// </summary> /// <param name="year"></param> /// <param name="collectorID"></param> /// <param name="month"></param> /// <returns></returns> public CollectorMonthDayData GetCollectorMonthDayData(int year, int collectorID, int month) { string cacheKey = CacheKeyUtil.buildCollectorEnergyMonthCountKey(collectorID, year, month); object obj = MemcachedClientSatat.getInstance().Get(cacheKey); CollectorMonthDayData deviceMonthDayData; if (obj != null && !string.IsNullOrEmpty(obj.ToString()))//存在即修改 { deviceMonthDayData = (CollectorMonthDayData)obj; } else { //从数据库中取得 deviceMonthDayData = _unitMonthDataDao.GetCollectorMonthDayData(year, collectorID, month); if (deviceMonthDayData == null)//构造一个新实例 deviceMonthDayData = new CollectorMonthDayData() { collectorID = collectorID, year = year, month = month }; deviceMonthDayData.localAcceptTime = DateTime.Now; deviceMonthDayData.year = year; MemcachedClientSatat.getInstance().Set(cacheKey, deviceMonthDayData); } return deviceMonthDayData; }
/// <summary> /// 将各个月度数据付给map /// </summary> /// <param name="monthDataMap"></param> /// <param name="unitYearData"></param> private void putMonthDayMap(Hashtable monthDataMap, CollectorMonthDayData unitMonthData) { int month = unitMonthData.month; int year = unitMonthData.year; //使用反射获得对象的号到最后一天的属性值 int days = CalenderUtil.getMonthDays(year, month); for (int i = 1; i <= days; i++) { string key = year + TableUtil.convertIntToMnthStr(month)+TableUtil.convertIntToMnthStr(i); System.Object obj = monthDataMap[key]; if (obj == null) { obj = 0; } object curValue = unitMonthData.GetType().GetProperty("d_" + i).GetValue(unitMonthData, null); if(curValue == null)continue; float value = StringUtil.stringtoFloat(curValue.ToString()); monthDataMap[key] = StringUtil.stringtoFloat(obj.ToString()) + value; } }
/// <summary> /// 获取电站月数据 /// 需要传递一个Year 年份 /// plantId 电站编号 /// month 月份 /// </summary> /// <param name="data"></param> /// <returns></returns> public CollectorMonthDayData Get(CollectorMonthDayData data) { return _unitMonthDataDao.Get(data); }