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.IO; using System.Threading; using UAS_MES.PublicForm; namespace UAS_MES.Make { public partial class Make_FuselageLabelPrint : Form { DataHelper dh; DataTable dt; LogStringBuilder sql = new LogStringBuilder(); AutoSizeFormClass asc = new AutoSizeFormClass(); //保存StepProduct查询出来的数据 // DataTable ListA = new DataTable(); //保存make left join makecraftdetail left join product的数据 // DataTable ListB; DataTable mapB; System.DateTime[] indate; ApplicationClass lbl; string oErrorMessage = ""; Thread InitPrint; bool pr_change = false; ftpOperater ftp; public Make_FuselageLabelPrint() { InitializeComponent(); } private void Make_FuselageLabelPrint_Load(object sender, EventArgs e) { dh = new DataHelper(); sncode.Focus(); asc.controllInitializeSize(this); OperateResult.AppendText(">>请输入SN\n", Color.Black); InitPrint = new Thread(InPrint); SetLoadingWindow stw = new SetLoadingWindow(InitPrint, "初始化打印程序"); BaseUtil.SetFormCenter(stw); stw.ShowDialog(); } private void InPrint() { try { lbl = new ApplicationClass(); BaseUtil.WriteLbl(lbl); } catch (Exception ex) { OperateResult.AppendText("未正确安装CodeSoft软件\n", Color.Red); } } private void sn_code_KeyDown(object sender, KeyEventArgs e) { //按下enter键 if (e.KeyCode == Keys.Enter) { //如果输入的值为空的话,提示不能为空 if (sncode.Text == "") { OperateResult.AppendText(">>序列号不能为空\n", Color.Red); return; } if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out oErrorMessage)) { //定义临时变量 string oMakeCode = ""; string oMsId = ""; if (!LogicHandler.GetMakeInfo(sncode.Text, out oMakeCode, out oErrorMessage)) { OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red); OperateResult.AppendText(">>请输入序列号\n", Color.Black); sncode.Text = ""; return; } //调用公共方法CheckStepSNAndMacode判断工序是否正确 if (LogicHandler.CheckStepSNAndMacode(ma_code.Text == oMakeCode ? oMakeCode : "", User.UserSourceCode, sncode.Text, User.UserCode, out oMakeCode, out oMsId, out oErrorMessage)) { //IF (如果ma_code 为空)THEN if (ma_code.Text == "" || ma_code.Text != oMakeCode) { //获取工单的其他信息 sql.Clear(); sql.Append("select ma_code,nvl(mcd_okqty,0),ma_prodcode,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 + "'"); mapB = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); //如果有数据的话 if (mapB.Rows.Count > 0) { //将工单的其他信息赋值到对应的控件 BaseUtil.SetFormValue(this.Controls, mapB); //提示用户“<<工单号:取ma_makecode” OperateResult.AppendText("<<工单号:" + ma_code.Text + "\n", Color.Black); //提示用户“<< 序列号:XXXX” OperateResult.AppendText("<<序列号:" + sncode.Text + "\n", Color.Black); if (pr_change) { pr_change = false; if (MessageBox.Show("是否使用默认标签", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { OperateResult.AppendText(">>请选择标签模板\n", Color.Green); return; } } } //没有数据 else { OperateResult.AppendText(">>无序列号" + sncode.Text + "对应工单信息\n", Color.Red); } } //所选标签不为空 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(Tag.ToString(), 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); //记录日志 LogicHandler.DoCommandLog(Tag.ToString(),User.UserCode,oMakeCode,User.UserLineCode,User.UserSourceCode, "机身标打印","机身标打印成功", sncode.Text,""); //更新打印的数据 LogicHandler.SetStepResult(ma_code.Text, User.UserSourceCode, sncode.Text, "机身标打印", "机身标打印成功", User.UserCode, out oErrorMessage); //清空输入框的值,聚焦 sncode.Text = ""; sncode.Focus(); //刷新打印数量和剩余数量 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 + ""; //IF 剩余数=0,则清空form中的数据, 提示用户“工单:xx已经打印完成,>>请输入SN”, 清空mapB,listC 中的数据 if (int.Parse(mcd_remainqty.Text) == 0) { BaseUtil.CleanForm(this); OperateResult.AppendText(">>工单:" + ma_code.Text + "打印完成,>>请输入SN\n", Color.Green); } //剩余数量不为0 else { //提示用户“>>请输入SN” OperateResult.AppendText(">>请输入SN\n", Color.Black); } } //标签为空 else { OperateResult.AppendText(">>产品编号:" + ma_prodcode.Text + "未维护机身标签\n", Color.Red); sncode.Text = ""; } } else { OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red); sncode.Text = ""; } } else { OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red); sncode.Text = ""; } } } 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_indate,pl_labelurl from productlabel where pl_prodcode='" + ma_prodcode.Text + "'and PL_LABELTYPE='机身标' order by pl_isdefault desc", "select"); if (dt.Rows.Count == 0) { OperateResult.AppendText(">>产品:" + ma_prodcode.Text + "未维护机身标标签模板\n", Color.Red); } PrintLabel.DataSource = dt; PrintLabel.DisplayMember = "pl_name"; PrintLabel.ValueMember = "pl_labelcode"; 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_FuselageLabelPrint_Activated(object sender, EventArgs e) { sncode.Focus(); } private void Make_FuselageLabelPrint_FormClosing(object sender, FormClosingEventArgs e) { lbl.Quit(); } private void Make_FuselageLabelPrint_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } } }