461 lines
21 KiB
C#
461 lines
21 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Media;
|
|
using System.Windows;
|
|
using FujianEarthquake.Common;
|
|
using FujianEarthquake.DataAccess;
|
|
using FujianEarthquake.Models;
|
|
using MySql.Data.MySqlClient;
|
|
|
|
namespace FujianEarthquake.ViewModels
|
|
{
|
|
public class MainViewModel : NotifyBase
|
|
{
|
|
|
|
#region ViewModel Define
|
|
public static RealTimeDataViewModel realTimeDataViewModel1 = new RealTimeDataViewModel(1);
|
|
public static RealTimeDataViewModel realTimeDataViewModel2 = new RealTimeDataViewModel(2);
|
|
public static RealTimeDataViewModel realTimeDataViewModel3 = new RealTimeDataViewModel(3);
|
|
public static AlarmRecordViewModel alarmRecordViewModel1 = new AlarmRecordViewModel(1);
|
|
public static AlarmRecordViewModel alarmRecordViewModel2 = new AlarmRecordViewModel(2);
|
|
public static AlarmRecordViewModel alarmRecordViewModel3 = new AlarmRecordViewModel(3);
|
|
public static LogRecordViewModel logRecordViewModel1 = new LogRecordViewModel(1);
|
|
public static LogRecordViewModel logRecordViewModel2 = new LogRecordViewModel(2);
|
|
public static LogRecordViewModel logRecordViewModel3 = new LogRecordViewModel(3);
|
|
#endregion
|
|
|
|
|
|
#region Something Define
|
|
public int station_id { get; set; } = 1;
|
|
|
|
string Title_Name = ""; //设置当前显示的标题
|
|
|
|
private FrameworkElement _pageContent;
|
|
|
|
public FrameworkElement PageContent
|
|
{
|
|
get { return _pageContent; }
|
|
set { _pageContent = value; this.DoNotify(); }
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region CommandBase Define
|
|
public CommandBase NavChangedCommand { get; set; }
|
|
|
|
public CommandBase Switch { set; get; }
|
|
#endregion
|
|
|
|
|
|
public static DialogViewModel vm;
|
|
|
|
public MainViewModel()
|
|
{
|
|
vm = new DialogViewModel
|
|
{
|
|
Content = ""
|
|
};
|
|
|
|
|
|
#region Command Define
|
|
this.NavChangedCommand = new CommandBase();
|
|
this.NavChangedCommand.DoExcute = new Action<object>(DoNavChanged);
|
|
this.NavChangedCommand.DoCanExcute = new Func<object, bool>((o) => true);
|
|
|
|
//this.Switch = new CommandBase();
|
|
//this.Switch.DoExcute = new Action<object>(Btn_Switch);
|
|
//this.Switch.DoCanExcute = new Func<object, bool>((o) => true);
|
|
#endregion
|
|
|
|
|
|
#region 日志页面初始化
|
|
string sql = String.Format("select * from underjuncbox_log_record where StationID = {0} ORDER by id desc limit 100", 1);
|
|
MySqlDataReader dataReader = DBHelper.ExecuteReader(sql, 1);
|
|
int index = 1;
|
|
while (dataReader.Read())
|
|
{
|
|
LogRecordModel logRecord = new LogRecordModel();
|
|
logRecord.Index = index++;
|
|
logRecord.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]);
|
|
logRecord.Device_Name = dataReader["Device_Name"].ToString();
|
|
logRecord.Operation_Type = dataReader["Operation_Type"].ToString();
|
|
logRecord.Record = dataReader["Record"].ToString();
|
|
logRecordViewModel1.TotalLogRecordList.Add(logRecord);
|
|
}
|
|
dataReader.Dispose();
|
|
logRecordViewModel1.RecordCount = index - 1;
|
|
logRecordViewModel1.TotalPage = index <= 10 ? 1 : (int)Math.Ceiling((double)index / 10);
|
|
|
|
for (int i = 0; i < (logRecordViewModel1.RecordCount < 10 ? logRecordViewModel1.RecordCount : 10); i++)
|
|
{
|
|
logRecordViewModel1.LogRecordList.Add(logRecordViewModel1.TotalLogRecordList[i]);
|
|
}
|
|
logRecordViewModel1.LogMsg = string.Format("共计{0}页,当前第{1}页", logRecordViewModel1.TotalPage, 1);
|
|
|
|
sql = String.Format("select * from underjuncbox_log_record where StationID = {0} ORDER by id desc limit 100", 2);
|
|
dataReader = DBHelper.ExecuteReader(sql, 1);
|
|
index = 1;
|
|
while (dataReader.Read())
|
|
{
|
|
LogRecordModel logRecord = new LogRecordModel();
|
|
logRecord.Index = index++;
|
|
logRecord.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]);
|
|
logRecord.Device_Name = dataReader["Device_Name"].ToString();
|
|
logRecord.Operation_Type = dataReader["Operation_Type"].ToString();
|
|
logRecord.Record = dataReader["Record"].ToString();
|
|
logRecordViewModel2.TotalLogRecordList.Add(logRecord);
|
|
}
|
|
dataReader.Dispose();
|
|
logRecordViewModel2.RecordCount = index - 1;
|
|
logRecordViewModel2.TotalPage = index <= 10 ? 1 : (int)Math.Ceiling((double)index / 10);
|
|
for (int i = 0; i < (logRecordViewModel2.RecordCount < 10 ? logRecordViewModel2.RecordCount : 10); i++)
|
|
{
|
|
logRecordViewModel2.LogRecordList.Add(logRecordViewModel2.TotalLogRecordList[i]);
|
|
}
|
|
logRecordViewModel2.LogMsg = string.Format("共计{0}页,当前第{1}页", logRecordViewModel2.TotalPage, 1);
|
|
|
|
sql = String.Format("select * from underjuncbox_log_record where StationID = {0} ORDER by id desc limit 100", 3);
|
|
dataReader = DBHelper.ExecuteReader(sql, 1);
|
|
index = 1;
|
|
while (dataReader.Read())
|
|
{
|
|
LogRecordModel logRecord = new LogRecordModel();
|
|
logRecord.Index = index++;
|
|
logRecord.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]);
|
|
logRecord.Device_Name = dataReader["Device_Name"].ToString();
|
|
logRecord.Operation_Type = dataReader["Operation_Type"].ToString();
|
|
logRecord.Record = dataReader["Record"].ToString();
|
|
logRecordViewModel3.TotalLogRecordList.Add(logRecord);
|
|
}
|
|
dataReader.Dispose();
|
|
logRecordViewModel3.RecordCount = index - 1;
|
|
logRecordViewModel3.TotalPage = index <= 10 ? 1 : (int)Math.Ceiling((double)index / 10);
|
|
for (int i = 0; i < (logRecordViewModel3.RecordCount < 10 ? logRecordViewModel3.RecordCount : 10); i++)
|
|
{
|
|
logRecordViewModel3.LogRecordList.Add(logRecordViewModel3.TotalLogRecordList[i]);
|
|
}
|
|
logRecordViewModel3.LogMsg = string.Format("共计{0}页,当前第{1}页", logRecordViewModel3.TotalPage, 1);
|
|
#endregion
|
|
|
|
|
|
#region 告警页面初始化
|
|
sql = String.Format("select * from underjuncbox_alarm_info where StationID = {0} ORDER by id desc limit 100", 1);
|
|
dataReader = DBHelper.ExecuteReader(sql, 1);
|
|
index = 1;
|
|
while (dataReader.Read())
|
|
{
|
|
AlarmRecordModel alarmRecordModel = new AlarmRecordModel();
|
|
alarmRecordModel.Index = index++;
|
|
alarmRecordModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]);
|
|
alarmRecordModel.ParaName = dataReader["ParaName"].ToString();
|
|
alarmRecordModel.ParaNum = Convert.ToInt32(string.IsNullOrEmpty(dataReader["ParaNum"].ToString()) ? 0 : dataReader["ParaNum"]);
|
|
alarmRecordModel.ParaContent = dataReader["ParaContent"].ToString();
|
|
alarmRecordModel.ProcessingMethod = dataReader["ProcessingMethod"].ToString();
|
|
if (dataReader["UrgencyLevel"].ToString() == "1")
|
|
{
|
|
alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleRed");
|
|
}
|
|
else if (dataReader["UrgencyLevel"].ToString() == "2")
|
|
{
|
|
alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleOrange");
|
|
}
|
|
else
|
|
{
|
|
alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleYellow");
|
|
}
|
|
if (dataReader["IsHandled"].ToString() == "0")
|
|
{
|
|
alarmRecordModel.IsHandled = "未处理";
|
|
}
|
|
else if (dataReader["IsHandled"].ToString() == "1")
|
|
{
|
|
alarmRecordModel.IsHandled = "已处理";
|
|
}
|
|
else
|
|
{
|
|
alarmRecordModel.IsHandled = "处理中";
|
|
}
|
|
alarmRecordViewModel1.TotalAlarmRecordList.Add(alarmRecordModel);
|
|
}
|
|
dataReader.Dispose();
|
|
alarmRecordViewModel1.RecordCount = index - 1;
|
|
alarmRecordViewModel1.TotalPage = (index - 1) <= 10 ? 1 : (int)Math.Ceiling((double)(index - 1) / 10);
|
|
for (int i = 0; i < (alarmRecordViewModel1.RecordCount < 10 ? alarmRecordViewModel1.RecordCount : 10); i++)
|
|
{
|
|
alarmRecordViewModel1.AlarmRecordList.Add(alarmRecordViewModel1.TotalAlarmRecordList[i]);
|
|
}
|
|
alarmRecordViewModel1.AlarmMsg = string.Format("共计{0}页,当前第{1}页", alarmRecordViewModel1.TotalPage, 1);
|
|
|
|
sql = String.Format("select * from underjuncbox_alarm_info where StationID = {0} ORDER by id desc limit 100", 2);
|
|
dataReader = DBHelper.ExecuteReader(sql, 1);
|
|
index = 1;
|
|
while (dataReader.Read())
|
|
{
|
|
AlarmRecordModel alarmRecordModel = new AlarmRecordModel();
|
|
alarmRecordModel.Index = index++;
|
|
alarmRecordModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]);
|
|
alarmRecordModel.ParaName = dataReader["ParaName"].ToString();
|
|
alarmRecordModel.ParaNum = Convert.ToInt32(string.IsNullOrEmpty(dataReader["ParaNum"].ToString()) ? 0 : dataReader["ParaNum"]);
|
|
alarmRecordModel.ParaContent = dataReader["ParaContent"].ToString();
|
|
alarmRecordModel.ProcessingMethod = dataReader["ProcessingMethod"].ToString();
|
|
if (dataReader["UrgencyLevel"].ToString() == "1")
|
|
{
|
|
alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleRed");
|
|
}
|
|
else if (dataReader["UrgencyLevel"].ToString() == "2")
|
|
{
|
|
alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleOrange");
|
|
}
|
|
else
|
|
{
|
|
alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleYellow");
|
|
}
|
|
if (dataReader["IsHandled"].ToString() == "0")
|
|
{
|
|
alarmRecordModel.IsHandled = "未处理";
|
|
}
|
|
else if (dataReader["IsHandled"].ToString() == "1")
|
|
{
|
|
alarmRecordModel.IsHandled = "已处理";
|
|
}
|
|
else
|
|
{
|
|
alarmRecordModel.IsHandled = "处理中";
|
|
}
|
|
alarmRecordViewModel2.TotalAlarmRecordList.Add(alarmRecordModel);
|
|
}
|
|
dataReader.Dispose();
|
|
alarmRecordViewModel2.RecordCount = index - 1;
|
|
alarmRecordViewModel2.TotalPage = (index - 1) <= 10 ? 1 : (int)Math.Ceiling((double)(index - 1) / 10);
|
|
for (int i = 0; i < (alarmRecordViewModel2.RecordCount < 10 ? alarmRecordViewModel2.RecordCount : 10); i++)
|
|
{
|
|
alarmRecordViewModel2.AlarmRecordList.Add(alarmRecordViewModel2.TotalAlarmRecordList[i]);
|
|
}
|
|
alarmRecordViewModel2.AlarmMsg = string.Format("共计{0}页,当前第{1}页", alarmRecordViewModel2.TotalPage, 1);
|
|
|
|
sql = String.Format("select * from underjuncbox_alarm_info where StationID = {0} ORDER by id desc limit 100", 3);
|
|
dataReader = DBHelper.ExecuteReader(sql, 1);
|
|
index = 1;
|
|
while (dataReader.Read())
|
|
{
|
|
AlarmRecordModel alarmRecordModel = new AlarmRecordModel();
|
|
alarmRecordModel.Index = index++;
|
|
alarmRecordModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]);
|
|
alarmRecordModel.ParaName = dataReader["ParaName"].ToString();
|
|
alarmRecordModel.ParaNum = Convert.ToInt32(string.IsNullOrEmpty(dataReader["ParaNum"].ToString()) ? 0 : dataReader["ParaNum"]);
|
|
alarmRecordModel.ParaContent = dataReader["ParaContent"].ToString();
|
|
alarmRecordModel.ProcessingMethod = dataReader["ProcessingMethod"].ToString();
|
|
if (dataReader["UrgencyLevel"].ToString() == "1")
|
|
{
|
|
alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleRed");
|
|
}
|
|
else if (dataReader["UrgencyLevel"].ToString() == "2")
|
|
{
|
|
alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleOrange");
|
|
}
|
|
else
|
|
{
|
|
alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleYellow");
|
|
}
|
|
if (dataReader["IsHandled"].ToString() == "0")
|
|
{
|
|
alarmRecordModel.IsHandled = "未处理";
|
|
}
|
|
else if (dataReader["IsHandled"].ToString() == "1")
|
|
{
|
|
alarmRecordModel.IsHandled = "已处理";
|
|
}
|
|
else
|
|
{
|
|
alarmRecordModel.IsHandled = "处理中";
|
|
}
|
|
alarmRecordViewModel3.TotalAlarmRecordList.Add(alarmRecordModel);
|
|
}
|
|
dataReader.Dispose();
|
|
alarmRecordViewModel3.RecordCount = index - 1;
|
|
alarmRecordViewModel3.TotalPage = (index - 1) <= 10 ? 1 : (int)Math.Ceiling((double)(index - 1) / 10);
|
|
for (int i = 0; i < (alarmRecordViewModel3.RecordCount < 10 ? alarmRecordViewModel3.RecordCount : 10); i++)
|
|
{
|
|
alarmRecordViewModel3.AlarmRecordList.Add(alarmRecordViewModel3.TotalAlarmRecordList[i]);
|
|
}
|
|
alarmRecordViewModel3.AlarmMsg = string.Format("共计{0}页,当前第{1}页", alarmRecordViewModel3.TotalPage, 1);
|
|
#endregion
|
|
|
|
|
|
//默认打开第一个界面
|
|
DoNavChanged("RealTimeDataView");
|
|
}
|
|
|
|
|
|
|
|
#region Page Switching
|
|
public void DoNavChanged(object obj)
|
|
{
|
|
if (obj.ToString() == "1" || obj.ToString() == "2" || obj.ToString() == "3" || obj.ToString() == "4" || obj.ToString() == "5") //说明是站点切换按钮
|
|
{
|
|
if (station_id == Convert.ToInt32(obj)) //如果切换的界面和之前一样 那就不切换
|
|
return;
|
|
station_id = Convert.ToInt32(obj);
|
|
}
|
|
else if (obj.ToString() == "")
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
if (Title_Name == obj.ToString())
|
|
return;
|
|
Title_Name = obj.ToString();
|
|
}
|
|
|
|
//切换页面之前清理一下内存
|
|
Tools.ClearMemory(this);
|
|
|
|
Type type = Type.GetType("FujianEarthquake.Views." + Title_Name);
|
|
ConstructorInfo cti = type.GetConstructor(System.Type.EmptyTypes);
|
|
FrameworkElement page = (FrameworkElement)cti.Invoke(null);
|
|
if (station_id == 1)
|
|
{
|
|
switch (Title_Name)
|
|
{
|
|
case "RealTimeDataView":
|
|
page.DataContext = realTimeDataViewModel1;
|
|
break;
|
|
//case "SystemEnvironDataView":
|
|
// systemEnvironDataViewModel1.RefreshFile(obj);
|
|
// page.DataContext = systemEnvironDataViewModel1;
|
|
// break;
|
|
//case "SystemMonitorDataView":
|
|
// page.DataContext = systemMonitorDataViewModel1;
|
|
// break;
|
|
//case "BoosterStationStateDataView":
|
|
// page.DataContext = boosterStationStateDataViewModel1;
|
|
// break;
|
|
//case "SeismometerStateDataView":
|
|
// MainViewModel.seismometerStateDataViewModel1.MainSeisIsChecked = true;
|
|
// page.DataContext = seismometerStateDataViewModel1;
|
|
// break;
|
|
//case "SeismometerParameterView":
|
|
// MainViewModel.seismometerParameterViewModel1.BackupSeisIsChecked = false;
|
|
// page.DataContext = seismometerParameterViewModel1;
|
|
// break;
|
|
//case "SystemControlView":
|
|
// MainSeisIsChecked = true;
|
|
// baseStationStateModel1.JunBox_Elect = (ImageSource)Application.Current.FindResource("NoDevice");
|
|
// ElectPowerOpenBtnIsEnabled = false;
|
|
// ElectPowerCloseBtnIsEnabled = false;
|
|
|
|
// BSSM = baseStationStateModel1;
|
|
// break;
|
|
case "LogRecordView":
|
|
page.DataContext = logRecordViewModel1;
|
|
break;
|
|
case "AlarmRecordView":
|
|
page.DataContext = alarmRecordViewModel1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
else if (station_id == 2)
|
|
{
|
|
switch (Title_Name)
|
|
{
|
|
case "RealTimeDataView":
|
|
page.DataContext = realTimeDataViewModel2;
|
|
break;
|
|
//case "SystemEnvironDataView":
|
|
// page.DataContext = systemEnvironDataViewModel2;
|
|
// break;
|
|
//case "SystemMonitorDataView":
|
|
// page.DataContext = systemMonitorDataViewModel2;
|
|
// break;
|
|
//case "BoosterStationStateDataView":
|
|
// page.DataContext = boosterStationStateDataViewModel2;
|
|
// break;
|
|
//case "SeismometerStateDataView":
|
|
// MainViewModel.seismometerStateDataViewModel2.MainSeisIsChecked = true;
|
|
// page.DataContext = seismometerStateDataViewModel2;
|
|
// break;
|
|
//case "SeismometerParameterView":
|
|
// MainViewModel.seismometerParameterViewModel1.BackupSeisIsChecked = false;
|
|
// page.DataContext = seismometerParameterViewModel2;
|
|
// break;
|
|
//case "SystemControlView":
|
|
// MainSeisIsChecked = true;
|
|
// ElectPowerOpenBtnIsEnabled = true;
|
|
// ElectPowerCloseBtnIsEnabled = true;
|
|
// BSSM = baseStationStateModel2;
|
|
// break;
|
|
case "LogRecordView":
|
|
page.DataContext = logRecordViewModel2;
|
|
break;
|
|
case "AlarmRecordView":
|
|
page.DataContext = alarmRecordViewModel2;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
else if (station_id == 3)
|
|
{
|
|
switch (Title_Name)
|
|
{
|
|
case "RealTimeDataView":
|
|
page.DataContext = realTimeDataViewModel3;
|
|
break;
|
|
case "LogRecordView":
|
|
page.DataContext = logRecordViewModel3;
|
|
break;
|
|
case "AlarmRecordView":
|
|
page.DataContext = alarmRecordViewModel3;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
//else if (station_id == 4)
|
|
//{
|
|
// switch (Title_Name)
|
|
// {
|
|
// case "RealTimeDataView":
|
|
// page.DataContext = realTimeDataViewModel4;
|
|
// break;
|
|
// case "LogRecordView":
|
|
// page.DataContext = logRecordViewModel4;
|
|
// break;
|
|
// case "AlarmRecordView":
|
|
// page.DataContext = alarmRecordViewModel4;
|
|
// break;
|
|
// default:
|
|
// break;
|
|
// }
|
|
//}
|
|
//else if (station_id == 5)
|
|
//{
|
|
// switch (Title_Name)
|
|
// {
|
|
// case "RealTimeDataView":
|
|
// page.DataContext = realTimeDataViewModel5;
|
|
// break;
|
|
// case "LogRecordView":
|
|
// page.DataContext = logRecordViewModel5;
|
|
// break;
|
|
// case "AlarmRecordView":
|
|
// page.DataContext = alarmRecordViewModel5;
|
|
// break;
|
|
// default:
|
|
// break;
|
|
// }
|
|
//}
|
|
this.PageContent = page;
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
}
|