tijian_jichuang/Code/SOH.JianYan/frm_ZKT.cs

387 lines
15 KiB
C#
Raw Normal View History

2025-02-20 11:54:48 +08:00
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<IJianYan>();
List<QC_Object> qco = vser.getQCObject(cbb_yq.SelectedValue.ToString());
List<QC_Object> 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<IJianYan>();
List<QC_Items> qcItems = vser.hqqcItems(cbb_yq.SelectedValue.ToString(), qcobject.QCOID);
List<QC_Items> 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<IJianYan>();
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<IJianYan>();
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<IJianYan>();
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<IJianYan>();
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<IJianYan>();
vser.deleteQcvalue(Convert.ToInt32(qcValuesID));
hqQcValues(newQcItems);
}
else
{
MessageBox.Show("请选择一项要删除的质控结果!");
}
}
private void button3_Click(object sender, EventArgs e)
{
}
}
}