/// <summary> /// 每一批次的最后处理 /// </summary> private void lastHandle() { if (DateTime.Now < lastCacheTime.AddMinutes(cache_interval)) { return; } Console.WriteLine("开始缓存数据到Memcached"); DateTime curdt = DateTime.Now; DateTime totaldt = DateTime.Now; //将内存中得数据放入缓存 CacheHandler.CacheData(); //最后批处理采集器最大值 try { DeviceDataCountService.GetInstance().CacheCollectorCount(collectorDataCounts); //电站统计,必须保证所有采集器都在,即每次都统计完整的电站单元,所以不能清空。 collectorDataCounts.Clear(); } catch (Exception ddccache) { LogUtil.error("CacheCollectorCount异常:" + ddccache.Message); } //最后处理发电量统计 try { CacheHandler.CacheCountData(deviceEnergyMap, collectorEnergyMap); } catch (Exception ddccache) { LogUtil.error("CacheCollectorCount异常:" + ddccache.Message); } LogUtil.writeline("缓存到memcache处理用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds) + "秒,统计:待处理数量" + AnalyzeCount.curWaittotal + ",总共处理:" + AnalyzeCount.curtotal + ",成功:" + AnalyzeCount.curSuccessNum + ",失败:" + AnalyzeCount.curFailNum + ",最近数据发送时间:" + AnalyzeCount.lasttime.ToString("yyyy-MM-dd HH:mm:ss")); lastCacheTime = DateTime.Now; }
/// <summary> /// 每一批次的最后处理 /// </summary> private void lastHandle() { Console.WriteLine("开始缓存数据到Memcached"); DateTime curdt = DateTime.Now; DateTime totaldt = DateTime.Now; //将内存中得数据放入缓存 CacheHandler.CacheData(); //最后批处理采集器最大值 try { IList <DeviceDataCount> tmpList = collectorDataCounts.ToList(); collectorDataCounts.Clear(); DeviceDataCountService.GetInstance().CacheCollectorCount(tmpList); } catch (Exception ddccache) { LogUtil.error("CacheCollectorCount异常:" + ddccache.Message); } //最后处理发电量统计 try { CacheHandler.CacheCountData(deviceEnergyMap, collectorEnergyMap); } catch (Exception ddccache) { LogUtil.error("CacheCollectorCount异常:" + ddccache.Message); } LogUtil.writeline("缓存到memcache处理用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds) + "秒,统计:待处理数量" + AnalyzeCount.curWaittotal + ",总共处理:" + AnalyzeCount.curtotal + ",成功:" + AnalyzeCount.curSuccessNum + ",失败:" + AnalyzeCount.curFailNum + ",最近数据发送时间:" + AnalyzeCount.lasttime.ToString("yyyy-MM-dd HH:mm:ss")); }
/// <summary> /// 加载设备日功率统计数据 /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult PowerCount(int id, string startYYYYMMDDHH, string endYYYYMMDDHH) { int year = int.Parse(startYYYYMMDDHH.Substring(0, 4)); int month = int.Parse(startYYYYMMDDHH.Substring(4, 2)); int day1 = int.Parse(startYYYYMMDDHH.Substring(6, 2)); int day2 = int.Parse(endYYYYMMDDHH.Substring(6, 2)); DeviceDataCount ddc1 = new DeviceDataCount() { deviceId = id, deviceTable = TableUtil.DEVICE, monitorCode = MonitorType.MIC_INVERTER_TOTALYGPOWER, year = year, day = day1, month = month }; DeviceDataCount ddc2 = new DeviceDataCount() { deviceId = id, deviceTable = TableUtil.DEVICE, monitorCode = MonitorType.MIC_INVERTER_TOTALYGPOWER, year = year, day = day2, month = month }; DeviceDataCount dayddc1 = DeviceDataCountService.GetInstance().Get(ddc1); DeviceDataCount dayddc2 = DeviceDataCountService.GetInstance().Get(ddc2); DeviceDataCount ddc = ddc1; DeviceDataCount dayddc = dayddc1; if (dayddc1 != null && dayddc2 != null) { //取最大一天的 if (dayddc1.maxValue >= dayddc2.maxValue) { ddc = ddc1; dayddc = dayddc1; } else { ddc = ddc2; dayddc = dayddc2; } } else if (dayddc1 != null && dayddc2 == null) { ddc = ddc1; dayddc = dayddc1; } else if (dayddc1 == null && dayddc2 != null) { ddc = ddc2; dayddc = dayddc2; } DeviceDataCount monthddc = DeviceDataCountService.GetInstance().GetMonthMax(ddc); DeviceDataCount yearddc = DeviceDataCountService.GetInstance().GetYearMax(ddc); ViewData["dayddc"] = dayddc; ViewData["monthddc"] = monthddc; ViewData["yearddc"] = yearddc; return(View()); }
/// <summary> /// 加载汇流箱设备总电流最大值统计数据 /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult CurrentCount(int id, string YYYYMMDDHH) { int year = int.Parse(YYYYMMDDHH.Substring(0, 4)); int month = int.Parse(YYYYMMDDHH.Substring(4, 2)); int day = int.Parse(YYYYMMDDHH.Substring(6, 2)); DeviceDataCount ddc = new DeviceDataCount() { deviceId = id, deviceTable = TableUtil.DEVICE, monitorCode = MonitorType.MIC_BUSBAR_TOTALCURRENT, year = year, day = day, month = month }; DeviceDataCount dayddc = DeviceDataCountService.GetInstance().Get(ddc); DeviceDataCount monthddc = DeviceDataCountService.GetInstance().GetMonthMax(ddc); DeviceDataCount yearddc = DeviceDataCountService.GetInstance().GetYearMax(ddc); ViewData["dayddc"] = dayddc; ViewData["monthddc"] = monthddc; ViewData["yearddc"] = yearddc; return(View()); }
/// <summary> /// 将数据放入缓存 /// </summary> /// <param name="tcpmessage"></param> public static void CacheData() { try { DateTime curdt = DateTime.Now; //将采集器天数据批量加入缓存 CollectorDayDataService.GetInstance().batchToCache(BaseMessage.collectordayDataMap); LogUtil.writeline("memcached collectordayDataMap用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds)); } catch (Exception e) { LogUtil.error("batch Cache day data error:" + e.Message); } try { DateTime curdt = DateTime.Now; //DeviceDayDataService.GetInstance().batchToCache(BaseMessage.devicedayDataMapList); ////将设备天数据批量放入缓存 DeviceDayDataCacheHandler ddch = null; for (int i = 0; i < 50; i++) { if (cacheDayOjectMap.ContainsKey(i)) { ddch = cacheDayOjectMap[i]; } else { ddch = new DeviceDayDataCacheHandler(i); cacheDayOjectMap[i] = ddch; } Thread m_thread = new Thread(new ThreadStart(ddch.batchToCacheList)); m_thread.Name = "memcache Handel Thread-" + i; m_thread.Start(); } int times = 0; bool iswork = isWork(); //如果线程都在工作并且持续时间一分钟之内继续循环,否则跳出循环,进行以后动作,add by qhb in 20120927 for 解析其中有个现场死了,整个程序 //就停在这里了。 while (iswork && times < 60) { times++; iswork = isWork(); Thread.Sleep(1000); } LogUtil.writeline("memcached devicedayDataMap用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds)); } catch (Exception e) { LogUtil.error("batch Cache device day data error:" + e.Message); } try { DateTime curdt = DateTime.Now; //缓存采集器实时数据 CollectorRunDataService.GetInstance().batchCache(BaseMessage.collectorRunDataMap.Values); LogUtil.writeline("memcached collectorRunDataMap用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds)); } catch (Exception e) { LogUtil.error("batch Cache run data error:" + e.Message); } try { DateTime curdt = DateTime.Now; //批量保存设备实时数据到缓存 DeviceRunDataService.GetInstance().BatchCache(BaseMessage.deviceRunDataMap.Values); LogUtil.writeline("memcached deviceRunDataMap用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds)); } catch (Exception e) { LogUtil.error("batch Cache device run data error:" + e.Message); } try { FaultService.GetInstance().batchSave(BaseMessage.faultList); BaseMessage.faultList.Clear(); } catch (Exception e) { LogUtil.info("batch Cache fualt error:" + e.Message); } try { DateTime curdt = DateTime.Now; //将设备最大值统计数据放入缓存 DeviceDataCountService.GetInstance().batchCache(BaseMessage.deviceDataCounts); BaseMessage.deviceDataCounts.Clear(); LogUtil.writeline("memcached deviceDataCounts用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds)); } catch (Exception e) { LogUtil.error("save max value error:" + e.Message); } //将本地内存数据放入缓存后,就要清理本地内存,否有内存溢出问题 //clearDayDataMap(); //每次缓存后 同时将同步到memcahced if (syndata != null && syndata.Equals("true")) { SynDataService.GetInstance().synRunData(); } }
public static void peristentData() { Console.WriteLine("开始持久化"); //持久化设备天数据 try { DeviceDayDataService.GetInstance().batchSave(BaseMessage.devicedayDataMapList); } catch (Exception ee) { LogUtil.error("持久化设备天数据异常:" + ee.Message); } //持久化采集器天数据 try { CollectorDayDataService.GetInstance().batchSave(BaseMessage.collectordayDataMap); } catch (Exception ee) { LogUtil.error("持久化采集器天数据异常:" + ee.Message); } //持久化设备实时数据 try{ DeviceRunDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化设备实时数据数据异常:" + ee.Message); } //持久化采集器实时数据 try { LogUtil.writeline("start 持久化采集器实时数据"); CollectorRunDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化采集器实时数据异常:" + ee.Message); } //持久化最大值统计 try{ DeviceDataCountService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化最大值统计异常:" + ee.Message); } //持久化设备月天数据 try{ DeviceMonthDayDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化设备月天数据异常:" + ee.Message); } //持久化采集器月天数据 try{ CollectorMonthDayDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化采集器月天数据异常:" + ee.Message); } //持久化设备年月数据 try{ DeviceYearMonthDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化设备年月数据异常:" + ee.Message); //DeviceYearMonthDataService.GetInstance().batchSave(); } //持久化采集器年月数据 try{ CollectorYearMonthDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化采集器年月数据异常:" + ee.Message); } //持久化设备总体数据 try{ DeviceYearDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化采集器年月数据异常:" + ee.Message); } //持久化采集器总体数据 try { CollectorYearDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化采集器总体数据异常:" + ee.Message); } //add by qhb in 20120415 for 2.0协议持久化电站信息,持久化后不删除, try { PlantService.GetInstance().batchSave(BaseMessage.plantInfoMap); } catch (Exception ee) { LogUtil.error("持久化电站信息数据异常:" + ee.Message); } //add by qhb in 20120715 for 2.0协议持久化设备信息,持久化后不删除, try { DeviceService.GetInstance().batchSave(BaseMessage.deviceInfoMap); } catch (Exception ee) { LogUtil.error("持久化设备信息数据异常:" + ee.Message); } }
public void peristentData() { Console.WriteLine("开始持久化"); //持久化设备天数据 try { DeviceDayDataService.GetInstance().batchSave(BaseMessage.devicedayDataMapList); } catch (Exception ee) { LogUtil.error("持久化设备天数据异常:" + ee.Message); } //持久化采集器天数据 try { CollectorDayDataService.GetInstance().batchSave(BaseMessage.collectordayDataMap); } catch (Exception ee) { LogUtil.error("持久化采集器天数据异常:" + ee.Message); } //持久化设备实时数据 try{ DeviceRunDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化设备实时数据数据异常:" + ee.Message); } //持久化采集器实时数据 try { LogUtil.writeline("start 持久化采集器实时数据"); CollectorRunDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化采集器实时数据异常:" + ee.Message); } //持久化最大值统计 try{ DeviceDataCountService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化最大值统计异常:" + ee.Message); } //持久化设备月天数据 try{ DeviceMonthDayDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化设备月天数据异常:" + ee.Message); } //持久化采集器月天数据 try{ CollectorMonthDayDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化采集器月天数据异常:" + ee.Message); } //持久化设备年月数据 try{ DeviceYearMonthDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化设备年月数据异常:" + ee.Message); DeviceYearMonthDataService.GetInstance().batchSave(); } //持久化采集器年月数据 try{ CollectorYearMonthDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化采集器年月数据异常:" + ee.Message); } //持久化设备总体数据 try{ DeviceYearDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化采集器年月数据异常:" + ee.Message); } //持久化采集器总体数据 try { CollectorYearDataService.GetInstance().batchSave(); } catch (Exception ee) { LogUtil.error("持久化采集器总体数据异常:" + ee.Message); } }
/// <summary> /// 将数据放入缓存 /// </summary> /// <param name="tcpmessage"></param> public static void CacheData() { try { DateTime curdt = DateTime.Now; //将采集器天数据批量加入缓存 CollectorDayDataService.GetInstance().batchToCache(BaseMessage.collectordayDataMap); LogUtil.writeline("memcached collectordayDataMap用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds)); } catch (Exception e) { LogUtil.error("batch Cache day data error:" + e.Message); } try { DateTime curdt = DateTime.Now; //DeviceDayDataService.GetInstance().batchToCache(BaseMessage.devicedayDataMapList); ////将设备天数据批量放入缓存 DeviceDayDataCacheHandler ddch = null; for (int i = 0; i < 50; i++) { if (cacheDayOjectMap.ContainsKey(i)) { ddch = cacheDayOjectMap[i]; } else { ddch = new DeviceDayDataCacheHandler(i); cacheDayOjectMap[i] = ddch; } Thread m_thread = new Thread(new ThreadStart(ddch.batchToCacheList)); m_thread.Name = "memcache Handel Thread-" + i; m_thread.Start(); } while (isWork()) { Thread.Sleep(1000); } LogUtil.writeline("memcached devicedayDataMap用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds)); } catch (Exception e) { LogUtil.error("batch Cache device day data error:" + e.Message); } try { DateTime curdt = DateTime.Now; //缓存采集器实时数据 CollectorRunDataService.GetInstance().batchCache(BaseMessage.collectorRunDataMap.Values); LogUtil.writeline("memcached collectorRunDataMap用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds)); } catch (Exception e) { LogUtil.error("batch Cache run data error:" + e.Message); } try { DateTime curdt = DateTime.Now; //批量保存设备实时数据到缓存 DeviceRunDataService.GetInstance().BatchCache(BaseMessage.deviceRunDataMap.Values); LogUtil.writeline("memcached deviceRunDataMap用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds)); } catch (Exception e) { LogUtil.error("batch Cache device run data error:" + e.Message); } try { FaultService.GetInstance().batchSave(BaseMessage.faultList); BaseMessage.faultList.Clear(); } catch (Exception e) { LogUtil.info("batch Cache fualt error:" + e.Message); } try { DateTime curdt = DateTime.Now; //将设备最大值统计数据放入缓存 DeviceDataCountService.GetInstance().batchCache(BaseMessage.deviceDataCounts); BaseMessage.deviceDataCounts.Clear(); LogUtil.writeline("memcached deviceDataCounts用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds)); } catch (Exception e) { LogUtil.error("save max value error:" + e.Message); } clearDayDataMap(); }