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; using Seagull.BarTender.Print; using System.Collections.Generic; using ZeroAndOne_ApiN.EnumData; using ZeroAndOne_ApiN; using ZeroAndOne_ApiN.DataClass; using DevExpress.XtraPrinting.Native; namespace UAS_MES_NEW.Make { public partial class Make_CheckRFID : 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; DataTable Dbfind; public N01Api n01Api = new N01Api(); public Make_CheckRFID() { InitializeComponent(); } private void Make_FuselageLabelPrint_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); OperateResult.AppendText(">>请输入SN\n", Color.Black); sncode.Focus(); LockMakeCode.GetMakeCodeCtl(ma_code); ma_code.SetLockCheckBox(LockMakeCode); //工单号放大镜配置 ma_code.TableName = "make left join product on ma_prodcode=pr_code"; ma_code.SelectField = "ma_code # 工单号,ma_prodcode # 产品编号,pr_detail # 产品名称"; ma_code.FormName = Name; ma_code.SetValueField = new string[] { "ma_code", "ma_prodcode", "pr_detail" }; ma_code.DbChange += Ma_code_DbChange; ma_code.Condition = "(ma_statuscode='STARTED' or ma_statuscode='FINISH')"; dh = SystemInf.dh; StepCount.StepCode = User.CurrentStepCode; StepCount.Source = User.UserSourceCode; StepCount.LineCode = User.UserLineCode; StepCount.Dh = dh; StepCount.Start(); } private void Ma_code_DbChange(object sender, EventArgs e) { Dbfind = ma_code.ReturnData; BaseUtil.SetFormValue(this.Controls, Dbfind); ////获取工单的其他信息 //sql.Clear(); //sql.Append("select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode as pr_code ,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='" + ma_code.Text + "' and mcd_stepcode='" + User.CurrentStepCode + "'"); //dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); //if (dt.Rows.Count > 0) //{ // BaseUtil.SetFormValue(this.Controls, dt); //} } Engine engine; private void InPrint() { try { engine = new Engine(true); } catch (Exception ex) { OperateResult.AppendText("未正确安装BarTender软件\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)) { //定义临时变量 dt = (DataTable)dh.ExecuteSql("select ms_sncode from makeserial where ms_code='" + sncode.Text + "' order by ms_id desc", "select"); if (dt.Rows.Count > 0) { sncode.Text = dt.Rows[0]["ms_sncode"].ToString(); } string oStatus = ""; //调用公共方法CheckStepSNAndMacode判断工序是否正确 string status = ""; LogicHandler.GetMakeInfo(sncode.Text, out oMakeCode, out status, out oErrorMessage); if (oMakeCode == "" || oMakeCode == null) oMakeCode = ma_code.Text; if (LogicHandler.CheckStepSNAndMacode(oMakeCode, User.UserSourceCode, sncode.Text, User.UserCode, out oMakeCode, out oMsId, out oErrorMessage)) { string nextstepcode = dh.getFieldDataByCondition("makeserial", "ms_nextstepcode", "ms_id='" + oMsId + "'").ToString(); if (nextstepcode != User.CurrentStepCode) { string stname = dh.getFieldDataByCondition("step", "st_name", "st_code='" + nextstepcode + "'").ToString(); OperateResult.AppendText("<<序列号:" + sncode.Text + "下一工序是" + stname + ",不是当前岗位的工序\n", Color.Red, sncode); return; } //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” } //没有数据 else { OperateResult.AppendText(">>无序列号" + sncode.Text + "对应工单信息\n", Color.Red); return; } } List ans = new List(); // 创建一个N01AntPwr对象,包含天线ID和功率值 N01AntPwr antPwr = new N01AntPwr((byte)(1), (ushort)(3000), (ushort)(3000)); // 将创建的对象添加到列表中 ans.Add(antPwr); // 调用API设置天线1的功率参数 RET_ERRNO eT_ERRNO = n01Api.N01_SetMultiAntPwr(ans.ToArray()); OperateResult.AppendText("设置天线功率结果:" + eT_ERRNO); //开始盘存 RET_ERRNO er = n01Api.N01_StartReading(); OperateResult.AppendText("开始盘存:" + er); Thread.Sleep(3000); //停止盘存 RET_ERRNO rET_ = n01Api.N01_StopReading(); OperateResult.AppendText("停止盘存:" + rET_); if (readsn != sncode.Text) { OperateResult.AppendText(">>读取SN" + readsn + "和输入SN" + sncode.Text + "不一致\n", Color.Red); return; } OperateResult.AppendText("<<序列号:" + sncode.Text + "\n", Color.Black); //记录日志 LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, oMakeCode, User.UserLineCode, User.UserSourceCode, "RFID核对", "RFID核对成功", sncode.Text, ""); //更新打印的数据 if (LogicHandler.SetStepResult(ma_code.Text, User.UserSourceCode, sncode.Text, "RFID核对", "RFID核对成功", 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(">>" + oErrorMessage + "\n", Color.Red, sncode); } } else { OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode); } } } private void pr_code_TextChanged(object sender, EventArgs e) { } 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) { } private void StepCount_Load(object sender, EventArgs e) { } private void Connect_Click(object sender, EventArgs e) { n01Api.N01_Connect(N01ConnectType.RS232, ComList.Text + ":" + BaudRate.Text, N01AntType.SINGLE); //网口连接 //n01Api.N01_Connect(N01ConnectType.TCP, "192.168.0.101", N01AntType.SINGLE); //标签信息回调 n01Api.TagReadDataEventCallback += TagReadDataResult; List ans = new List(); // 创建一个N01AntPwr对象,包含天线ID和功率值 N01AntPwr antPwr = new N01AntPwr((byte)(1), (ushort)(3000), (ushort)(3000)); // 将创建的对象添加到列表中 ans.Add(antPwr); // 调用API设置天线1的功率参数 RET_ERRNO eT_ERRNO = n01Api.N01_SetMultiAntPwr(ans.ToArray()); OperateResult.AppendText("设置天线功率结果:" + eT_ERRNO); //开始盘存 RET_ERRNO er = n01Api.N01_StartReading(); OperateResult.AppendText("开始盘存:" + er); Thread.Sleep(3000); //停止盘存 RET_ERRNO rET_ = n01Api.N01_StopReading(); OperateResult.AppendText("停止盘存:" + rET_); } string readsn = ""; private void TagReadDataResult(object sender, TagReadDataEventArgs e) { readsn = e.EpcInfo.epc; OperateResult.AppendText("tag:" + e.EpcInfo.epc); } } }