qin
2025-03-20 00ab1b5282ada6ffdc78b3dd46f0ce08726a51e6
WinFrmUI/IBox.WinFrmUI/Form/IBoxFormMonitor.cs
@@ -12,14 +12,7 @@
    public partial class IBoxFormMonitor : DocumentPage
    {
        private string startCode = "[&start&]";
        private string endCode = "[&end&]";
        private string paramCode = "[&param&]";
        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;
@@ -28,7 +21,10 @@
        private List<DataGridMonitorViewModel> dataGridMonitorViewModels = new List<DataGridMonitorViewModel>();
        private List<PumpRunStatusViewModel> pumpRunStatusModels = new List<PumpRunStatusViewModel>();
        private List<PumpEnergyViewModel> pumpEnergyViewModels = new List<PumpEnergyViewModel>();
        public void HideButton()
        {
            layoutControlItem10.Visibility = layoutControlItem3.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
        }
        public IBoxFormMonitor()
        {
            this.PageTitle.Caption = "实时监测";
@@ -43,198 +39,18 @@
            _points.ShowInLegend = false;
            _line.ShowInLegend = true;
            // _line.LegendTextPattern = "";
        }
        //private void WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e)
        //{
        //    var j = JsonHelper.Json2Object<FixationReceivedViewModel>(e.WebMessageAsJson);
        //    var oper = new
        //    {
        //        oper = "setToken",
        //        dataValue = ""
        //    };
        //    switch (j.Oper)
        //    {
        //        case "loadCompleted":
        //            break;
        //    }
        //}
        private void TestData()
        {
            #region 测试数据
            this.pumpRunStatusModels = new List<PumpRunStatusViewModel>();
            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,
            });
            this.Invoke(new Action(() =>
            {
                this.pumpRunStatusViewModelBindingSource.DataSource = this.pumpRunStatusModels;
            }));
            pumpEnergyViewModels = new List<PumpEnergyViewModel>();
            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
            });
            this.Invoke(new Action(() =>
            {
                this.pumpEnergyViewModelBindingSource.DataSource = pumpEnergyViewModels;
            }));
            #endregion 测试数据
        }
        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);
            SendText(IBoxHelper.startCode + IBoxHelper.getbaseCode + IBoxHelper.paramCode + IBoxHelper.endCode);
            _diagram.EnableAxisXScrolling = true;
            _diagram.EnableAxisYScrolling = true;
            _diagram.EnableAxisXZooming = true;
            _diagram.EnableAxisYZooming = true;
            //SetTimer();
        }
        public void GetReceive(string msg)
        {
            if (!this.IsHandleCreated || this.IsDisposed || string.IsNullOrEmpty(msg)) return;
            if (msg.StartsWith("error:") && msg.Contains("目标主机坏了"))
            {
                MessageBoxHelper.ShowError("m 蓝牙设备连接失败,请重试!"); return;
            }
            if (!string.IsNullOrEmpty(msg) && msg.Contains(startCode))
            {
                var order = msg.Replace(endCode, "").Replace(startCode, "").Trim();
                SetOrder(order);
            }
            else MessageBoxHelper.ShowError("m 蓝牙设备连接失败!");
        }
        private void SetOrder(string order)
        {
            var smsg = order.Split(new string[] { paramCode }, StringSplitOptions.RemoveEmptyEntries);
            if (smsg.Length < 2)
            {
                _diagram.DefaultPane.Visibility = ChartElementVisibility.Hidden;
                return;
            }
            _diagram.DefaultPane.Visibility = ChartElementVisibility.Visible;
            switch (smsg[0].Trim())
            {
                case "getbase":
                    var getbaselist = JsonHelper.Json2Object<List<StationMonitorListGroupMobileDto>>(smsg[1].Trim());
                    BindGrid(getbaselist);
                    WaitFormHelper.HideWaitForm();
                    break;
                case "gethistoryrecord":
                    var b = smsg[1].Trim();
                    var gethistoryrecordlist = new List<MonitorRecord>();
                    if (!string.IsNullOrEmpty(b))
                    {
                        var c = b.Split('|');
                        foreach (var item in c)
                        {
                            var m = new MonitorRecord().FromString(item);
                            gethistoryrecordlist.Add(m);
                        }
                    }
                    //SetChartData(gethistoryrecordlist);
                    break;
                case "getalarmbyday":
                    //var getalarmbydaylist = JsonHelper.Json2Object<List<MonitorValueAlarmRecord>>(smsg[1].Trim());
                    //monitorValueAlarmRecords = getalarmbydaylist;
                    //this.bindingSource1.DataSource = dataGridMonitorViewModels;
                    var l = smsg[1].Trim();
                    SetAlarmByDay(l);
                    //this.gridView2.RefreshData();
                    break;
                case "getbysignalidofdayrange":
                    var getbysignalidofdayrangelist = JsonHelper.Json2Object<List<MonitorValueAlarmRecord>>(smsg[1].Trim());
                    break;
                case "getrealrecord":
                    var getrealrecordlist = JsonHelper.Json2Object<List<MonitorRealRecord>>(smsg[1].Trim());
                    SetRealRecord(getrealrecordlist);
                    break;
            }
        }
        public void SetAlarmByDay(string l, bool isBlue = true)
@@ -292,6 +108,11 @@
        }
        private List<DataGridMonitorViewModel> dataList = null;
        /// <summary>
        /// 绑定数据
        /// </summary>
        /// <param name="list"></param>
        /// <param name="isBlue"></param>
        public void BindGrid(List<StationMonitorListGroupMobileDto> list, bool isBlue = true)
        {
            dataList = new List<DataGridMonitorViewModel>();
@@ -328,9 +149,6 @@
                this.gridView1.RefreshData();
            }
            //var am = new GetAlarmByDayModel() { Day = DateTime.Now };
            //SendText(startCode + getalarmbydayCode + paramCode + JsonHelper.Object2Json(am) + endCode);
            //WaitFrmHelper.HideWaitForm();
        }
        private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
@@ -340,13 +158,20 @@
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            Search();
        }
        /// <summary>
        /// 查询
        /// </summary>
        public void Search()
        {
            if (currModel == null)
            {
                MessageBoxHelper.ShowWarning("请先选中监测数据!");
                return;
            }
            GetHistoryData();
            //WaitFrmHelper.ShowWaitForm();
        }
        private void simpleButton2_Click(object sender, EventArgs e)
@@ -391,6 +216,12 @@
        { get { return this.chartControl1.Diagram as XYDiagram; } }
        List<MonitorRecord> _realList = null;
        /// <summary>
        /// 绑定实时数据
        /// </summary>
        /// <param name="list"></param>
        /// <param name="isBlue"></param>
        public void SetChartData(List<MonitorRecord> list, bool isBlue)
        {
            _realList = list;
@@ -440,14 +271,12 @@
        private void gridView1_DoubleClick(object sender, EventArgs e)
        {
            //WaitFrmHelper.ShowWaitForm();
            var r = this.gridView1.GetFocusedRow() as DataGridMonitorViewModel;
            currModel = r;
            //sw.Restart();
            GetHistoryData();
        }
        private void GetHistoryData()
        public void GetHistoryData()
        {
            var m = new MonitorHistoryQuery()
            {
@@ -455,45 +284,12 @@
                StartTime = dateEdit1.Text,//.Equals(DateTime.Now.ToString("yyyy-MM-dd")) ? DateTime.Now.AddMinutes(-20).ToString("yyyy-MM-dd HH:mm:ss") : dateEdit1.Text,
                EndTime = dateEdit2.Text//.Equals(DateTime.Now.ToString("yyyy-MM-dd")) ? DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") : dateEdit2.Text,
            };
            SendText(startCode + gethistoryrecordCode + paramCode + JsonHelper.Object2Json(m) + endCode);
        }
        private void GetAlarmRange()
        {
            var m = new GetBySignalIDOfDayRangeModel()
            {
                SignalID = currModel.SignalID,
                StartDay = DateTime.Parse(dateEdit1.Text),
                EndDay = DateTime.Parse(dateEdit1.Text),
            };
            SendText(startCode + getbysignalidofdayrangeCode + paramCode + JsonHelper.Object2Json(m) + endCode);
        }
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            SetTimer();
        }
        private void SetTimer()
        {
            if (dataList == null)
            {
                return;
            }
            timer1.Interval = 5000;
            timer1.Enabled = true;
            timer1.Tick += new EventHandler(GetRealData);
            SendText(IBoxHelper.startCode + IBoxHelper.gethistoryrecordCode + IBoxHelper.paramCode + JsonHelper.Object2Json(m) + IBoxHelper.endCode);
        }
        private void GetRealData(object sender, EventArgs e)
        {
            SendText(startCode + getrealrecordCode + paramCode + endCode);
        }
        private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            SetTimer();
            SendText(IBoxHelper.startCode + IBoxHelper.getrealrecordCode + IBoxHelper.paramCode + IBoxHelper.endCode);
        }
        private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
@@ -506,25 +302,76 @@
            }
        }
        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)
        {
        }
        public event EventHandler<string> SendData;
        private void SendText(string content)
        {
            //BluetoothHelper.GetInstance().SendData(content);
            SendData?.Invoke(null, content);
            if (SendData != null)
            {
                SendData?.Invoke(null, content);
            }
            else
            {
                if (IBoxHelper.Ping())
                {
                    var smsg = content.Split(new string[] { IBoxHelper.paramCode, IBoxHelper.startCode }, StringSplitOptions.RemoveEmptyEntries);
                    if (smsg.Length < 2)
                    {
                        return;
                    }
                    var order = IBoxHelper.HttpGet(content);
                    var result = IBoxHelper.GetContent(order);
                    switch (smsg[0].Trim())
                    {
                        case IBoxHelper.getbaseCode:
                            {
                                if (!string.IsNullOrEmpty(result))
                                {
                                    var model = JsonHelper.Json2Object<List<StationMonitorListGroupMobileDto>>(result);
                                    BindGrid(model, false);
                                }
                                break;
                            }
                        case IBoxHelper.getrealrecordCode:
                            {
                                if (!string.IsNullOrEmpty(result))
                                {
                                    var getrealrecordlist = JsonHelper.Json2Object<List<MonitorRealRecord>>(result);
                                    SetRealRecord(getrealrecordlist, false);
                                }
                                break;
                            }
                        case IBoxHelper.gethistoryrecordCode:
                            {
                                if (!string.IsNullOrEmpty(result))
                                {
                                    var b = result.Split('|')[1];
                                    var gethistoryrecordlist = new List<MonitorRecord>();
                                    if (!string.IsNullOrEmpty(b))
                                    {
                                        var c = b.Split('|');
                                        foreach (var item in c)
                                        {
                                            var m = new MonitorRecord().FromString(item);
                                            gethistoryrecordlist.Add(m);
                                        }
                                    }
                                    SetChartData(gethistoryrecordlist, false);
                                }
                                break;
                            }
                        default:
                            IBoxHelper.HttpGet(content);
                            break;
                    }
                }
                else
                {
                    MessageBoxHelper.ShowWarning("网络连接失败,请检查网络");
                }
            }
        }
        private void simpleButton5_Click(object sender, EventArgs e)
@@ -532,6 +379,9 @@
            ExportXLS();
        }
        /// <summary>
        /// 导出Excel
        /// </summary>
        public void ExportXLS()
        {
            try