/// <summary> /// 下发所有网络模块时间同步命令接口 /// </summary> /// <returns></returns> public BasicResponse SetNetworkModuleSyncTime() { BasicResponse result = new BasicResponse(); NetworkModuleCacheGetAllRequest networkModuleCacheRequest = new NetworkModuleCacheGetAllRequest(); var resultGet = _NetworkModuleCacheService.GetAllNetworkModuleCache(networkModuleCacheRequest); List <Jc_MacInfo> macItems = resultGet.Data; if (macItems != null && macItems.Any()) { foreach (Jc_MacInfo item in macItems) { item.TimeSynchronization = true; item.TimeSynchronizationcount = 3;//默认发3次网络模块时间同步命令 //更新指定字段到缓存中 Dictionary <string, object> paramater = new Dictionary <string, object>(); paramater.Add("TimeSynchronization", item.TimeSynchronization); paramater.Add("TimeSynchronizationcount", item.TimeSynchronizationcount); NetworkModuleCacheUpdatePropertiesRequest networkModuleCacheUpdatePropertiesRequest = new NetworkModuleCacheUpdatePropertiesRequest(); networkModuleCacheUpdatePropertiesRequest.Mac = item.MAC; networkModuleCacheUpdatePropertiesRequest.UpdateItems = paramater; _NetworkModuleCacheService.UpdateNetworkInfo(networkModuleCacheUpdatePropertiesRequest); } } return(result); }
public BasicResponse <List <Jc_MacInfo> > GetAllNetworkModuleCache(NetworkModuleCacheGetAllRequest networkModuleCacheRequest) { var networkModuleCache = NetworkModuleCache.NetworModuleCahceInstance.Query(); var networkModuleCacheResponse = new BasicResponse <List <Jc_MacInfo> >(); networkModuleCacheResponse.Data = networkModuleCache; return(networkModuleCacheResponse); }
/// <summary> /// 获取所有网格模块缓存 /// </summary> /// <returns></returns> public BasicResponse <List <Jc_MacInfo> > GetAllNetworkModuleCache() { BasicResponse <List <Jc_MacInfo> > Result = new BasicResponse <List <Jc_MacInfo> >(); NetworkModuleCacheGetAllRequest networkModuleCacheRequest = new NetworkModuleCacheGetAllRequest(); var result = _NetworkModuleCacheService.GetAllNetworkModuleCache(networkModuleCacheRequest); Result.Data = result.Data; return(Result); }
/// <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); }
/// <summary> /// 获取所有交换机的安装位置 /// </summary> /// <returns></returns> public BasicResponse <List <string> > GetSwitchsPosition() { BasicResponse <List <string> > Result = new BasicResponse <List <string> >(); List <string> SwitchsPosition = new List <string>(); NetworkModuleCacheGetAllRequest networkModuleCacheRequest = new NetworkModuleCacheGetAllRequest(); var jc_MacModelLists = _NetworkModuleCacheService.GetAllNetworkModuleCache(networkModuleCacheRequest); foreach (Jc_MacInfo item in jc_MacModelLists.Data) { if (!SwitchsPosition.Contains(item.Wz) && long.Parse(item.Wzid) >= 0) { SwitchsPosition.Add(item.Wz); } } Result.Data = SwitchsPosition; return(Result); }
/// <summary> /// 在缓存中获取所有交换机 /// </summary> /// <returns></returns> public BasicResponse <List <Jc_MacInfo> > GetSwitchInformationInCache() { var response = new BasicResponse <List <Jc_MacInfo> >(); try { var networkModuleCacheGetAllRequest = new NetworkModuleCacheGetAllRequest(); var networkModuleCacheGetAllResponse = networkModuleCacheService.GetAllNetworkModuleCache(networkModuleCacheGetAllRequest); if (networkModuleCacheGetAllResponse.Data != null) { response.Data = networkModuleCacheGetAllResponse.Data; } } catch (Exception ex) { response.Code = -100; response.Message = ex.Message; this.ThrowException("GetSwitchInformationInCache-在缓存中获取所有交换机", ex);; } return(response); }
/// <summary> /// 网络模块保存巡检 /// </summary> /// <returns></returns> public BasicResponse NetworkModuleSaveData() { BasicResponse Result = new BasicResponse(); NetworkModuleCacheGetAllRequest networkModuleCacheRequest = new NetworkModuleCacheGetAllRequest(); var resultAllNetwork = _NetworkModuleCacheService.GetAllNetworkModuleCache(networkModuleCacheRequest); List <Jc_MacInfo> ALLNetworkModule = resultAllNetwork.Data; foreach (Jc_MacInfo NetworkModule in ALLNetworkModule) { if (NetworkModule.IsMemoryData) { if (NetworkModule.Type == 0 && NetworkModule.Wzid == "-1" && !NetworkModuleIsDefinePoint(NetworkModule.Bz1))//处理未定义网络模块,只有绑定了分站的网络模块才保留,否则从缓存中清除 20170331 { NetworkModuleCacheDeleteRequest DeleteNetworkModuleCacheRequest = new NetworkModuleCacheDeleteRequest(); DeleteNetworkModuleCacheRequest.NetworkModuleInfo = NetworkModule; _NetworkModuleCacheService.DeleteNetworkModuleCache(DeleteNetworkModuleCacheRequest); } } } return(Result); }
/// <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 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); }