/// <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));
        }