using SOH.Kernel; 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 EAS.Services; using SOH.BLL; using SOH.Entities; using SOH.Data; using Microsoft.Win32; using System.Diagnostics; using System.IO; using System.Drawing.Drawing2D; namespace SOH.JianYan { [ModuleAttribute(ModuleID = "0CA0F524-58B9-456F-B5E3-A923051C9926", ModuleName = "质控图")] public partial class frm_ZKT : SOH.Window.baseChildForm { public QC_Object newQCObject; public frm_ZKT() { InitializeComponent(); } private void cbb_yq_SelectedValueChanged(object sender, EventArgs e) { if (cbb_yq.SelectedValue != null) { qCValueBindingSource1.DataSource = null; showxq(); } } public void showxq() { var vser = ServiceContainer.GetService(); List qco = vser.getQCObject(cbb_yq.SelectedValue.ToString()); List qco1 = qco.Where(t => t.qybj == 1).ToList(); if (qco1.Count != 0) { QC_Object oneQCobject = qco1.First(); hqyqjdbbh(oneQCobject); qCObjectBindingSource.DataSource = qco1; } else { qCObjectBindingSource.DataSource = null; qCItemsBindingSource.DataSource = null; } } private void hqyqjdbbh(QC_Object qcobject) { var vser = ServiceContainer.GetService(); List qcItems = vser.hqqcItems(cbb_yq.SelectedValue.ToString(), qcobject.QCOID); List qcItems1 = qcItems.Where(t => t.qybj == 1).ToList(); if (qcItems1 != null) { qCItemsBindingSource.DataSource = qcItems1; qCValueBindingSource1.DataSource = null; } } class yiqi { public string yq { get; set; } public string yqmc { get; set; } } private void frm_ZKT_Load(object sender, EventArgs e) { dgv_qcvalues.AutoGenerateColumns = false; dtp_strrq.Value = new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1); dtp_endrq.Value = DateTime.Now; var vser = ServiceContainer.GetService(); string pcname = System.Net.Dns.GetHostName(); var yqs = vser.getAllYQ(); cbb_yq.DataSource = yqs.Select(t => new yiqi { yq = t.yq, yqmc = t.yq + "(" + t.yqmc + ")" }).ToList(); showxq(); } private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e) { DataGridViewRow dgvr = dataGridView2.Rows[e.RowIndex]; var qcobecjt = dgvr.DataBoundItem as QC_Object; newQCObject = qcobecjt; hqyqjdbbh(qcobecjt); } private void dtp_endrq_ValueChanged(object sender, EventArgs e) { DateTime time1 = Convert.ToDateTime(dtp_strrq.Value.Date.ToString("yyyy-MM-dd")); DateTime time2 = Convert.ToDateTime(dtp_endrq.Value.Date.ToString("yyyy-MM-dd")); if (DateTime.Compare(time1, time2) > 0) //判断日期大小 { MessageBox.Show("结束日期不能小于开始日期,请重新选择日期"); } //else if (DateTime.Compare(time2, time1) < 0) //判断日期大小 //{ // MessageBox.Show("开始日期不能大于结束日期,请重新选择日期"); //} } private void dtp_strrq_ValueChanged(object sender, EventArgs e) { } public QC_Items newQcItems; private void dgv_Items_CellClick(object sender, DataGridViewCellEventArgs e) { DataGridViewRow dgvr = dgv_Items.Rows[e.RowIndex]; var qcItems = dgvr.DataBoundItem as QC_Items; if (qcItems != null) { newQcItems = qcItems; hqQcValues(newQcItems); } } private void hqQcValues(QC_Items qci) { string strrq = dtp_strrq.Value.Date.ToString("yyyy-MM-dd"); string endrq = dtp_endrq.Value.Date.ToString("yyyy-MM-dd"); var vser = ServiceContainer.GetService(); DataTable qcValues = vser.hqqcvalues(strrq, endrq, qci); Image bzimg = new Bitmap(820, 330); Graphics g = System.Drawing.Graphics.FromImage(bzimg); g.SmoothingMode = SmoothingMode.AntiAlias; //使绘图质量最高,即消除锯齿 g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.CompositingQuality = CompositingQuality.HighQuality; g.FillRectangle(new SolidBrush(Color.White), 0, 0, 820, 330); if (qcValues.Rows.Count != 0) { Font f = new Font("微软雅黑", 14, FontStyle.Bold); yiqi y = cbb_yq.SelectedItem as yiqi; string bt = y.yqmc + qci.xmmc + "质控图"; SizeF s = g.MeasureString(bt, f); g.DrawString(bt, f, Brushes.Black, (830 - s.Width) / 2, 0); string sj = strrq + " 至 " + endrq; Font sjf = new Font("微软雅黑", 10); s = g.MeasureString(sj, sjf); g.DrawString(sj, sjf, Brushes.Black, (820 - s.Width) / 2, 26); g.DrawLine(Pens.Black, 40, 45, 40, 45 + 264); g.DrawLine(Pens.Black, 40, 45 + 264 / 2, 40 + 760, 45 + 264 / 2); string s_sd = "靶值"; Font f_sd = new Font("宋体", 10); SizeF sf_sd = g.MeasureString(s_sd, f_sd); g.DrawString(s_sd, f_sd, Brushes.Black, 40 - sf_sd.Width, 45 + 264 / 2 - sf_sd.Height / 2); //33 Pen p_g = new Pen(Brushes.Green); p_g.DashStyle = DashStyle.Dash; g.DrawLine(p_g, 40, 45 + 264 / 2 - 33, 40 + 760, 45 + 264 / 2 - 33); s_sd = "1sd"; f_sd = new Font("宋体", 14); sf_sd = g.MeasureString(s_sd, f_sd); g.DrawString(s_sd, f_sd, Brushes.Green, 40 - sf_sd.Width, 45 + 264 / 2 - 33 - sf_sd.Height / 2); g.DrawLine(p_g, 40, 45 + 264 / 2 + 33, 40 + 760, 45 + 264 / 2 + 33); p_g = new Pen(Brushes.Green); p_g.DashStyle = DashStyle.Dash; s_sd = "-1sd"; f_sd = new Font("宋体", 14); sf_sd = g.MeasureString(s_sd, f_sd); g.DrawString(s_sd, f_sd, Brushes.Green, 40 - sf_sd.Width, 45 + 264 / 2 + 33 - sf_sd.Height / 2); //66 p_g = new Pen(Brushes.Orange); p_g.DashStyle = DashStyle.DashDot; g.DrawLine(p_g, 40, 45 + 264 / 2 - 66, 40 + 760, 45 + 264 / 2 - 66); s_sd = "2sd"; f_sd = new Font("宋体", 14); sf_sd = g.MeasureString(s_sd, f_sd); g.DrawString(s_sd, f_sd, Brushes.Orange, 40 - sf_sd.Width, 45 + 264 / 2 - 66 - sf_sd.Height / 2); g.DrawLine(p_g, 40, 45 + 264 / 2 + 66, 40 + 760, 45 + 264 / 2 + 66); p_g = new Pen(Brushes.Orange); p_g.DashStyle = DashStyle.DashDot; s_sd = "-2sd"; f_sd = new Font("宋体", 14); sf_sd = g.MeasureString(s_sd, f_sd); g.DrawString(s_sd, f_sd, Brushes.Orange, 40 - sf_sd.Width, 45 + 264 / 2 + 66 - sf_sd.Height / 2); //99 p_g = new Pen(Brushes.Red); p_g.DashStyle = DashStyle.DashDot; g.DrawLine(p_g, 40, 45 + 264 / 2 - 99, 40 + 760, 45 + 264 / 2 - 99); s_sd = "3sd"; f_sd = new Font("宋体", 14); sf_sd = g.MeasureString(s_sd, f_sd); g.DrawString(s_sd, f_sd, Brushes.Red, 40 - sf_sd.Width, 45 + 264 / 2 - 99 - sf_sd.Height / 2); g.DrawLine(p_g, 40, 45 + 264 / 2 + 99, 40 + 760, 45 + 264 / 2 + 99); p_g = new Pen(Brushes.Red); p_g.DashStyle = DashStyle.DashDot; s_sd = "-3sd"; f_sd = new Font("宋体", 14); sf_sd = g.MeasureString(s_sd, f_sd); g.DrawString(s_sd, f_sd, Brushes.Red, 40 - sf_sd.Width, 45 + 264 / 2 + 99 - sf_sd.Height / 2); g.DrawLine(Pens.Black, 40, 45 + 264, 40 + 760, 45 + 264); int days = (dtp_endrq.Value - dtp_strrq.Value).Days + 1; if (days < 1) { MessageBox.Show("请选择正确的时间段!"); return; } float jg = 760 * 1.0f / (days + 1); PointF sp = new PointF(0, 0); RectangleF rect = new RectangleF(40, 45, 760, 264); for (int i = 0; i < days; i++) { g.DrawLine(Pens.Black, 40 + (i + 1) * jg, 45 + 264 - 3, 40 + (i + 1) * jg, 45 + 264); DateTime m = dtp_strrq.Value.AddDays(i); f = new Font("宋体", 8); string s1 = ""; if (m.Day == 1) { s1 = m.Month + "月"; } else { s1 = (m.Day).ToString(); } s = g.MeasureString(s1, f); g.DrawString(s1, f, Brushes.Black, 40 + (i + 1) * jg - s.Width / 2, 45 + 265); DataRow[] drs = qcValues.Select("DataValue='" + m.ToString("yyyy-MM-dd") + "'"); if (drs.Length > 0) { float bz = 0; string sbz = drs[0]["SD"].ToString(); float.TryParse(sbz, out bz); if (bz != 0) { PointF ep = new PointF(40 + (i + 1) * jg, 45 + 264 / 2 - bz * 33); if (rect.Contains(ep)) g.FillEllipse(Brushes.Black, ep.X - 2, ep.Y - 2, 4, 4); if(sp.X!=0&&sp.Y!=0) { g.DrawLine(Pens.Black, sp, ep); } sp = ep; } } } qcValues.DefaultView.Sort = "DataValue"; DataTable orderdt = qcValues.DefaultView.ToTable(); qCValueBindingSource1.DataSource = orderdt; double c; for (int i = 0; i < dgv_qcvalues.Rows.Count; i++) { if (dgv_qcvalues.Rows[i].Cells["col_sc"].Value.ToString().Trim().Length > 0) { if (double.TryParse(dgv_qcvalues.Rows[i].Cells["col_sc"].Value.ToString(), out c)) { if ((c > 2 && c < 3) || (c < -2 && c > -3)) { dgv_qcvalues.Rows[i].Cells["col_sc"].Style.BackColor = Color.Yellow; } else if ((c > 3) || (c < -3)) { dgv_qcvalues.Rows[i].Cells["col_sc"].Style.BackColor = Color.Red; } } } } } else { qCValueBindingSource1.DataSource = null; } pic_zkt.Image = bzimg; } private void dgv_qcvalues_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { DataGridView dgv = (DataGridView)sender; if (dgv.Columns[e.ColumnIndex].Name == "dgv_jg") { e.Cancel = false; } else { e.Cancel = true; } } public QC_Value newqcValues; public string qcValuesID; private void dgv_qcvalues_CellClick(object sender, DataGridViewCellEventArgs e) { this.dgv_qcvalues.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter; //DataGridViewRow dgvr = ; string qcvalueid = dgv_qcvalues.Rows[e.RowIndex].Cells["col_id"].Value.ToString(); //var qcvaluess = dgvr.DataBoundItem as QC_Value; if (qcvalueid != null) { qcValuesID = qcvalueid; //newqcValues = qcvaluess; //hqQcValues(newQcItems); } } private void dgv_qcvalues_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (dgv_qcvalues.Rows.Count != 0) { DataGridViewRow dgvxm = dgv_qcvalues.Rows[e.RowIndex]; string yqbh = dgvxm.Cells["col_yqbh"].Value.ToString(); int QCOID = Convert.ToInt32(dgvxm.Cells["col_QCOID"].Value.ToString()); int id = Convert.ToInt32(dgvxm.Cells["col_id"].Value.ToString()); string rq = dgvxm.Cells["col_rq"].Value.ToString(); string time = dgvxm.Cells["col_time"].Value.ToString(); Double bz = Convert.ToDouble(dgvxm.Cells["col_bz"].Value); Double bzc = Convert.ToDouble(dgvxm.Cells["col_bzc"].Value); Double jg = Convert.ToDouble(dgvxm.Cells["dgv_jg"].Value); Double SD = (jg - bz) / bzc; var vser = ServiceContainer.GetService(); vser.qcValueUpdate(id, jg.ToString(), SD); hqQcValues(newQcItems); } } private void button1_Click(object sender, EventArgs e) { if (newQcItems != null) { string rq = DateTime.Now.ToString("yyyy-MM-dd"); string time = DateTime.Now.ToLongTimeString().ToString(); var vser = ServiceContainer.GetService(); vser.insertQcValue(rq, time, newQcItems); hqQcValues(newQcItems); } else { MessageBox.Show("请选择一项质控项目!"); } } private void button2_Click(object sender, EventArgs e) { if (qcValuesID != null) { var vser = ServiceContainer.GetService(); vser.deleteQcvalue(Convert.ToInt32(qcValuesID)); hqQcValues(newQcItems); } else { MessageBox.Show("请选择一项要删除的质控结果!"); } } private void button3_Click(object sender, EventArgs e) { } } }