public DataResult <List <DeviceModel> > InitDevices() { DataResult <List <DeviceModel> > result = new DataResult <List <DeviceModel> >(); result.State = false; try { var devices = dataAccess.GetDevices(); var monitorValues = dataAccess.GetMonitorValues(); List <DeviceModel> deviceList = new List <DeviceModel>(); // 设备 foreach (var d in devices.AsEnumerable()) { DeviceModel dm = new DeviceModel(); deviceList.Add(dm); dm.DeviceID = d.Field <string>("d_id"); dm.DeviceName = d.Field <string>("d_name"); dm.IsWarning = false; dm.IsRunning = true; // 点位 foreach (var m in monitorValues.AsEnumerable().Where(m => m.Field <string>("d_id") == dm.DeviceID)) { MonitorValueModel mvm = new MonitorValueModel(); dm.MonitorValueList.Add(mvm); mvm.ValueId = m.Field <string>("value_id"); mvm.ValueName = m.Field <string>("value_name"); mvm.StorageAreaID = m.Field <string>("s_area_id"); mvm.StartAddress = m.Field <Int32>("address"); mvm.DataType = m.Field <string>("data_type"); mvm.IsAlarm = m.Field <Int32>("is_alarm") == 1; mvm.ValueDesc = m.Field <string>("description"); mvm.Unit = m.Field <string>("unit"); mvm.ValueState = Base.MonitorValueState.OK; // 警戒值 var column = m.Field <string>("alarm_lolo"); mvm.LoLoAlarm = column == null ? 0.0 : double.Parse(column); column = m.Field <string>("alarm_low"); mvm.LowAlarm = column == null ? 0.0 : double.Parse(column); column = m.Field <string>("alarm_high"); mvm.HighAlarm = column == null ? 0.0 : double.Parse(column); column = m.Field <string>("alarm_hihi"); mvm.HiHiAlarm = column == null ? 0.0 : double.Parse(column); mvm.ValueStateChanged = new Action <Base.MonitorValueState, string, string>((state, msg, value_id) => { try { Application.Current?.Dispatcher.Invoke(() => { var index = dm.WarningMessage.ToList().FindIndex(w => w.ValueID == value_id); if (index > -1) { dm.WarningMessage.RemoveAt(index); } if (state != Base.MonitorValueState.OK) { dm.WarningMessage.Add(new WarningMessageModel { ValueID = value_id, Message = msg }); dm.LogList.Add(new LogModel { }); } }); var ss = dm.WarningMessage.ToList().Exists(w => w.ValueID.StartsWith(dm.DeviceID)); if (dm.IsWarning != ss) { dm.IsWarning = ss; } } catch { } }); } } result.State = true; result.Data = deviceList; } catch (Exception ex) { result.Message = ex.Message; } return(result); }
public DataResult <List <DeviceModel> > InitDevices() { DataResult <List <DeviceModel> > result = new DataResult <List <DeviceModel> >(); try { var devices = dataAccess.GetDevices(); var monitorValues = dataAccess.GetMonitorValues(); List <DeviceModel> deviceModels = new List <DeviceModel>(); foreach (var item in devices.AsEnumerable()) { DeviceModel dModel = new DeviceModel(); deviceModels.Add(dModel); dModel.DeviceId = item.Field <string>("d_id"); dModel.DeviceName = item.Field <string>("d_name"); foreach (var mv in monitorValues.AsEnumerable()) { MonitorValueModel mvm = new MonitorValueModel(); dModel.MonitorValueList.Add(mvm); mvm.ValueId = mv.Field <string>("value_id"); mvm.ValueName = mv.Field <string>("value_name"); mvm.ValuesDesc = mv.Field <string>("description"); mvm.StorageAreaId = mv.Field <string>("s_area_id"); mvm.StartAdress = mv.Field <Int32>("address"); mvm.DataType = mv.Field <string>("data_type"); mvm.IsAlarm = mv.Field <Int32>("is_alarm") == 1; mvm.Unit = mv.Field <string>("unit"); //警戒值 var column = mv.Field <string>("alarm_lolo"); mvm.LoLoAlarm = column == null ? 0.0 : double.Parse(column); column = mv.Field <string>("alarm_low"); mvm.LowAlarm = column == null ? 0.0 : double.Parse(column); column = mv.Field <string>("alarm_hight"); mvm.HightAlarm = column == null ? 0.0 : double.Parse(column); column = mv.Field <string>("alarm_hihi"); mvm.HiHiAlarm = column == null ? 0.0 : double.Parse(column); mvm.ValueStateChanged = (state, msg, value_id) => { var index = dModel.WarningMessageList.ToList().FindIndex(w => w.ValueId == value_id); if (index > -1) { dModel.WarningMessageList.RemoveAt(index); } if (state != Base.MonitorValueStateEnum.OK) { dModel.IsWarning = true; dModel.WarningMessageList.Add(new WarningMessageModel { ValueId = value_id, Message = msg }); } var ss = dModel.WarningMessageList.Count > 0; if (dModel.IsWarning != ss) { dModel.IsWarning = ss; } }; } } result.State = true; result.Data = deviceModels; } catch (Exception ex) { result.Message = ex.Message; } return(result); }