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.Packing { public partial class Packing_CartonSplit : Form { //拼接sql的 LogStringBuilder sql = new LogStringBuilder(); DataHelper dh; DataTable dt;//存放箱号查询信息 DataTable checknoInfo; string error = "";//记录错误信息 string ms_id = ""; string outboxcode = ""; string pd_id = ""; AutoSizeFormClass asc = new AutoSizeFormClass(); public Packing_CartonSplit() { InitializeComponent(); } private void Packing_CartonSplit_Load(object sender, EventArgs e) { dh = new DataHelper(); asc.controllInitializeSize(this); OperateResult.AppendText(">>请输入箱号\n", Color.Black); pa_outboxcode.Focus(); } private void pa_outboxcode_KeyDown(object sender, KeyEventArgs e) { //按下回车 if (e.KeyCode==Keys.Enter) { lKeyDown(false); } } private void sncode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode==Keys.Enter) { if (sncode.Text=="") { OperateResult.AppendText("<<输入不能为空\n", Color.Red); return; } //判断箱号是否为空 if (pa_outboxcode.Text=="") { OperateResult.AppendText("<<请先选择箱号\n", Color.Red, sncode); return; } OperateResult.AppendText(">>" + sncode.Text + "\n", Color.Black); if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out error)) { //验证序列号是否存在,是否装箱,箱号等于页面输入的箱号 //select max(ms_id) from makeserial where ms_sncode=? ms_id = dh.getFieldDataByCondition("makeserial","max(ms_id)","ms_sncode='"+sncode.Text+"'").ToString(); if (ms_id=="") { OperateResult.AppendText("<<序列号" + sncode.Text + "不存在\n", Color.Red, sncode); return; } outboxcode = dh.getFieldDataByCondition("makeserial", "ms_outboxcode","ms_id='"+ms_id+"' and nvl(ms_outboxcode,' ')<>' '").ToString(); if (outboxcode=="") { OperateResult.AppendText("<<序列号" + sncode.Text + "未装箱\n", Color.Red, sncode); return; } if (pa_outboxcode.Text!=outboxcode) { OperateResult.AppendText("<<序列号" + sncode.Text + "箱号为:" + outboxcode+",不在箱号:"+pa_outboxcode.Text+ "中,无法拆箱\n", Color.Red, sncode); return; } //验证箱号 if (!checkOutboxcode(false)) { return; } //验证是否在箱内 pd_id = dh.getFieldDataByCondition("packagedetail", "pd_id", "pd_outboxcode='"+pa_outboxcode.Text+"' and pd_barcode='"+sncode.Text+"'").ToString(); if (pd_id=="") { OperateResult.AppendText("<<序列号" + sncode.Text + "不在箱号:" + pa_outboxcode.Text+ "内,不允许拆箱\n", Color.Red, sncode); return; } //进行拆箱处理 //删除明细 dh.ExecuteSql("delete from packagedetail where pd_id='"+pd_id+"'", "select"); //更新序列号 dh.ExecuteSql("update makeserial set ms_outboxcode='' where ms_id='"+ms_id+"'", "update"); //更新箱内当前数量 dh.ExecuteSql("update package set pa_currentqty=pa_currentqty-1 where pa_outboxcode='"+pa_outboxcode.Text+"'", "update"); //记录拆箱操作日志 LogicHandler.DoCommandLog(Tag.ToString(),User.UserCode,packtype.Text,User.UserLineCode,User.UserSourceCode,"卡通箱拆箱", "卡通箱拆箱成功,序列号:"+sncode.Text+",箱号:"+pa_outboxcode.Text,sncode.Text,""); //提示拆箱成功 OperateResult.AppendText("<<拆箱成功,序列号:"+sncode.Text+",已从箱号:"+pa_outboxcode.Text+ "内移除\n", Color.Green); //刷新箱内数量 pa_currentqty.Text = int.Parse(pa_currentqty.Text)-1+""; //计数加1 count.Text = int.Parse(count.Text) + 1 + ""; sncode.Text = ""; } else { OperateResult.AppendText("<<"+error+ "\n", Color.Red, sncode); } } } private bool checkOutboxcode(bool flag) { //校验箱号 sql.Clear(); sql.Append("select pa_prodcode,pr_detail,pr_spec,pa_standardqty,nvl(pa_currentqty,0) pa_currentqty,pa_salecode,pa_makecode,"); sql.Append("pa_packtype,nvl(pa_downstatus,0) pa_downstatus,pa_checkno from package left join product on "); sql.Append("pr_code=pa_prodcode where pa_outboxcode='" + pa_outboxcode.Text + "' and PA_TYPE=1"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); //查询无值,提示用户 “箱号不存在”,清空输入框中的值 if (dt.Rows.Count == 0) { if (flag) { MessageBox.Show("箱号"+pa_outboxcode.Text+"不存在"); return false; } OperateResult.AppendText("<<箱号"+pa_outboxcode.Text+"不存在\n", Color.Red, pa_outboxcode); return false; } //判断是否下地 if (dt.Rows[0]["pa_downstatus"].ToString() != "0") { if (flag) { MessageBox.Show("箱号" + pa_outboxcode.Text + "处于下地状态不允许操作"); return false; } OperateResult.AppendText("<<箱号" + pa_outboxcode.Text + "处于下地状态不允许操作\n", Color.Red, pa_outboxcode); return false; } //判断是否有抽检批次号,并且未判定 if (dt.Rows[0]["pa_checkno"].ToString() != "") { checknoInfo = (DataTable)dh.ExecuteSql("select count(1) cn from oqcbatch where ob_checkno='" + dt.Rows[0]["pa_checkno"].ToString() + "' and ob_status not in('OK','NG')", "select"); //cn>0 ,则返回提示用户“箱号处于送检状态,不允许拆箱” if (int.Parse(checknoInfo.Rows[0]["cn"].ToString()) > 0) { if (flag) { MessageBox.Show("箱号" + pa_outboxcode.Text + "处于送检状态,不允许拆箱"); return false; } OperateResult.AppendText("<<箱号" + pa_outboxcode.Text + "处于送检状态,不允许拆箱\n", Color.Red, pa_outboxcode); return false; } } return true; } private void lock_outbox_CheckedChanged(object sender, EventArgs e) { if (!lock_outbox.Checked) { if (!pa_outboxcode.Enabled) { //取消勾选,箱号不可编辑时设置可编辑 pa_outboxcode.Enabled = true; } pa_outboxcode.Focus(); } else { //勾选 lKeyDown(true); } } private void Packing_CartonSplit_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } private void lKeyDown(bool flag) { //输入不能为空 if (pa_outboxcode.Text == "") { if (flag) { MessageBox.Show("输入不能为空"); return; } OperateResult.AppendText("<<输入不能为空\n", Color.Red); return; } if (pa_outboxcode.Enabled) { OperateResult.AppendText(">>" + pa_outboxcode.Text + "\n", Color.Black); } //验证箱号 if (!checkOutboxcode(flag)) { return; } //判定通过,则自动勾选,显示箱号相关信息 BaseUtil.SetFormValue(this.Controls, dt); //特殊赋值 if (dt.Rows[0]["pa_packtype"].ToString() == "SALE") { packtype.Text = dt.Rows[0]["pa_salecode"].ToString(); } else if (dt.Rows[0]["pa_packtype"].ToString() == "MAKE") { packtype.Text = dt.Rows[0]["pa_makecode"].ToString(); } else if (dt.Rows[0]["pa_packtype"].ToString() == "MIX" || dt.Rows[0]["pa_packtype"].ToString() == "SPEC") { pa_prodcode.Text = "混包"; } pa_outboxcode.Enabled = false; lock_outbox.Checked = true; sncode.Focus(); } } }