using System; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using UAS_MES_NEW.DataOperate; using UAS_MES_NEW.PublicMethod; using UAS_MES_NEW.Entity; using LabelManager2; using System.IO; using System.Threading; using UAS_MES_NEW.PublicForm; namespace UAS_MES_NEW.Make { public partial class Make_FuselageLabelPrint : Form { DataHelper dh; DataTable dt; LogStringBuilder sql = new LogStringBuilder(); Document doc; AutoSizeFormClass asc = new AutoSizeFormClass(); //保存StepProduct查询出来的数据 // DataTable ListA = new DataTable(); //保存make left join makecraftdetail left join product的数据 // DataTable ListB; DataTable mapB; string ma_unlimitin = ""; ApplicationClass lbl; string oMakeCode = ""; string oMsId = ""; string oErrorMessage = ""; Thread InitPrint; bool pr_change = false; ftpOperater ftp; public Make_FuselageLabelPrint() { InitializeComponent(); } private void Make_FuselageLabelPrint_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); OperateResult.AppendText(">>请输入SN\n", Color.Black); InitPrint = new Thread(InPrint); SetLoadingWindow stw = new SetLoadingWindow(InitPrint, "初始化打印程序"); BaseUtil.SetFormCenter(stw); stw.ShowDialog(); sncode.Focus(); dh = SystemInf.dh; StepCount.StepCode = User.CurrentStepCode; StepCount.Source = User.UserSourceCode; StepCount.LineCode = User.UserLineCode; StepCount.Dh = dh; StepCount.Start(); } private void InPrint() { try { lbl = new ApplicationClass(); BaseUtil.WriteLbl(); } 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 oStatus = ""; //调用公共方法CheckStepSNAndMacode判断工序是否正确 if (LogicHandler.CheckStepSNAndMacode("", 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,nvl(ma_unlimitin,0)ma_unlimitin,"); 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) { ma_unlimitin = mapB.Rows[0]["ma_unlimitin"].ToString(); //将工单的其他信息赋值到对应的控件 BaseUtil.SetFormValue(this.Controls, mapB); //提示用户“<<工单号:取ma_makecode” OperateResult.AppendText("<<工单号:" + ma_code.Text + "\n", Color.Black); //提示用户“<< 序列号:XXXX” if (PrintLabel.SelectedValue == null) { OperateResult.AppendText(">>产品编号:" + ma_prodcode.Text + "未维护机身标签\n", Color.Red, sncode); return; } if (pr_change) { pr_change = false; if (MessageBox.Show("是否使用默认标签", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { OperateResult.AppendText(">>请选择标签模板\n", Color.Green, sncode); return; } } } //没有数据 else { OperateResult.AppendText(">>无序列号" + sncode.Text + "对应工单信息\n", Color.Red); return; } } //所选标签不为空 if (PrintLabel.SelectedValue != null) { //如果打印张数为空,返回 if (PrintNum.Text == "" || int.Parse(PrintNum.Text) == 0) { OperateResult.AppendText(">>打印张数不可空或者为0\n", Color.Red, sncode); //清空输入框的值,聚焦 sncode.Focus(); //提示用户“>>请输入SN” OperateResult.AppendText(">>请输入SN\n", Color.Black); return; } OperateResult.AppendText("<<序列号:" + sncode.Text + "\n", Color.Black); //按照打印张数打印 //doc = lbl.Documents.Open(PrintLabel.Text); if (Print.CodeSoft(Tag.ToString(), ref lbl, PrintLabel.Text, PrintLabel.SelectedValue.ToString(), Printer.Text, sncode.Text, int.Parse(PrintNum.Text), oMakeCode, ma_prodcode.Text, "机身标", "0", out oErrorMessage)) { //提示用户打印成功 OperateResult.AppendText(">>序列号:" + sncode.Text + "打印成功\n", Color.Green); } else { OperateResult.AppendText(oErrorMessage + "\n", Color.Red); } //记录日志 LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, oMakeCode, User.UserLineCode, User.UserSourceCode, "机身标打印", "机身标打印成功", sncode.Text, ""); //更新打印的数据 if (LogicHandler.SetStepResult(ma_code.Text, User.UserSourceCode, sncode.Text, "机身标打印", "机身标打印成功", User.UserCode, out oErrorMessage)) { //提示正确返回时传递的信息 if (oErrorMessage.Contains("AFTERSUCCESS")) OperateResult.AppendText(">>" + oErrorMessage + "\n"); if (CollectRemark.Checked && Remark.Text != "") { LogicHandler.CollectRemarkInf(sncode.Text, "", "", oMakeCode, ma_prodcode.Text, Remark.Text); } //清空输入框的值,聚焦 sncode.Text = ""; sncode.Focus(); //刷新打印数量和剩余数量 dt = (DataTable)dh.ExecuteSql("select ma_qty - nvl(mcd_inqty, 0) mcd_remainqty,nvl(ma_unlimitin,0)ma_unlimitin 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 && ma_unlimitin == "0") { OperateResult.AppendText(">>工单:" + ma_code.Text + "打印完成,>>请输入SN\n", Color.Green); } //剩余数量不为0 else { OperateResult.AppendText(">>请输入SN\n", Color.Black); } } else { OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode); //清空输入框的值,聚焦 sncode.Text = ""; sncode.Focus(); } } //标签为空 else { OperateResult.AppendText(">>产品编号:" + ma_prodcode.Text + "未维护机身标签\n", Color.Red, sncode); } } else { OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode); } } else { OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode); } } } private void pr_code_TextChanged(object sender, EventArgs e) { DataTable dt = (DataTable)dh.ExecuteSql("select la_id,la_url,la_isdefault from label where la_prodcode='" + ma_prodcode.Text + "' and la_templatetype='机身标' and la_statuscode='AUDITED' order by la_isdefault", "select"); if (dt.Rows.Count == 0) { return; } PrintLabel.DataSource = dt; PrintLabel.DisplayMember = "la_url"; PrintLabel.ValueMember = "la_id"; pr_change = true; } private void Make_FuselageLabelPrint_Activated(object sender, EventArgs e) { sncode.Focus(); } private void Make_FuselageLabelPrint_FormClosing(object sender, FormClosingEventArgs e) { BaseUtil.ClosePrint(lbl); } private void Make_FuselageLabelPrint_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } private void PrintLabel_SelectedValueChanged(object sender, EventArgs e) { if (PrintLabel.SelectedValue != null && PrintLabel.SelectedValue.ToString() != "System.Data.DataRowView") { string PrintNums = dh.getFieldDataByCondition("label", "la_printnos", "la_id='" + PrintLabel.SelectedValue.ToString() + "'").ToString(); PrintNum.Text = (PrintNums == "" ? "1" : PrintNums); } } } }