/// <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); }