コード例 #1
0
        /// <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);
        }
コード例 #2
0
 public BasicResponse <List <Jc_MacInfo> > SearchALLNetworkModuleAndAddCache(SearchNetworkModuleRequest request)
 {
     return(_NetworkModuleService.SearchALLNetworkModuleAndAddCache(request));
 }
コード例 #3
0
        public BasicResponse <List <Jc_MacInfo> > SearchALLNetworkModuleAndAddCache(SearchNetworkModuleRequest request)
        {
            var responseStr = HttpClientHelper.Post(Webapi + "/v1/NetworkModule/SearchALLNetworkModuleAndAddCache?token=" + Token, JSONHelper.ToJSONString(request));

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