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;
|
using Yw.WinFrmUI;
|
|
namespace IBox.WinFrmUI
|
{
|
public partial class IBoxFormRule : DocumentPage
|
{
|
|
FacilityVmo _facilities;
|
|
public IBoxFormRule(FacilityVmo facilities = null)
|
{
|
this.PageTitle.Caption = "规则配置";
|
if (facilities == null)
|
{
|
facilities = new FacilityVmo()
|
{
|
ID = 1,
|
Name = "临时设施"
|
};
|
}
|
_facilities = facilities;
|
InitializeComponent();
|
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;
|
private List<IBox.WinFrmUI.MonitorPointGroup> monitorPoints;
|
|
public void SetDataType()
|
{
|
var dics = new dModbus().ModbusDataType();
|
foreach (var d in dics)
|
{
|
repositoryItemImageComboBox1.Items.Add(d.Value, d.Key, -1);
|
}
|
|
var adcDics = new dModbus().AdcType();
|
foreach (var adc in adcDics)
|
{
|
repositoryItemImageComboBox3.Items.Add(adc.Value, adc.Key, -1);
|
}
|
|
var operDics = new dModbus().OperType();
|
foreach (var oper in operDics)
|
{
|
repositoryItemImageComboBox2.Items.Add(oper.Value, oper.Key, -1);
|
}
|
}
|
|
public void SetSignalType(List<IBox.WinFrmUI.GeneralViewModel> list)
|
{
|
this.signalTypes = list;
|
}
|
|
public void SetMonitorPoint(List<IBox.WinFrmUI.MonitorPointGroup> list)
|
{
|
this.monitorPoints = list;
|
}
|
|
public event EventHandler<string> SendData;
|
private void SendText(string content)
|
{
|
SendData?.Invoke(null, content);
|
}
|
|
private void EboxFormRule_Load(object sender, EventArgs e)
|
{
|
Thread.Sleep(500);
|
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>();
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
/// <param name="list"></param>
|
/// <param name="isBlue"></param>
|
public void BindGrid(List<StationMonitorListGroupMobileDto> list, bool isBlue = true)
|
{
|
stationMonitorLists = list;
|
|
dataList = new List<DataGridMonitorViewModel>();
|
foreach (var item in list)
|
{
|
foreach (var ml in item.MonitorList)
|
{
|
dataList.Add(new DataGridMonitorViewModel()
|
{
|
GroupID = item.ID,
|
GroupName = item.Name,
|
MonitorName = ml.Name,
|
SignalID = ml.SignalID,
|
UnitName = ml.UnitName,
|
BusAddress = ml.BusAddress,
|
BusType = ml.BusType,
|
IsEnable = ml.IsEnable,
|
Operator = ml.Operator,
|
Operands = ml.Operands,
|
Accuracy = ml.Accuracy,
|
AdcType = ml.AdcType,
|
UpperRange = ml.UpperRange,
|
LowerRange = ml.LowerRange,
|
Flags = ml.Flags,
|
SignalName = ml.Name,
|
Description = ml.Description,
|
SignalTypeID = ml.SignalTypeID,
|
|
});
|
}
|
}
|
if (isBlue)
|
{
|
this.Invoke(new Action(() =>
|
{
|
dataGridMonitorViewModels = dataList;
|
this.dataGridMonitorViewModelBindingSource.DataSource = dataGridMonitorViewModels;
|
}));
|
}
|
else
|
{
|
dataGridMonitorViewModels = dataList;
|
this.dataGridMonitorViewModelBindingSource.DataSource = dataGridMonitorViewModels;
|
}
|
WaitFormHelper.HideWaitForm();
|
}
|
|
private void simpleButton1_Click(object sender, EventArgs e)
|
{
|
Save();
|
}
|
|
public void Save()
|
{
|
stationMonitorLists.ForEach(list =>
|
{
|
list.MonitorList.ForEach(monitor =>
|
{
|
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;
|
}
|
});
|
});
|
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(IBoxHelper.startCode + IBoxHelper.deletesignalCode + IBoxHelper.paramCode + JsonHelper.Object2Json(md) + IBoxHelper.endCode);
|
MessageBoxHelper.ShowInfo("操作成功");
|
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()
|
{
|
BusAddress = m.BusAddress,
|
Accuracy = m.Accuracy,
|
AdcType = m.AdcType,
|
BusType = m.BusType,
|
Description = m.Description,
|
Flags = m.Flags?.Split(',').ToList(),
|
IsEnable = m.IsEnable,
|
GroupID = m.GroupID,
|
ID = m.SignalID,
|
LowerRange = m.LowerRange,
|
MonitorPointID = m.MonitorID,
|
Name = m.SignalName,
|
Operands = m.Operands,
|
Operator = m.Operator.Value,
|
SignalTypeID = m.SignalTypeID,
|
UpperRange = m.UpperRange,
|
};
|
var dlg = new SignalEditForm(this.signalTypes, this.monitorPoints, s);
|
if (dlg.ShowDialog(this) == DialogResult.OK)
|
{
|
var signal = dlg.signal;
|
SendText(IBoxHelper.startCode + IBoxHelper.addsignalCode + IBoxHelper.paramCode + JsonHelper.Object2Json(signal) + IBoxHelper.endCode);
|
MessageBoxHelper.ShowInfo("操作成功");
|
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(IBoxHelper.startCode + IBoxHelper.addsignalCode + IBoxHelper.paramCode + JsonHelper.Object2Json(signal) + IBoxHelper.endCode);
|
MessageBoxHelper.ShowInfo("操作成功");
|
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(IBoxHelper.startCode + IBoxHelper.deletemonitorgroupCode + IBoxHelper.paramCode + JsonHelper.Object2Json(md) + IBoxHelper.endCode);
|
MessageBoxHelper.ShowInfo("操作成功");
|
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()
|
{
|
ID = m.GroupID,
|
Name = m.GroupName
|
};
|
var dlg = new MonitorGroupEditForm(g);
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
var group = dlg.group;
|
SendText(IBoxHelper.startCode + IBoxHelper.addMonitorgroupCode + IBoxHelper.paramCode + JsonHelper.Object2Json(group) + IBoxHelper.endCode);
|
MessageBoxHelper.ShowInfo("操作成功");
|
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(IBoxHelper.startCode + IBoxHelper.addMonitorgroupCode + IBoxHelper.paramCode + JsonHelper.Object2Json(group) + IBoxHelper.endCode);
|
MessageBoxHelper.ShowInfo("操作成功");
|
SendText(IBoxHelper.startCode + IBoxHelper.getrulesCode + IBoxHelper.paramCode + IBoxHelper.endCode);
|
}
|
}
|
|
/// <summary>
|
/// 导出
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void simpleButton8_Click(object sender, EventArgs e)
|
{
|
ExportXLS();
|
}
|
|
/// <summary>
|
/// 导出Excel
|
/// </summary>
|
public void ExportXLS()
|
{
|
try
|
{
|
if (dataGridMonitorViewModels == null || dataGridMonitorViewModels.Count == 0)
|
{
|
XtraMessageBox.Show("没有可导出的数据!");
|
return;
|
}
|
|
var dlg = new SaveFileDialog();
|
dlg.Filter = "EXCEL 文件(*.xls)|*.xls";
|
if (dlg.ShowDialog() != DialogResult.OK)
|
return;
|
|
HSSFWorkbook theBook = new HSSFWorkbook();
|
var theSheet1 = theBook.CreateSheet("Sheet1");
|
IRow rowHead = theSheet1.CreateRow(0);
|
rowHead.CreateCell(0).SetCellValue(_facilities.ID + "," + _facilities.Name);
|
CellRangeAddress region = new CellRangeAddress(0, 0, 0, 3);
|
theSheet1.AddMergedRegion(region);
|
|
IRow rowTile = theSheet1.CreateRow(1);
|
rowTile.CreateCell(0).SetCellValue("机组ID");
|
rowTile.CreateCell(1).SetCellValue("机组名称");
|
rowTile.CreateCell(2).SetCellValue("测点ID");
|
rowTile.CreateCell(3).SetCellValue("测点名称");
|
|
|
for (int rowIndex = 2; rowIndex <= dataGridMonitorViewModels.Count + 1; rowIndex++)
|
{
|
int col = 0;
|
IRow row = theSheet1.CreateRow(rowIndex);
|
|
row.CreateCell(col).SetCellValue(dataGridMonitorViewModels[rowIndex - 2].GroupID.ToString());
|
col++;
|
row.CreateCell(col).SetCellValue(dataGridMonitorViewModels[rowIndex - 2].GroupName);
|
col++;
|
row.CreateCell(col).SetCellValue(dataGridMonitorViewModels[rowIndex - 2].SignalID.ToString());
|
col++;
|
row.CreateCell(col).SetCellValue(dataGridMonitorViewModels[rowIndex - 2].SignalName);
|
col++;
|
}
|
|
//强制Excel在打开时重新计算所有公式
|
theSheet1.ForceFormulaRecalculation = true;
|
using (FileStream fs = File.OpenWrite(dlg.FileName))
|
{
|
theBook.Write(fs);
|
}
|
XtraMessageBox.Show("导出成功");
|
|
}
|
catch (Exception ex)
|
{
|
XtraMessageBox.Show(ex.ToString());
|
}
|
}
|
}
|
}
|