using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using mshtml; using Stone.Common; using Stone.Entity; using Stone.User; using System.Runtime.InteropServices; namespace Stone.WinModule.Quality { public partial class frmViewQuality : Form { #region 构造函数 private HtmlDocument doc = null; private HtmlElement lblTimer = null; //当前时间 private HtmlElement txtBarCode = null; //条码文本框 private HtmlElement txtProductName = null; //产品名称 private HtmlElement btnCompleteScrap = null;//报废提交 private HtmlElement btnComplete = null; //完成提交 private HtmlElement tb_reason = null; //缺陷类型 private HtmlElement tb_responsibility = null; //责任方 private HtmlElement btnQuit = null; private HtmlElement lblMsg = null; private string BarCode = ""; private DataSet dsBarCode = null; private Entity_t_Product t_Product = new Entity_t_Product(); private Entity_t_CarModel t_CarModel = new Entity_t_CarModel(); private Entity_t_Quality t_Quality = new Entity_t_Quality(); private Entity_t_JIS_Assemble t_JIS_Assemble = new Entity_t_JIS_Assemble(); [DllImport("user32.dll", EntryPoint = "ShowCursor", CharSet = CharSet.Auto)] public extern static void ShowCursor(int status); public frmViewQuality() { InitializeComponent(); } public string _BarCode = ""; public string _Type = ""; private void frmViewQuality_Load(object sender, EventArgs e) { try { this.webBrowser1.Navigate(Application.StartupPath + "\\html\\质量采集.html"); this.webBrowser1.ScriptErrorsSuppressed = true; } catch (Exception ex) { lblMsg.InnerHtml = ex.Message; } } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { try { doc = webBrowser1.Document; Init(); this.btnQuit.Click += new HtmlElementEventHandler(btnQuit_Click); this.txtBarCode.KeyDown += new HtmlElementEventHandler(txtBarCode_KeyDown); this.btnComplete.Click += new HtmlElementEventHandler(btnComplete_Click); this.btnCompleteScrap.Click += new HtmlElementEventHandler(btnCompleteScrap_Click); ; this.timer1.Enabled = true; //if (_BarCode != "") //{ // this.txtBarCode.SetAttribute("value", _BarCode); // ScanBarCode(); //} } catch (Exception ex) { lblMsg.InnerHtml = ex.Message; } } void btnQuit_Click(object sender, HtmlElementEventArgs e) { this.Close(); } #endregion #region 事件 private void txtBarCode_KeyDown(object sender, HtmlElementEventArgs e) { if (e.KeyPressedCode == 13) { ScanBarCode(); } } private void ScanBarCode() { //this.txtBarCode.Enabled = false; try { Clear(); BarCode = txtBarCode.GetAttribute("value").Trim(); if (BarCode == "") throw new Exception("条码不能为空"); string productionNumber = BarCode; string partType = "02"; dsBarCode = t_JIS_Assemble.GetData("[productionNumber]='" + productionNumber + "' and [PartType]='" + partType + "'"); if (dsBarCode.Tables[0].Rows.Count == 0) throw new Exception(BarCode + " 在系统中不存在"); txtProductName.InnerHtml = dsBarCode.Tables[0].Rows[0]["description"].ToString(); Entity_t_Quality_interface t_Quality_interface = new Entity_t_Quality_interface(); DataRow drQualityInterface = t_Quality_interface.Table.NewRow(); drQualityInterface["productionNumber"] = productionNumber; drQualityInterface["parttype"] = partType; t_Quality_interface.Add(drQualityInterface); TimerLastNow = TimerLast; timer2.Enabled = true; } catch (Exception ex) { lblMsg.InnerHtml = ex.Message; Clear(); } finally { doc.InvokeScript("barcode_select"); } } private void btnComplete_Click(object sender, HtmlElementEventArgs e) { Submit(); } private void btnCompleteScrap_Click(object sender, HtmlElementEventArgs e) { try { if (dsBarCode == null) throw new Exception("请先扫描条码"); string Reason = GetReason(); //缺陷类型 string Responsibility = GetResponsibility(); //责任方 if (Reason == "") throw new Exception("请选择 缺陷类型"); if (Responsibility == "") throw new Exception("请选择 责任方"); string productionNumber = dsBarCode.Tables[0].Rows[0]["productionNumber"].ToString(); string partType = dsBarCode.Tables[0].Rows[0]["partType"].ToString(); DataSet dsQuality = t_Quality.GetData("top 1 *", "[productionNumber]='" + productionNumber + "' and [partType]='" + partType + "'", "[AddTime] desc"); if (dsQuality.Tables[0].Rows.Count > 0) t_Quality.Del("[ID]=" + dsQuality.Tables[0].Rows[0]["ID"].ToString()); DataRow drQuality = t_Quality.Table.NewRow(); drQuality["productionNumber"] = dsBarCode.Tables[0].Rows[0]["productionNumber"].ToString(); drQuality["itemNumber"] = dsBarCode.Tables[0].Rows[0]["itemNumber"].ToString(); drQuality["description"] = dsBarCode.Tables[0].Rows[0]["description"].ToString(); drQuality["CarModelCode"] = dsBarCode.Tables[0].Rows[0]["CarModelCode"].ToString(); drQuality["partType"] = dsBarCode.Tables[0].Rows[0]["partType"].ToString(); drQuality["State"] = "报废"; drQuality["Reason"] = Reason; drQuality["Responsibility"] = Responsibility; drQuality = t_Quality.Add(drQuality); txtBarCode.SetAttribute("value", ""); Clear(); } catch (Exception ex) { lblMsg.InnerHtml = ex.Message; } finally { this.txtBarCode.Enabled = true; doc.InvokeScript("barcode_select"); } } private void timer1_Tick(object sender, EventArgs e) { try { this.lblTimer.InnerHtml = DateTime.Now.ToString("HH:mm:ss"); } catch { } } private void Submit() { try { if (dsBarCode == null) throw new Exception("请先扫描条码"); string Reason = GetReason(); //缺陷类型 string Responsibility = GetResponsibility(); //责任方 string productionNumber = dsBarCode.Tables[0].Rows[0]["productionNumber"].ToString(); string partType = dsBarCode.Tables[0].Rows[0]["partType"].ToString(); DataSet dsQuality = t_Quality.GetData("top 1 *", "[productionNumber]='" + productionNumber + "' and [partType]='" + partType + "'", "[AddTime] desc"); if (dsQuality.Tables[0].Rows.Count > 0) t_Quality.Del("[ID]=" + dsQuality.Tables[0].Rows[0]["ID"].ToString()); DataRow drQuality = t_Quality.Table.NewRow(); drQuality["productionNumber"] = dsBarCode.Tables[0].Rows[0]["productionNumber"].ToString(); drQuality["itemNumber"] = dsBarCode.Tables[0].Rows[0]["itemNumber"].ToString(); drQuality["description"] = dsBarCode.Tables[0].Rows[0]["description"].ToString(); drQuality["CarModelCode"] = dsBarCode.Tables[0].Rows[0]["CarModelCode"].ToString(); drQuality["partType"] = dsBarCode.Tables[0].Rows[0]["partType"].ToString(); drQuality["State"] = (Reason != "" || Responsibility != "") ? "合格" : "一次合格"; drQuality["Reason"] = Reason; drQuality["Responsibility"] = Responsibility; drQuality = t_Quality.Add(drQuality); txtBarCode.SetAttribute("value", ""); Clear(); } catch (Exception ex) { lblMsg.InnerHtml = ex.Message; } finally { this.txtBarCode.Enabled = true; doc.InvokeScript("barcode_select"); } } #endregion #region 私有函数 private void Init() { lblTimer = doc.GetElementById("lblTimer"); txtBarCode = doc.GetElementById("txtBarCode"); txtProductName = doc.GetElementById("txtProductName"); btnComplete = doc.GetElementById("btnComplete"); btnCompleteScrap = doc.GetElementById("btnCompleteScrap"); tb_reason = doc.GetElementById("tb_reason"); tb_responsibility = doc.GetElementById("tb_Responsibility"); btnQuit = doc.GetElementById("btnQuit"); lblMsg = doc.GetElementById("lblMsg"); foreach (HtmlElement reason_temp in tb_reason.Children) { reason_temp.Click += new HtmlElementEventHandler(reason_temp_Click); } foreach (HtmlElement responsibility_temp in tb_responsibility.Children) { responsibility_temp.Click += new HtmlElementEventHandler(responsibility_temp_Click); } Clear(); } private void Clear() { TimerLastNow = TimerLast; timer2.Enabled = false; btnComplete.InnerText = "完成"; dsBarCode = null; txtProductName.InnerHtml = " "; foreach (HtmlElement reason_temp in tb_reason.Children) { reason_temp.SetAttribute("className", "reason_noselected"); } foreach (HtmlElement responsibility_temp in tb_responsibility.Children) { responsibility_temp.SetAttribute("className", "responsibility_noselected"); } doc.InvokeScript("barcode_set_focus"); } private void reason_temp_Click(object sender, HtmlElementEventArgs e) { try { HtmlElement reason_now = (HtmlElement)sender; foreach (HtmlElement reason_temp in tb_reason.Children) { if (reason_temp != reason_now) { reason_temp.SetAttribute("className", "reason_noselected"); } } if (reason_now.GetAttribute("className") == "reason_noselected") { reason_now.SetAttribute("className", "reason_selected"); } else { reason_now.SetAttribute("className", "reason_noselected"); } } catch (Exception ex) { lblMsg.InnerHtml = ex.Message; } } private void responsibility_temp_Click(object sender, HtmlElementEventArgs e) { try { HtmlElement responsibility_now = (HtmlElement)sender; foreach (HtmlElement responsibility_temp in tb_responsibility.Children) { if (responsibility_temp != responsibility_now) { responsibility_temp.SetAttribute("className", "responsibility_noselected"); } } if (responsibility_now.GetAttribute("className") == "responsibility_noselected") { responsibility_now.SetAttribute("className", "responsibility_selected"); } else { responsibility_now.SetAttribute("className", "responsibility_noselected"); } } catch (Exception ex) { lblMsg.InnerHtml = ex.Message; } } private string GetReason() { string ret = ""; foreach (HtmlElement reason in tb_reason.Children) { if (reason.GetAttribute("className") == "reason_selected") { ret = reason.InnerText.Trim(); break; } } return ret; } private string GetResponsibility() { string ret = ""; foreach (HtmlElement responsibility in tb_responsibility.Children) { if (responsibility.GetAttribute("className") == "responsibility_selected") { ret = responsibility.InnerText.Trim(); break; } } return ret; } #endregion private int TimerLast = Convert.ToInt32(MyAppconfig.ReadValue("质量提交倒计时")); private int TimerLastNow = 0; private void timer2_Tick(object sender, EventArgs e) { this.btnComplete.InnerText = "完成 " + TimerLastNow; TimerLastNow--; if(TimerLastNow < -1) { timer2.Enabled = false; btnComplete.InnerText = "完成"; Submit(); } } } }