using gregn6Lib; using PaintingPC.Model; using PaintingPC.WebReference; using System; using System.Configuration; using System.Data; using System.Drawing; using System.IO; using System.Net.NetworkInformation; using System.Reflection; using System.Threading; using System.Windows.Forms; using grproLib; namespace PaintingPC { public partial class FrmSecondCheck : Form { int count = 0; //缺陷图选择个数 public static string ColorName = ""; //修改颜色 private GridppReport Report = new GridppReport(); public FrmSecondCheck() { InitializeComponent(); } private void FrmSecondCheck_Load(object sender, EventArgs e) { Control.CheckForIllegalCrossThreadCalls = false; InitPage(); } public void InitPage() { try { string title = ConfigurationManager.AppSettings["Position"].ToString(); string workClass = Function.GetWorkClass(); string station = ConfigurationManager.AppSettings["Station"].ToString(); labTitle.Text = title; labWorkClass.Text = workClass; labStation.Text = station; labelVersion.Text = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); Program.IP = ConfigurationManager.AppSettings["IP"].ToString(); //System.Threading.Timer timer = new System.Threading.Timer(delegate //{ // labTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //}, //null, //2000, //1000 //); Thread t = new Thread(new ThreadStart(TimeGo)); t.Start(); } catch (Exception ex) { } } private void TimeGo() { System.Timers.Timer timer = new System.Timers.Timer(); timer.Interval = 10; timer.Enabled = true; timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); } private void timer_Tick(object sender, EventArgs e) { labTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); Thread.Sleep(500); } /// /// 缺陷图点击 /// /// /// void lblRoom_Click(object sender, EventArgs e) { //Label a = (Label)sender; //foreach (Control c in pictureBox2.Controls) //{ // c.BackColor = Color.Transparent; //} //string aa = a.Text; ////a.BackColor = System.Drawing.Color.Chartreuse; //a.BackColor = Color.FromArgb(150,System.Drawing.Color.Chartreuse); Label a = (Label)sender; string aa = a.Text; if (a.BackColor == Color.Transparent) { a.BackColor = Color.FromArgb(150, System.Drawing.Color.Chartreuse); count++; } else { a.BackColor = Color.Transparent; count--; } } /// /// 缺陷原因点击 /// /// /// void dLbRoom_Click(object sender, EventArgs e) { if (count == 0) { MessageBox.Show("请选择缺陷区域!"); return; } Label a = (Label)sender; string aa = a.Text; if (a.BackColor == Color.Transparent) { a.BackColor = Color.Chartreuse; } else { a.BackColor = Color.Transparent; } } private Control[] SetControlGroup() { Control[] controls = { btnPass, btnAbt, btnRepair, btnFirstPass }; return controls; } /// /// 清除控件选中 /// /// public void ClearControlColor(Control[] controls) { foreach (Control c in controls) { c.BackColor = Color.LightGray; } } /// /// 抛光按钮 /// /// /// private void btnPass_Click(object sender, EventArgs e) { #region 必须选择缺陷位置与缺陷原因,否则无法保存 string damnPositionTemp = ""; string reasonTemp = ""; //缺陷位置 foreach (Control c in pictureBox2.Controls) { Label lab = c as Label; if (lab.BackColor != Color.Transparent) { damnPositionTemp += lab.Text + ";"; } } //缺陷原因 foreach (Control c in panel2.Controls) { Label lab = c as Label; if (lab.BackColor != Color.Transparent) { reasonTemp += lab.Text + ";"; } } if (string.IsNullOrWhiteSpace(damnPositionTemp) || string.IsNullOrWhiteSpace(reasonTemp)) { MessageBox.Show("必须选择缺陷位置与缺陷原因,否则无法保存!"); return; } #endregion ClearControlColor(SetControlGroup()); btnRepair.BackColor = Color.Yellow; //保存 SaveInspect("抛光"); ClearPage(); ClearTxtBarcode(); txtBarCode.TabIndex = 0; //LoadPage(); //ClearInspect(); //ClearControlColor(SetControlGroup()); } /// /// 打磨按钮 /// /// /// private void btnRepair_Click(object sender, EventArgs e) { #region 可回喷次数 =1,不能打磨, =2 可以, 不能有两次质检结果为打磨 string barcode = Function.UniteBarCodeToOne(txtBarCode.Text.Trim()); int cs = Function.YiDaMoCiShu(barcode); if (cs >= 1) { MessageBox.Show("该条码已有判定为打磨的质检结果!"); return; } int keHuiPen = Function.keHuiPen(barcode); if (keHuiPen > 1) { #region 必须选择缺陷位置与缺陷原因,否则无法保存 string damnPositionTemp = ""; string reasonTemp = ""; //缺陷位置 foreach (Control c in pictureBox2.Controls) { Label lab = c as Label; if (lab.BackColor != Color.Transparent) { damnPositionTemp += lab.Text + ";"; } } //缺陷原因 foreach (Control c in panel2.Controls) { Label lab = c as Label; if (lab.BackColor != Color.Transparent) { reasonTemp += lab.Text + ";"; } } if (string.IsNullOrWhiteSpace(damnPositionTemp) || string.IsNullOrWhiteSpace(reasonTemp)) { MessageBox.Show("必须选择缺陷位置与缺陷原因,否则无法保存!"); return; } #endregion ClearControlColor(SetControlGroup()); btnRepair.BackColor = Color.Yellow; //保存 SaveInspect("打磨"); ClearPage(); ClearTxtBarcode(); txtBarCode.TabIndex = 0; //LoadPage(); //ClearInspect(); //ClearControlColor(SetControlGroup()); } else { MessageBox.Show("根据该零件可回喷次数设置,不能判定为打磨,请联系管理员"); return; } #endregion } /// /// 报废按钮 /// /// /// private void btnAbt_Click(object sender, EventArgs e) { #region 必须选择缺陷位置与缺陷原因,否则无法保存 string damnPositionTemp = ""; string reasonTemp = ""; //缺陷位置 foreach (Control c in pictureBox2.Controls) { Label lab = c as Label; if (lab.BackColor != Color.Transparent) { damnPositionTemp += lab.Text + ";"; } } //缺陷原因 foreach (Control c in panel2.Controls) { Label lab = c as Label; if (lab.BackColor != Color.Transparent) { reasonTemp += lab.Text + ";"; } } if (string.IsNullOrWhiteSpace(damnPositionTemp) || string.IsNullOrWhiteSpace(reasonTemp)) { MessageBox.Show("必须选择缺陷位置与缺陷原因,否则无法保存!"); return; } #endregion ClearControlColor(SetControlGroup()); btnAbt.BackColor = Color.Red; //保存 SaveInspect("报废"); #region 报废则调WMS WebService,入库 try { WMSWebService webService = new WMSWebService(); webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); //webService.Timeout = 1200000; string errorReason = ""; webService.WMSSprayingForCS(Function.UniteBarCodeToOne(txtBarCode.Text.Trim()), 0, out errorReason); } catch (Exception ex) { LogHelper.WriteErrLogBase("工位:" + labStation.Text.Trim() + ",二次质检调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); } #endregion ClearPage(); ClearTxtBarcode(); txtBarCode.TabIndex = 0; //ClearInspect(); //ClearControlColor(SetControlGroup()); } public void SaveInspect(string inspectResult) { try { if (!string.IsNullOrWhiteSpace(txtBarCode.Text.Trim())) { InspectModel model1 = new InspectModel(); model1.ID = Guid.NewGuid().ToString(); model1.barcode = Function.UniteBarCodeToOne(txtBarCode.Text.Trim()); if (labProductInfo.Tag != null) { model1.side = labProductInfo.Tag.ToString(); } else { model1.side = ""; } model1.position = labTitle.Text.Trim(); model1.stationNo = labStation.Text; model1.workClass = labWorkClass.Text; model1.inspectResult = "[" + inspectResult + "]"; //缺陷位置 foreach (Control c in pictureBox2.Controls) { Label lab = c as Label; if (lab.BackColor != Color.Transparent) { model1.damnPosition += lab.Text + ";"; } } //缺陷原因 foreach (Control c in panel2.Controls) { Label lab = c as Label; if (lab.BackColor != Color.Transparent) { model1.reason += lab.Text + ";"; } } if (model1.inspectResult == "[报废]" || model1.inspectResult == "[抛光]") { if (string.IsNullOrWhiteSpace(model1.damnPosition) || string.IsNullOrWhiteSpace(model1.reason)) { MessageBox.Show("必须选择缺陷位置与缺陷原因,否则无法保存!"); return; } } if (rdo1.Checked) { model1.productOption = "1"; } else if (rdo2.Checked) { model1.productOption = "2"; } else if (rdo3.Checked) { model1.productOption = "3"; } model1.productInfo = labProductInfo.Text.Trim(); model1.InspectTimes = ConfigurationManager.AppSettings["InspectTimes"].ToString(); if (!string.IsNullOrWhiteSpace(labSecondCheck.Text)) { model1.InspectTimes = "3"; } Function.InsertInspect(model1); } } catch (Exception ex) { LogHelper.WriteErrLogBase("二次质检提交:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); } } public void ClearInspect() { //缺陷位置 foreach (Control c in pictureBox2.Controls) { Label lab = c as Label; lab.BackColor = Color.Transparent; } //缺陷原因 foreach (Control c in panel2.Controls) { Label lab = c as Label; lab.BackColor = Color.Transparent; } } /// /// 扫码-根据条码查询信息(产品信息、加载图片及缺陷原因、三次检验信息) /// /// /// private void txtBarCode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { ClearPage(); LoadPage(); } } private void LoadPage() { try { ButtonEnable(SetControlGroup()); //ClearPage(); //测试条码:11111111112222222222 string barcode = txtBarCode.Text.Trim(); if (barcode.Contains(".")) { barcode = Function.TransToBarCodeOne(barcode); } #region 判断条码有效性 if (! Function.BarCodeValid(barcode)) { MessageBox.Show("扫描的条码号:"+barcode+"无效,请重新扫描!"); txtBarCode.Text = ""; return; } #endregion #region 根据条码查询AB侧--暂时不要 //string side = Function.GetSide(barcode); //labProductInfo.Tag = side; #endregion #region 如果是补打的条码,查询产品信息 if (!barcode.Contains(".") && barcode.Length > 4) { string strCode = barcode.Substring(barcode.Length - 4, 4); int num = 0; Int32.TryParse(strCode, out num); if (num > 7000) { labProductInfo.Text = Function.GetReprintInfo(barcode); if (string.IsNullOrWhiteSpace(labProductInfo.Text.Trim())) { ButtonDisable(SetControlGroup()); labProductInfo.Text = "没有查询到补打条码信息"; return; } } } #endregion //根据条码查询,加载图片及原因 int row = 0, col = 0; string picture = ""; #region 缺陷原因 try { int drow = 0, dcol = 5; //行,列 DataTable dt3 = Function.SearchDefectInfo(ConfigurationManager.AppSettings["Station"].Trim()); 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, 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]); dLb[i].Click += new EventHandler(dLbRoom_Click); } } } } } catch (Exception ex) { LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); } #endregion #region 加载图片 try { DataTable dt = Function.SearchInfoByBarCode(barcode); if (dt != null && dt.Rows.Count > 0) { row = Convert.ToInt32(dt.Rows[0]["Rows"].ToString()); col = Convert.ToInt32(dt.Rows[0]["Cols"].ToString()); picture = dt.Rows[0]["PicturePath"].ToString(); } dt.Dispose(); //if (!File.Exists(Program.PicturePath + @"\" + "picture")) if (!File.Exists(System.IO.Directory.GetCurrentDirectory() + @"\" + picture)) { Ping p1 = new Ping(); bool status = false; PingReply reply = p1.Send(Program.IP); //发送主机名或Ip地址 if (reply.Status == IPStatus.Success) { string PictureFolder = ConfigurationManager.AppSettings["PictureFolder"].ToString(); string User = ConfigurationManager.AppSettings["User"].ToString(); string UserPwd = ConfigurationManager.AppSettings["UserPwd"].ToString(); status = Upload.DoConnComputer(Program.IP, PictureFolder, User, UserPwd); if (status == true) { //共享文件夹的目录 string path = ConfigurationManager.AppSettings["RemotePictureFolder"].ToString() + picture; DirectoryInfo theFolder = new DirectoryInfo(path); string filename = theFolder.ToString(); //执行方法 Function.TransportRemoteToLocal(filename, System.Environment.CurrentDirectory + "\\", picture); //实现将远程服务器文件写入到本地 } } } FileStream fs = new FileStream(System.Environment.CurrentDirectory + "\\" + picture, FileMode.Open, FileAccess.Read);//获取图片文件流 Image img = Image.FromStream(fs); // 文件流转换成Image格式 pictureBox2.Image = img; //给 图片框设置要显示的图片 fs.Close(); // 关闭流,释放图片资源 } catch (Exception ex) { LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); } #endregion #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 //不是补打的条码,根据条码查询产品信息、检验信息,选中缺陷位置及原因 DataTable dtInspect = Function.GetInspectInfoByBarCode(barcode); if (dtInspect != null && dtInspect.Rows.Count > 0) { labProductInfo.Text = dtInspect.Rows[0]["productInfo"].ToString().Trim(); //产品信息 string position = dtInspect.Rows[0]["damnPosition"].ToString(); //缺陷位置 string reason = dtInspect.Rows[0]["reason"].ToString(); //原因 #region 三检结果 for (int i = 0; i < dtInspect.Rows.Count; i++) { string time = dtInspect.Rows[i]["InspectTimes"].ToString(); string result = dtInspect.Rows[i]["inspectResult"].ToString() + dtInspect.Rows[i]["damnPosition"].ToString() + ":" + dtInspect.Rows[i]["reason"].ToString(); switch (time) { case "1": labFirstCheck.Text = result; break; case "2": labSecondCheck.Text = result; break; case "3": labThirdCheck.Text = result; break; } } #endregion #region 选中缺陷位置及原因 foreach (Control c in pictureBox2.Controls) { Label lab = c as Label; if (position.Contains(lab.Text)) { lab.BackColor = Color.FromArgb(150, System.Drawing.Color.Chartreuse); count++; } } foreach (Control c in panel2.Controls) { Label lab = c as Label; if (reason.Contains(lab.Text)) { lab.BackColor = Color.Chartreuse; } } #endregion #region 根据一检结果显示一检时的位置--暂时不要 //labProPosition.Text = Function.GetFirstInsPosition(dtInspect); #endregion } #region 没有一检结果,查询老外数据库,取产品信息--暂时不要 //if (string.IsNullOrWhiteSpace(labProductInfo.Text.Trim())) //{ // //没有一检结果,查询产品信息 // labProductInfo.Text = Function.GetProductInfo(barcode); //} #endregion #region 没有一检结果,查询上线表,取颜色及产品信息 if (string.IsNullOrWhiteSpace(labProductInfo.Text.Trim())) { labProductInfo.Text = Function.GetProductInfo(barcode); } #endregion #region 没有一检结果,提示 //if (string.IsNullOrWhiteSpace(labFirstCheck.Text.Trim())) //{ // MessageBox.Show("没有一检结果!", "警告", MessageBoxButtons.OK); //} #endregion } catch (Exception ex) { LogHelper.WriteLogManager(ex); } } /// /// 设置按钮不可用 /// /// private void ButtonDisable(Control[] controls) { foreach (Control c in controls) { Button btn = c as Button; btn.Enabled = false; } } /// /// 设置按钮可用 /// /// private void ButtonEnable(Control[] controls) { foreach (Control c in controls) { Button btn = c as Button; btn.Enabled = true; } } private void labWorkClass_Click(object sender, EventArgs e) { Function.ChangeWorkClass(labWorkClass); } /// /// 点击退出 /// /// /// private void labTime_Click(object sender, EventArgs e) { Environment.Exit(0); } /// /// 清空页面 /// private void ClearPage() { labProductInfo.Tag = null; labProductInfo.Text = ""; labFirstCheck.Text = ""; labSecondCheck.Text = ""; labThirdCheck.Text = ""; btnPass.BackColor = Color.LightGray; btnAbt.BackColor = Color.LightGray; btnRepair.BackColor = Color.LightGray; ClearInspect(); ClearControlColor(SetControlGroup()); pictureBox2.Controls.Clear(); panel2.Controls.Clear(); pictureBox2.Image = null; txtBarCode.TabIndex = 0; txtBarCode.Select(); } public void ClearTxtBarcode() { txtBarCode.Text = ""; labProPosition.Text = ""; } /// /// 合格按钮 /// /// /// private void btnFirstPass_Click(object sender, EventArgs e) { ClearControlColor(SetControlGroup()); btnPass.BackColor = Color.GreenYellow; //保存 SaveInspect("合格"); //如果是现代车型,打标签 if (Function.IsHyundai(Function.UniteBarCodeToOne(txtBarCode.Text.Trim()))) { #region 打印条码 try { string path = @"D:\aaa.grf"; Report.Register(""); Report.LoadFromFile(path); Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); Report.DesignPaperOrientation = GRPaperOrientation.grpoLandscape; //report.PrintPreview(true); Report.Print(false); } catch (Exception ex) { throw ex; } //string path = System.Windows.Forms.Application.StartupPath + @"\aaa.grf"; #endregion } ClearPage(); ClearTxtBarcode(); txtBarCode.TabIndex = 0; //LoadPage(); //ClearInspect(); //ClearControlColor(SetControlGroup()); //todo:打标签 } /// /// 一次质检合格按钮 /// private void SaveInspect_First() { try { if (!string.IsNullOrWhiteSpace(txtBarCode.Text.Trim())) { InspectModel model1 = new InspectModel(); model1.ID = Guid.NewGuid().ToString(); model1.barcode = Function.UniteBarCodeToOne(txtBarCode.Text.Trim()); if (labProductInfo.Tag != null) { model1.side = labProductInfo.Tag.ToString(); } else { model1.side = ""; } model1.position = labTitle.Text.Trim(); model1.stationNo = labStation.Text; model1.workClass = labWorkClass.Text; model1.inspectResult = "[合格]"; if (rdo1.Checked) { model1.productOption = "1"; } else if (rdo2.Checked) { model1.productOption = "2"; } else if (rdo3.Checked) { model1.productOption = "3"; } model1.productInfo = labProductInfo.Text.Trim(); model1.InspectTimes = "1"; Function.InsertInspect(model1); txtBarCode.Text = ""; } } catch (Exception ex) { LogHelper.WriteErrLogBase("二次质检补录一检结果:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); } } #region 更改颜色按钮 /// /// 更改颜色 /// /// /// private void labChangeColor_Click(object sender, EventArgs e) { ColorName = ""; FrmChangeColor frm = new FrmChangeColor(); frm.ShowDialog(); if (!string.IsNullOrWhiteSpace(labProductInfo.Text.Trim())) { string[] str = labProductInfo.Text.Trim().Split(','); if (str.Length > 1) { labProductInfo.Text = ColorName + "," + str[str.Length - 1] ; } } else { labProductInfo.Text = ColorName; } } private void labChangeColor_MouseLeave(object sender, EventArgs e) { Label lab = sender as Label; lab.BackColor = Color.FromArgb(192, 255, 255); } private void labChangeColor_MouseMove(object sender, MouseEventArgs e) { Label lab = sender as Label; lab.BackColor = Color.Turquoise; } #endregion /// /// 其他按钮 /// /// /// private void button1_Click(object sender, EventArgs e) { ClearControlColor(SetControlGroup()); btnPass.BackColor = Color.GreenYellow; //保存 SaveInspect("其他"); ClearPage(); ClearTxtBarcode(); txtBarCode.TabIndex = 0; } private void ReportInitialize() { Report.ParameterByName("zjy").Value = "A03"; Report.ParameterByName("P").Value = "P"; Report.ParameterByName("datetime").Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); Report.ParameterByName("AD").Value = "AD"; Report.ParameterByName("R").Value = "R"; Report.ParameterByName("7F").Value = "7F"; Report.ParameterByName("barcode").Value = "PQ1912140602AD-R7F"; } } }