Exemple #1
0
        /// <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"));
        }
Exemple #3
0
        /// <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());
        }
Exemple #4
0
        /// <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());
        }
Exemple #5
0
        /// <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);
            }
        }
Exemple #8
0
        /// <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();
        }