/// <summary>
        /// 更新网络模块定义信息(只更新定义相关字段)
        /// </summary>
        /// <param name="item"></param>
        private void UpdateNetworkModuleCacheByProperty(Jc_MacInfo item)
        {
            Dictionary <string, object> paramater = new Dictionary <string, object>();

            paramater.Add("IP", item.IP);
            paramater.Add("Wzid", item.Wzid);
            paramater.Add("Wz", item.Wz);
            paramater.Add("Istmcs", item.Istmcs);
            paramater.Add("Type", item.Type);
            paramater.Add("Bz1", item.Bz1);
            paramater.Add("Bz2", item.Bz2);
            paramater.Add("Bz3", item.Bz3);
            paramater.Add("Bz4", item.Bz4);
            paramater.Add("Bz5", item.Bz5);
            paramater.Add("Bz6", item.Bz6);
            paramater.Add("Upflag", item.Upflag);

            paramater.Add("IsMemoryData", item.IsMemoryData);//是否内存数据标记

            //修改标记
            paramater.Add("InfoState", item.InfoState);

            NetworkModuleCacheUpdatePropertiesRequest networkModuleCacheUpdatePropertiesRequest = new NetworkModuleCacheUpdatePropertiesRequest();

            networkModuleCacheUpdatePropertiesRequest.Mac         = item.MAC;
            networkModuleCacheUpdatePropertiesRequest.UpdateItems = paramater;
            _NetworkModuleCacheService.UpdateNetworkInfo(networkModuleCacheUpdatePropertiesRequest);
        }
示例#2
0
 private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     try
     {
         Jc_MacInfo temp = new Jc_MacInfo();
         Jc_MacInfo _COM;
         temp.MAC  = this.CcmbSerialPortNum.Text;
         temp.Type = 1;
         temp.Bz1  = CcmbBaudRate.Text;
         temp.Bz2  = CcmbCommPAL.Text;
         temp.Bz3  = CcmbDatabit.Text;
         temp.Bz4  = CcmbCheckbit.Text;
         temp.Bz5  = CcmbStopbit.Text;
         if (string.IsNullOrEmpty(_COMCode))
         {
             temp.ID        = IdHelper.CreateLongId().ToString();
             temp.InfoState = InfoState.AddNew;
             try
             {
                 Model.MACServiceModel.AddMACCache(temp);
             }
             catch (Exception ex)
             {
                 XtraMessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 return;
             }
             OperateLogHelper.InsertOperateLog(11, CONFIGServiceModel.AddMacLogs(temp), "");// 20170111
         }
         else
         {
             _COM = Model.MACServiceModel.QueryMACByCode(_COMCode);
             if (_COM != null)
             {
                 if (_COM != temp)
                 {
                     temp.ID        = _COM.ID;
                     temp.InfoState = InfoState.Modified;
                     try
                     {
                         Model.MACServiceModel.UpdateMACCache(temp);
                     }
                     catch (Exception ex)
                     {
                         XtraMessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                         return;
                     }
                     OperateLogHelper.InsertOperateLog(11, CONFIGServiceModel.UpdateMacLogs(_COM, temp), "");// 20170111
                 }
             }
         }
         this.Close();
     }
     catch (Exception ex)
     {
         LogHelper.Error(ex);
     }
 }
        /// <summary>
        /// 批量添加
        /// </summary>
        /// <param name="NetworkModuleRequest"></param>
        /// <returns></returns>
        public BasicResponse AddNetworkModules(NetworkModulesRequest NetworkModuleRequest)
        {
            BasicResponse     Result = new BasicResponse();
            List <Jc_MacInfo> items  = NetworkModuleRequest.NetworkModulesInfo;
            List <Jc_MacInfo> NetworkModuleCaches = new List <Jc_MacInfo>();
            Jc_MacInfo        olditem             = null;

            NetworkModuleCacheGetAllRequest NetworkModuleCacheRequest = new NetworkModuleCacheGetAllRequest();
            var result = _NetworkModuleCacheService.GetAllNetworkModuleCache(NetworkModuleCacheRequest);

            NetworkModuleCaches = result.Data;

            foreach (Jc_MacInfo item in items)
            {
                olditem = NetworkModuleCaches.Find(a => a.MAC == item.MAC);
                //增加重复判断
                if (olditem != null)
                { //缓存中存在此测点
                    Result.Code    = 1;
                    Result.Message = "当前添加列表中的数据在数据库中已经存在!";
                    return(Result);
                }
            }

            //向网关同步数据
            List <Jc_MacInfo> SendItemList = items;
            var resultSync = SynchronousDataToGateway(SendItemList);

            if (!resultSync)
            {
                Result.Code    = 1;
                Result.Message = "向网关同步数据失败!";
                return(Result);
            }

            TransactionsManager.BeginTransaction(() =>
            {
                foreach (Jc_MacInfo item in items)
                {
                    item.IsMemoryData = false;
                    //保存数据库
                    var _jc_Mac = ObjectConverter.Copy <Jc_MacInfo, Jc_MacModel>(item);
                    //保存数据库不存连接号  20170713
                    _jc_Mac.NetID    = 0;
                    var resultjc_Def = _Repository.AddNetworkModule(_jc_Mac);
                }


                //添加到缓存
                NetworkModuleCacheBatchAddRequest BatchAddNetworkModuleCacheRequest = new NetworkModuleCacheBatchAddRequest();
                BatchAddNetworkModuleCacheRequest.NetworkModuleInfos = items;
                _NetworkModuleCacheService.BacthAddNetworkModuleCache(BatchAddNetworkModuleCacheRequest);
            });

            return(Result);
        }
示例#4
0
        private void StationIPSet_Load(object sender, EventArgs e)
        {
            macTxt.Text = Mac;
            fzhTxt.Text = Fzh;
            Jc_MacInfo mac = MACServiceModel.QueryMACByCode(Mac);

            if (mac != null)
            {
                ipTxt.Text      = mac.IP;
                ymTxt.Text      = mac.SubMask;
                gatewayTxt.Text = mac.GatewayIp;
            }
        }
示例#5
0
        //private void GetBatteryItem(object dic)
        //{
        //    Dictionary<string, object> tempdic = dic as Dictionary<string, object>;
        //    string batteryAddress = tempdic["GetBatteryItem"].ToString();
        //    var node = (TreeNode)tempdic["SelNode"];
        //    if (node == null)
        //    {
        //        return;
        //    }
        //    var gsa = ControlInterfaceFuction.GetSubstationPowerBoxInfo(node.Name);

        //    if (gsa.PowerDateTime > Convert.ToDateTime("1900-01-01"))
        //    {
        //        BatteryItem item = gsa.PowerBoxInfo.FirstOrDefault(a => a.Channel == batteryAddress.ToString());
        //        if (item != null)
        //        {
        //            //Action<object> act = RefStationBatteryInfo;
        //            //BeginInvoke(act, item);
        //            MethodInvoker In = new MethodInvoker(() => RefStationBatteryInfo(item));
        //            if (this.InvokeRequired)
        //            {
        //                this.BeginInvoke(In);
        //            }
        //            //_substationUpdatetime[node.Name] = gsa.PowerDateTime;
        //            //substationUpdatetime.Text = _substationUpdatetime[node.Name].ToString("yyyy-MM-dd HH:mm:ss");
        //        }
        //    }
        //}

        //private void RefStationBatteryInfo(object item)
        //{
        //    var tempCharge = new CuCharge((BatteryItem)item);
        //    CpanelPowerPac.Controls.Clear();
        //    CpanelPowerPac.Controls.Add(tempCharge);
        //    tempCharge.Dock = DockStyle.Fill;

        //    //substationUpdatetime.Text = PowerDateTime.ToString();
        //}

        /// <summary>
        /// 交换机电源箱label点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SwitchLabelClick(object sender, EventArgs e)
        {
            try
            {
                var tv = (Label)sender;
                var bi = (BatteryItem)tv.Tag;
                label3.Text = bi.Channel;

                //加载交换机
                _lisMac = ControlInterfaceFuction.GetAllSwitch();

                Jc_MacInfo mac = _lisMac.Find(a => a.MAC == selectMacNow);

                //查找分站对应的电源箱5分钟统计信息
                BatteryPowerConsumption batteryPowerConsumption = new BatteryPowerConsumption();
                if (mac.BatteryPowerConsumptions != null)
                {
                    batteryPowerConsumption = mac.BatteryPowerConsumptions.Find(a => a.Channel == bi.Channel);
                }

                var tempCharge = new CuCharge(bi, batteryPowerConsumption);
                //panelControl2.Controls.Clear();
                //重写释放控件的方法,直接clear会导致句柄资源一直增加  20180422
                while (panelControl2.Controls.Count > 0)
                {
                    if (panelControl2.Controls[0] != null)
                    {
                        panelControl2.Controls[0].Dispose();
                    }
                }
                panelControl2.Controls.Add(tempCharge);
                tempCharge.Dock = DockStyle.Fill;

                //var node = treeViewSubstation.SelectedNode;
                //Dictionary<string, object> dic = new Dictionary<string, object>();
                //dic.Add("GetBatteryItem", ((Label)sender).Text);
                //dic.Add("SelNode", node);
                //_refStationBattery = new Thread(GetBatteryItemForSwicth);

                //_refStationBattery.Start(dic);
            }
            catch (Exception exc)
            {
                XtraMessageBox.Show(exc.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        /// <summary>
        /// 删除网络模块
        /// </summary>
        /// <param name="NetworkModuleRequest"></param>
        /// <returns></returns>
        public BasicResponse DeleteNetworkModule(NetworkModuleDeleteByMacRequest NetworkModuleRequest)
        {
            BasicResponse Result = new BasicResponse();

            //重复判断
            NetworkModuleCacheGetByKeyRequest networkModuleCacheRequest = new NetworkModuleCacheGetByKeyRequest();

            networkModuleCacheRequest.Mac = NetworkModuleRequest.Mac;
            var        result  = _NetworkModuleCacheService.GetNetworkModuleCacheByKey(networkModuleCacheRequest);
            Jc_MacInfo OldItem = result.Data;

            if (result.Data == null)
            {
                //缓存中存在此测点
                Result.Code    = 1;
                Result.Message = "当前删除的网络模块不存在!";
                return(Result);
            }

            OldItem.InfoState = InfoState.Delete;

            //保存数据库
            if (!OldItem.IsMemoryData)
            {
                //向网关同步数据
                List <Jc_MacInfo> SendItemList = new List <Jc_MacInfo>();
                SendItemList.Add(OldItem);
                var resultSync = SynchronousDataToGateway(SendItemList);
                if (!resultSync)
                {
                    Result.Code    = 1;
                    Result.Message = "向网关同步数据失败!";
                    return(Result);
                }

                _Repository.DeleteNetworkModule(OldItem.ID);
            }

            //更新缓存
            NetworkModuleCacheDeleteRequest DeleteNetworkModuleCacheRequest = new NetworkModuleCacheDeleteRequest();

            DeleteNetworkModuleCacheRequest.NetworkModuleInfo = OldItem;
            _NetworkModuleCacheService.DeleteNetworkModuleCache(DeleteNetworkModuleCacheRequest);

            return(Result);
        }
示例#7
0
        /// <summary>
        /// 加载传入信息
        /// </summary>
        private void LoadBasicInf()
        {
            if (string.IsNullOrEmpty(_COMCode))
            {
                return;
            }
            Jc_MacInfo COM = Model.MACServiceModel.QueryMACByCode(_COMCode);

            if (null == COM)
            {
                return;
            }
            CcmbSerialPortNum.Text = COM.MAC;
            CcmbCommPAL.Text       = COM.Bz2;
            CcmbBaudRate.Text      = COM.Bz1;
            CcmbDatabit.Text       = COM.Bz3;
            CcmbCheckbit.Text      = COM.Bz4;
            CcmbStopbit.Text       = COM.Bz5;
        }
示例#8
0
        public BasicResponse <DataTable> GetDyxMac()
        {
            DataTable     msg  = new DataTable();
            List <string> keys = null;
            Jc_MacInfo    def  = null;

            msg.Columns.Add("mac", typeof(string));
            msg.Columns.Add("wz", typeof(string));
            msg.Columns.Add("fd", typeof(int));
            msg.TableName = "fz";
            try
            {
                //List<Jc_MacInfo> JC_MAC = _CacheMrg.ServerCache.Cache_jc_mac.QueryAllCache();
                var res = _networkModuleService.GetAllNetworkModuleCache();
                if (!res.IsSuccess)
                {
                    throw new Exception(res.Message);
                }
                List <Jc_MacInfo> JC_MAC = res.Data;

                if (JC_MAC.Count > 0)
                {
                    for (int i = 0; i < JC_MAC.Count; i++)
                    {
                        def = JC_MAC[i];
                        if (def.Type == 0 && !string.IsNullOrEmpty(def.Wz) && def.Bz4 == "1")
                        {
                            msg.Rows.Add(def.MAC, def.Wz, 0);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error("获取所有绑定电源箱分站", ex);
            }
            var ret = new BasicResponse <DataTable>
            {
                Data = msg
            };

            return(ret);
        }
示例#9
0
        private static QueryBatteryRealDataRequest GetQueryBatteryRealDataRequest(Jc_MacInfo macInfo)
        {
            QueryBatteryRealDataRequest queryBatteryRealDataRequest = new QueryBatteryRealDataRequest();

            try
            {
                queryBatteryRealDataRequest.DeviceCode     = macInfo.MAC;
                queryBatteryRealDataRequest.BatteryControl = macInfo.BatteryControl;
                queryBatteryRealDataRequest.DevProperty    = ItemDevProperty.Switches;
                queryBatteryRealDataRequest.PowerPercentum = Convert.ToByte(GetSettingByKeyStr("DevicePowerPercentum").StrValue);
            }
            catch (Exception ex)
            {
                queryBatteryRealDataRequest.PowerPercentum = 20;
                LogHelper.Error("配置项【DevicePowerPercentum】值错误!" + ex.Message);
            }
            queryBatteryRealDataRequest.DevProperty    = ItemDevProperty.Switches;
            queryBatteryRealDataRequest.BatteryControl = macInfo.BatteryControl;
            return(queryBatteryRealDataRequest);
        }
        /// <summary>
        /// 搜索网络模块,并更新缓存信息
        /// </summary>
        /// <returns></returns>
        public BasicResponse <List <Jc_MacInfo> > SearchALLNetworkModuleAndAddCache(SearchNetworkModuleRequest request)
        {
            BasicResponse <List <Jc_MacInfo> > Result = new BasicResponse <List <Jc_MacInfo> >();

            //查找现有网络模块
            NetworkModuleCacheGetAllRequest networkModuleCacheRequest = new NetworkModuleCacheGetAllRequest();
            var resultAllNetwork = _NetworkModuleCacheService.GetAllNetworkModuleCache(networkModuleCacheRequest);
            List <Jc_MacInfo> ALLNetworkModule = resultAllNetwork.Data;

            if (request.StationFind != 2)//=2表示全部搜索
            {
                #region 搜索交换机/分站
                Sys.DataCollection.Common.Protocols.SearchNetworkDeviceRequest searchNetworkDeviceRequest = new SearchNetworkDeviceRequest();
                MasProtocol masProtocol = new MasProtocol(SystemType.Security, DirectionType.Down, ProtocolType.SearchNetworkDeviceRequest);
                masProtocol.Protocol    = searchNetworkDeviceRequest;
                masProtocol.StationFind = request.StationFind;

                //调用RPC发送搜索网络模块命令,并接收回传的参数
                var result = RpcService.Send <SearchNetworkDeviceResponse>(masProtocol, RequestType.DeviceUdpRequest);//todo RequestType类型增加3

                List <Sys.DataCollection.Common.Protocols.NetworkDeviceItem> NetworkDeviceItems = null;
                if (result != null)
                {
                    NetworkDeviceItems = result.NetworkDeviceItems;
                }
                if (NetworkDeviceItems == null)
                {
                    Result.Code    = 1;
                    Result.Message = "未搜索到设备!";
                    return(Result);
                }
                //NetworkDeviceItems = result.NetworkDeviceItems;
                foreach (Sys.DataCollection.Common.Protocols.NetworkDeviceItem Network in NetworkDeviceItems)
                {
                    if (ALLNetworkModule.FindAll(a => a.MAC == Network.Mac).Count == 0)//缓存不存在此对象,则添加到缓存中
                    {
                        Jc_MacInfo NetworkModule = new Jc_MacInfo();
                        NetworkModule.ID     = IdHelper.CreateLongId().ToString();
                        NetworkModule.MAC    = Network.Mac; //网络模块MAC
                        NetworkModule.IP     = Network.Ip;  //网络模块IP
                        NetworkModule.Type   = 0;
                        NetworkModule.Istmcs = 0;
                        NetworkModule.Wzid   = "-1";                             // 20170331
                        NetworkModule.Wz     = null;
                        NetworkModule.Bz2    = Network.SwitchMac;                //网络模块所属交换机MAC
                        NetworkModule.Bz3    = Network.AddressNumber.ToString(); //网络模块在交换机中的地址编码

                        NetworkModule.SubMask   = Network.SubMask;
                        NetworkModule.GatewayIp = Network.GatewayIp;

                        if (Network.DeviceType == 3)//表示分站带网络模块
                        {
                            NetworkModule.Bz5              = "1";
                            NetworkModule.Upflag           = "0";
                            NetworkModule.BindStatinNumber = Network.StationAddress;
                        }
                        else
                        {
                            NetworkModule.Bz5    = "6";//默认支持6个分站
                            NetworkModule.Upflag = "1";
                        }
                        NetworkModule.IsMemoryData = true;//搜索的时候把内存数据标记置为true   20170415
                        NetworkModule.InfoState    = InfoState.AddNew;
                        //调用更新到缓存中
                        NetworkModuleCacheAddRequest AddNetworkModuleCacheRequest = new NetworkModuleCacheAddRequest();
                        AddNetworkModuleCacheRequest.NetworkModuleInfo = NetworkModule;
                        _NetworkModuleCacheService.AddNetworkModuleCache(AddNetworkModuleCacheRequest);
                    }
                    else//第一次搜索的时候,可能会获取不到IP,增加处理  20170627
                    {
                        Jc_MacInfo NetworkModule = ALLNetworkModule.Find(a => a.MAC == Network.Mac);
                        NetworkModule.MAC = Network.Mac;                      //网络模块MAC
                        NetworkModule.IP  = Network.Ip;                       //网络模块IP
                        NetworkModule.Bz2 = Network.SwitchMac;                //网络模块所属交换机MAC
                        NetworkModule.Bz3 = Network.AddressNumber.ToString(); //网络模块在交换机中的地址编码

                        NetworkModule.SubMask   = Network.SubMask;
                        NetworkModule.GatewayIp = Network.GatewayIp;

                        if (Network.DeviceType == 3)//表示分站带网络模块
                        {
                            NetworkModule.Bz5              = "1";
                            NetworkModule.Upflag           = "0";
                            NetworkModule.BindStatinNumber = Network.StationAddress;
                        }
                        else
                        {
                            NetworkModule.Bz5    = "6";//默认支持6个分站
                            NetworkModule.Upflag = "1";
                        }

                        //调用更新到缓存中
                        NetworkModuleCacheUpdateRequest updateNetworkModuleCacheRequest = new NetworkModuleCacheUpdateRequest();
                        updateNetworkModuleCacheRequest.NetworkModuleInfo = NetworkModule;
                        _NetworkModuleCacheService.UpdateNetworkModuleCahce(updateNetworkModuleCacheRequest);
                    }
                }
                #endregion
            }
            else
            {
                #region 搜索交换机+分站
                Sys.DataCollection.Common.Protocols.SearchNetworkDeviceRequest searchNetworkDeviceRequest = new SearchNetworkDeviceRequest();
                MasProtocol masProtocol = new MasProtocol(SystemType.Security, DirectionType.Down, ProtocolType.SearchNetworkDeviceRequest);
                masProtocol.Protocol    = searchNetworkDeviceRequest;
                masProtocol.StationFind = 0;
                //调用RPC发送搜索网络模块命令,并接收回传的参数
                var result = RpcService.Send <SearchNetworkDeviceResponse>(masProtocol, RequestType.DeviceUdpRequest);//todo RequestType类型增加3
                List <NetworkDeviceItem> NetworkDeviceItems = new List <NetworkDeviceItem>();
                if (result != null)
                {
                    NetworkDeviceItems = result.NetworkDeviceItems;
                }

                Sys.DataCollection.Common.Protocols.SearchNetworkDeviceRequest searchNetworkDeviceRequest1 = new SearchNetworkDeviceRequest();
                MasProtocol masProtocol1 = new MasProtocol(SystemType.Security, DirectionType.Down, ProtocolType.SearchNetworkDeviceRequest);
                masProtocol1.Protocol    = searchNetworkDeviceRequest1;
                masProtocol1.StationFind = 1;
                //调用RPC发送搜索网络模块命令,并接收回传的参数
                var result1 = RpcService.Send <SearchNetworkDeviceResponse>(masProtocol, RequestType.DeviceUdpRequest);//todo RequestType类型增加3
                if (result1 != null)
                {
                    NetworkDeviceItems.AddRange(result1.NetworkDeviceItems);
                }

                if (NetworkDeviceItems.Count < 1)
                {
                    Result.Code    = 1;
                    Result.Message = "未搜索到设备!";
                    return(Result);
                }
                //NetworkDeviceItems = result.NetworkDeviceItems;
                foreach (Sys.DataCollection.Common.Protocols.NetworkDeviceItem Network in NetworkDeviceItems)
                {
                    if (ALLNetworkModule.FindAll(a => a.MAC == Network.Mac).Count == 0)//缓存不存在此对象,则添加到缓存中
                    {
                        Jc_MacInfo NetworkModule = new Jc_MacInfo();
                        NetworkModule.ID     = IdHelper.CreateLongId().ToString();
                        NetworkModule.MAC    = Network.Mac; //网络模块MAC
                        NetworkModule.IP     = Network.Ip;  //网络模块IP
                        NetworkModule.Type   = 0;
                        NetworkModule.Istmcs = 0;
                        NetworkModule.Wzid   = "-1";                             // 20170331
                        NetworkModule.Wz     = null;
                        NetworkModule.Bz2    = Network.SwitchMac;                //网络模块所属交换机MAC
                        NetworkModule.Bz3    = Network.AddressNumber.ToString(); //网络模块在交换机中的地址编码

                        NetworkModule.SubMask   = Network.SubMask;
                        NetworkModule.GatewayIp = Network.GatewayIp;

                        if (Network.DeviceType == 3)//表示分站带网络模块
                        {
                            NetworkModule.Bz5              = "1";
                            NetworkModule.Upflag           = "0";
                            NetworkModule.BindStatinNumber = Network.StationAddress;
                        }
                        else
                        {
                            NetworkModule.Bz5    = "6";//默认支持6个分站
                            NetworkModule.Upflag = "1";
                        }
                        NetworkModule.IsMemoryData = true;//搜索的时候把内存数据标记置为true   20170415
                        NetworkModule.InfoState    = InfoState.AddNew;
                        //调用更新到缓存中
                        NetworkModuleCacheAddRequest AddNetworkModuleCacheRequest = new NetworkModuleCacheAddRequest();
                        AddNetworkModuleCacheRequest.NetworkModuleInfo = NetworkModule;
                        _NetworkModuleCacheService.AddNetworkModuleCache(AddNetworkModuleCacheRequest);
                    }
                    else//第一次搜索的时候,可能会获取不到IP,增加处理  20170627
                    {
                        Jc_MacInfo NetworkModule = ALLNetworkModule.Find(a => a.MAC == Network.Mac);
                        NetworkModule.MAC = Network.Mac;                      //网络模块MAC
                        NetworkModule.IP  = Network.Ip;                       //网络模块IP
                        NetworkModule.Bz2 = Network.SwitchMac;                //网络模块所属交换机MAC
                        NetworkModule.Bz3 = Network.AddressNumber.ToString(); //网络模块在交换机中的地址编码

                        NetworkModule.SubMask   = Network.SubMask;
                        NetworkModule.GatewayIp = Network.GatewayIp;

                        if (Network.DeviceType == 3)//表示分站带网络模块
                        {
                            NetworkModule.Bz5              = "1";
                            NetworkModule.Upflag           = "0";
                            NetworkModule.BindStatinNumber = Network.StationAddress;
                        }
                        else
                        {
                            NetworkModule.Bz5    = "6";//默认支持6个分站
                            NetworkModule.Upflag = "1";
                        }

                        //调用更新到缓存中
                        NetworkModuleCacheUpdateRequest updateNetworkModuleCacheRequest = new NetworkModuleCacheUpdateRequest();
                        updateNetworkModuleCacheRequest.NetworkModuleInfo = NetworkModule;
                        _NetworkModuleCacheService.UpdateNetworkModuleCahce(updateNetworkModuleCacheRequest);
                    }
                }
                #endregion
            }

            //查找所有缓存包括后面增加的内容
            NetworkModuleCacheGetAllRequest networkModuleNewCacheRequest = new NetworkModuleCacheGetAllRequest();
            var resultAllNetworkNew = _NetworkModuleCacheService.GetAllNetworkModuleCache(networkModuleNewCacheRequest);
            Result.Data = resultAllNetworkNew.Data;

            return(Result);
        }
        /// <summary>
        /// 添加网络模块
        /// </summary>
        /// <param name="NetworkModuleRequest"></param>
        /// <returns></returns>
        public BasicResponse AddNetworkModule(NetworkModuleAddRequest NetworkModuleRequest)
        {
            BasicResponse Result = new BasicResponse();
            Jc_MacInfo    item   = NetworkModuleRequest.NetworkModuleInfo;

            //重复判断
            NetworkModuleCacheGetByKeyRequest networkModuleCacheRequest = new NetworkModuleCacheGetByKeyRequest();

            networkModuleCacheRequest.Mac = item.MAC;
            var        result  = _NetworkModuleCacheService.GetNetworkModuleCacheByKey(networkModuleCacheRequest);
            Jc_MacInfo OldItem = result.Data;

            if (result.Data != null)
            {
                //缓存中存在此测点
                Result.Code    = 1;
                Result.Message = "当前添加的网络模块已存在!";
                return(Result);
            }

            //重置内存状态标记,因为搜索的时候,只保存了内存   20170410
            //if (OldItem != null)
            //{
            //    if (OldItem.IsMemoryData)//如果内存中存在数据,则重置添加、修改标记  20170415
            //    {
            //        if (OldItem.InfoState == InfoState.AddNew)
            //        {
            //            if (item.InfoState == InfoState.Modified)
            //            {
            //                item.InfoState = InfoState.AddNew;
            //            }
            //        }
            //        if (OldItem.InfoState == InfoState.Delete)
            //        {
            //            if (item.InfoState == InfoState.AddNew)
            //            {
            //                item.InfoState = InfoState.Modified;
            //            }
            //        }
            //        item.IsMemoryData = false;//置完标记后,将内存数据变成非内存数据标记  20170415
            //    }
            //}
            item.IsMemoryData = false;//置完标记后,将内存数据变成非内存数据标记  20170415

            //向网关同步数据
            List <Jc_MacInfo> SendItemList = new List <Jc_MacInfo>();

            SendItemList.Add(item);
            var resultSync = SynchronousDataToGateway(SendItemList);

            if (!resultSync)
            {
                Result.Code    = 1;
                Result.Message = "向网关同步数据失败!";
                return(Result);
            }

            //保存数据库
            var _jc_Mac = ObjectConverter.Copy <Jc_MacInfo, Jc_MacModel>(item);

            //保存数据库不存连接号  20170713
            _jc_Mac.NetID = 0;
            var resultjc_Mac = _Repository.AddNetworkModule(_jc_Mac);

            //更新缓存
            NetworkModuleCacheAddRequest AddNetworkModuleCacheRequest = new NetworkModuleCacheAddRequest();

            AddNetworkModuleCacheRequest.NetworkModuleInfo = item;
            _NetworkModuleCacheService.AddNetworkModuleCache(AddNetworkModuleCacheRequest);

            return(Result);
        }
        /// <summary>
        /// 批量更新
        /// </summary>
        /// <param name="NetworkModuleRequest"></param>
        /// <returns></returns>
        public BasicResponse UpdateNetworkModules(NetworkModulesRequest NetworkModuleRequest)
        {
            BasicResponse     Result = new BasicResponse();
            List <Jc_MacInfo> items  = NetworkModuleRequest.NetworkModulesInfo;
            List <Jc_MacInfo> NetworkModuleCaches = new List <Jc_MacInfo>();
            Jc_MacInfo        olditem             = null;

            NetworkModuleCacheGetAllRequest NetworkModuleCacheRequest = new NetworkModuleCacheGetAllRequest();
            var result = _NetworkModuleCacheService.GetAllNetworkModuleCache(NetworkModuleCacheRequest);

            NetworkModuleCaches = result.Data;

            foreach (Jc_MacInfo item in items)
            {
                olditem = NetworkModuleCaches.Find(a => a.MAC == item.MAC);
                //增加重复判断
                if (olditem == null)
                { //缓存中存在此测点
                    Result.Code    = 1;
                    Result.Message = "当前更新列表中的数据在数据库中不存在!";
                    return(Result);
                }
                else
                {
                    if (olditem.IsMemoryData)//如果内存中存在数据,则重置添加、修改标记  20170415
                    {
                        if (olditem.InfoState == InfoState.AddNew)
                        {
                            if (item.InfoState == InfoState.Modified)
                            {
                                item.InfoState = InfoState.AddNew;
                            }
                        }
                        if (olditem.InfoState == InfoState.Delete)
                        {
                            if (item.InfoState == InfoState.AddNew)
                            {
                                item.InfoState = InfoState.Modified;
                            }
                        }
                        item.IsMemoryData = false;//置完标记后,将内存数据变成非内存数据标记  20170415
                    }
                }
            }
            //向网关同步数据
            List <Jc_MacInfo> SendItemList = items;
            var resultSync = SynchronousDataToGateway(SendItemList);

            if (!resultSync)
            {
                Result.Code    = 1;
                Result.Message = "向网关同步数据失败!";
                return(Result);
            }
            TransactionsManager.BeginTransaction(() =>
            {
                foreach (Jc_MacInfo item in items)
                {
                    if (item.InfoState == InfoState.AddNew)
                    {
                        //保存数据库
                        var _jc_Mac = ObjectConverter.Copy <Jc_MacInfo, Jc_MacModel>(item);
                        _Repository.AddNetworkModule(_jc_Mac);
                    }
                    else
                    {
                        //保存数据库
                        var _jc_Mac = ObjectConverter.Copy <Jc_MacInfo, Jc_MacModel>(item);
                        _Repository.UpdateNetworkModule(_jc_Mac);
                    }
                    //更新到缓存
                    UpdateNetworkModuleCacheByProperty(item);
                }
            });

            return(Result);
        }
        /// <summary>
        /// 更新网络模块
        /// </summary>
        /// <param name="NetworkModuleRequest"></param>
        /// <returns></returns>
        public BasicResponse UpdateNetworkModule(NetworkModuleUpdateRequest NetworkModuleRequest)
        {
            BasicResponse Result = new BasicResponse();
            Jc_MacInfo    item   = NetworkModuleRequest.NetworkModuleInfo;

            //重复判断
            NetworkModuleCacheGetByKeyRequest networkModuleCacheRequest = new NetworkModuleCacheGetByKeyRequest();

            networkModuleCacheRequest.Mac = item.MAC;
            var        result  = _NetworkModuleCacheService.GetNetworkModuleCacheByKey(networkModuleCacheRequest);
            Jc_MacInfo OldItem = result.Data;

            if (result.Data == null)
            {
                //缓存中存在此测点
                Result.Code    = 1;
                Result.Message = "当前更新的网络模块不存在!";
                return(Result);
            }

            //重置内存状态标记,因为搜索的时候,只保存了内存   20170410
            if (OldItem != null)
            {
                if (OldItem.IsMemoryData)//如果内存中存在数据,则重置添加、修改标记  20170415
                {
                    if (OldItem.InfoState == InfoState.AddNew)
                    {
                        if (item.InfoState == InfoState.Modified)
                        {
                            item.InfoState = InfoState.AddNew;
                        }
                    }
                    if (OldItem.InfoState == InfoState.Delete)
                    {
                        if (item.InfoState == InfoState.AddNew)
                        {
                            item.InfoState = InfoState.Modified;
                        }
                    }
                    item.IsMemoryData = false;//置完标记后,将内存数据变成非内存数据标记  20170415
                }
            }

            //item.IsMemoryData = false;//置完标记后,将内存数据变成非内存数据标记  20170415

            if (item.InfoState == InfoState.AddNew)
            {
                //向网关同步数据
                List <Jc_MacInfo> SendItemList = new List <Jc_MacInfo>();
                SendItemList.Add(item);
                var resultSync = SynchronousDataToGateway(SendItemList);
                if (!resultSync)
                {
                    Result.Code    = 1;
                    Result.Message = "向网关同步数据失败!";
                    return(Result);
                }

                //保存数据库
                var _jc_Mac = ObjectConverter.Copy <Jc_MacInfo, Jc_MacModel>(item);
                _Repository.AddNetworkModule(_jc_Mac);
            }
            else
            {
                //向网关同步数据
                List <Jc_MacInfo> SendItemList = new List <Jc_MacInfo>();
                SendItemList.Add(item);
                var resultSync = SynchronousDataToGateway(SendItemList);
                if (!resultSync)
                {
                    Result.Code    = 1;
                    Result.Message = "向网关同步数据失败!";
                    return(Result);
                }

                //保存数据库
                var _jc_Mac = ObjectConverter.Copy <Jc_MacInfo, Jc_MacModel>(item);
                _Repository.UpdateNetworkModule(_jc_Mac);
            }

            //更新缓存
            UpdateNetworkModuleCacheByProperty(item);

            return(Result);
        }
示例#14
0
        /// <summary>
        /// 判断需要向交换机下发的命令,  修改支持命令同时发送  20171207
        /// </summary>
        /// <param name="mac"></param>
        /// <param name="macItems"></param>
        /// <returns></returns>
        public static List <MasProtocol> GetMacSendData(string mac, List <Jc_MacInfo> macItems)
        {
            List <MasProtocol> masProtocolList = new List <MasProtocol>();

            try
            {
                Jc_MacInfo macInfo = macItems.FirstOrDefault(a => a.MAC == mac);
                if (macInfo != null)
                {
                    if ((macInfo.NCommandbz & 0x02) == 0x02)
                    {
                        #region ----下发模拟报警----

                        ResetDeviceCommandRequest resetDeviceCommandRequest = new ResetDeviceCommandRequest();
                        resetDeviceCommandRequest.DeviceCode     = mac;
                        resetDeviceCommandRequest.LastAcceptFlag = (byte)macInfo.testAlarmFlag;
                        resetDeviceCommandRequest.Mac            = mac;

                        MasProtocol masProtocol = null;
                        masProtocol          = new MasProtocol(SystemType.Security, DirectionType.Down, ProtocolType.ResetNetWorkDeviceRequest);
                        masProtocol.Protocol = resetDeviceCommandRequest;
                        masProtocolList.Add(masProtocol);

                        Dictionary <string, object> updateItems = new Dictionary <string, object>();
                        updateItems.Add("sendAlarmCount", macInfo.sendAlarmCount--);
                        if (macInfo.sendAlarmCount <= 0)
                        {
                            updateItems.Add("NCommandbz", (macInfo.NCommandbz & 0xFD));
                        }

                        CacheDataHelper.UpdateNetworkModeuleCacheByPropertys(macInfo.MAC, updateItems);
                        LogHelper.Info(macInfo.MAC + "下发模拟报警,待下发" + macInfo.sendAlarmCount + "次");

                        #endregion
                    }

                    if (((macInfo.NCommandbz & 0x01) == 0x01) || macInfo.SendBatteryControlCount > 0)
                    {
                        #region ----获取智能电源箱数据----
                        if ((DateTime.Now - macInfo.SendDtime).TotalSeconds <= 15)
                        {
                            if (macInfo.Type == 0 && macInfo.Bz4 == "1")//Bz4 = 1表示带智能电源箱
                            {
                                QueryBatteryRealDataRequest queryBatteryRealDataRequest = GetQueryBatteryRealDataRequest(macInfo);

                                MasProtocol masProtocol = null;
                                masProtocol          = new MasProtocol(SystemType.Security, DirectionType.Down, ProtocolType.QueryBatteryRealDataRequest);
                                masProtocol.Protocol = queryBatteryRealDataRequest;
                                masProtocolList.Add(masProtocol);
                            }
                        }
                        #endregion
                    }

                    #region ----人员定位呼叫命令(屏蔽  20180307) ----
                    //R_CallInfo tempCallInfo;
                    //string[] startAndEnd;
                    //int tempInt = 0;
                    //string tempStr;
                    //List<R_CallInfo> callItems = KJ237CacheHelper.GetCallItems().Where(a => a.CallType != 2).OrderBy(a => a.CallTime).ToList();
                    //if (callItems.Count > 0)//下发紧急呼叫及一般呼叫  20171206
                    //{
                    //    //先查找人员的全员呼叫命令并下发(呼叫所有设备与呼叫所有人员为同一命令)(优先级最高)
                    //    List<R_CallInfo> sendCallList = callItems.FindAll(a => a.CallType == 1 && (a.CallPersonDefType == 0 || a.CallPersonDefType == 3));
                    //    if (sendCallList.Count > 0)//全员呼叫下发
                    //    {
                    //        if (sendCallList[0].SendCount > 0)//判断是否还需要下发  20171213
                    //        {
                    //            CallPersonRequest request = new CallPersonRequest();
                    //            request.HJ_Type = 0;
                    //            request.HJ_State = 2;
                    //            request.DeviceCode = mac;
                    //            request.HJ_KH = new ushort[12];

                    //            MasProtocol masProtocol = null;
                    //            masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //            masProtocol.Protocol = request;


                    //            masProtocolList.Add(masProtocol);
                    //        }
                    //    }
                    //    else
                    //    {
                    //        #region//紧急呼叫井下设备
                    //        List<R_CallInfo> sendCallListByPoint = callItems.FindAll(a => a.CallType == 1 && (a.CallPersonDefType == 4));
                    //        if (sendCallListByPoint.Count > 0)
                    //        {
                    //            if (sendCallListByPoint[0].SendCount > 0)//判断是否还需要下发  20171213
                    //            {
                    //                CallPersonRequest request = new CallPersonRequest();
                    //                request.HJ_Type = 4;
                    //                request.HJ_State = 2;
                    //                request.DeviceCode = mac;
                    //                List<ushort> callContent = new List<ushort>();
                    //                foreach (R_CallInfo call in sendCallListByPoint)
                    //                {
                    //                    string[] callList = call.PointList.Split(',');
                    //                    foreach (string tempCall in callList)
                    //                    {
                    //                        callContent.Add(Convert.ToUInt16(((Convert.ToInt64(tempCall.Substring(0, 3)) << 8)) + Convert.ToInt64(tempCall.Substring(4, 2))));
                    //                        if (callContent.Count == 12)
                    //                        {
                    //                            request.HJ_KH = callContent.ToArray();
                    //                            MasProtocol masProtocol = null;
                    //                            masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //                            masProtocol.Protocol = request;
                    //                            masProtocolList.Add(masProtocol);

                    //                            callContent = new List<ushort>();
                    //                        }
                    //                    }
                    //                }
                    //                if (callContent.Count > 0)
                    //                {
                    //                    request.HJ_KH = new ushort[12];
                    //                    for (int i = 0; i < callContent.Count; i++)
                    //                    {
                    //                        request.HJ_KH[i] = callContent[i];
                    //                    }
                    //                    MasProtocol masProtocol = null;
                    //                    masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //                    masProtocol.Protocol = request;
                    //                    masProtocolList.Add(masProtocol);
                    //                }
                    //            }
                    //        }
                    //        #endregion
                    //        #region//紧急呼叫指定人员及指定卡号段下发,卡号段也按指定人员下发
                    //        List<R_CallInfo> sendCallListByPerson = callItems.FindAll(a => a.CallType == 1 && (a.CallPersonDefType == 1 || a.CallPersonDefType == 2));
                    //        if (sendCallListByPerson.Count > 0)
                    //        {
                    //            if (sendCallListByPerson[0].SendCount > 0)//判断是否还需要下发  20171213
                    //            {
                    //                CallPersonRequest request = new CallPersonRequest();
                    //                request.HJ_Type = 2;
                    //                request.HJ_State = 2;
                    //                request.DeviceCode = mac;
                    //                List<ushort> callContent = new List<ushort>();
                    //                foreach (R_CallInfo call in sendCallListByPerson)
                    //                {
                    //                    if (call.BhContent.Contains("-"))
                    //                    {//指定卡号段呼叫
                    //                        ushort sBh = ushort.Parse(call.BhContent.Split('-')[0]);
                    //                        ushort eBh = ushort.Parse(call.BhContent.Split('-')[1]);
                    //                        for (ushort i = sBh; i <= eBh; i++)
                    //                        {
                    //                            callContent.Add(i);
                    //                            if (callContent.Count == 12)
                    //                            {
                    //                                request.HJ_KH = callContent.ToArray();
                    //                                MasProtocol masProtocol = null;
                    //                                masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //                                masProtocol.Protocol = request;
                    //                                masProtocolList.Add(masProtocol);

                    //                                callContent = new List<ushort>();
                    //                            }
                    //                        }
                    //                    }
                    //                    else//指定卡号呼叫
                    //                    {
                    //                        string[] callList = call.BhContent.Split(',');
                    //                        foreach (string tempCall in callList)
                    //                        {
                    //                            callContent.Add(ushort.Parse(tempCall));
                    //                            if (callContent.Count == 12)
                    //                            {
                    //                                request.HJ_KH = callContent.ToArray();
                    //                                MasProtocol masProtocol = null;
                    //                                masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //                                masProtocol.Protocol = request;
                    //                                masProtocolList.Add(masProtocol);

                    //                                callContent = new List<ushort>();
                    //                            }
                    //                        }
                    //                    }
                    //                }
                    //                if (callContent.Count > 0)
                    //                {
                    //                    request.HJ_KH = new ushort[12];
                    //                    for (int i = 0; i < callContent.Count; i++)
                    //                    {
                    //                        request.HJ_KH[i] = callContent[i];
                    //                    }
                    //                    MasProtocol masProtocol = null;
                    //                    masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //                    masProtocol.Protocol = request;
                    //                    masProtocolList.Add(masProtocol);
                    //                }
                    //            }
                    //        }
                    //        #endregion

                    //        if (sendCallListByPerson.Count == 0 && sendCallListByPoint.Count == 0)
                    //        {//如果不存在紧急呼叫,则判断一般呼叫并下发
                    //            List<R_CallInfo> sendGeneralCallListAll = callItems.FindAll(a => a.CallType == 0 && (a.CallPersonDefType == 0 || a.CallPersonDefType == 3));
                    //            if (sendGeneralCallListAll.Count > 0)//全员呼叫下发
                    //            {
                    //                if (sendGeneralCallListAll[0].SendCount > 0)//判断是否还需要下发  20171213
                    //                {
                    //                    CallPersonRequest request = new CallPersonRequest();
                    //                    request.HJ_Type = 0;
                    //                    request.HJ_State = 1;
                    //                    request.DeviceCode = mac;
                    //                    request.HJ_KH = new ushort[12];

                    //                    MasProtocol masProtocol = null;
                    //                    masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //                    masProtocol.Protocol = request;


                    //                    masProtocolList.Add(masProtocol);
                    //                }
                    //            }
                    //            #region//一般呼叫井下设备
                    //            List<R_CallInfo> sendGeneralCallListByPoint = callItems.FindAll(a => a.CallType == 0 && (a.CallPersonDefType == 4));
                    //            if (sendGeneralCallListByPoint.Count > 0)
                    //            {
                    //                if (sendGeneralCallListByPoint[0].SendCount > 0)//判断是否还需要下发  20171213
                    //                {
                    //                    CallPersonRequest request = new CallPersonRequest();
                    //                    request.HJ_Type = 4;
                    //                    request.HJ_State = 1;
                    //                    request.DeviceCode = mac;
                    //                    List<ushort> callContent = new List<ushort>();
                    //                    foreach (R_CallInfo call in sendGeneralCallListByPoint)
                    //                    {
                    //                        string[] callList = call.PointList.Split(',');
                    //                        foreach (string tempCall in callList)
                    //                        {
                    //                            callContent.Add(Convert.ToUInt16(((Convert.ToInt64(tempCall.Substring(0, 3)) << 8)) + Convert.ToInt64(tempCall.Substring(4, 2))));
                    //                            if (callContent.Count == 12)
                    //                            {
                    //                                request.HJ_KH = callContent.ToArray();
                    //                                MasProtocol masProtocol = null;
                    //                                masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //                                masProtocol.Protocol = request;
                    //                                masProtocolList.Add(masProtocol);

                    //                                callContent = new List<ushort>();
                    //                            }
                    //                        }
                    //                    }
                    //                    if (callContent.Count > 0)
                    //                    {
                    //                        request.HJ_KH = new ushort[12];
                    //                        for (int i = 0; i < callContent.Count; i++)
                    //                        {
                    //                            request.HJ_KH[i] = callContent[i];
                    //                        }
                    //                        MasProtocol masProtocol = null;
                    //                        masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //                        masProtocol.Protocol = request;
                    //                        masProtocolList.Add(masProtocol);
                    //                    }
                    //                }
                    //            }
                    //            #endregion
                    //            #region//一般呼叫指定人员及指定卡号段下发,卡号段也按指定人员下发
                    //            List<R_CallInfo> sendGeneralCallListByPerson = callItems.FindAll(a => a.CallType == 0 && (a.CallPersonDefType == 1 || a.CallPersonDefType == 2));
                    //            if (sendGeneralCallListByPerson.Count > 0)
                    //            {
                    //                if (sendGeneralCallListByPerson[0].SendCount > 0)//判断是否还需要下发  20171213
                    //                {
                    //                    CallPersonRequest request = new CallPersonRequest();
                    //                    request.HJ_Type = 2;
                    //                    request.HJ_State = 1;
                    //                    request.DeviceCode = mac;
                    //                    List<ushort> callContent = new List<ushort>();
                    //                    foreach (R_CallInfo call in sendGeneralCallListByPerson)
                    //                    {
                    //                        if (call.BhContent.Contains("-"))
                    //                        {//指定卡号段呼叫
                    //                            ushort sBh = ushort.Parse(call.BhContent.Split('-')[0]);
                    //                            ushort eBh = ushort.Parse(call.BhContent.Split('-')[1]);
                    //                            for (ushort i = sBh; i <= eBh; i++)
                    //                            {
                    //                                callContent.Add(i);
                    //                                if (callContent.Count == 12)
                    //                                {
                    //                                    request.HJ_KH = callContent.ToArray();
                    //                                    MasProtocol masProtocol = null;
                    //                                    masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //                                    masProtocol.Protocol = request;
                    //                                    masProtocolList.Add(masProtocol);

                    //                                    callContent = new List<ushort>();
                    //                                }
                    //                            }
                    //                        }
                    //                        else//指定卡号呼叫
                    //                        {
                    //                            string[] callList = call.BhContent.Split(',');
                    //                            foreach (string tempCall in callList)
                    //                            {
                    //                                callContent.Add(ushort.Parse(tempCall));
                    //                                if (callContent.Count == 12)
                    //                                {
                    //                                    request.HJ_KH = callContent.ToArray();
                    //                                    MasProtocol masProtocol = null;
                    //                                    masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //                                    masProtocol.Protocol = request;
                    //                                    masProtocolList.Add(masProtocol);

                    //                                    callContent = new List<ushort>();
                    //                                }
                    //                            }
                    //                        }
                    //                    }
                    //                    if (callContent.Count > 0)
                    //                    {
                    //                        request.HJ_KH = new ushort[12];
                    //                        for (int i = 0; i < callContent.Count; i++)
                    //                        {
                    //                            request.HJ_KH[i] = callContent[i];
                    //                        }
                    //                        MasProtocol masProtocol = null;
                    //                        masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //                        masProtocol.Protocol = request;
                    //                        masProtocolList.Add(masProtocol);
                    //                    }
                    //                }
                    //            }
                    //            #endregion
                    //        }
                    //    }

                    //}
                    //else//如果不存在紧急呼叫和一般呼叫命令则下发解除呼叫命令  20171206
                    //{
                    //    callItems = KJ237CacheHelper.GetCallItems().Where(a => a.CallType == 2).OrderBy(a => a.CallTime).ToList();
                    //    if (callItems.Count > 0)
                    //    {
                    //        CallPersonRequest request = new CallPersonRequest();
                    //        request.HJ_Type = 0;
                    //        request.HJ_State = 0;
                    //        request.DeviceCode = mac;
                    //        request.HJ_KH = new ushort[12];

                    //        MasProtocol masProtocol = null;
                    //        masProtocol = new MasProtocol(SystemType.Personnel, DirectionType.Down, ProtocolType.CallPersonRequest);
                    //        masProtocol.Protocol = request;

                    //        masProtocolList.Add(masProtocol);
                    //    }
                    //}
                    #endregion
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error("获取向交换机下发的命令失败,原因:" + ex);
            }

            return(masProtocolList);
        }
        public void PowerboxchargeStaticThread()
        {
            DateTime timeNow = DateTime.Now;
            List <PowerboxchargehistoryInfo> PowerboxchargehistoryList = new List <PowerboxchargehistoryInfo>();
            List <Jc_DefInfo> StationList = new List <Jc_DefInfo>();

            while (true)
            {
                try
                {
                    timeNow = DateTime.Now;
                    PowerboxchargehistoryGetByStimeRequest powerboxchargehistoryRequest = new PowerboxchargehistoryGetByStimeRequest();
                    powerboxchargehistoryRequest.Stime = timeNow.AddDays(-1);
                    PowerboxchargehistoryList          = powerboxchargehistoryService.GetPowerboxchargehistoryByStime(powerboxchargehistoryRequest).Data;
                    StationList = pointDefineService.GetPointDefineCacheByDevpropertID(new Request.PointDefine.PointDefineGetByDevpropertIDRequest()
                    {
                        DevpropertID = 0
                    }).Data;
                    List <Jc_MacInfo> macList = networkModuleService.GetAllNetworkModuleCache().Data;
                    foreach (PowerboxchargehistoryInfo powerboxcharge in PowerboxchargehistoryList)
                    {
                        if (powerboxcharge.DischargeStime < DateTime.Parse("2000-01-01"))//放电开始判断
                        {
                            if (string.IsNullOrEmpty(powerboxcharge.Mac))
                            {//分站电源箱
                                Jc_DefInfo station = StationList.Find(a => a.Fzh == short.Parse(powerboxcharge.Fzh));
                                if (station != null)
                                {
                                    TimeSpan ts = station.DttRunStateTime - powerboxcharge.Stime;
                                    if (station.State == 4 && ts.TotalMinutes < 5)//如果操作放电,分站在5分钟内变成直流了,则记录放电的开始时间
                                    {
                                        powerboxcharge.DischargeStime = station.DttRunStateTime;
                                        PowerboxchargehistoryUpdate(powerboxcharge);
                                    }
                                }
                            }
                            else
                            {
                                GetMacPowerboxInfo(powerboxcharge.Mac);
                                //交换机电源箱
                                Jc_MacInfo mac = macList.Find(a => a.MAC == powerboxcharge.Mac);
                                if (mac != null)
                                {
                                    if (mac.BatteryItems != null && mac.BatteryItems.Count > 0)
                                    {
                                        if (mac.BatteryItems[0].BatteryACDC == 2)//如果操作放电,交换机变成直流,则记录放电的开始时间
                                        {
                                            powerboxcharge.DischargeStime = mac.PowerDateTime;
                                            PowerboxchargehistoryUpdate(powerboxcharge);
                                        }
                                    }
                                }
                            }
                        }
                        else if (powerboxcharge.DischargeEtime < DateTime.Parse("2000-01-01"))//放电结束判断
                        {
                            if (string.IsNullOrEmpty(powerboxcharge.Mac))
                            {
                                Jc_DefInfo station = StationList.Find(a => a.Fzh == short.Parse(powerboxcharge.Fzh));
                                if (station != null && station.State == 3)//如果分站变成交流了,则记录放电的结束时间
                                {
                                    powerboxcharge.DischargeEtime = station.DttRunStateTime;
                                    PowerboxchargehistoryUpdate(powerboxcharge);
                                }
                            }
                            else
                            {
                                GetMacPowerboxInfo(powerboxcharge.Mac);
                                //交换机电源箱
                                Jc_MacInfo mac = macList.Find(a => a.MAC == powerboxcharge.Mac);
                                if (mac != null)
                                {
                                    if (mac.BatteryItems != null && mac.BatteryItems.Count > 0)
                                    {
                                        if (mac.BatteryItems[0].BatteryACDC == 1)//如果交换机变成交流了,则记录放电的结束时间
                                        {
                                            powerboxcharge.DischargeEtime = mac.PowerDateTime;
                                            PowerboxchargehistoryUpdate(powerboxcharge);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Basic.Framework.Logging.LogHelper.Error(ex);
                }
                Thread.Sleep(60000);
            }
        }