private void btn_DeleteData_Click(object sender, EventArgs e) { //if (Gloabl.Userinfo.Level != EM_UserType.Admin) //{ // XtraMessageBox.Show("只有管理员才能删除数据"); // return; //} if (comboBoxEdit_ID.Text.Trim() == string.Empty) { XtraMessageBox.Show("请先查询数据"); return; } TimeSpan ts = dateEdit_End.DateTime - dateEdit_Start.DateTime; TimeSpan ts1 = new TimeSpan(0, 0, 0, 1); if (ts < ts1) { XtraMessageBox.Show("请先查询数据"); return; } if (XtraMessageBox.Show("数据将要被删除,是否继续", "注意", MessageBoxButtons.YesNo) != System.Windows.Forms.DialogResult.Yes) { return; } Equipment eq = mainList.Find(c => c.Address == Convert.ToInt64(comboBoxEdit_ID.Text)); int total = EquipmentDataDal.DeleteByTime(eq.ID, dateEdit_Start.DateTime, dateEdit_End.DateTime); gridControl_History.DataSource = null; chartControl_History.Series[0].Points.Clear(); XtraMessageBox.Show(string.Format("本次删除{0}条数据", total)); }
private static void GetData() { DateTime start = new DateTime(2018, 12, 6); DateTime end = new DateTime(2018, 12, 7); List <EquipmentData> result = EquipmentDataDal.GetListByTime(1, start, end); Console.WriteLine(result.Count); }
private void btn_SearchHistory_Click(object sender, EventArgs e) { gridControl_History.DataSource = null; chartControl_History.Series[0].Points.Clear(); if (comboBoxEdit_ID.Text.Trim() == string.Empty) { XtraMessageBox.Show("请选择设备名称"); return; } TimeSpan ts = dateEdit_End.DateTime - dateEdit_Start.DateTime; TimeSpan ts1 = new TimeSpan(0, 0, 0, 1); if (ts < ts1) { XtraMessageBox.Show("截止时间必须大于起始时间"); return; } Equipment eq = mainList.Find(c => c.Address == Convert.ToInt64(comboBoxEdit_ID.Text)); List <EquipmentData> data = EquipmentDataDal.GetListByTime(eq.ID, dateEdit_Start.DateTime, dateEdit_End.DateTime); if (data == null || data.Count < 1) { LogLib.Log.GetLogger(this).Warn("数据库中没有记录"); return; } gridControl_History.DataSource = data; gridView_History.BestFitColumns(); data.ForEach(c => { chartControl_History.Series[0].Points.Add(new SeriesPoint(c.AddTime, c.Chroma)); }); float max = data.Max(c => c.Chroma); float min = data.Min(c => c.Chroma); // 更改曲线纵坐标描述 SwiftPlotDiagram diagram_Tem = chartControl_History.Diagram as SwiftPlotDiagram; diagram_Tem.AxisY.Title.Text = eq.EName + ":" + eq.Unit; if (eq.Range > 0) { diagram_Tem.AxisY.Range.SetMinMaxValues(0, eq.Range); } setX(data); }
private void btn_ClearDB_Click(object sender, EventArgs e) { try { if (XtraMessageBox.Show("数据记录将要被清空(全部设备),是否继续", "注意", MessageBoxButtons.YesNo) != System.Windows.Forms.DialogResult.Yes) { return; } EquipmentDataDal.DeleteAll(); gridControl2.DataSource = null; chartControl2.Series[0].Points.Clear(); XtraMessageBox.Show("数据已清空"); } catch (Exception ex) { LogLib.Log.GetLogger(this).Warn(ex); } }
private static void AddData() { for (int i = 0; i < 10 * 100; i++) { List <EquipmentData> list = new List <EquipmentData>(); DateTime dt1 = DateTime.Now; DateTime dt2 = DateTime.Now.AddDays(-30); for (int j = 0; j < 1000; j++) { list.Add(new EquipmentData() { Chroma = 5.11f, AddTime = GetRandomTime(dt1, dt2), }); } EquipmentDataDal.AddList(1, list); Thread.Sleep(200); } }
// 删除所查数据 private void simpleButton2_Click(object sender, EventArgs e) { try { if (checkedComboBoxEdit1.Text.Trim() == string.Empty) { XtraMessageBox.Show("请先查询数据"); return; } TimeSpan ts = dateEdit2.DateTime - dateEdit1.DateTime; TimeSpan ts1 = new TimeSpan(0, 0, 0, 1); if (ts < ts1) { XtraMessageBox.Show("请先查询数据"); return; } if (XtraMessageBox.Show("数据将要被删除,是否继续", "注意", MessageBoxButtons.YesNo) != System.Windows.Forms.DialogResult.Yes) { return; } int total = 0; foreach (CheckedListBoxItem item in checkedComboBoxEdit1.Properties.Items) { if (item.CheckState == CheckState.Checked) { Equipment eq = mainList.Find(c => c.ID == Convert.ToInt32(item.Value)); total += EquipmentDataDal.DeleteByTime(eq.ID, dateEdit1.DateTime, dateEdit2.DateTime); } } gridControl2.DataSource = null; chartControl2.Series.Clear(); XtraMessageBox.Show(string.Format("本次删除{0}条数据", total)); } catch (Exception ex) { LogLib.Log.GetLogger(this).Warn(ex); } }
private void simpleButton5_Click(object sender, EventArgs e) { try { if (XtraMessageBox.Show("数据将要被清空(当前设备),是否继续", "注意", MessageBoxButtons.YesNo) != System.Windows.Forms.DialogResult.Yes) { return; } foreach (CheckedListBoxItem item in checkedComboBoxEdit1.Properties.Items) { if (item.CheckState != CheckState.Checked) { continue; } List <Equipment> eq = mainList.FindAll(c => c.ID == Convert.ToInt32(item.Value)); foreach (Equipment equipment in eq) { EquipmentDataDal.DeleteByEquipmentID(equipment.ID); // dang qian jian ce she bei bu shan chu if (equipment.IsDel) { EquipmentDal.DeleteOne(equipment); } } } gridControl2.DataSource = null; chartControl2.Series.Clear(); loadData(); XtraMessageBox.Show("数据已清空"); } catch (Exception ex) { LogLib.Log.GetLogger(this).Warn(ex); } }
// 切换曲线 private void changeSeries(Equipment ep, bool isClear = true) { if (ep == null) { LogLib.Log.GetLogger(this).Warn("切换曲线时对象为空"); return; } seriesOne.Name = ep.EName; seriesOne.Tag = ep.ID; if (isClear) { seriesOne.Points.Clear(); } SwiftPlotDiagram diagram_Tem = chartControl_Main.Diagram as SwiftPlotDiagram; diagram_Tem.AxisY.Title.Text = string.Format("浓度({0})", ep.Unit); diagram_Tem.AxisX.Range.SetMinMaxValues(minTime, maxTime); if (ep.Range > 0) { diagram_Tem.AxisY.Range.SetMinMaxValues(0, ep.Range); } List <EquipmentData> datalist = EquipmentDataDal.GetListByTime(ep.ID, minTime, maxTime); if (datalist == null) { return; } datalist.ForEach(c => { SeriesPoint sp = new SeriesPoint(c.AddTime, c.Chroma); seriesOne.Points.Add(sp); }); //datalist.Aggregate }
// 读取主表类容 private void readMain(Equipment eq) { Command cd = new Command(eq.Address, 0x00, 0x00, 3); if (Gloabl.IsAdmin) { this.Invoke(new Action <string>(addText), "W: " + Parse.byteToHexStr(cd.SendByte)); } if (!CommandResult.GetResult(cd)) { if (eq.lostNum >= 10) { eq.IsConnect = false; } else { eq.lostNum++; } return; } else { eq.IsConnect = true; eq.lostNum = 0; } if (Gloabl.IsAdmin) { this.Invoke(new Action <string>(addText), "R: " + Parse.byteToHexStr(cd.ResultByte)); } EquipmentData data = Parse.GetRealData(cd.ResultByte, eq); data.EquipmentID = eq.ID; // 添加数据库 EquipmentDataDal.AddOne(data); eq.Chroma = data.Chroma; // 绘制曲线 if (eq.ID == Convert.ToInt32(seriesOne.Tag)) { this.Invoke(new Action <EquipmentData>(c => addPoint(c)), data); } if (eq.AlertType == 0) { eq.ChromaAlertStr = Gloabl.NormalStr; } else { // 报警记录 if (eq.ChromaAlertStr != data.ChromaAlertStr) { if (eq.ChromaAlertStr.Equals(Gloabl.NormalStr, StringComparison.OrdinalIgnoreCase)) { Alert art = new Alert(); art.AlertName = data.ChromaAlertStr; art.EquipmentID = eq.ID; eq.AlertObject = AlertDal.AddOneR(art); } else { eq.AlertObject.EndTime = DateTime.Now; AlertDal.UpdateOne(eq.AlertObject); if (!eq.ChromaAlertStr.Equals(data.ChromaAlertStr, StringComparison.OrdinalIgnoreCase)) { Alert art = new Alert(); art.AlertName = data.ChromaAlertStr; art.EquipmentID = eq.ID; eq.AlertObject = AlertDal.AddOneR(art); } } eq.ChromaAlertStr = data.ChromaAlertStr; } else { if (!eq.ChromaAlertStr.Equals(Gloabl.NormalStr, StringComparison.OrdinalIgnoreCase)) { eq.AlertObject.EndTime = DateTime.Now; if (!AlertDal.UpdateOne(eq.AlertObject)) { Alert art = new Alert(); art.AlertName = data.ChromaAlertStr; art.EquipmentID = eq.ID; eq.AlertObject = AlertDal.AddOneR(art); } } } } }
private void Gethistorydata(object parm) { DataTable dataTable = (parm as List <object>)[0] as DataTable; Series[] listSeries = (parm as List <object>)[1] as Series[]; List <int> listeqid = (parm as List <object>)[2] as List <int>; Stopwatch watch = new Stopwatch(); watch.Start(); List <EquipmentData> data = EquipmentDataDal.GetListByTime2(String.Join(",", listeqid), dateEdit1.DateTime, dateEdit2.DateTime); Trace.WriteLine("get database: " + watch.Elapsed); watch.Restart(); IEnumerable <IGrouping <string, EquipmentData> > gridTable = data.GroupBy(c => c.AddTimeStr); foreach (var item in gridTable) { DataRow row = dataTable.NewRow(); row[0] = item.Key; row[1] = item.FirstOrDefault().Unit; List <EquipmentData> list2 = item.OrderBy(c => c.ID).ToList(); for (int i = 0; i < list2.Count; i++) { row[i + 2] = list2[i].Chroma; } dataTable.Rows.Add(row); } Trace.WriteLine("table foreach: " + watch.Elapsed); watch.Restart(); IEnumerable <IGrouping <int, EquipmentData> > chartTable = data.GroupBy(c => c.EquipmentID); foreach (var item in chartTable) { Series series = listSeries.FirstOrDefault(c => ((int)c.Tag) == item.Key); foreach (var item2 in item) { series.Points.Add(new SeriesPoint(item2.AddTimeStr, item2.Chroma)); } } Trace.WriteLine("series foreach: " + watch.Elapsed); watch.Restart(); this.Invoke(new Action <DataTable>((datatable) => this.gridControl2.DataSource = datatable), dataTable); Trace.WriteLine("banding table: " + watch.Elapsed); watch.Restart(); //gridView2.BestFitColumns(); this.Invoke(new Action <Series[], IEnumerable <IGrouping <string, EquipmentData> > >((listseries, gridtable) => { //chartControl2. this.chartControl2.Series.AddRange(listseries); Trace.WriteLine("bangding series: " + watch.Elapsed); watch.Stop(); if (this.chartControl2.Series.Count <= 0) { this.chartControl2.Series.Add(new Series("曲线", ViewType.SwiftPlot)); } //// 更改曲线纵坐标描述 SwiftPlotDiagram diagram_Tem = this.chartControl2.Diagram as SwiftPlotDiagram; diagram_Tem.EnableAxisXScrolling = true; diagram_Tem.AxisY.Title.Text = "浓度"; setX(DateTime.Parse(gridtable.FirstOrDefault().Key), DateTime.Parse(gridtable.LastOrDefault().Key)); }), listSeries, gridTable); }
// 查询数据 private void simpleButton3_Click_1(object sender, EventArgs e) { try { gridControl2.DataSource = null; chartControl2.Series.Clear(); gridView2.Columns.Clear(); if (checkedComboBoxEdit1.Text.Trim() == string.Empty) { XtraMessageBox.Show("请选择设备"); return; } TimeSpan ts = dateEdit2.DateTime - dateEdit1.DateTime; TimeSpan ts1 = new TimeSpan(0, 0, 0, 1); if (ts < ts1) { XtraMessageBox.Show("截止时间必须大于起始时间"); return; } DateTime dt1 = DateTime.MinValue; DateTime dt2 = DateTime.MaxValue; DataTable dataTable = new DataTable(); // 列计数器 int lolumnIndex = 1; // 最大的行值 int maxRowNum = -1; foreach (CheckedListBoxItem item in checkedComboBoxEdit1.Properties.Items) { if (item.CheckState != CheckState.Checked) { continue; } List <EquipmentData> data = EquipmentDataDal.GetListByTime(Convert.ToInt32(item.Value), dateEdit1.DateTime, dateEdit2.DateTime); if (data == null || data.Count < 1) { continue; } // 还没有数据的时候,增加时间和单位列 if (dataTable.Columns.Count <= 0) { dataTable.Columns.Add("时间"); dataTable.Columns.Add("单位"); } dataTable.Columns.Add(item.Description); lolumnIndex++; Series series = new Series(item.Description, ViewType.SwiftPlot); series.ArgumentScaleType = ScaleType.DateTime; // 行计数器 int rowNum = 0; data.ForEach(c => { series.Points.Add(new SeriesPoint(c.AddTime, c.Chroma)); DataRow dataRow; if (rowNum > maxRowNum - 1) { dataRow = dataTable.NewRow(); dataTable.Rows.Add(dataRow); } else { dataRow = dataTable.Rows[rowNum]; } // 说明需要增加时间和单位数据 if (lolumnIndex == 2 || rowNum > maxRowNum - 1) { dataRow[0] = c.AddTime; dataRow[1] = c.Unit; } dataRow[lolumnIndex] = c.Chroma; rowNum++; }); maxRowNum = maxRowNum > rowNum ? maxRowNum : rowNum; float max = data.Max(c => c.Chroma); float min = data.Min(c => c.Chroma); textEdit7.Text = max.ToString(); textEdit5.Text = min.ToString(); textEdit6.Text = ((max + min) / 2).ToString(); //data.Sort((customer1, customer2) => customer1.AddTime.CompareTo(customer2.AddTime)); //if (dt1 == DateTime.MinValue) //{ // dt1 = data.First().AddTime; //} //else //{ // dt1 = dt1 < data.First().AddTime ? dt1 : data.First().AddTime; //} //if (dt2 == DateTime.MaxValue) //{ // dt2 = data.Last().AddTime; //} //else //{ // dt2 = dt2 > data.Last().AddTime ? dt2 : data.Last().AddTime; //} chartControl2.Series.Add(series); } gridControl2.DataSource = dataTable; gridView2.BestFitColumns(); if (chartControl2.Series.Count <= 0) { chartControl2.Series.Add(new Series("曲线", ViewType.SwiftPlot)); } //// 更改曲线纵坐标描述 SwiftPlotDiagram diagram_Tem = chartControl2.Diagram as SwiftPlotDiagram; diagram_Tem.EnableAxisXScrolling = true; diagram_Tem.AxisY.Title.Text = "浓度"; //diagram_Tem.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Minute; //diagram_Tem.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Second; //diagram_Tem.AxisX.DateTimeOptions.Format = DateTimeFormat.LongTime; //diagram_Tem.AxisX.Range.ScrollingRange.Auto = false; //diagram_Tem.AxisX.Range.ScrollingRange.SetMinMaxValues(dt1.AddMinutes(-1), dt2.AddMinutes(1)); //diagram_Tem.AxisX.Range.Auto = false; //diagram_Tem.AxisX.Range.SetMinMaxValues(dt1, dt1.AddMinutes(2)); //if (dt1 != DateTime.MinValue && dt2 != DateTime.MaxValue) //{ // setX(dt1, dt2); //} //9.16从时间控件上获取的值,与数据库记录格式不统一,须做进一步处理 //9.18格式化日期,以2015-0X-0X方式对齐 //string str1 = dateEdit1.Text; //DateTime format_time1; //DateTime.TryParse(str1, out format_time1); //str1 = format_time1.ToString("yyyy-MM-dd HH:mm:ss"); //string str2 = dateEdit2.Text; //DateTime format_time2; //DateTime.TryParse(str2, out format_time2); //str2 = format_time2.ToString("yyyy-MM-dd HH:mm:ss"); //List<EquipmentData> data = EquipmentDataDal.GetListByTime(eq.ID, dateEdit1.DateTime, dateEdit2.DateTime) //if (eq.Max > 0) //{ // diagram_Tem.AxisY.Range.SetMinMaxValues(0, eq.Max); //} //chartControl2.Series.EndUpdate(); } catch (Exception ex) { LogLib.Log.GetLogger(this).Warn(ex); } }