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; 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; //保存ProductLabel数据 DataTable ListC; //工序编号 // string stepcode; //下一工序编号 // string nextstepcode; //工艺路线编号 // string craftcode; //制造单号 // string make_code; //当前工单的序列号 // tring sn_code; //当前提示的索引 // int RemainIndex = 0; // string Step = "Loading"; ApplicationClass lbl; string oErrorMessage = ""; public Make_FuselageLabelPrint() { InitializeComponent(); } private void Make_FuselageLabelPrint_Load(object sender, EventArgs e) { dh = new DataHelper(); sncode.Focus(); asc.controllInitializeSize(this); lbl = new ApplicationClass(); } private void sn_code_KeyDown(object sender, KeyEventArgs e) { //按下enter键 if (e.KeyCode == Keys.Enter) { //如果输入的值为空的话,提示不能为空 if (sncode.Text == "") { OperateResult.AppendText(">>序列号不能为空\n", Color.Red); return; } //定义临时变量 string oMakeCode = ""; string oMsId = ""; //调用公共方法CheckStepSNAndMacode判断工序是否正确 if (LogicHandler.CheckStepSNAndMacode(ma_code.Text, User.UserSourceCode, sncode.Text, User.UserCode, out oMakeCode, out oMsId, out oErrorMessage)) { //IF (如果ma_code 为空)THEN if (ma_code.Text == "") { //获取工单的其他信息 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.Green); //提示用户“<< 序列号:XXXX” OperateResult.AppendText("<<序列号:" + sncode.Text + "\n", Color.Green); } //没有数据 else { OperateResult.AppendText(">>无序列号" + sncode.Text + "对应工单信息\n", Color.Red); } //所选标签不为空 if (PrintLabel.SelectedValue != null) { //按照打印张数打印 Print.CodeSoft(lbl, PrintLabel.Text, PrintLabel.SelectedValue.ToString(), Printer.Text, sncode.Text, int.Parse(PrintNum.Text)); //提示用户打印成功 OperateResult.AppendText(">>打印成功\n", Color.Green); //更新打印的数据 LogicHandler.UpdateMakeMessage(sncode.Text, ma_code.Text, "机身标打印", User.UserSourceCode, User.UserName, "机身标打印成功", out oErrorMessage); //清空输入框的值,聚焦 sncode.Text = ""; sncode.Focus(); //刷新打印数量和剩余数量 mcd_remainqty.Text = int.Parse(mcd_remainqty.Text) - 1 + ""; 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.Green); } } //标签为空 else { OperateResult.AppendText(">>无可用标签\n", Color.Red); } } } else { OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red); } } } private void pr_code_TextChanged(object sender, EventArgs e) { dt = (DataTable)dh.ExecuteSql("select pl_labelname,pl_labelcode,to_char(nvl(pl_indate,sysdate),'YYYY-MM-DD HH24:Mi:SS') 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(">>该序列号对应的产品未维护机身标标签模板\n", Color.Red); } PrintLabel.DataSource = dt; PrintLabel.DisplayMember = "pl_labelname"; PrintLabel.ValueMember = "pl_labelcode"; ftpOperater ftp = new ftpOperater(); for (int i = 0; i < dt.Rows.Count; i++) { //ftp.Download(dt.Rows[i]["pl_labelname"].ToString()); BaseUtil.GetPrintLabel(dt.Rows[i]["pl_labelname"].ToString(), dt.Rows[i]["pl_labelurl"].ToString(), dt.Rows[i]["pl_indate"].ToString()); } } 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); } } }