public BasicResponse <List <string> > GetAllPowerBoxAddress(GetAllPowerBoxAddressByMacRequest request)
        {
            var req = new NetworkModuleCacheGetByConditonRequest
            {
                Predicate = a => a.MAC == request.Mac
            };
            var res = _NetworkModuleCacheService.GetNetworkModuleCache(req);
            var ret = new BasicResponse <List <string> >()
            {
                Data = new List <string>()
            };

            if (res.Data.Count != 0)
            {
                if (res.Data[0].BatteryItems != null)
                {
                    var retData = new List <string>();
                    foreach (var item in res.Data[0].BatteryItems)
                    {
                        retData.Add(item.BatteryAddress);
                    }
                    ret.Data = retData;
                }
            }
            return(ret);
        }
        public BasicResponse <BatteryItem> GetSwitchBatteryInfo(GetSwitchBatteryInfoRequest request)
        {
            var req = new NetworkModuleCacheGetByConditonRequest
            {
                Predicate = a => a.MAC.ToString() == request.Mac
            };
            var res = _NetworkModuleCacheService.GetNetworkModuleCache(req);

            if (!res.IsSuccess)
            {
                throw new Exception(res.Message);
            }

            var batteryItems = res.Data[0].BatteryItems;
            var ret          = new BasicResponse <BatteryItem>();

            if (batteryItems != null)
            {
                var battery = from m in res.Data[0].BatteryItems
                              where m.BatteryAddress == request.Address
                              select m;
                ret.Data = battery.FirstOrDefault();
            }
            return(ret);
        }
        public BasicResponse <List <Jc_MacInfo> > GetNetworkModuleCache(NetworkModuleCacheGetByConditonRequest networkModuleCacheRequest)
        {
            var networkModuleCache         = NetworkModuleCache.NetworModuleCahceInstance.Query(networkModuleCacheRequest.Predicate);
            var networkModuleCacheResponse = new BasicResponse <List <Jc_MacInfo> >();

            networkModuleCacheResponse.Data = networkModuleCache;
            return(networkModuleCacheResponse);
        }
        /// <summary>
        /// 通过Mac获取网络模块缓存
        /// </summary>
        /// <param name="networkModuleCacheRequest"></param>
        /// <returns></returns>
        public BasicResponse <List <Jc_MacInfo> > GetNetworkModuleCacheByMac(NetworkModuleGetByMacRequest NetworkModuleRequest)
        {
            BasicResponse <List <Jc_MacInfo> >     Result = new BasicResponse <List <Jc_MacInfo> >();
            NetworkModuleCacheGetByConditonRequest networkModuleCacheRequest = new NetworkModuleCacheGetByConditonRequest();

            networkModuleCacheRequest.Predicate = a => a.MAC == NetworkModuleRequest.Mac && a.Type == 0;
            var result = _NetworkModuleCacheService.GetNetworkModuleCache(networkModuleCacheRequest);

            Result.Data = result.Data;
            return(Result);
        }
        /// <summary>
        /// 获取所有交换机列表
        /// </summary>
        /// <returns></returns>
        public BasicResponse <List <Jc_MacInfo> > GetAllSwitchsCache()
        {
            BasicResponse <List <Jc_MacInfo> >     Result = new BasicResponse <List <Jc_MacInfo> >();
            NetworkModuleCacheGetByConditonRequest networkModuleCacheRequest = new NetworkModuleCacheGetByConditonRequest();

            networkModuleCacheRequest.Predicate = a => a.Upflag == "1";
            var result = _NetworkModuleCacheService.GetNetworkModuleCache(networkModuleCacheRequest);

            Result.Data = result.Data;
            return(Result);
        }
        public BasicResponse <GetSwitchAllPowerBoxInfoResponse> GetSwitchAllPowerBoxInfo(GetSwitchAllPowerBoxInfoRequest request)
        {
            var req = new NetworkModuleCacheGetByConditonRequest
            {
                Predicate = a => a.MAC.ToString() == request.Mac
            };
            var res = _NetworkModuleCacheService.GetNetworkModuleCache(req);

            if (!res.IsSuccess)
            {
                throw new Exception(res.Message);
            }

            var model = res.Data.FirstOrDefault();

            if (model == null)
            {
                var ret = new BasicResponse <GetSwitchAllPowerBoxInfoResponse>
                {
                    Data = new GetSwitchAllPowerBoxInfoResponse()
                    {
                        PowerBoxInfo  = new List <BatteryItem>(),
                        PowerDateTime = new DateTime()
                    }
                };
                return(ret);
            }
            else
            {
                var ret = new BasicResponse <GetSwitchAllPowerBoxInfoResponse>
                {
                    Data = new GetSwitchAllPowerBoxInfoResponse()
                    {
                        PowerBoxInfo  = model.BatteryItems,
                        PowerDateTime = model.PowerDateTime
                    }
                };
                return(ret);
            }
        }
示例#7
0
        private static void HandleThreadFun()
        {
            while (_isRun)
            {
                try
                {
                    #region 计算交换机电源箱信息
                    NetworkModuleCacheGetByConditonRequest networkModuleCacheRequest = new NetworkModuleCacheGetByConditonRequest();
                    networkModuleCacheRequest.Predicate = a => a.Bz4 == "1";
                    List <Jc_MacInfo> macList = networkModuleService.GetNetworkModuleCache(networkModuleCacheRequest).Data;//所有挂接了智能电源箱的设备
                    foreach (Jc_MacInfo mac in macList)
                    {
                        if (mac.State == (short)DeviceDataState.EquipmentDC)//交换机进入直流状态,表示电源箱已处于放电状态
                        {
                            List <PointElectricityInfo> pointElectricityInfo = pointElectricityInfoList.FindAll(a => a.PointId == mac.MAC);
                            if (pointElectricityInfo.Count < 1) //表示第一次放电,则记录放电的开始时间
                            {
                                sendD(16, mac.MAC);             //下发获取电源箱数据命令
                                Thread.Sleep(10000);

                                PointElectricityInfo tempPointElectricityInfo = new PointElectricityInfo();
                                tempPointElectricityInfo.StartTime = DateTime.Now;
                                tempPointElectricityInfo.EndTime   = DateTime.Parse("1900-01-01 00:00:00");
                                if (mac.BatteryItems != null)
                                {
                                    foreach (BatteryItem battery in mac.BatteryItems)
                                    {
                                        tempPointElectricityInfo.Channel          = battery.Channel;
                                        tempPointElectricityInfo.PowerConsumption = battery.PowerPackVOL;
                                        if (pointElectricityInfoList.FindAll(a => a.Channel == battery.Channel && a.PointId == mac.MAC).Count < 1)
                                        {
                                            pointElectricityInfoList.Add(tempPointElectricityInfo);
                                        }
                                    }
                                }
                            }
                            else//表示之前已经添加了第一次放电的时间,判断放电是否达到了5分钟
                            {
                                if (pointElectricityInfo[0].EndTime != DateTime.Parse("1900-01-01 00:00:00"))
                                {
                                    continue;//如果之前已经计算过,则不用重复计算
                                }
                                TimeSpan ts = DateTime.Now - pointElectricityInfo[0].StartTime;
                                if (ts.TotalMinutes >= 5) //到5分钟时,计算当前5分钟消耗的电量,并存储
                                {
                                    sendD(16, mac.MAC);   //下发获取电源箱数据命令
                                    Thread.Sleep(10000);

                                    Dictionary <string, object>    updateItems = new Dictionary <string, object>();
                                    List <BatteryPowerConsumption> batteryPowerConsumptions = new List <BatteryPowerConsumption>();
                                    for (int i = 0; i < mac.BatteryItems.Count; i++)
                                    {
                                        int powerConsumption = pointElectricityInfo[i].PowerConsumption - mac.BatteryItems[i].PowerPackVOL;//得到当前5分钟的电量衰减量
                                        //将5分钟电量衰减参数更新到实时缓存
                                        BatteryPowerConsumption batteryPowerConsumption = new BatteryPowerConsumption();
                                        batteryPowerConsumption.Channel          = pointElectricityInfo[i].Channel;
                                        batteryPowerConsumption.PowerConsumption = powerConsumption;
                                        batteryPowerConsumptions.Add(batteryPowerConsumption);
                                    }
                                    updateItems.Add("BatteryPowerConsumptions", batteryPowerConsumptions);
                                    UpdateNetWorkInfoByProperties(mac.MAC, updateItems);

                                    //更新临时缓存的结束时间,后续不用再重复计算
                                    foreach (PointElectricityInfo temp in pointElectricityInfo)
                                    {
                                        temp.EndTime = DateTime.Now;
                                    }
                                }
                            }
                        }
                        else//交换机状态改变,重新计算
                        {
                            //清除临时缓存,并重新计算
                            foreach (PointElectricityInfo temp in pointElectricityInfoList)
                            {
                                if (temp.PointId == mac.MAC)
                                {
                                    pointElectricityInfoList.Remove(temp);
                                }
                            }
                        }
                    }
                    #endregion

                    #region 计算分站电源箱信息
                    PointDefineCacheGetByConditonRequest pointDefineCacheRequest = new PointDefineCacheGetByConditonRequest();
                    pointDefineCacheRequest.Predicate = a => a.DevPropertyID == 0 && (a.Bz3 & 0x8) == 0x8;
                    List <Jc_DefInfo> stationList = PointDefineCacheService.GetPointDefineCache(pointDefineCacheRequest).Data;
                    foreach (Jc_DefInfo station in stationList)
                    {
                        if (station.DataState == (short)DeviceDataState.EquipmentDC)//分站进入直流状态,表示电源箱已处于放电状态
                        {
                            List <PointElectricityInfo> pointElectricityInfo = pointElectricityInfoList.FindAll(a => a.PointId == station.PointID);
                            if (pointElectricityInfo.Count < 1)   //表示第一次放电,则记录放电的开始时间
                            {
                                sendD(0, station.Fzh.ToString()); //下发获取电源箱命令
                                Thread.Sleep(10000);

                                PointElectricityInfo tempPointElectricityInfo = new PointElectricityInfo();
                                tempPointElectricityInfo.PointId   = station.PointID;
                                tempPointElectricityInfo.StartTime = DateTime.Now;
                                tempPointElectricityInfo.EndTime   = DateTime.Parse("1900-01-01 00:00:00");
                                if (station.BatteryItems != null)
                                {
                                    foreach (BatteryItem battery in station.BatteryItems)
                                    {
                                        tempPointElectricityInfo.Channel          = battery.Channel;
                                        tempPointElectricityInfo.PowerConsumption = battery.PowerPackVOL;
                                        if (pointElectricityInfoList.FindAll(a => a.Channel == battery.Channel && a.PointId == station.PointID).Count < 1)
                                        {
                                            pointElectricityInfoList.Add(tempPointElectricityInfo);
                                        }
                                    }
                                }
                                else
                                {
                                    sendD(0, station.Fzh.ToString());
                                }
                            }
                            else//表示之前已经添加了第一次放电的时间,判断放电是否达到了5分钟
                            {
                                if (pointElectricityInfo[0].EndTime != DateTime.Parse("1900-01-01 00:00:00"))
                                {
                                    continue;//如果之前已经计算过,则不用重复计算
                                }
                                TimeSpan ts = DateTime.Now - pointElectricityInfo[0].StartTime;
                                if (ts.TotalMinutes >= 5)             //到5分钟时,计算当前5分钟消耗的电量,并存储
                                {
                                    sendD(0, station.Fzh.ToString()); //下发获取电源箱命令
                                    Thread.Sleep(10000);

                                    Dictionary <string, object>    updateItems = new Dictionary <string, object>();
                                    List <BatteryPowerConsumption> batteryPowerConsumptions = new List <BatteryPowerConsumption>();
                                    for (int i = 0; i < station.BatteryItems.Count; i++)
                                    {
                                        int powerConsumption = pointElectricityInfo[i].PowerConsumption - station.BatteryItems[i].PowerPackVOL;//得到当前5分钟的电量衰减量
                                        //将5分钟电量衰减参数更新到实时缓存
                                        BatteryPowerConsumption batteryPowerConsumption = new BatteryPowerConsumption();
                                        batteryPowerConsumption.Channel          = pointElectricityInfo[i].Channel;
                                        batteryPowerConsumption.PowerConsumption = powerConsumption;
                                        batteryPowerConsumptions.Add(batteryPowerConsumption);
                                    }
                                    updateItems.Add("BatteryPowerConsumptions", batteryPowerConsumptions);
                                    UpdatePointDefineInfoByProperties(station.PointID, updateItems);

                                    //更新临时缓存的结束时间,后续不用再重复计算
                                    foreach (PointElectricityInfo temp in pointElectricityInfo)
                                    {
                                        temp.EndTime = DateTime.Now;
                                    }
                                }
                            }
                        }
                        else//分站状态改变,重新计算
                        {
                            //清除临时缓存,并重新计算
                            foreach (PointElectricityInfo temp in pointElectricityInfoList)
                            {
                                if (temp.PointId == station.PointID)
                                {
                                    pointElectricityInfoList.Remove(temp);
                                }
                            }
                        }
                    }
                    #endregion
                }
                catch (Exception e)
                {
                    LogHelper.Error(e.ToString());
                }

                Thread.Sleep(5000);
            }
            _isRun = true;
            LogHelper.Info("【ElectricityStatistics】充放电电量统计线程结束成功。");
        }
示例#8
0
        public BasicResponse <List <Jc_MacInfo> > GetNetworkModuleCacheByDynamicCondition(NetworkModuleCacheGetByConditonRequest networkModuleCacheRequest)
        {
            var responseStr = HttpClientHelper.Post(Webapi + "/v1/NetworkModule/GetNetworkModuleCacheByDynamicCondition?token=" + Token, JSONHelper.ToJSONString(networkModuleCacheRequest));

            return(JSONHelper.ParseJSONString <BasicResponse <List <Jc_MacInfo> > >(responseStr));
        }