using DevExpress.XtraCharts;
|
using DevExpress.XtraEditors;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
|
namespace IStation.WinFormUI.MonitorDataSet
|
{
|
public partial class FilterDataMgrPage : DocumentPage
|
{
|
public FilterDataMgrPage()
|
{
|
InitializeComponent();
|
_boxSelHelper = new ChartBoxSelHelper(this.chartControl1);
|
_boxSelHelper.BoxSelCompletedEvent += _boxSelHelper_BoxSelCompletedEvent;
|
this.monitorPointTreeListCtrl1.SelectEvent += MonitorPointTreeListCtrl1_SelectEvent;
|
this.PageTitle.Caption = "数据筛查";
|
}
|
|
|
#region 当前视图类
|
public class CurrentViewModel
|
{
|
public CurrentViewModel() { }
|
public CurrentViewModel(Model.SignalRecord rhs)
|
{
|
this.DataTime = rhs.Time;
|
this.DataValue = rhs.Value;
|
}
|
|
public DateTime DataTime { get; set; }
|
public double DataValue { get; set; }
|
}
|
#endregion
|
|
/// <summary>
|
/// 初始化数据
|
/// </summary>
|
public void InitialDataSource(long projectId,long sceneId, Model.LogicTree logic)
|
{
|
_projectId = projectId;
|
_sceneId = sceneId;
|
this.monitorPointTreeListCtrl1.SetBindingData(_projectId, logic.LogicType, logic.LogicId);
|
}
|
|
private SwiftPlotDiagram _diagram
|
{
|
get { return this.chartControl1.Diagram as SwiftPlotDiagram; }
|
}
|
private Series _series
|
{
|
get
|
{
|
return this.chartControl1.Series[0];
|
}
|
}
|
|
private long _projectId;
|
private long _sceneId;
|
private Model.Signal _model = null;
|
private List<CurrentViewModel> _allBindList = null;
|
private ChartBoxSelHelper _boxSelHelper = null;//框选辅助类
|
|
private void MonitorPointTreeListCtrl1_SelectEvent(string objectType, object model, MouseEventArgs arg3)
|
{
|
/*var lays = this.chartControl1.ShowOverlay();
|
var monitorPointExSignalList = model as Model.MonitorPointExSignalList;
|
_model = monitorPointExSignalList?.SignalList.First();
|
if (_model == null)
|
{
|
this.labCaption.Text = "未知";
|
_diagram.AxisY.Title.Text = "值";
|
_allBindList = null;
|
}
|
else
|
{
|
this.labCaption.Text = _model.Name;
|
_diagram.AxisY.Title.Text = UnitValueHelper.Get(_projectId,_model);
|
var packet = new BLL.MonitorDataSet().GetSignalRecordPacket(_projectId,_sceneId, _model.MonitorPointId, _model.Id);
|
if (packet == null|| packet.RecordList==null)
|
{
|
_allBindList = new List<CurrentViewModel>();
|
lays.Close();
|
return;
|
}
|
else
|
{
|
_allBindList = packet.RecordList.Where(x => x.Value != IStation.Default.Abnormal&&x.Value!= IStation.Default.Error)?.Select(x => new CurrentViewModel(x)).ToList();
|
}
|
|
}
|
if (_allBindList == null)
|
_allBindList = new List<CurrentViewModel>();
|
this.currentViewModelBindingSource.DataSource = _allBindList;
|
this.currentViewModelBindingSource.ResetBindings(false);
|
lays.Close();*/
|
|
|
|
|
var lays = this.chartControl1.ShowOverlay();
|
var monitorPointExSignalList = model as Model.MonitorPointExSignalList;
|
_model = monitorPointExSignalList?.SignalList.First();
|
if (_model == null)
|
{
|
this.labCaption.Text = "未知";
|
_diagram.AxisY.Title.Text = "值";
|
_allBindList = null;
|
}
|
else
|
{
|
this.labCaption.Text = _model.Name;
|
_diagram.AxisY.Title.Text = "高度/m";
|
var packet = new BLL.MonitorDataSet().GetSignalRecordPacket(_projectId, _sceneId, _model.MonitorPointId, _model.Id);
|
if (packet == null || packet.RecordList == null)
|
{
|
_allBindList = new List<CurrentViewModel>();
|
lays.Close();
|
return;
|
}
|
else
|
{
|
_allBindList = packet.RecordList.Where(x => x.Value != IStation.Default.Abnormal && x.Value != IStation.Default.Error)?.Select(x => new CurrentViewModel(x)).ToList();
|
}
|
|
}
|
if (_allBindList == null)
|
_allBindList = new List<CurrentViewModel>();
|
this.currentViewModelBindingSource.DataSource = _allBindList;
|
this.currentViewModelBindingSource.ResetBindings(false);
|
lays.Close();
|
}
|
|
//框选完成
|
private void _boxSelHelper_BoxSelCompletedEvent(MouseEventArgs e)
|
{
|
_boxSelSeriesPointList = _boxSelHelper?.CalcuDataTimeSelSeriesPoints(new List<Series>() { _series });
|
if (_boxSelSeriesPointList == null || _boxSelSeriesPointList.Count < 1)
|
{
|
_boxSelHelper?.CloseBoxSel();
|
}
|
else
|
{
|
this.popBoxSel.ShowPopup(MousePosition);
|
}
|
}
|
private List<SeriesPoint> _boxSelSeriesPointList = null;
|
|
//删除
|
private void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (_boxSelSeriesPointList == null || _boxSelSeriesPointList.Count < 1)
|
return;
|
var lays = this.chartControl1.ShowOverlay();
|
var dataTimeList = _boxSelSeriesPointList.Select(x => x.DateTimeArgument).ToList();
|
var bol = new BLL.MonitorDataSet().SetAbnormal(_projectId,_sceneId, _model.MonitorPointId, _model.Id, dataTimeList,IStation.Default.Abnormal);
|
if (!bol)
|
{
|
lays.Close();
|
XtraMessageBox.Show("删除失败!");
|
return;
|
}
|
_allBindList.RemoveAll(x => dataTimeList.Contains(x.DataTime));
|
this.currentViewModelBindingSource.ResetBindings(false);
|
lays.Close();
|
}
|
|
//关闭
|
private void popBoxSel_CloseUp(object sender, EventArgs e)
|
{
|
_boxSelHelper?.CloseBoxSel();
|
}
|
|
//框选删除
|
private void barBtnBoxSel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
_boxSelHelper?.StartBoxSel();
|
}
|
|
//区间删除
|
private void barBtnRangeDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
XtraMessageBox.Show("未恢复");
|
/*var dlg = new SetRangeDlg();
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
var dataTimeList = _allBindList?.Where(x => x.DataValue>=dlg.MinValue&&x.DataValue<=dlg.MaxValue).Select(x => x.DataTime).ToList();
|
if (dataTimeList == null || dataTimeList.Count < 1)
|
{
|
XtraMessageBox.Show("未检索到区间值!");
|
return;
|
}
|
var lays = this.chartControl1.ShowOverlay();
|
var bol = new BLL.MonitorDataSet().SetAbnormal(_projectId,_sceneId, _model.MonitorPointId, _model.Id, dataTimeList,IStation.Default.Abnormal);
|
if (!bol)
|
{
|
lays.Close();
|
XtraMessageBox.Show("删除失败!");
|
return;
|
}
|
_allBindList.RemoveAll(x => dataTimeList.Contains(x.DataTime));
|
this.currentViewModelBindingSource.ResetBindings(false);
|
|
lays.Close();
|
} */
|
}
|
|
//清除负值
|
private void barBtnClearNegative_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (XtraMessageBox.Show("确认清除所有负值吗?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
|
{
|
return;
|
}
|
var dataTimeList = _allBindList?.Where(x => x.DataValue < 0).Select(x=>x.DataTime).ToList();
|
if (dataTimeList == null || dataTimeList.Count < 1)
|
{
|
XtraMessageBox.Show("未检索到负值!");
|
return;
|
}
|
var lays = this.chartControl1.ShowOverlay();
|
var bol = new BLL.MonitorDataSet().SetAbnormal(_projectId,_sceneId, _model.MonitorPointId, _model.Id, dataTimeList,IStation.Default.Abnormal);
|
if (!bol)
|
{
|
lays.Close();
|
XtraMessageBox.Show("删除失败!");
|
return;
|
}
|
_allBindList.RemoveAll(x => dataTimeList.Contains(x.DataTime));
|
this.currentViewModelBindingSource.ResetBindings(false);
|
|
lays.Close();
|
}
|
|
//清除零值
|
private void barBtnClearZero_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (XtraMessageBox.Show("确认清除所有零值吗?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
|
{
|
return;
|
}
|
var dataTimeList = _allBindList?.Where(x => x.DataValue == 0).Select(x => x.DataTime).ToList();
|
if (dataTimeList == null || dataTimeList.Count < 1)
|
{
|
XtraMessageBox.Show("未检索到零值!");
|
return;
|
}
|
var lays = this.chartControl1.ShowOverlay();
|
var bol = new BLL.MonitorDataSet().SetAbnormal(_projectId, _sceneId, _model.MonitorPointId, _model.Id, dataTimeList, IStation.Default.Abnormal);
|
if (!bol)
|
{
|
lays.Close();
|
XtraMessageBox.Show("删除失败!");
|
return;
|
}
|
_allBindList.RemoveAll(x => dataTimeList.Contains(x.DataTime));
|
this.currentViewModelBindingSource.ResetBindings(false);
|
|
lays.Close();
|
}
|
|
//图标的右键菜单
|
private void chartControl1_MouseClick(object sender, MouseEventArgs e)
|
{
|
if (e.Button == MouseButtons.Right)
|
{
|
this.popMain.ShowPopup(MousePosition);
|
}
|
}
|
|
|
}
|
}
|