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