ningshuxia
2025-03-27 afbafeecc1325bff849a17fb63b9b2b65b48ddf1
WinFrmUI/IBox.WinFrmUI/Form/IBoxFormRule.cs
@@ -1,8 +1,8 @@
using DevExpress.XtraEditors;
using DevExpress.XtraLayout;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using PBS.Model;
using PBS.Vmo;
using System.IO;
using Yw;
@@ -12,15 +12,7 @@
{
    public partial class IBoxFormRule : DocumentPage
    {
        private string startCode = "[&start&]";
        private string endCode = "[&end&]";
        private string paramCode = "[&param&]";
        private string getrulesCode = "getrules";
        private string saverulesCode = "saverules";
        private string addsignalCode = "addsignal";
        private string deletesignalCode = "deletesignal";
        private string addMonitorgroupCode = "addmonitorgroup";
        private string deletemonitorgroupCode = "deletemonitorgroup";
        FacilityVmo _facilities;
        public IBoxFormRule(FacilityVmo facilities = null)
@@ -39,6 +31,13 @@
            SetDataType();
            WaitFormHelper.ShowWaitForm();
        }
        public void HideButton()
        {
            //simpleButton1.Visible = simpleButton2.Visible = simpleButton5.Visible = simpleButton3.Visible = simpleButton4.Visible = simpleButton6.Visible = simpleButton7.Visible = simpleButton8.Visible = false;
            layoutControlItem3.Visibility = layoutControlItem4.Visibility = layoutControlItem2.Visibility = layoutControlItem5.Visibility = layoutControlItem6.Visibility =
                layoutControlItem7.Visibility = layoutControlItem8.Visibility = layoutControlItem9.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
        }
        private List<IBox.WinFrmUI.GeneralViewModel> signalTypes;
@@ -78,15 +77,59 @@
        public event EventHandler<string> SendData;
        private void SendText(string 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;
                    }
                    switch (smsg[0].Trim())
                    {
                        case IBoxHelper.getrulesCode:
                            {
                                var order = IBoxHelper.HttpGet(content);
                                var result = IBoxHelper.GetContent(order);
                                if (!string.IsNullOrEmpty(result))
                                {
                                    var model = JsonHelper.Json2Object<List<StationMonitorListGroupMobileDto>>(result);
                                    BindGrid(model, false);
                                }
                                break;
                            }
                        case IBoxHelper.saveparamsCode:
                        case IBoxHelper.addMonitorgroupCode:
                        case IBoxHelper.addsignalCode:
                            {
                                IBoxHelper.HttpPost(content);
                                break;
                            }
                        default:
                            IBoxHelper.HttpGet(content);
                            break;
                    }
                }
                else
                {
                    MessageBoxHelper.ShowWarning("网络连接失败,请检查网络");
                }
            }
        }
        private void EboxFormRule_Load(object sender, EventArgs e)
        {
            Thread.Sleep(500);
            SendText(startCode + getrulesCode + paramCode + endCode);
            SendText(IBoxHelper.startCode + IBoxHelper.getrulesCode + IBoxHelper.paramCode + IBoxHelper.endCode);
        }
        private List<DataGridMonitorViewModel> dataList = null;
        private List<StationMonitorListGroupMobileDto> stationMonitorLists;
        private List<DataGridMonitorViewModel> dataGridMonitorViewModels = new List<DataGridMonitorViewModel>();
@@ -146,45 +189,60 @@
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            Save();
        }
        public void Save()
        {
            stationMonitorLists.ForEach(list =>
            {
                list.MonitorList.ForEach(monitor =>
                {
                    list.MonitorList.ForEach(monitor =>
                    var s = dataGridMonitorViewModels.FirstOrDefault(d => d.SignalID == monitor.SignalID);
                    if (s != null)
                    {
                        var s = dataGridMonitorViewModels.FirstOrDefault(d => d.SignalID == monitor.SignalID);
                        if (s != null)
                        {
                            monitor.BusAddress = s.BusAddress;
                            monitor.BusType = s.BusType;
                            monitor.IsEnable = s.IsEnable;
                            monitor.Operator = s.Operator;
                            monitor.Operands = s.Operands;
                            monitor.Accuracy = s.Accuracy;
                            monitor.AdcType = s.AdcType;
                            monitor.UpperRange = s.UpperRange;
                            monitor.LowerRange = s.LowerRange;
                        }
                    });
                        monitor.BusAddress = s.BusAddress;
                        monitor.BusType = s.BusType;
                        monitor.IsEnable = s.IsEnable;
                        monitor.Operator = s.Operator;
                        monitor.Operands = s.Operands;
                        monitor.Accuracy = s.Accuracy;
                        monitor.AdcType = s.AdcType;
                        monitor.UpperRange = s.UpperRange;
                        monitor.LowerRange = s.LowerRange;
                    }
                });
            SendText(startCode + saverulesCode + paramCode + JsonHelper.Object2Json(stationMonitorLists) + endCode);
            });
            SendText(IBoxHelper.startCode + IBoxHelper.saverulesCode + IBoxHelper.paramCode + JsonHelper.Object2Json(stationMonitorLists) + IBoxHelper.endCode);
            MessageBoxHelper.ShowInfo("数据保存成功!");
        }
        private void simpleButton5_Click(object sender, EventArgs e)
        {
            //删除测点
            DeleteSignal();
        }
        public void DeleteSignal()
        {
            var m = this.gridView1.GetRow(this.gridView1.FocusedRowHandle) as DataGridMonitorViewModel;
            if (MessageBox.Show("确认删除测点 " + m.SignalName + " 吗?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                var md = new GeneralViewModel() { ID = m.SignalID };
                SendText(startCode + deletesignalCode + paramCode + JsonHelper.Object2Json(md) + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.deletesignalCode + IBoxHelper.paramCode + JsonHelper.Object2Json(md) + IBoxHelper.endCode);
                MessageBoxHelper.ShowInfo("操作成功");
                SendText(startCode + getrulesCode + paramCode + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.getrulesCode + IBoxHelper.paramCode + IBoxHelper.endCode);
            }
        }
        private void simpleButton4_Click(object sender, EventArgs e)
        {
            //修改测点
            EditSignal();
        }
        public void EditSignal()
        {
            var m = this.gridView1.GetRow(this.gridView1.FocusedRowHandle) as DataGridMonitorViewModel;
            var s = new Signal()
            {
@@ -209,42 +267,57 @@
            if (dlg.ShowDialog(this) == DialogResult.OK)
            {
                var signal = dlg.signal;
                SendText(startCode + addsignalCode + paramCode + JsonHelper.Object2Json(signal) + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.addsignalCode + IBoxHelper.paramCode + JsonHelper.Object2Json(signal) + IBoxHelper.endCode);
                MessageBoxHelper.ShowInfo("操作成功");
                SendText(startCode + getrulesCode + paramCode + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.getrulesCode + IBoxHelper.paramCode + IBoxHelper.endCode);
            }
        }
        private void simpleButton3_Click(object sender, EventArgs e)
        {
            //新增测点
            AddSignal();
        }
        public void AddSignal()
        {
            var m = this.gridView1.GetRow(this.gridView1.FocusedRowHandle) as DataGridMonitorViewModel;
            var dlg = new SignalEditForm(this.signalTypes, this.monitorPoints, null);
            if (dlg.ShowDialog(this) == DialogResult.OK)
            {
                var signal = dlg.signal;
                SendText(startCode + addsignalCode + paramCode + JsonHelper.Object2Json(signal) + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.addsignalCode + IBoxHelper.paramCode + JsonHelper.Object2Json(signal) + IBoxHelper.endCode);
                MessageBoxHelper.ShowInfo("操作成功");
                SendText(startCode + getrulesCode + paramCode + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.getrulesCode + IBoxHelper.paramCode + IBoxHelper.endCode);
            }
        }
        private void simpleButton7_Click(object sender, EventArgs e)
        {
            //删除机组
            DeleteGroup();
        }
        public void DeleteGroup()
        {
            var m = this.gridView1.GetRow(this.gridView1.FocusedRowHandle) as DataGridMonitorViewModel;
            if (MessageBox.Show("删除机组会同时删除机组绑定的所有测点,确认删除机组 " + m.GroupName + " 吗?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                var md = new GeneralViewModel() { ID = m.GroupID };
                SendText(startCode + deletemonitorgroupCode + paramCode + JsonHelper.Object2Json(md) + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.deletemonitorgroupCode + IBoxHelper.paramCode + JsonHelper.Object2Json(md) + IBoxHelper.endCode);
                MessageBoxHelper.ShowInfo("操作成功");
                SendText(startCode + getrulesCode + paramCode + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.getrulesCode + IBoxHelper.paramCode + IBoxHelper.endCode);
            }
        }
        private void simpleButton6_Click(object sender, EventArgs e)
        {
            //编辑机组
            EditGroup();
        }
        public void EditGroup()
        {
            var m = this.gridView1.GetRow(this.gridView1.FocusedRowHandle) as DataGridMonitorViewModel;
            var g = new IBox.WinFrmUI.MonitorPointGroup()
@@ -256,22 +329,27 @@
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                var group = dlg.group;
                SendText(startCode + addMonitorgroupCode + paramCode + JsonHelper.Object2Json(group) + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.addMonitorgroupCode + IBoxHelper.paramCode + JsonHelper.Object2Json(group) + IBoxHelper.endCode);
                MessageBoxHelper.ShowInfo("操作成功");
                SendText(startCode + getrulesCode + paramCode + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.getrulesCode + IBoxHelper.paramCode + IBoxHelper.endCode);
            }
        }
        private void simpleButton2_Click(object sender, EventArgs e)
        {
            //新增机组
            AddGroup();
        }
        public void AddGroup()
        {
            var dlg = new MonitorGroupEditForm(null);
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                var group = dlg.group;
                SendText(startCode + addMonitorgroupCode + paramCode + JsonHelper.Object2Json(group) + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.addMonitorgroupCode + IBoxHelper.paramCode + JsonHelper.Object2Json(group) + IBoxHelper.endCode);
                MessageBoxHelper.ShowInfo("操作成功");
                SendText(startCode + getrulesCode + paramCode + endCode);
                SendText(IBoxHelper.startCode + IBoxHelper.getrulesCode + IBoxHelper.paramCode + IBoxHelper.endCode);
            }
        }