/// <summary> /// 将各个月度数据付给map /// </summary> /// <param name="monthDataMap"></param> /// <param name="deviceMonthData"></param> /// <param name="rate">每个设备的rate可能不一样,所以要单独计算</param> private void putMonthDayMap(Hashtable monthDataMap, DeviceMonthDayData deviceMonthData,float rate) { int month = deviceMonthData.month; int year = deviceMonthData.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]; object tmpvalue = deviceMonthData.GetType().GetProperty("d_" + i).GetValue(deviceMonthData, null); float value = tmpvalue == null ? 0 : StringUtil.stringtoFloat(tmpvalue.ToString()); if (obj != null || tmpvalue != null) monthDataMap[key] = (obj == null ? 0 : StringUtil.stringtoFloat(obj.ToString())) + value * rate ; } }
/// <summary> /// 获取电站月数据 /// 需要传递一个Year 年份 /// plantId 电站编号 /// month 月份 /// </summary> /// <param name="data"></param> /// <returns></returns> public DeviceMonthDayData Get(DeviceMonthDayData data) { return _DeviceMonthDataDao.Get(data); }
/// <summary> /// 根据年度,月份,和设备id取得相应的月天发电量统计信息 /// 经过缓存处理 /// </summary> /// <param name="year"></param> /// <param name="deviceID"></param> /// <param name="monitorCode"></param> /// <param name="month"></param> /// <returns></returns> public DeviceMonthDayData GetDeviceMonthDayData(int year, int deviceID, int month) { string cacheKey = CacheKeyUtil.buildDeviceEnergyMonthCountKey(deviceID, year, month); object obj = MemcachedClientSatat.getInstance().Get(cacheKey); DeviceMonthDayData deviceMonthDayData; if (obj == null) {//从数据库中取得 deviceMonthDayData = _DeviceMonthDataDao.GetDeviceMonthDayData(deviceID, year, month); if (deviceMonthDayData == null)//构造一个新实例 deviceMonthDayData = new DeviceMonthDayData() { month = month, year = year, deviceID = deviceID }; deviceMonthDayData.localAcceptTime = DateTime.Now; deviceMonthDayData.year = year; MemcachedClientSatat.getInstance().Set(cacheKey, deviceMonthDayData); } else { deviceMonthDayData = (DeviceMonthDayData)obj; } return deviceMonthDayData; }
/// <summary> /// 放入缓存 /// </summary> /// <param name="deviceMonthDayData"></param> public void Cache(DeviceMonthDayData deviceMonthDayData) { string cacheKey = CacheKeyUtil.buildDeviceEnergyMonthCountKey(deviceMonthDayData.deviceID, deviceMonthDayData.year, deviceMonthDayData.month); if (!persistentListKey.Contains(cacheKey)) persistentListKey.Add(cacheKey); //一个月3天后过期 MemcachedClientSatat.getInstance().Set(cacheKey, deviceMonthDayData, DateTime.Now.AddMonths(1).AddDays(3)); }