/// <summary> /// 添加表格数据 /// </summary> /// <param name="Type">天统计/月统计</param> public void AddDataTableData(string Type) { var Daytime = DateTime.Today.ToShortDateString(); // 获取当前天数 var nowday = DateTime.Now.Day.ToString(); // 获取当前年份 var nowyear = DateTime.Now.Year.ToString(); // 获取当前月份 var nowmonth = DateTime.Now.Month.ToString(); switch (Type) { case "Day": string sql = $"SELECT Time,Produce,Reach,TimeEfficiency,GoodProduct FROM DayDeviceData WHERE Day = '{DayDate}' AND DevID = {0}"; DataTable data = SQLiteHelp.ExecuteQuery(sql); if (data.Rows.Count > 0) { TableLength = data.Rows.Count; for (var i = 0; i < data.Rows.Count; i++) { double Produce = double.Parse(data.Rows[i][1].ToString()); double GoodProduct = double.Parse(data.Rows[i][4].ToString()); double GoodValue = 0; if (Produce == 0 && GoodProduct == 0) { GoodValue = 0; } else { GoodValue = GoodProduct / Produce; } if (Produce != 0) { DevNameList.Add(new TableData() { Time = $"{data.Rows[i][0]}:00", Efficiency = (double.Parse(data.Rows[i][2].ToString()) / 100).ToString("p0"), Good = (GoodValue).ToString("p0"), //Good = 1.ToString("p0"), TimeEfficiency = $"{data.Rows[i][3].ToString()}%" }); } } } break; case "Month": for (int i = 1; i < int.Parse(nowday) + 1; i++) { // 生成当前天数之前的日期 如果有日期没有数据,则添加图表数据为0 string nowtime = nowyear + "/" + nowmonth + "/" + i; // 查询数据库 string monthsql = $"SELECT Produce,TimeEfficiency,GoodProduct FROM MonthDeviceData WHERE Day = '{nowtime}' AND DevID = {0}"; DataTable Monthdata = SQLiteHelp.ExecuteQuery(monthsql); if (Monthdata.Rows.Count > 0) { double Produce = double.Parse(Monthdata.Rows[0][0].ToString()); double GoodProduct = double.Parse(Monthdata.Rows[0][2].ToString()); double GoodValue = 0; if (Produce == 0 && GoodProduct == 0) { GoodValue = 0; } else { GoodValue = GoodProduct / Produce; } if (Monthdata.Rows[0][1].ToString() != "") { DevNameList.Add(new TableData() { Time = $"{nowmonth}月{i}日", Efficiency = (double.Parse(Monthdata.Rows[0][0].ToString()) / MainWindow.DayPlan).ToString("p0"), Good = GoodValue.ToString("p0"), TimeEfficiency = $"{Monthdata.Rows[0][1].ToString()}%" }); } } //else //{ // DevNameList.Add(new TableData() // { // Time = $"{nowmonth}月{i}日", // Efficiency = 0.ToString("p0"), // //Good = data.Rows[i][3].ToString(), // Good = 0.ToString("p0"), // TimeEfficiency = $"{0}%" // }); //} } break; default: break; } string allsql = $"SELECT Produce,TimeEfficiency,GoodProduct FROM MonthDeviceData WHERE Day = '{Daytime}' AND DevID = {0}"; DataTable Alldata = SQLiteHelp.ExecuteQuery(allsql); if (Alldata.Rows.Count > 0) { double Produce = double.Parse(Alldata.Rows[0][0].ToString()); double GoodProduct = double.Parse(Alldata.Rows[0][2].ToString()); double TimeEfficiency = double.Parse(Alldata.Rows[0][1].ToString()); double GoodValue = 0; if (Produce == 0 && GoodProduct == 0) { GoodValue = 0; } else { GoodValue = GoodProduct / Produce; } SummaryList.Add(new Summary() { Title = "汇总", Efficiency = (Produce / MainWindow.DayPlan).ToString("p0"), Good = GoodValue.ToString("p0"), TimeEfficiency = $"{TimeEfficiency}%" }); } else { SummaryList.Add(new Summary() { Title = "汇总", Efficiency = (0).ToString("p0"), Good = 0.ToString("p0"), TimeEfficiency = "0%" }); } // 定时刷新表格页面 ChangeTableData(Type); }
/// <summary> /// 改变表格数据函数 /// </summary> /// <param name="Type">天统计/月统计</param> public void ChangeTableData(string Type) { string Day = DateTime.Today.ToShortDateString(); // 只刷新天数据表格 if (Type == "Day" && DayDate == Day) { timerNotice = new System.Timers.Timer(); // 每隔一段时间触发函数 timerNotice.Elapsed += new System.Timers.ElapsedEventHandler((o, e) => { string sql = $"SELECT Time,Produce,Reach,TimeEfficiency,GoodProduct FROM DayDeviceData WHERE Day = '{DayDate}' AND DevID = {0}"; DataTable Rundata = SQLiteHelp.ExecuteQuery(sql); // 判断有数据才刷新页面 if (Rundata.Rows.Count > 0) { double Produce = double.Parse(Rundata.Rows[Rundata.Rows.Count - 1][1].ToString()); string TimeEfficiency = Rundata.Rows[Rundata.Rows.Count - 1][3].ToString(); string Reach = Rundata.Rows[Rundata.Rows.Count - 1][2].ToString(); double GoodProduct = double.Parse(Rundata.Rows[Rundata.Rows.Count - 1][4].ToString()); double GoodValue = 0; if (GoodProduct == 0 && Produce == 0) { GoodValue = 0; } else { GoodValue = GoodProduct / Produce; } // 当运行数据大于表格数据长度时,添加一个表格 if (Rundata.Rows.Count > TableLength) { ThreadPool.QueueUserWorkItem(delegate { System.Threading.SynchronizationContext.SetSynchronizationContext(new System.Windows.Threading.DispatcherSynchronizationContext(System.Windows.Application.Current.Dispatcher)); System.Threading.SynchronizationContext.Current.Post(p1 => { DevNameList.Clear(); for (int i = 0; i < Rundata.Rows.Count; i++) { double Efficiency = double.Parse(Rundata.Rows[i][2].ToString()); double GoodProduce = double.Parse(Rundata.Rows[i][4].ToString()); double NowProduce = double.Parse(Rundata.Rows[i][1].ToString()); double value = 0; if (GoodProduce == 0 && NowProduce == 0) { value = 0; } else { value = GoodProduce / NowProduce; } if (NowProduce != 0) { //添加表格信息 DevNameList.Add(new TableData() { Time = $"{Rundata.Rows[i][0]}:00", Efficiency = (Efficiency / 100).ToString("p0"), Good = (value).ToString("p0"), //Good = 1.ToString("p0"), TimeEfficiency = $"{Rundata.Rows[i][3]}%" }); } } TableLength = Rundata.Rows.Count; }, null); }); } else { if (Produce > 0) { int Hour = int.Parse(DateTime.Now.Hour.ToString()); DevNameList[DevNameList.Count - 1].Time = $"{Hour}:00"; // 修改最后一个表格数据 DevNameList[DevNameList.Count - 1].Efficiency = (double.Parse(Reach) / 100).ToString("p0"); DevNameList[DevNameList.Count - 1].Good = (GoodValue).ToString("p0"); DevNameList[DevNameList.Count - 1].TimeEfficiency = $"{TimeEfficiency}%"; } } } string allsql = $"SELECT Produce,TimeEfficiency,GoodProduct FROM MonthDeviceData WHERE Day = '{DayDate}' AND DevID = {0}"; DataTable Alldata = SQLiteHelp.ExecuteQuery(allsql); if (Alldata.Rows.Count > 0) { double Produce = double.Parse(Alldata.Rows[0][0].ToString()); double GoodProduct = double.Parse(Alldata.Rows[0][2].ToString()); double TimeEfficiency = double.Parse(Alldata.Rows[0][1].ToString()); double GoodValue = 0; if (Produce == 0 && GoodProduct == 0) { GoodValue = 0; } else { GoodValue = GoodProduct / Produce; } SummaryList[0].Title = "汇总"; SummaryList[0].Efficiency = (Produce / MainWindow.DayPlan).ToString("p0"); SummaryList[0].Good = GoodValue.ToString("p0"); SummaryList[0].TimeEfficiency = $"{TimeEfficiency}%"; } }); //触发间隔 timerNotice.Interval = MainWindow.Time; timerNotice.Start(); } }