using Yw; using Yw.WinFrmUI; namespace IBox.WinFrmUI { public partial class IBoxFormOverview : DocumentPage { private string startCode = "[&start&]"; private string endCode = "[&end&]"; private string paramCode = "[¶m&]"; private string getbaseCode = "getbase"; private string getrealrecordCode = "getrealrecord"; private string gethistoryrecordCode = "gethistoryrecord"; private string getalarmbydayCode = "getalarmbyday"; private string getbysignalidofdayrangeCode = "getbysignalidofdayrange"; //Stopwatch sw = new Stopwatch(); //string swstr=string.Empty; private List monitorValueAlarmRecords = new List(); private List dataGridMonitorViewModels = new List(); private List pumpRunStatusModels = new List(); private List pumpEnergyViewModels = new List(); public IBoxFormOverview() { this.PageTitle.Caption = "泵组总览"; InitializeComponent(); //this.webView21.Source = new Uri(AppDomain.CurrentDomain.BaseDirectory + "/web/html/bim.html"); //this.webView21.WebMessageReceived += WebMessageReceived; // _line.LegendTextPattern = ""; } //private void WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e) //{ // var j = JsonHelper.Json2Object(e.WebMessageAsJson); // var oper = new // { // oper = "setToken", // dataValue = "" // }; // switch (j.Oper) // { // case "loadCompleted": // InitWebItem(); // break; // } //} public void TestData(bool isBlue) { #region 测试数据 this.pumpRunStatusModels = new List(); this.pumpRunStatusModels.Add(new PumpRunStatusViewModel() { ID = 1, Name = "1#机组", BootTimes = 50, ContinutRunTime = 1000, DateTime = DateTime.Now, RunStatus = 1, TotalRunTime = 1000, }); this.pumpRunStatusModels.Add(new PumpRunStatusViewModel() { ID = 2, Name = "2#机组", BootTimes = 100, ContinutRunTime = 1300, DateTime = DateTime.Now, RunStatus = 0, TotalRunTime = 1800, }); this.pumpRunStatusModels.Add(new PumpRunStatusViewModel() { ID = 3, Name = "3#机组", BootTimes = 400, ContinutRunTime = 1500, DateTime = DateTime.Now, RunStatus = 1, TotalRunTime = 2000, }); this.pumpRunStatusModels.Add(new PumpRunStatusViewModel() { ID = 4, Name = "4#机组", BootTimes = 100, ContinutRunTime = 800, DateTime = DateTime.Now, RunStatus = 0, TotalRunTime = 1300, }); if (isBlue) { this.Invoke(new Action(() => { this.pumpRunStatusViewModelBindingSource.DataSource = this.pumpRunStatusModels; this.gridView3.RefreshData(); })); } else { this.pumpRunStatusViewModelBindingSource.DataSource = this.pumpRunStatusModels; this.gridView3.RefreshData(); } pumpEnergyViewModels = new List(); pumpEnergyViewModels.Add(new PumpEnergyViewModel() { Day = "2024-4-14", Electricity = 4172, Supply = 50510, EnergyOfWater = (decimal)82.04 }); pumpEnergyViewModels.Add(new PumpEnergyViewModel() { Day = "2024-4-15", Electricity = 3308, Supply = 32530, EnergyOfWater = (decimal)80.14 }); pumpEnergyViewModels.Add(new PumpEnergyViewModel() { Day = "2024-4-16", Electricity = 3378, Supply = 42630, EnergyOfWater = (decimal)73.34 }); pumpEnergyViewModels.Add(new PumpEnergyViewModel() { Day = "2024-4-17", Electricity = 4178, Supply = 51530, EnergyOfWater = (decimal)81.34 }); if (isBlue) { this.Invoke(new Action(() => { this.pumpEnergyViewModelBindingSource.DataSource = pumpEnergyViewModels; })); } else { this.pumpEnergyViewModelBindingSource.DataSource = pumpEnergyViewModels; } #endregion 测试数据 } private void InitWebItem() { //var bimAppKey = "GPg7TMfOJxF10QHm2PirACyI21nv0qJX"; //var bimAppSecret = "lakJejzxiKbsuBM7Pn0P0czfeYvXTnWW"; //var setting = new BLL.BaseConfig().GetAll(); //var settingC = setting.Where(c => c.Code == "BaseGrade").FirstOrDefault(); //var calcSetting = float.Parse(string.IsNullOrEmpty(settingC.Value) ? "0" : settingC.Value); //var ratioConfig = new BLL.RatioConfig().GetAll(); //var bimfaceClient = BimfaceClient.GetClient(bimAppKey, bimAppSecret); //var token = bimfaceClient.GetViewToken(2023011525093568); //webView21.CoreWebView2.PostWebMessageAsJson(JsonHelper.Object2Json(new //{ // oper = "setToken", // token = token, //})); } private void EboxForm_Load(object sender, EventArgs e) { //BluetoothHelper.GetInstance().SMR -= null; //BluetoothHelper.GetInstance().SMR += new BluetoothHelper.ShowMessReturn(GetReceive); //BluetoothHelper.GetInstance().ListenerData(); Thread.Sleep(500); SendText(startCode + getbaseCode + paramCode + endCode); } public void GetReceive(string msg) { if (!this.IsHandleCreated || this.IsDisposed || string.IsNullOrEmpty(msg)) return; if (msg.StartsWith("error:") && msg.Contains("目标主机坏了")) { MessageBoxHelper.ShowWarning("o 蓝牙设备连接失败,请重试!"); return; } if (!string.IsNullOrEmpty(msg) && msg.Contains(startCode)) { var order = msg.Replace(endCode, "").Replace(startCode, "").Trim(); SetOrder(order); } else MessageBoxHelper.ShowWarning("o 蓝牙设备连接失败"); } private void SetOrder(string order) { var smsg = order.Split(new string[] { paramCode }, StringSplitOptions.RemoveEmptyEntries); if (smsg.Length < 2) { return; } switch (smsg[0].Trim()) { case "getbase": var getbaselist = JsonHelper.Json2Object>(smsg[1].Trim()); BindGrid(getbaselist); WaitFormHelper.HideWaitForm(); var am = new GetAlarmByDayModel() { Day = DateTime.Now }; SendText(startCode + getalarmbydayCode + paramCode + JsonHelper.Object2Json(am) + endCode); //TestData(); break; case "gethistoryrecord": var gethistoryrecordlist = new List(); var b = smsg[1].Trim(); if (!string.IsNullOrEmpty(b)) { var c = b.Split('|'); foreach (var item in c) { var m = new MonitorRecord().FromString(item); gethistoryrecordlist.Add(m); } } break; case "getalarmbyday": //var getalarmbydaylist = JsonHelper.Json2Object>(smsg[1].Trim()); //monitorValueAlarmRecords = getalarmbydaylist; //this.bindingSource1.DataSource = dataGridMonitorViewModels; var getalarmbydaylist = new List(); var l = smsg[1].Trim(); if (!string.IsNullOrEmpty(l)) { var c = l.Split('|'); foreach (var item in c) { var ml = new MonitorValueAlarmRecord().FromString(item); getalarmbydaylist.Add(ml); } monitorValueAlarmRecords = getalarmbydaylist; } this.Invoke(new Action(() => { this.monitorValueAlarmRecordBindingSource.DataSource = monitorValueAlarmRecords; })); //this.gridView2.RefreshData(); break; case "getbysignalidofdayrange": var getbysignalidofdayrangelist = JsonHelper.Json2Object>(smsg[1].Trim()); break; } } private List dataList = null; public async Task BindGrid(List list, bool isBlue = true) { dataList = new List(); foreach (var item in list) { foreach (var ml in item.MonitorList) { dataList.Add(new DataGridMonitorViewModel() { DataTime = !ml.DataTime.HasValue ? "-" : ml.DataTime?.ToString("yyyy-MM-dd HH:mm:ss"), DataValue = string.IsNullOrEmpty(ml.DataValue) ? "-" : ml.DataValue, GroupID = item.ID, GroupName = item.Name, MonitorName = ml.Name, SignalID = ml.SignalID, UnitName = ml.UnitName, DataStatus = ml.DataStatus, }); } } if (isBlue) { this.Invoke(new Action(() => { dataGridMonitorViewModels = dataList; this.bindingSource1.DataSource = dataGridMonitorViewModels; //webView21.CoreWebView2.PostWebMessageAsJson(JsonHelper.Object2Json(new //{ // oper = "realData", // list = JsonHelper.Object2Json(dataList), //})); })); } else { dataGridMonitorViewModels = dataList; this.bindingSource1.DataSource = dataGridMonitorViewModels; //await webView21.EnsureCoreWebView2Async(); //webView21.CoreWebView2.PostWebMessageAsJson(JsonHelper.Object2Json(new //{ // oper = "realData", // list = JsonHelper.Object2Json(dataList), //})); } return 0; //WaitFrmHelper.HideWaitForm(); } private void GetRealData(object sender, EventArgs e) { SendText(startCode + getrealrecordCode + paramCode + endCode); } private void button2_Click(object sender, EventArgs e) { BluetoothHelper.GetInstance().Close(); } private void tabbedControlGroup1_SelectedPageChanged(object sender, DevExpress.XtraLayout.LayoutTabPageChangedEventArgs e) { //MessageBox.Show(tabbedControlGroup1.SelectedTabPage.Tag.ToString()); } private void gridControl2_Click(object sender, EventArgs e) { } private void gridView3_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { var b = gridView3.GetRow(e.RowHandle) as PumpRunStatusViewModel; if (e.Column.FieldName.Equals("ContinutRunTime")) { e.DisplayText = ConvertToText(b.ContinutRunTime); } if (e.Column.FieldName.Equals("TotalRunTime")) { e.DisplayText = ConvertToText(b.TotalRunTime); } if (e.Column.FieldName.Equals("RunStatus")) { var s = "关机"; e.Appearance.ForeColor = Color.LightSlateGray; switch (b.RunStatus) { case 1: s = "开机"; e.Appearance.ForeColor = Color.Green; break; } e.DisplayText = s; } } private string ConvertToText(long? minite) { if (!minite.HasValue) return ""; long minites = minite.Value; long days = minites / 60 / 24; long hours = 0; if (days > 0) hours = (minites - (days * 1440)) / 60; else hours = minites / 60; long minitesLeft = minites % 60; if (days > 0) return $"{days}天{hours}小时{minitesLeft}分钟"; else return $"{hours}小时{minitesLeft}分钟"; } public event EventHandler SendData; private void SendText(string content) { //BluetoothHelper.GetInstance().SendData(content); SendData?.Invoke(null, content); } } }