using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; using QMAPP.WinForm.Common.SPCMonitor; using QMAPP.ServicesAgent; using QMAPP.FJC.Entity.Basic; using QMAPP.FJC.Entity; using QMAPP.Entity; namespace QMAPP.WinForm.Forms.Operation { /// /// 描述:SPC监控 /// 作者:单雨春 /// 时间:2015年6月3日08:36:01 /// public partial class SPCControlForm : Form { private ServiceAgent wcfAgent = null; public SPCControlForm() { InitializeComponent(); ClientContext.MachineInfo = new MachineInfo(); ClientContext.MachineInfo.PROCESSTYPE = "11"; ClientContext.MachineInfo.PRODUCELINE = "B9"; ClientContext.MachineInfo.MACHINECODDE = "PUNCH01"; Init(); } /// /// 页面初始化 /// private void Init() { wcfAgent = ClientContext.GetServiceAgent(); DataResult> result = new DataResult>(); InitSetChart(); #region 绑定监控值 result = wcfAgent.InvokeServiceFunction>>(QMAPP.ServicesAgent.B9BasicService.ProcessParameterBLL_GetAllList.ToString(), new ProcessParameter { PROCESSTYPE = ClientContext.MachineInfo.PROCESSTYPE, MACHINECODDE = ClientContext.MachineInfo.MACHINECODDE, PRODUCELINE = ClientContext.MachineInfo.PRODUCELINE }); result.Result.Insert(0, new ProcessParameter { PARANAME = string.Empty }); cbxProcessParameter.DataSource = result.Result; cbxProcessParameter.DisplayMember = "PARANAME"; cbxProcessParameter.ValueMember = "PARANAME"; #endregion } /// /// 查询验证 /// private bool Check() { string strMVStart = txtMVStart.Text; string strMVEnd = txtMVEnd.Text; if(string.IsNullOrEmpty(txtCount.Text.Trim())) { MessageBox.Show(Resource1.PleaseMotorCount); return false; } if (cbxProcessParameter.SelectedIndex == 0) { MessageBox.Show(Resource1.PleaseSelectMotorValue); return false; } if (!string.IsNullOrEmpty(strMVStart) && !string.IsNullOrEmpty(strMVEnd) && Convert.ToDouble(strMVEnd) < Convert.ToDouble(strMVStart)) { MessageBox.Show(Resource1.MotorScope); return false; } return true; } /// /// 获得到图表数据 /// /// private DataTable GetChartData() { string strParameterName = cbxProcessParameter.SelectedValue.ToString(); DataResult dataResult = wcfAgent.InvokeServiceFunction>(QMAPP.ServicesAgent.B9IPCService.SPCControlBLL_GetData.ToString(), new ProcessParameter { PROCESSTYPE = ClientContext.MachineInfo.PROCESSTYPE, PRODUCELINE = ClientContext.MachineInfo.PRODUCELINE, MACHINECODDE = ClientContext.MachineInfo.MACHINECODDE, SelectColumn = strParameterName, MonitorCount = Convert.ToInt32(txtCount.Text), MVStart = string.IsNullOrEmpty(txtMVStart.Text) ? 0 : Convert.ToInt32(txtMVStart.Text), MVEnd = string.IsNullOrEmpty(txtMVEnd.Text) ? 0 : Convert.ToInt32(txtMVEnd.Text) }); if (!dataResult.IsSuccess) { MessageBox.Show(dataResult.Msg); } return dataResult.Result; } /// /// 初始化图形 /// private void InitSetChart() { #region 通用图形显示 //清除画板 this.chartData.ChartAreas.Clear(); this.chartData.ChartAreas.Add(new ChartArea("ChartA")); //清除数据 this.chartData.Series.Clear(); //清除标题 this.chartData.Titles.Clear(); //清除图例 this.chartData.Legends.Clear(); //仅不显示x轴方向的网格线 chartData.ChartAreas["ChartA"].AxisX.MajorGrid.Enabled = false; //仅不显示y轴方向的网格线 chartData.ChartAreas["ChartA"].AxisY.MajorGrid.Enabled = false; //图表背景颜色是渐进 chartData.ChartAreas["ChartA"].BackColor = System.Drawing.Color.FromArgb(250, 235, 206);//图表区背景第1种颜色 chartData.ChartAreas["ChartA"].BackSecondaryColor = System.Drawing.Color.White; //图表区背景第2种颜色 chartData.ChartAreas["ChartA"].BackGradientStyle = GradientStyle.TopBottom; #endregion } /// /// 趋势图 /// /// /// private void tbtnTendency_Click(object sender, EventArgs e) { #region 准备数据 if (!Check()) { return; } InitSetChart(); DataTable dt = GetChartData(); string strParameterName = cbxProcessParameter.SelectedValue.ToString(); #endregion #region 趋势图 if (dt != null && dt.Rows.Count > 0) { chartData = ChartHelper.DrawTendencyChart(chartData, dt, strParameterName); Series series = new Series(); series.ChartType = SeriesChartType.Line; series.MarkerStyle = MarkerStyle.Circle; for (int i = 0; i < dt.Rows.Count; i++) { series.Points.AddXY(i, Convert.ToDouble(dt.Rows[i][strParameterName])); } chartData.Series.Add(series); } else { MessageBox.Show(Resource1.NothingData); } #endregion } /// /// 分布图 /// /// /// private void tbtnDistribution_Click(object sender, EventArgs e) { #region 准备数据 if (!Check()) { return; } InitSetChart(); DataTable dt = GetChartData(); string strParameterName = cbxProcessParameter.SelectedValue.ToString(); #endregion #region 分布图 if (dt != null && dt.Rows.Count > 0) { Dictionary dict = ChartHelper.GetBarValue(dt, strParameterName); chartData = ChartHelper.DrawDistributionChart(chartData, dt, dict, strParameterName); //显示图形的类型 Series series = new Series(); series.ChartType = SeriesChartType.Column;//设置图表类型-分布图 series.IsValueShownAsLabel = true; foreach (double key in dict.Keys) { series.Points.AddXY(key, dict[key]); } chartData.Series.Add(series); } else { MessageBox.Show(Resource1.NothingData); } #endregion } /// /// 只能输入浮点型 /// 46-小数点 /// /// /// private void txtDouble_KeyPress(object sender, KeyPressEventArgs e) { //只能输入浮点型 if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 8) && (e.KeyChar != 46)) e.Handled = true; } /// /// 只能输入数值 /// 48-0;57-9; /// /// /// private void txtNumber_KeyPress(object sender, KeyPressEventArgs e) { //只能输入数值 if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 8)) e.Handled = true; } } }