/// <summary> /// 记录输出信息 /// </summary> /// <param name="content">日志信息</param> public static void AppendLog(string content) { try { if (Form == null || Form.IsDisposed) { Form = new FormOutput(); Form.BindConsole(); } if (Form.InvokeRequired) { Form.Invoke(new Action(() => { Form.Show(); Form.WindowState = FormWindowState.Normal; //Form.Activate(); })); } else { Form.Show(); Form.WindowState = FormWindowState.Normal; //Form.Activate(); } MyConsole.AppendLine(content); } catch { } }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { FormOutput.AppendProress(true); lstCondition = e.Argument as List <RainCaculateConditon>; //开始计算每个值 if (lstCondition != null && lstCondition.Count > 0) { for (int i = 0; i < lstCondition.Count; i++) { List <RainCaculateResult> tempResult = CaculateRain(lstCondition[i]); if (tempResult.Count > 0) { backgroundWorker1.ReportProgress((int)((i + 1) * 100 / lstCondition.Count), tempResult); } else { backgroundWorker1.ReportProgress((int)((i + 1) * 100 / lstCondition.Count), lstCondition[i]); } } } }
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { FormOutput.AppendProress(e.ProgressPercentage); List <RainCaculateResult> result = e.UserState as List <RainCaculateResult>; if (result == null) { RainCaculateConditon condition = e.UserState as RainCaculateConditon; int index = dataGridView1.Rows.Add(); //赋值各行数据 dataGridView1[0, index].Value = condition.EventNum; dataGridView1[1, index].Value = condition.StartTime.ToLongDateString(); dataGridView1[2, index].Value = condition.EndTime.ToLongDateString(); dataGridView1[3, index].Value = condition.State; dataGridView1[4, index].Value = "该行未查询到数据"; //加上红色背景色 dataGridView1.Rows[index].DefaultCellStyle.BackColor = Color.Red; return; } List <string> lstEventNum = result.OrderBy(t => t.EventNum).Select(t => t.EventNum).Distinct().ToList(); foreach (var item in lstEventNum) { int index = dataGridView1.Rows.Add(); //赋值各行数据 dataGridView1[0, index].Value = item; dataGridView1[1, index].Value = lstCondition.Where(t => t.EventNum == item).Select(t => t.StartTime.ToLongDateString()).FirstOrDefault(); dataGridView1[2, index].Value = lstCondition.Where(t => t.EventNum == item).Select(t => t.EndTime.ToLongDateString()).FirstOrDefault();; dataGridView1[3, index].Value = lstCondition.Where(t => t.EventNum == item).Select(t => t.State).FirstOrDefault(); for (int i = 0; i < hourArry.Length; i++) { string columName = $"RAINFALL_{hourArry[i]}_HOUR"; dataGridView1[columName, index].Value = result.Where(t => t.Day == false && t.EventNum == item && t.MonthMax == false && t.During == hourArry[i]).Select(t => t.MaxValue).FirstOrDefault(); columName = $"RAINFALL_{hourArry[i]}_HOUR_TIME"; dataGridView1[columName, index].Value = result.Where(t => t.Day == false && t.EventNum == item && t.MonthMax == false && t.During == hourArry[i]).Select(t => t.MaxValueDate).FirstOrDefault(); columName = $"RAINFALL_{hourArry[i]}_HOUR_QC"; dataGridView1[columName, index].Value = result.Where(t => t.Day == false && t.EventNum == item && t.MonthMax == false && t.During == hourArry[i]).Select(t => t.MaxValueQc).FirstOrDefault(); columName = $"MAX_{hourArry[i]}_HOUR_MONTH"; dataGridView1[columName, index].Value = result.Where(t => t.Day == false && t.EventNum == item && t.MonthMax == true && t.During == hourArry[i]).Select(t => t.MaxValue).FirstOrDefault(); columName = $"MAX_{hourArry[i]}_HOUR_MONTH_TIME"; dataGridView1[columName, index].Value = result.Where(t => t.Day == false && t.EventNum == item && t.MonthMax == true && t.During == hourArry[i]).Select(t => t.MaxValueDate).FirstOrDefault(); columName = $"MAX_{hourArry[i]}_HOUR_MONTH_QC"; dataGridView1[columName, index].Value = result.Where(t => t.Day == false && t.EventNum == item && t.MonthMax == true && t.During == hourArry[i]).Select(t => t.MaxValueQc).FirstOrDefault(); } for (int i = 0; i < dayArry.Length; i++) { string columName = $"RAINFALL_{dayArry[i]}_DAY"; dataGridView1[columName, index].Value = result.Where(t => t.Day == true && t.EventNum == item && t.MonthMax == false && t.During == dayArry[i]).Select(t => t.MaxValue).FirstOrDefault(); if (yxDayArry.Contains(dayArry[i])) { //加入有效雨量,计算有效雨量的最大值日期 DateTime yxMaxTime = result.Where(t => t.Day == true && t.EventNum == item && t.MonthMax == false && t.During == dayArry[i]).Select(t => t.MaxValueDate).FirstOrDefault(); if (yxMaxTime != DateTime.MinValue) { //计算有效雨量值,并乘以系数 double yxVal = 0; for (int j = 0; j < dayArry[i]; j++) { string sql = $"SELECT sum(rainfall) FROM RAINFALL_STATE where monitornum = '{dataGridView1[3, index].Value}' and recorddate > '{yxMaxTime.AddDays(-j - 1)}' and recorddate<='{yxMaxTime.AddDays(-j)}'"; DataSet ds = SqlHelper.ExecuteDataset(SqlHelper.GetConnection(), CommandType.Text, sql); if (ds.Tables[0].Rows.Count > 0) { double?val = ConvertDecimal(ds.Tables[0].Rows[0][0]); if (val.HasValue) { double arg = Math.Round(Math.Pow(0.8, j), 2); yxVal += (val.Value * arg); } } } columName = $"RAINFALL_{dayArry[i]}_DAY_YX"; dataGridView1[columName, index].Value = yxVal; } } columName = $"RAINFALL_{dayArry[i]}_DAY_TIME"; dataGridView1[columName, index].Value = result.Where(t => t.Day == true && t.EventNum == item && t.MonthMax == false && t.During == dayArry[i]).Select(t => t.MaxValueDate).FirstOrDefault(); columName = $"RAINFALL_{dayArry[i]}_DAY_QC"; dataGridView1[columName, index].Value = result.Where(t => t.Day == true && t.EventNum == item && t.MonthMax == false && t.During == dayArry[i]).Select(t => t.MaxValueQc).FirstOrDefault(); columName = $"MAX_{dayArry[i]}_DAY_MONTH"; dataGridView1[columName, index].Value = result.Where(t => t.Day == true && t.EventNum == item && t.MonthMax == true && t.During == dayArry[i]).Select(t => t.MaxValue).FirstOrDefault(); columName = $"MAX_{dayArry[i]}_DAY_MONTH_TIME"; dataGridView1[columName, index].Value = result.Where(t => t.Day == true && t.EventNum == item && t.MonthMax == true && t.During == dayArry[i]).Select(t => t.MaxValueDate).FirstOrDefault(); columName = $"MAX_{dayArry[i]}_DAY_MONTH_QC"; dataGridView1[columName, index].Value = result.Where(t => t.Day == true && t.EventNum == item && t.MonthMax == true && t.During == dayArry[i]).Select(t => t.MaxValueQc).FirstOrDefault(); } } }
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { FormOutput.AppendProress(false); button2.Enabled = true; button3.Enabled = true; }