/// <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);
        }
 public BasicResponse AddNetworkModuleCache(NetworkModuleCacheAddRequest networkModuleCacheRequest)
 {
     NetworkModuleCache.NetworModuleCahceInstance.AddItem(networkModuleCacheRequest.NetworkModuleInfo);
     return(new BasicResponse());
 }
        /// <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);
        }