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);
        }
Esempio n. 2
0
        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);
        }