using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Diagnostics.Eventing.Reader; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Reflection; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using MESClassLibrary.BLL.BasicInfo; using MESClassLibrary.BLL.Injection; using MESClassLibrary.BLL.Inspection; using MESClassLibrary.BLL.Log; using MESClassLibrary.BLL.TruckBox; using MESClassLibrary.DAL; using MESClassLibrary.EFModel; using MESClassLibrary.Model; namespace InjectionPC { public partial class FrmQuality : Form { private static string position = "", reason = ""; private bool _isScanBarCode = true; int count = 0; //缺陷图选择个数 private InjectionBoxBLL _injectionBoxBLL = new InjectionBoxBLL(); private BadInjectionBLL badBLL = new BadInjectionBLL(); private BadInjectionModel badmd = new BadInjectionModel(); private BarCodeBLL barbll = new BarCodeBLL(); private WmsBLL _wmsBll = new WmsBLL(); private string stationId = ""; private DataTable _boxDetailTable = null; private List _boxDelList = new List(); internal event Action> QualityViewClosed = null; public FrmQuality(bool isSingle = false) { InitializeComponent(); this.Size = new Size(1280, 1024); if(isSingle == true) { txtBoxCode.Enabled = false; txtBoxCode.KeyDown -= textBox1_KeyDown; } } private void label9_Click(object sender, EventArgs e) { this.Close(); //OnVisibleChanged() } protected override void OnVisibleChanged(EventArgs e) { base.OnVisibleChanged(e); if (!IsHandleCreated) { this.Close(); } } private void FrmQuality_Load(object sender, EventArgs e) { Control.CheckForIllegalCrossThreadCalls = false; string LineID = ""; label6.Text = Program.station; label8.Text = Program.OperatorName; comboBox1.Text = Program.Shift; txtScanBarCode.TabIndex = 0; txtScanBarCode.Focus(); txtBoxCode.Enabled = false; GetClass(); comboBox1.Enabled = false; txtBoxCode.Text = ""; textBox2.Text = ""; Thread t = new Thread(new ThreadStart(TimeGo)); t.Start(); timer2.Interval = Convert.ToInt32(ConfigurationManager.AppSettings["InterVal2"]); timer2.Enabled = false; StationBLL bll=new StationBLL(); DataTable dt = bll.SearchInfoByNo(Program.station); if (dt != null && dt.Rows.Count > 0) { stationId = dt.Rows[0]["StationID"].ToString(); } #region 测试 //获取服务器上图片 //Ping p1 = new Ping(); //bool status = false; //PingReply reply = p1.Send(Program.IP); //发送主机名或Ip地址 //StringBuilder sbuilder; //if (reply.Status == IPStatus.Success) //{ // status = Upload.DoConnComputer(Program.IP, "aa", "Administrator", "Wff775168+"); // if (status == true) // { // //共享文件夹的目录 // DirectoryInfo theFolder = new DirectoryInfo(@"\\" + Program.IP + "\\aa\\"); // string filename = theFolder.ToString(); // //执行方法 // TransportRemoteToLocal(@"D:\车间.png", filename, "车间.png"); //实现将远程服务器文件写入到本地 // } //} //FileStream fs = new FileStream("D:\\2.jpg", FileMode.Open, // FileAccess.Read);//获取图片文件流 //Image img = Image.FromStream(fs); // 文件流转换成Image格式 //pictureBox2.Image = img; //给 图片框设置要显示的图片 //fs.Close(); // 关闭流,释放图片资源 //Label[] lb = new Label[5]; //string[] str = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O" }; //for (int i = 0; i < 5; i++) //{ // for (int j = 0; j < 3; j++) // { // lb[i] = new Label(); // lb[i].Text = str[i].ToString(); // lb[i].Font = new Font(lb[i].Font.FontFamily, 32, FontStyle.Bold); // lb[i].Size = new Size(pictureBox2.Width / 5, pictureBox2.Height / 3); // lb[i].Location = new Point(0 + i * lb[i].Size.Width, 0 + j * lb[i].Size.Height); // lb[i].BorderStyle = BorderStyle.FixedSingle; // lb[i].BackColor = Color.Transparent; // lb[i].TextAlign = ContentAlignment.MiddleCenter; // pictureBox2.Controls.Add(lb[i]); // lb[i].Click += new EventHandler(lblRoom_Click); // } //} //StationBLL sbll = new StationBLL(); //DataTable sdt = sbll.SearchInfoByNo(Program.station); //if (sdt != null && sdt.Rows.Count > 0) //{ // LineID = sdt.Rows[0]["LineID"].ToString(); //} //sdt.Dispose(); //int row = 0, col = 6; //DefectBLL dbll = new DefectBLL(); //DataTable dt3 = dbll.SearchInfo(LineID); //if (dt3 != null && dt3.Rows.Count > 0) //{ // row = Convert.ToInt32(Math.Ceiling((double)dt3.Rows.Count / 6)); // Label[] dLb = new Label[7]; // string[] dstr = new string[dt3.Rows.Count]; // for (int i = 0; i < dt3.Rows.Count; i++) // { // dstr[i] = dt3.Rows[i]["DefectName"].ToString(); // } // for (int i = 0; i < 6; i++) //列 // { // for (int j = 0; j < row;j++) //行 // { // dLb[i] = new Label(); // if ((i + 6 * j) < dstr.Length) // { // dLb[i].Text = dstr[i + 6 * j].ToString(); // dLb[i].Font = new Font(dLb[i].Font.FontFamily, 24, FontStyle.Bold); // dLb[i].Size = new Size(150, 50); // dLb[i].Location = new Point(20 + i * (dLb[i].Size.Width+25), 5 + j * (dLb[i].Size.Height+20)); // dLb[i].BorderStyle = BorderStyle.FixedSingle; // dLb[i].BackColor = Color.Transparent; // dLb[i].TextAlign = ContentAlignment.MiddleCenter; // panel2.Controls.Add(dLb[i]); // } // } // } //} #endregion txtScanBarCode.Text = Program.strBarCode; lbBoxCode.Text = Program.strBoxCode; txtScanBarCode.SelectAll(); if (ConfigurationManager.AppSettings["IsLast"] == "1") { label9.Visible = true; } else if (ConfigurationManager.AppSettings["IsLast"] == "0") { label9.Visible = false; } GetBadCount(); if (!string.IsNullOrEmpty(txtScanBarCode.Text)) { textBox3_KeyDown(null, new KeyEventArgs( Keys.Enter)); } } private void TimeGo() { System.Timers.Timer timer = new System.Timers.Timer(); timer.Interval = 1000; timer.Enabled = true; timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); } private void timer_Tick(object sender, EventArgs e) { try { label2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); Thread.Sleep(500); } catch { } } /// /// 从远程服务器下载文件到本地 /// /// 下载到本地后的文件路径,包含文件的扩展名 /// 远程服务器路径(共享文件夹路径) /// 远程服务器(共享文件夹)中的文件名称,包含扩展名 public static void TransportRemoteToLocal(string src, string dst, string fileName) //src:下载到本地后的文件路径 dst:远程服务器路径 fileName:远程服务器dst路径下的文件名 { try { FileStream inFileStream = new FileStream(src, FileMode.Open); //远程服务器文件 此处假定远程服务器共享文件夹下确实包含本文件,否则程序报错 if (!Directory.Exists(dst)) { Directory.CreateDirectory(dst); } dst = dst + fileName; FileStream outFileStream = new FileStream(dst, FileMode.OpenOrCreate); //从远程服务器下载到本地的文件 byte[] buf = new byte[inFileStream.Length]; int byteCount; while ((byteCount = inFileStream.Read(buf, 0, buf.Length)) > 0) { outFileStream.Write(buf, 0, byteCount); } inFileStream.Flush(); inFileStream.Close(); outFileStream.Flush(); outFileStream.Close(); } catch (Exception ex) { LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); } } void lblRoom_Click(object sender, EventArgs e) { Label a = (Label) sender; //foreach (Control c in pictureBox2.Controls) //{ // c.BackColor = Color.Transparent; //} if (a.BackColor == Color.Transparent) { a.BackColor = Color.FromArgb(150, System.Drawing.Color.Chartreuse); count++; } else { a.BackColor = Color.Transparent; count--; } //position +=a.Text+","; } void dLbRoom_Click(object sender, EventArgs e) { Label a = (Label)sender; string aa = a.Text; if (a.BackColor == Color.Transparent) { a.BackColor = Color.FromArgb(150, Color.Chartreuse); reason += a.Text+";"; } else { reason = reason.Replace(a.Text+";",""); a.BackColor = Color.Transparent; } } /// /// 保存缺陷 1.tb_Bad_Injection 增加记录 2.tb_Injection_BoxRecord表减一条数据 3. tb_BarCode1表 IsBad=1 4.[tb_Injectionn_Interface]表增加一条QaRst=1的数据 /// /// /// private void button1_Click(object sender, EventArgs e) { //string stockNo = "",batchNo="",partNo="",isbox=""; foreach (Control c in pictureBox2.Controls) { Label lab = c as Label; if (lab.BackColor != Color.Transparent) { position += lab.Text + ";"; } } if (position == "") { MessageBox.Show("请选择缺陷位置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (reason == "") { MessageBox.Show("请选择缺陷原因!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } InjectionBoxBLL ibll=new InjectionBoxBLL(); InspectionBLL bll = new InspectionBLL(); tb_Inspection_tx md = new tb_Inspection_tx(); if (txtBoxCode.Text != "" && txtScanBarCode.Text != "") { MessageBox.Show("箱单和条码只能输入一个!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (txtBoxCode.Text == "" && txtScanBarCode.Text == "") { MessageBox.Show("请扫描条码", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } #region 大件报废 if (txtBoxCode.Text == "" && txtScanBarCode.Text != "") { SingleBadSave(); } #endregion #region 小件报废,直接修改产量,如果是开机报废减产量,否则产量不变增加报废数 if (txtBoxCode.Text != "" && txtScanBarCode.Text == "") { FullBoxBadSave(_boxDetailTable); if (!_boxDelList.Contains(txtBoxCode.Text?.Trim())) { _boxDelList.Add(txtBoxCode.Text?.Trim()); } } #endregion #region 插入质检总表 md.BarCode = badmd.OneBarCode; md.IsOK = 0; md.Station = 2; bll.AddInfo(md); #endregion reason = ""; txtScanBarCode.Text = ""; txtScanBarCode.TabIndex = 0; txtScanBarCode.SelectAll(); txtScanBarCode.Focus(); textBox4.Text = ""; pictureBox2.Image = null; txtBoxCode.Text = ""; pictureBox2.Controls.Clear(); panel2.Controls.Clear(); position = ""; reason = ""; } /// /// 单个报废 /// private void SingleBadSave() { string isbox = ""; #region 判断是否已做过报废 DataTable baddt = badBLL.SearchByCode(txtScanBarCode.Text.Trim()); //bad 表 if (baddt != null && baddt.Rows.Count > 0) { MessageBox.Show("请产品已做过报废处理!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); reason = ""; txtScanBarCode.Text = ""; txtScanBarCode.TabIndex = 0; txtScanBarCode.Focus(); textBox4.Text = ""; pictureBox2.Image = null; pictureBox2.Controls.Clear(); panel2.Controls.Clear(); return; } #endregion #region 保存报废详细信息和是否装过箱,装过箱子的不允许报废 badmd.ID = Guid.NewGuid().ToString(); badmd.StationID = stationId; badmd.BadPosition = position; badmd.BadReason = reason.Trim(); badmd.code = _scanPartNo; badmd.Desc = textBox4.Text?.Trim(); //直供件条码 if (txtScanBarCode.Text.Trim().Contains("#")) { badmd.BarCode = txtScanBarCode.Text.Trim(); //tb_barCode找到记录 DataTable dt1 = barbll.SeachInfoByOne(txtScanBarCode.Text.Trim(), Program.tableName, 2); if (dt1 != null && dt1.Rows.Count > 0) { badmd.OneBarCode = dt1.Rows[0]["OneBarCode"].ToString(); isbox = dt1.Rows[0]["BoxNo"].ToString(); //扣减装箱表boxRecord中箱码对应的数量 //if (SubtrBoxCount(isbox) == false) // return; if (SaveBad(badmd,isbox) == false) { return; } } else { MessageBox.Show("条码不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } else { //普通条码 if (txtScanBarCode.Text.Trim().Contains('.')) { badmd.BarCode = txtScanBarCode.Text.Trim(); //tb_barCode找到记录 DataTable dt = barbll.SeachInfoByOne(txtScanBarCode.Text.Trim(), Program.tableName, 2); if (dt != null && dt.Rows.Count > 0) { badmd.OneBarCode = dt.Rows[0]["OneBarCode"].ToString(); isbox = dt.Rows[0]["BoxNo"].ToString(); if (SaveBad(badmd, isbox) == false) { return; } } else { MessageBox.Show("条码不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } //20位注塑码 else { badmd.OneBarCode = txtScanBarCode.Text.Trim(); DataTable dt1 = barbll.SeachInfoByOne(txtScanBarCode.Text.Trim(), Program.tableName, 1); if (dt1 != null && dt1.Rows.Count > 0) { badmd.BarCode = dt1.Rows[0]["BarCode"].ToString(); isbox = dt1.Rows[0]["BoxNo"].ToString(); if (SaveBad(badmd, isbox) == false) { return; } } else { MessageBox.Show("条码不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } } //badBLL.Add_Info(badmd); #endregion #region 更新BarCode表标志位 //barbll.UpdateIsBad(Program.tableName, badmd.OneBarCode, badmd.BarCode); #endregion GetBadCount(); } bool SaveBad(BadInjectionModel badmd ,string boxCode) { if (!string.IsNullOrEmpty(boxCode)) { DataTable boxTable = _injectionBoxBLL.SearchBox(boxCode); if (boxTable.Rows.Count > 0) { if (boxTable.Rows[0]["IsPrint"].ToString() == "1") { MessageBox.Show("请产品已做装箱,不能做报废!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); reason = ""; txtScanBarCode.Text = ""; txtScanBarCode.TabIndex = 0; txtScanBarCode.Focus(); textBox4.Text = ""; pictureBox2.Image = null; pictureBox2.Controls.Clear(); panel2.Controls.Clear(); return false; } else { bool exsitInWms = _wmsBll.IsReadBarCodeInWms(badmd.BarCode); if(exsitInWms == true) { MessageBox.Show($"条码[{badmd.BarCode}]在WMS已处理,无法在MES进行报废操作."); return false; } string msg = badBLL.SaveBad(badmd,boxCode, Program.tableName, Program.station); if (!string.IsNullOrEmpty(msg)) { MessageBox.Show("报废操作失败,失败原因:" + msg); return false; } else { MessageBox.Show(badmd.OneBarCode +"报废操作成功"); } } } } else { bool exsitInWms = _wmsBll.IsReadBarCodeInWms(badmd.BarCode); if (exsitInWms == true) { MessageBox.Show($"条码[{badmd.BarCode}]在WMS已处理,无法在MES进行报废操作."); return false; } string msg = badBLL.SaveBad(badmd, boxCode, Program.tableName, Program.station); if (!string.IsNullOrEmpty(msg)) { MessageBox.Show("报废操作失败,失败原因:" + msg); return false; } else { MessageBox.Show(badmd.OneBarCode + "报废操作成功"); } } return true; } bool SaveBadByBatch(DataTable boxDetailTable, string boxCode) { if (!string.IsNullOrEmpty(boxCode)) { badmd.Desc = textBox4.Text?.Trim(); string msg = badBLL.SaveBadByBatch(boxDetailTable, stationId, position, reason, boxCode, Program.tableName, textBox4.Text?.Trim(), Program.station); if (!string.IsNullOrEmpty(msg)) { MessageBox.Show($"整箱报废失败:" + msg); return false; } } return true; } /// /// 按箱码报废 /// private void FullBoxBadSave(DataTable boxDetailTable) { if(boxDetailTable == null || boxDetailTable.Rows.Count ==0) { MessageBox.Show($"箱码[{txtBoxCode.Text}]所含详细记录为0,请重新操作."); return; } if (MessageBox.Show($"确认对箱码[{txtBoxCode.Text}]所含[{boxDetailTable.Rows.Count}]条数据做报废处理?", "", MessageBoxButtons.OKCancel) == DialogResult.Cancel) return; string boxCode = boxDetailTable.Rows[0]["BoxNo"].ToString(); if (string.IsNullOrEmpty(boxCode)) return; #region 扣减箱码数量 bool isRead = _wmsBll.IsReadBoxInWms(boxCode); if (isRead == true) { MessageBox.Show($"箱码[{boxCode}]已报工,不能做报废!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); reason = ""; txtScanBarCode.Text = ""; txtScanBarCode.TabIndex = 0; txtScanBarCode.Focus(); textBox4.Text = ""; pictureBox2.Image = null; pictureBox2.Controls.Clear(); panel2.Controls.Clear(); return; } else { SaveBadByBatch(boxDetailTable, boxCode); } #endregion GetBadCount(); } /// /// 扣减箱码数量 /// /// /// bool SubtrBoxCount(string boxCode) { if (!string.IsNullOrEmpty(boxCode)) { DataTable boxTable = _injectionBoxBLL.SearchBox(boxCode); if (boxTable.Rows.Count > 0) { if (boxTable.Rows[0]["IsPrint"].ToString() == "1") { MessageBox.Show("请产品已做装箱,不能做报废!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); reason = ""; txtScanBarCode.Text = ""; txtScanBarCode.TabIndex = 0; txtScanBarCode.Focus(); textBox4.Text = ""; pictureBox2.Image = null; pictureBox2.Controls.Clear(); panel2.Controls.Clear(); return false; } else { _injectionBoxBLL.UpdateBoxCount(boxCode, -1); } } } return true; } /// /// 扣减箱码数量为0,同时撤回WMS报工数据, 如果wms已读取,返回false /// /// /// bool ClearBoxCount(string boxCode) { if (!string.IsNullOrEmpty(boxCode)) { bool isRead = _wmsBll.IsReadBoxInWms(boxCode); if (isRead == true) { MessageBox.Show($"箱码[{boxCode}]已报工,不能做报废!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); reason = ""; txtScanBarCode.Text = ""; txtScanBarCode.TabIndex = 0; txtScanBarCode.Focus(); textBox4.Text = ""; pictureBox2.Image = null; pictureBox2.Controls.Clear(); panel2.Controls.Clear(); return false; } else { bool isDel = _wmsBll.DelRecordByBox(boxCode); if(isDel) { _injectionBoxBLL.UpdateBoxCount(boxCode, 100, true); } else { MessageBox.Show($"整箱报废失败,可能箱码[{boxCode}]在操作时已被wms接收"); return false; } } } return true; } private static bool IsNumeric(string str) { System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^[0-9]\d*$"); return reg1.IsMatch(str); } private void textBox3_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { textBox2.Text = "1"; _boxDetailTable = null; BarCodeScan(txtScanBarCode.Text.Trim()); } } private string _scanPartNo = string.Empty; /// /// 扫描标签质检 /// /// void BarCodeScan(string scanBarCode) { _isScanBarCode = true; string code = ""; string[] barcode = new string[3]; int row = 0, col = 0; string picture = ""; string LineID = ""; ProductBLL bll = new ProductBLL(); BarCodeBLL barbll = new BarCodeBLL(); if (scanBarCode.Contains('.') == false && scanBarCode.Contains('#') == false) { DataTable xdt = barbll.SeachInfoByOne(scanBarCode.Trim(), Program.tableName, 1); if (xdt != null && xdt.Rows.Count > 0) { code = xdt.Rows[0]["BarCode"].ToString(); _scanPartNo = xdt.Rows[0]["PartNo"].ToString(); } else { MessageBox.Show("条码有误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } barcode = code.Split('.'); DataTable dt = bll.SearchInfoByPartNo(barcode[0]); if (dt != null && dt.Rows.Count > 0) { textBox4.Text = dt.Rows[0]["ProductName"].ToString(); row = Convert.ToInt32(dt.Rows[0]["Rows"].ToString()); col = Convert.ToInt32(dt.Rows[0]["Cols"].ToString()); picture = dt.Rows[0]["PicturePath"].ToString(); } } else { DataTable xdt = barbll.SeachInfoByOne(scanBarCode.Trim(), Program.tableName, 2); if (xdt != null && xdt.Rows.Count > 0) { code = xdt.Rows[0]["BarCode"].ToString(); _scanPartNo = xdt.Rows[0]["PartNo"].ToString(); } else { MessageBox.Show("条码有误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (scanBarCode.Contains('#') == false) { barcode = scanBarCode.Trim().Split('.'); DataTable dt = bll.SearchInfoByPartNo(barcode[0]); if (dt != null && dt.Rows.Count > 0) { textBox4.Text = dt.Rows[0]["ProductName"].ToString(); row = Convert.ToInt32(dt.Rows[0]["Rows"].ToString()); col = Convert.ToInt32(dt.Rows[0]["Cols"].ToString()); picture = dt.Rows[0]["PicturePath"].ToString(); } } else { barcode = scanBarCode.Trim().Split('#'); DataTable dt = bll.SearchInfoByPartNo(barcode[0]); if (dt != null && dt.Rows.Count > 0) { textBox4.Text = dt.Rows[0]["ProductName"].ToString(); row = Convert.ToInt32(dt.Rows[0]["Rows"].ToString()); col = Convert.ToInt32(dt.Rows[0]["Cols"].ToString()); picture = dt.Rows[0]["PicturePath"].ToString(); } } } try { #region Load PictureBox if (!string.IsNullOrEmpty(picture)) { if (!File.Exists(System.IO.Directory.GetCurrentDirectory() + @"\" + picture)) { //string strImageURL = ConfigurationManager.AppSettings["PicturePath"] + picture; string strImageURL = "http://10.60.101.59:8001/PDF/" + picture; System.Net.WebClient webClient = new System.Net.WebClient(); webClient.DownloadFile(strImageURL, Directory.GetCurrentDirectory() + @"\" + picture); } FileStream fs = new FileStream(Directory.GetCurrentDirectory() + "\\" + picture, FileMode.Open, FileAccess.Read); //获取图片文件流 Image img = Image.FromStream(fs); // 文件流转换成Image格式 pictureBox2.Image = img; //给 图片框设置要显示的图片 fs.Close(); // 关闭流,释放图片资源 } #endregion } catch (Exception ex) { LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); } #region 缺陷图划分区域 Label[] lb = new Label[5]; string[] str = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; for (int i = 0; i < col; i++) { for (int j = 0; j < row; j++) { lb[i] = new Label(); lb[i].Text = str[i + col * j].ToString(); lb[i].Font = new Font(lb[i].Font.FontFamily, 32, FontStyle.Bold); lb[i].Size = new Size(pictureBox2.Width / col, pictureBox2.Height / row); lb[i].Location = new Point(0 + i * lb[i].Size.Width, 0 + j * lb[i].Size.Height); lb[i].BorderStyle = BorderStyle.FixedSingle; lb[i].BackColor = Color.Transparent; lb[i].TextAlign = ContentAlignment.MiddleCenter; pictureBox2.Controls.Add(lb[i]); lb[i].Click += new EventHandler(lblRoom_Click); } } #endregion #region 缺陷原因 StationBLL sbll = new StationBLL(); DataTable sdt = sbll.SearchInfoByNo(Program.station); if (sdt != null && sdt.Rows.Count > 0) { LineID = sdt.Rows[0]["LineID"].ToString(); } int drow = 0, dcol = 6; DefectBLL dbll = new DefectBLL(); DataTable dt3 = dbll.SearchInfo(LineID); if (dt3 != null && dt3.Rows.Count > 0) { drow = Convert.ToInt32(Math.Ceiling((double)dt3.Rows.Count / dcol)); Label[] dLb = new Label[7]; string[] dstr = new string[dt3.Rows.Count]; for (int i = 0; i < dt3.Rows.Count; i++) { dstr[i] = dt3.Rows[i]["DefectName"].ToString(); } for (int i = 0; i < dcol; i++) //列 { for (int j = 0; j < drow; j++) //行 { dLb[i] = new Label(); if ((i + dcol * j) < dstr.Length) { dLb[i].Text = dstr[i + dcol * j].ToString(); dLb[i].Font = new Font(dLb[i].Font.FontFamily, 20, FontStyle.Bold); dLb[i].Size = new Size(130, 50); dLb[i].Location = new Point(50 + i * (dLb[i].Size.Width + 25), 50 + j * (dLb[i].Size.Height + 20)); dLb[i].BorderStyle = BorderStyle.FixedSingle; dLb[i].BackColor = Color.Transparent; dLb[i].TextAlign = ContentAlignment.MiddleCenter; panel2.Controls.Add(dLb[i]); dLb[i].Click += new EventHandler(dLbRoom_Click); } } } } #endregion if (ConfigurationManager.AppSettings["IsLast"] == "1") { timer2.Enabled = true; } else if (ConfigurationManager.AppSettings["IsLast"] == "0") { timer2.Enabled = false; label9.Visible = false; } } private void label2_Click(object sender, EventArgs e) { this.Close(); if(QualityViewClosed != null) { QualityViewClosed(_boxDelList); } //Environment.Exit(0); } /// /// 扫描箱码,整箱报废 /// /// /// private void textBox1_KeyDown(object sender, KeyEventArgs e) { try { InjectionBoxBLL bll=new InjectionBoxBLL(); BarCodeBLL pbll =new BarCodeBLL(); if (e.KeyCode == Keys.Enter) { string packageCode = txtBoxCode.Text.Trim(); if (string.IsNullOrEmpty(packageCode)) return; DataTable packageTable = pbll.SearchBarCode(packageCode, Program.tableName, "100"); if(packageTable.Rows.Count == 0) { //MessageBox.Show($"扫描箱单[{packageCode}]在系统中不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show($"扫描箱单[{packageCode}]不存在未报废订单!"); txtBoxCode.Focus(); return; } _boxDetailTable = packageTable; DataRow dr = packageTable.Rows[0]; textBox2.Text = packageTable.Rows.Count.ToString(); BarCodeScan(dr["OneBarCode"].ToString()); //if (textBox1.Text.Trim() == "") //{ // MessageBox.Show("请扫描或输入箱单!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // textBox1.Focus(); // return; //} //if (textBox1.Text.Contains('.')==false) //{ // MessageBox.Show("箱单格式有误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // textBox1.Focus(); // return; //} //#region 判断箱单是否为小件,即看零件号是否需要打印单个条码 //string[] aa = textBox1.Text.Split('.'); //string partNo = aa[0].ToString().Trim(); //DataTable dt = pbll.SearchInfoByPartNo(partNo); //if (dt != null && dt.Rows.Count > 0) //{ // if (dt.Rows[0]["IsPrintOneTag"].ToString() == "1") // { // MessageBox.Show("该零件有单个条码,不能扫描箱单!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // textBox1.Focus(); // return; // } //} //else //{ // MessageBox.Show("该箱单有误,请重新扫描或输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // textBox1.Focus(); // return; //} //#endregion //_isScanBarCode = false; //DataTable dt1 = bll.SearchBox(textBox1.Text); //if (dt1 != null && dt1.Rows.Count > 0) //{ // textBox2.Text = dt1.Rows[0]["BoxCount"].ToString(); //} //else //{ // MessageBox.Show("该箱单不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // textBox1.Focus(); // return; //} } } catch (Exception ex) { LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); } } private void timer2_Tick(object sender, EventArgs e) { GetClass(); } private DateTime GetDateTime() { string sql = ""; DateTime time; DataTable dt; try { sql = @"select convert(char(23),getdate(),121) as time"; dt = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; if (dt != null && dt.Rows.Count > 0) { time = DateTime.ParseExact(dt.Rows[0]["time"].ToString(), "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.CurrentCulture); } else { time = DateTime.Now; } return time; } catch (Exception ex) { LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); return DateTime.Now; } } private void GetClass() { try { DateTime aa = GetDateTime(); if (GetDateTime().Hour >= 8 && GetDateTime().Hour < 20) { Program.Shift = "白班"; } else { Program.Shift = "夜班"; } comboBox1.Text = Program.Shift; } catch (Exception ex) { LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); } } private void rbtn1_CheckedChanged(object sender, EventArgs e) { if (rbtn1.Checked) { txtBoxCode.Enabled = true; txtScanBarCode.Text = ""; textBox2.Text = ""; textBox4.Text = ""; txtBoxCode.Focus(); } else { txtBoxCode.Enabled = false; } } private void rbtn2_CheckedChanged(object sender, EventArgs e) { if (rbtn2.Checked) { txtScanBarCode.Enabled = true; txtBoxCode.Text = ""; textBox2.Text = ""; textBox4.Text = ""; txtScanBarCode.Focus(); } else { txtScanBarCode.Enabled = false; } } private void GetBadCount() { try { BadInjectionBLL bll = new BadInjectionBLL(); string startTime = "", endTime = ""; if (comboBox1.Text == "白班") { startTime = DateTime.Now.ToString("yyyy-MM-dd") + " 08:00:00"; endTime = DateTime.Now.ToString("yyyy-MM-dd") + " 20:00:00"; } else { if (DateTime.Now.Hour <= 7) { startTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 20:00:00"; endTime = DateTime.Now.ToString("yyyy-MM-dd") + " 08:00:00"; } else { startTime = DateTime.Now.ToString("yyyy-MM-dd") + " 20:00:00"; endTime = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") + " 08:00:00"; } } textBox2.Text = bll.BadCount(startTime, endTime, stationId); } catch (Exception ex) { LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); } } } }