using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using UAS_MES.DataOperate; using UAS_MES.Entity; using UAS_MES.PublicMethod; namespace UAS_MES.Make { public partial class Make_PalletWeigh : Form { AutoSizeFormClass asc = new AutoSizeFormClass(); DataHelper dh; DataTable dt; LogStringBuilder sql = new LogStringBuilder(); DataTable ListC; //箱类型 string pa_type; //标签类型 string pl_labeltype1; //物料编号 string pr_code; //箱内件数 int pa_packageqty; //Package表的主键 string pa_id; string sncode; //栈板和大箱不同的判断箱号是否存在的条件 string CheckOutBoxCondition; public Make_PalletWeigh() { InitializeComponent(); } private void 栈板称重_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); dh = new DataHelper(); //根据不同的Caller显示不同的 switch (Tag.ToString()) { case "Make!BigBoxWeigh": palletcode_label.Text = "大箱号"; pa_type = "2"; pl_labeltype1 = "大箱标"; NewPallet.Text = "新增大箱"; ReleasePallet.Text = "解除大箱"; SearchPallet.Text = "大箱查询"; CheckOutBoxCondition = " pa_type=1 "; break; case "Make!PalletWeigh": palletcode_label.Text = "栈板号"; pa_type = "3"; pl_labeltype1 = "栈板标"; CheckOutBoxCondition = " pa_type in (1,2)"; break; default: break; } } private void Clean_Click(object sender, EventArgs e) { OperateResult.Clear(); } //栈板号或者大箱号Enter事件 private void palletcode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (palletcode.Text == "") { OperateResult.AppendText(">>栈板号不能为空\n", Color.Red); return; } //根据箱号查询信息 sql.Clear(); sql.Append("select pa_prodcode,nvl(pd_barcode,PD_INNERBOXCODE) code ,pd_innerqty,"); sql.Append("pa_salecode,pa_makecode,pa_custcode,pa_packageqty from package left join product "); sql.Append("on pr_code=pa_prodcode left join packagedetail on pd_paid=pa_id where "); sql.Append("pa_outboxcode='" + palletcode.Text + "' and pa_type=" + pa_type); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt.Rows.Count > 0) { BaseUtil.FillDgvWithDataTable(PackageInf, dt); pr_code = dt.Rows[0]["pa_prodcode"].ToString(); dt = dh.getFieldsDataByCondition("Package", new string[] { "pa_packageqty", "pa_id" }, "pa_outboxcode='" + palletcode.Text + "'"); pa_packageqty = int.Parse(dt.Rows[0]["pa_packageqty"].ToString()); pa_id = dt.Rows[0]["pa_id"].ToString(); FillPrintLabel(); outboxcode.Focus(); } else OperateResult.AppendText(">>" + palletcode_label.Text + palletcode.Text + "不存在\n", Color.Red); } } //箱号Enter事件 private void outboxcode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (outboxcode.Text == "") { OperateResult.AppendText(">>箱号不能为空\n", Color.Red); return; } string ErrorMessage; bool ifFirst; sql.Clear(); sql.Append("select pa_makecode,pa_prodcode,pa_outboxcode,pa_totalqty,pa_custcode,pa_salecode "); sql.Append("from package where pa_outboxcode='" + outboxcode.Text + "' and pa_type <>3"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); BaseUtil.SetFormValue(Controls, dt); sncode = dh.getFieldDataByCondition("makeserial left join package on ms_prodcode=pa_prodcode", "ms_sncode", "pa_outboxcode='" + outboxcode.Text + "'").ToString(); //检测当前岗位资源和对应工序是否一致 if (LogicHandler.CheckCurrentStepAndIfFirst(sncode, pa_makecode.Text, User.UserSourceCode, Tag.ToString(), out ifFirst, out ErrorMessage)) { if (dt.Rows.Count > 0) { sql.Clear(); sql.Append("select count(0) cn from package left join packagedetail on pa_id=pd_paid where "); sql.Append("pa_outboxcode='" + outboxcode.Text + "'"); int packageqty = int.Parse((dh.ExecuteSql(sql.GetString(), "select") as DataTable).Rows[0][0].ToString()); //如果未装满的话 if (packageqty < pa_packageqty) { //验证箱号是否存在 if (dh.CheckExist("Package", "pa_outboxcode='" + outboxcode.Text + "' and " + CheckOutBoxCondition)) { //判断是否已经装箱 if (!dh.CheckExist("PackageDetail", "pd_innerboxcode='" + outboxcode.Text + "'")) { sql.Clear(); sql.Append("insert into packagedetail(pd_id, pd_paid, pd_outboxcode, pd_barcode, pd_innerqty)"); sql.Append("values(packagedetail_seq.nextval,'" + pa_id + "','" + palletcode.Text + "','" + outboxcode.Text + "','" + pa_totalqty.Text + "')"); dh.ExecuteSql(sql.GetString(), "insert"); OperateResult.AppendText(">>采集成功!\n", Color.Green); //判断明细和箱内的件数的差是不是1,如果只相差1则表示此时已经采集慢了 if (packageqty + 1 == pa_packageqty) OperateResult.AppendText(">>箱已装满,自动打印!\n", Color.Green); } //已装箱 else OperateResult.AppendText(">>箱号" + outboxcode.Text + "已采集\n", Color.Red); } else OperateResult.AppendText(">>箱号" + outboxcode.Text + "不存在\n", Color.Red); } //已装满提示用户已装满 else OperateResult.AppendText(">>" + palletcode.Text + "已装满\n", Color.Red); } else OperateResult.AppendText(">>" + palletcode_label.Text + palletcode.Text + "不存在\n", Color.Red); } else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red); } } private void FillPrintLabel() { sql.Clear(); sql.Append("select pl_id,pl_labeltype,pl_labelurl,pl_isdefault from productlabel where pl_prodcode='" + pr_code + "' and pl_labeltype='" + pl_labeltype1 + "'"); ListC = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (ListC.Rows.Count == 0) OperateResult.AppendText(">>该序列号对应的产品未维护(机身标或者彩盒的)标签模板\n", Color.Red); } private void 栈板称重_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } private void NewPallet_Click(object sender, EventArgs e) { Make_NewPallet NewPallet = new Make_NewPallet(Tag.ToString()); BaseUtil.SetFormCenter(NewPallet); NewPallet.ShowDialog(); } private void Print_Click(object sender, EventArgs e) { } private void ReleasePallet_Click(object sender, EventArgs e) { } private void SearchPallet_Click(object sender, EventArgs e) { } } }