using System; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using UAS_MES.DataOperate; using UAS_MES.PublicMethod; using UAS_MES.Entity; using LabelManager2; using System.Threading; using UAS_MES.PublicForm; namespace UAS_MES.Make { public partial class Make_ColorBoxLabelPrint : Form { DataHelper dh; DataTable dt; LogStringBuilder sql = new LogStringBuilder(); AutoSizeFormClass asc = new AutoSizeFormClass(); System.DateTime[] indate; //保存StepProduct查询出来的数据 DataTable ListA = new DataTable(); //保存make left join makecraftdetail left join product的数据 // DataTable ListB; //保存ProductLabel数据 DataTable ListC; //工序编号 string stepcode; //下一工序编号 string nextstepcode; //工艺路线编号 string craftcode; //制造单号 string macode; //当前提示的索引 int RemainIndex = 0; //保存TSN编号 string ms_id = null; bool pr_change = false; Thread InitPrint; ApplicationClass lbl; DataTable Dbfind; public Make_ColorBoxLabelPrint() { InitializeComponent(); } private void Make_ColorBoxLabelPrint_Load(object sender, EventArgs e) { dh = new DataHelper(); sncode.Focus(); asc.controllInitializeSize(this); InitPrint = new Thread(InPrint); SetLoadingWindow stw = new SetLoadingWindow(InitPrint, "初始化打印程序"); BaseUtil.SetFormCenter(stw); stw.ShowDialog(); //设置锁定工单 LockMakeCode.GetMakeCodeCtl(ma_code); ma_code.SetLockCheckBox(LockMakeCode); //工单号放大镜配置 ma_code.TableName = "make left join product on ma_prodcode=pr_code"; ma_code.SelectField = "ma_code # 工单号,pr_code # 产品编号,pr_detail # 产品名称"; ma_code.FormName = Name; ma_code.SetValueField = new string[] { "ma_code", "pr_code", "pr_detail" }; ma_code.Condition = "ma_statuscode='STARTED'"; ma_code.DbChange += Ma_code_DbChange; OperateResult.AppendText(">>请输入TSN\n", Color.Black); } private void Ma_code_DbChange(object sender, EventArgs e) { Dbfind = ma_code.ReturnData; BaseUtil.SetFormValue(this.Controls, Dbfind); //获取工单的其他信息 sql.Clear(); sql.Append("select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode as pr_code ,pr_detail,"); sql.Append("pr_spec,ma_qty - nvl(mcd_inqty, 0) mcd_remainqty from make left join makecraftdetail on "); sql.Append("mcd_maid=ma_id left join product on pr_code=ma_prodcode where ma_code='" + ma_code.Text + "' and mcd_stepcode='" + User.CurrentStepCode + "'"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt.Rows.Count > 0) { BaseUtil.SetFormValue(this.Controls, dt); } } private void InPrint() { try { lbl = new ApplicationClass(); BaseUtil.WriteLbl(lbl); } catch (Exception ex) { MessageBox.Show("未正确安装codesoft"); } } private void sn_code_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (CheckTSN.Checked == true && ms_id == null) { if (sncode.Text == "") { OperateResult.AppendText(">>TSN不能为空\n", Color.Red); OperateResult.AppendText(">>请输入TSN\n", Color.Black); return; } sql.Clear(); sql.Append("select max(ms_id) ms_id from makeserial where ms_sncode ='"+sncode.Text+"' or exists (select 1 from"); sql.Append(" makesnrelation where beforesn= '"+ sncode.Text + "'and ms_makecode=makecode)"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt.Rows[0][0].ToString() != "") { ms_id = dt.Rows[0][0].ToString(); sncode.Text = ""; sncode.Focus(); OperateResult.AppendText(">>请输入SN\n", Color.Black); return; } else { sncode.Text = ""; OperateResult.AppendText(">>TSN错误,不存在\n", Color.Red); OperateResult.AppendText(">>请输入TSN\n", Color.Black); return; } } if (sncode.Text == "") { OperateResult.AppendText(">>序列号不能为空\n", Color.Red); return; } if (CheckTSN.Checked == true && ms_id != null) { sql.Clear(); sql.Append("select * from makeserial where ms_id='"+ms_id+"' and ms_sncode= '"+sncode.Text+"' "); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt.Rows.Count > 0) { OperateResult.AppendText(">>TSN和SN一致\n", Color.Green); } else { sncode.Text = ""; OperateResult.AppendText(">>TSN和SN不一致\n", Color.Red); OperateResult.AppendText(">>请输入TSN\n", Color.Black); ms_id = null; return; } } string oMsID; string ErrorMessage2; string oMakeCode; if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out ErrorMessage2)) { // 获取工单归属工单下一工序是否正确 if (LogicHandler.CheckStepSNAndMacode(ma_code.Text, User.UserSourceCode, sncode.Text, User.UserCode, out oMakeCode, out oMsID, out ErrorMessage2)) { if (LogicHandler.SetStepResult(oMakeCode, User.UserSourceCode, sncode.Text, "彩盒打印", "彩盒打印成功", User.UserCode, out ErrorMessage2)) { //获取工单的其他信息 sql.Clear(); sql.Append("select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode as pr_code ,pr_detail,"); sql.Append("pr_spec,ma_qty - nvl(mcd_inqty, 0) mcd_remainqty from make left join makecraftdetail on "); sql.Append("mcd_maid=ma_id left join product on pr_code=ma_prodcode where ma_code='" + oMakeCode + "' and mcd_stepcode='" + User.CurrentStepCode + "'"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt.Rows.Count > 0) { BaseUtil.SetFormValue(this.Controls, dt); //提示用户“<<工单号:取ma_makecode” OperateResult.AppendText("<<工单号:" + ma_code.Text + "\n", Color.Green); //提示用户“<< 序列号:XXXX” OperateResult.AppendText("<<序列号:" + sncode.Text + "\n", Color.Green); if (pr_change) { String dialog = MessageBox.Show("产品更改,确认标签模板选择正确", "提示", MessageBoxButtons.OKCancel).ToString(); if (dialog != "OK") { OperateResult.AppendText(">>产品编号改变,请重新选择标签模板\n", Color.Green); return; } else pr_change = false; } } else { sncode.Text = ""; OperateResult.AppendText(">>无序列号" + sncode.Text + "对应工单信息\n", Color.Red); } string ErrorMessage = ""; string result = ""; if (int.Parse(mcd_remainqty.Text) <= 0) { macode = ma_code.Text; BaseUtil.CleanForm(this); ErrorMessage = "工单" + macode + "打印结束>>>请输入SN"; OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Green); sncode.Focus(); return; } else { //所选标签不为空 if (PrintLabel.SelectedValue != null) { //如果打印张数为空,返回 if (PrintNum.Text == "" || int.Parse(PrintNum.Text) == 0) { OperateResult.AppendText(">>打印张数不可空或者为0\n", Color.Red); //清空输入框的值,聚焦 sncode.Text = ""; sncode.Focus(); //提示用户“>>请输入SN” OperateResult.AppendText(">>请输入SN\n", Color.Black); return; } Print.CodeSoft(lbl, PrintLabel.Text.Split(':')[1], PrintLabel.SelectedValue.ToString(), Printer.Text, sncode.Text, int.Parse(PrintNum.Text), indate[PrintLabel.SelectedIndex]); //提示用户打印成功 OperateResult.AppendText(">>序列号:" + sncode.Text + "打印成功\n", Color.Green); //刷新打印数量和剩余数量 dt = (DataTable)dh.ExecuteSql("select ma_qty - nvl(mcd_inqty, 0) mcd_remainqty from make left join makecraftdetail on mcd_macode=ma_code where ma_code='" + ma_code.Text + "' and mcd_stepcode='" + User.CurrentStepCode + "'", "select"); BaseUtil.SetFormValue(Controls, dt); mcd_okqty.Text = int.Parse(mcd_okqty.Text) + 1 + ""; sncode.Text = ""; ms_id = null; sncode.Focus(); } else { OperateResult.AppendText(">>产品编号:" + pr_code.Text + "未维护机身标签\n", Color.Red); OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red); return; } if (CheckTSN.Checked == true) { OperateResult.AppendText(">>请输入TSN\n", Color.Black); ms_id = null; }else OperateResult.AppendText(">>请输入SN\n", Color.Black); } } else { sncode.Text = ""; OperateResult.AppendText(ErrorMessage2 + "\n", Color.Red); if (CheckTSN.Checked == true) { OperateResult.AppendText(">>请输入TSN\n", Color.Black); ms_id = null; } else OperateResult.AppendText(">>请输入SN\n", Color.Black); } } else { sncode.Text = ""; OperateResult.AppendText(ErrorMessage2 + "\n", Color.Red); if (CheckTSN.Checked == true) { OperateResult.AppendText(">>请输入TSN\n", Color.Black); ms_id = null; } else OperateResult.AppendText(">>请输入SN\n", Color.Black); } } else { sncode.Text = ""; OperateResult.AppendText(ErrorMessage2 + "\n", Color.Red); if (CheckTSN.Checked == true) { OperateResult.AppendText(">>请输入TSN\n", Color.Black); ms_id = null; } else OperateResult.AppendText(">>请输入SN\n", Color.Black); } } } //根据产品编号获取打印模板 private void pr_code_TextChanged(object sender, EventArgs e) { dt = (DataTable)dh.ExecuteSql("select pl_labelcode ||':'||pl_labelname pl_name,pl_labelname,pl_labelcode,pl_labelurl,pl_indate from productlabel where pl_prodcode='" + pr_code.Text + "' and PL_LABELTYPE='彩盒标' order by PL_ISDEFAULT DESC", "select"); PrintLabel.DataSource = dt; PrintLabel.DisplayMember = "pl_name"; PrintLabel.ValueMember = "pl_labelcode"; ftpOperater ftp = new ftpOperater(); indate = new System.DateTime[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { BaseUtil.GetPrintLabel(dt.Rows[i]["pl_labelname"].ToString(), dt.Rows[i]["pl_labelurl"].ToString(), dt.Rows[i]["pl_indate"].ToString()); indate[i] = Convert.ToDateTime(dt.Rows[i]["pl_indate"].ToString()); } pr_change = true; } private void Make_ColorBoxLabelPrint_Activated(object sender, EventArgs e) { sncode.Focus(); } private void Make_ColorBoxLabelPrint_FormClosing(object sender, FormClosingEventArgs e) { lbl.Quit(); } private void Make_ColorBoxLabelPrint_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } private void ma_code_UserControlTextChanged(object sender, EventArgs e) { if (ma_code.Text.Length > 4) { //获取工单的其他信息 sql.Clear(); sql.Append("select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode as pr_code ,pr_detail,"); sql.Append("pr_spec,ma_qty - nvl(mcd_inqty, 0) mcd_remainqty from make left join makecraftdetail on "); sql.Append("mcd_maid=ma_id left join product on pr_code=ma_prodcode where ma_code='" + ma_code.Text + "' and mcd_stepcode='" + User.CurrentStepCode + "'"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt.Rows.Count > 0) { BaseUtil.SetFormValue(this.Controls, dt); } else { sncode.Text = ""; } } } private void CheckTSN_CheckedChanged(object sender, EventArgs e) { if (CheckTSN.Checked == true) { ms_id = null; OperateResult.AppendText(">>切换至检查TSN\n", Color.Green); OperateResult.AppendText(">>请输入TSN\n", Color.Black); sncode.Text = ""; sncode.Focus(); } else { ms_id = null; OperateResult.AppendText(">>切换至不检查TSN\n", Color.Green); OperateResult.AppendText(">>请输入SN\n", Color.Black); sncode.Text = ""; sncode.Focus(); } } } }