using LabelManager2; using System; using System.Data; using System.Windows.Forms; using UAS_MES_NEW.DataOperate; using UAS_MES_NEW.Entity; using UAS_MES_NEW.PublicMethod; using System.Drawing; using System.Threading; using UAS_MES_NEW.PublicForm; using System.Collections.Generic; using System.Diagnostics; using System.Runtime.InteropServices; using DevExpress.Printing.Core.PdfExport.Metafile; using System.Net.Sockets; using System.Text; using System.IO; using UAS_MES_NEW.Make; using FastReport; //using Seagull.BarTender.Print; namespace UAS_MES_NEW.Packing { public partial class Packing_PackageCollection : Form { DataHelper dh; DataTable dt; LogStringBuilder sql = new LogStringBuilder(); AutoSizeFormClass asc = new AutoSizeFormClass(); ApplicationClass lbl; BarTender.Application engine; Thread thread; DataTable Dbfind; string ErrorMessage = ""; string oMakeCode = ""; string oMsID = ""; string oMsStatus = ""; string oOutBoxCode = ""; decimal StandardQTY = 0; string LastSncode; Document doc; string PR_CHECKCARTONW = "0"; ModeBusTCPServer md; private TcpClient tcpClient1; private NetworkStream stream1; private Thread receiveThread1; private TcpClient tcpClient2; private NetworkStream stream2; private Thread receiveThread2; private TcpClient tcpClient3; private NetworkStream stream3; private Thread receiveThread3; public Packing_PackageCollection() { InitializeComponent(); } //创建打印进程 private void NewPrint() { try { //engine = new BarTender.Application(); //lbl = new ApplicationClass(); //BaseUtil.WriteLbl(); } catch (Exception ex) { OperateResult.AppendText("未正确安装打印软件\n" + ex.Message, Color.Red); } } string chooseprintername; string label_type = ""; string label_name = ""; private void PackCollection_Load(object sender, EventArgs e) { // 杀死之前全部未关闭的进程 Process[] processes = System.Diagnostics.Process.GetProcessesByName("lppa"); Process[] processes1 = System.Diagnostics.Process.GetProcessesByName("bartend"); for (int i = 0; i < processes1.Length; i++) { processes1[i].Kill(); } for (int i = 0; i < processes.Length; i++) { processes[i].Kill(); } pb_name.FormName = Name; pb_name.TableName = "ProductBrand"; pb_name.SetValueField = new string[] { "pb_name" }; pb_name.SelectField = "pb_name # 品牌"; pb_name.DBTitle = "品牌"; pb_name.Condition = "pr_keydepartment = '-1'"; pb_name.DbChange += Cd_stepcode_DbChange; //设置DbFind的必须的数据 asc.controllInitializeSize(this); thread = new Thread(NewPrint); thread.Start(); md = new ModeBusTCPServer(); dh = SystemInf.dh; button2_Click(sender,e); button3_Click(sender,e); button4_Click(sender,e); } private void Cd_stepcode_DbChange(object sender, EventArgs e) { Dbfind = pb_name.ReturnData; BaseUtil.SetFormValue(this.Controls, Dbfind); } private void PackCollection_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } private void PackCollection_Activated(object sender, EventArgs e) { pi_inoutno.Focus(); } //刷新表单的数据的数据 private void LoadData() { LoadCollectedNum(); } private void LoadGridData() { //加载Grid数据 dt = (DataTable)dh.ExecuteSql(" select pd_piid,pd_prodcode,pr_detail,pr_spec||pr_orispeccode pr_spec,sum(pd_inqty)qty,NVL(PDAQTY,0)PDAQTY from prodiodetail left join SCM_BARCODEIO_IN_VIEW2 on pd_piid = bi_piid and pd_prodcode = bi_prodcode " + "left join product on pd_prodcode = pr_code where pd_inoutno ='"+pi_inoutno.Text+ "' group by pd_piid,pd_prodcode,pr_detail,pr_spec||pr_orispeccode,PDAQTY" + " ", "select"); BaseUtil.FillDgvWithDataTable(PackageDetail, dt); } private void Print_Click(object sender, EventArgs e) { } //加载工单信息和装箱明细信息 private void pa_code_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (!dh.CheckExist("prodinout left join DOCUMENTSETUP on pi_class = ds_name ", "pi_inoutno = '" + pi_inoutno.Text + "' and DS_INOROUT = 'IN' ")) { OperateResult.AppendText(">>入库单" + pi_inoutno.Text + "不存在\n", Color.Red, pi_inoutno); return; } dt = (DataTable)dh.ExecuteSql(" select * from prodinout where pi_inoutno = '" + pi_inoutno.Text + "' ", "select"); BaseUtil.SetFormValue(this.Controls, dt); LoadGridData(); } } //输入序列号的回车事件 private void barcode_KeyDown(object sender, KeyEventArgs e) { } private void Clean_Click(object sender, EventArgs e) { OperateResult.Clear(); } DataTable _dt; private void pr_code_TextChanged(object sender, EventArgs e) { } private void PackCollection_FormClosing(object sender, FormClosingEventArgs e) { BaseUtil.ClosePrint(lbl); if (engine != null) engine.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges); if (stream1 != null) { stream1.Close(); } if (tcpClient1 != null) { tcpClient1.Close(); } if (stream2 != null) { stream2.Close(); } if (tcpClient2 != null) { tcpClient2.Close(); } dh.Dispose(); } private void Packing_Click(object sender, EventArgs e) { } bool AutoCut; private void PrintLabel_SelectedValueChanged(object sender, EventArgs e) { } private void DeleteAll_Click(object sender, EventArgs e) { } private void LoadCollectedNum() { } private void pa_remark_KeyDown(object sender, KeyEventArgs e) { } private void PreFix_KeyDown(object sender, KeyEventArgs e) { } private void BuildServer_Click(object sender, EventArgs e) { } private void CloseServer_Click(object sender, EventArgs e) { if (md.IsOpen) { md.Close(); OperateResult.AppendText(">>服务关闭成功\n"); } else OperateResult.AppendText(">>服务尚未开启\n"); } private void Remark_PreFix_KeyDown(object sender, KeyEventArgs e) { } private void PackageDetail_CellContentClick(object sender, DataGridViewCellEventArgs e) { } private void button2_Click(object sender, EventArgs e) { if (tcpClient1==null) { tcpClient1 = new TcpClient("127.0.0.1", 8001); stream1 = tcpClient1.GetStream(); // 启动接收数据的线程 receiveThread1 = new Thread(new ThreadStart(ReceiveData1)); receiveThread1.Start(); } } private void button3_Click(object sender, EventArgs e) { if (tcpClient2 == null) { tcpClient2 = new TcpClient("127.0.0.1", 8002); stream2 = tcpClient2.GetStream(); // 启动接收数据的线程 receiveThread2 = new Thread(new ThreadStart(ReceiveData2)); receiveThread2.Start(); } } private void ReceiveData1() { byte[] buffer = new byte[1024]; int bytesRead; Report Report = new Report(); Report.Load(System.AppDomain.CurrentDomain.BaseDirectory + @"\成品3030.frx"); while (tcpClient1.Connected) { try { bytesRead = stream1.Read(buffer, 0, buffer.Length); if (bytesRead == 0) { // 如果没有读取到数据,可能是连接已经关闭 OperateResult.AppendText("8001端口未连接\n", Color.Red); break; } string receivedData = Encoding.Default.GetString(buffer, 0, bytesRead); OperateResult.AppendText("ReceiveData1" + receivedData + "\n", Color.Black); if (pi_inoutno.Text != "" && pb_name.Text != "") { string barcode = receivedData.Replace("A,ReadId1,", "").Replace("~",""); string message = ""; string prodcode = ""; string qty = ""; string lotno = ""; string[] param = new string[] { barcode, pb_name.Text, message, prodcode , qty, lotno }; dh.CallProcedure("SP_BARCODEIO_PARSE",ref param); message = param[2]; if (message != "null") { OperateResult.AppendText(message+"\n", Color.Red); SendData1("A,ReadId1,1"); } else { prodcode = param[3]; qty = param[4]; lotno = param[5]; dt = (DataTable)dh.ExecuteSql("select * from ( select pd_piid,pd_prodcode,pr_detail,pr_spec,sum(pd_inqty)qty,NVL(PDAQTY,0)PDAQTY from prodiodetail left join SCM_BARCODEIO_IN_VIEW2 on pd_piid = bi_piid and pd_prodcode = bi_prodcode " + " left join product on pd_prodcode = pr_code where pd_inoutno ='"+pi_inoutno.Text+"' group by pd_piid,pd_prodcode,pr_detail,pr_spec,PDAQTY " + " ) where pd_prodcode = '"+prodcode+"' and qty-pdaqty >="+qty+" ", "select"); if (dt.Rows.Count > 0) { string code = ""; string[] param1 = new string[] { "","", code }; dh.CallProcedure("SP_GETBARCODE", ref param1); code = param1[2].Replace("BARCODE:",""); dh.ExecuteSql(" insert into barcodeio(bi_id,bi_barcode,bi_piid,bi_piclass,bi_inoutno,bi_prodcode,bi_whcode,bi_inqty,bi_madedate,bi_indate,bi_content)" + " values (barcodeio_seq.nextval,'"+code+"','"+pi_id.Text+"','"+pi_class.Text+"','"+pi_inoutno.Text+"','"+prodcode+"','"+pi_whcode.Text+"',"+qty+",sysdate,sysdate,'"+barcode+"') ", "insert"); LoadGridData(); OperateResult.AppendText("条码:"+barcode+"采集成功\n", Color.Green); DataTable dtbarcode = (DataTable)dh.ExecuteSql(" select '"+code+ "' BAN_BARCODE,'"+ dt.Rows[0]["pd_prodcode"].ToString() + "' BAN_PRODCODE" + " ,'"+ dt.Rows[0]["pr_spec"].ToString() + "' PR_DETAIL,'"+qty+ "' BAN_QTY from dual ", "select"); Report.PrintSettings.ShowDialog = false; Report.PrintSettings.Printer = PrintList.Text; Report.RegisterData(dtbarcode, "VENDORBARCODE_VIEW"); Report.GetDataSource("VENDORBARCODE_VIEW").Enabled = true; Report.Print(); SendData1("A,ReadId1,0"); } else { OperateResult.AppendText("料号:" +prodcode+"数量:"+qty+ "不满足入库需求,无法入库\n", Color.Red); SendData1("A,ReadId1,1"); } } } else { OperateResult.AppendText("入库单与品牌不可为空\n", Color.Red); SendData1("A,ReadId1,1"); } //Console.WriteLine("Received: {0}", receivedData); } catch (Exception ex) { Console.WriteLine("8001端口异常" + ex.Message + "\n", Color.Red); } } // 清理资源 if (stream1 != null) { stream1.Close(); } if (tcpClient1 != null) { tcpClient1.Close(); } } private void ReceiveData2() { byte[] buffer = new byte[1024]; int bytesRead; while (tcpClient2.Connected) { try { bytesRead = stream2.Read(buffer, 0, buffer.Length); if (bytesRead == 0) { // 如果没有读取到数据,可能是连接已经关闭 OperateResult.AppendText("8002端口未连接\n", Color.Red); break; } string receivedData = Encoding.Default.GetString(buffer, 0, bytesRead); OperateResult.AppendText("ReceiveData2" + receivedData + "\n", Color.Black); //Console.WriteLine("Received: {0}", receivedData); string barcode = receivedData.Replace("A,ReadId3,", "").Split('~')[0]; string code = receivedData.Replace("A,ReadId3,", "").Split('~')[1]; if (dh.CheckExist("barcodeio", "bi_barcode = '" + code + "' and bi_content = '" + barcode + "'")) { OperateResult.AppendText("原厂条码:" + barcode + "与内部条码:" + code + "匹配成功\n", Color.Green); SendData2("A,ReadId3,0"); } else { OperateResult.AppendText("原厂条码:"+barcode+"与内部条码:"+code+"匹配失败\n", Color.Red); SendData2("A,ReadId3,1"); } } catch (Exception ex) { OperateResult.AppendText("8002端口异常" + ex.Message + "\n", Color.Red); } } // 清理资源 if (stream2 != null) { stream2.Close(); } if (tcpClient2 != null) { tcpClient2.Close(); } } private void SendData1(String data) { OperateResult.AppendText("SendData1"+data +"\n", Color.Black); if (stream1 != null && stream1.CanWrite) { byte[] buffer = Encoding.Default.GetBytes(data); stream1.Write(buffer, 0, buffer.Length); } } private void SendData2(String data) { OperateResult.AppendText("SendData2"+data + "\n", Color.Black); if (stream2 != null && stream2.CanWrite) { byte[] buffer = Encoding.Default.GetBytes(data); stream2.Write(buffer, 0, buffer.Length); } } private void DataIn_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { } } private void button1_Click(object sender, EventArgs e) { Make_BarcodeDetail badcode = new Make_BarcodeDetail(pi_inoutno.Text); BaseUtil.SetFormCenter(badcode); badcode.ShowDialog(); } private void pb_name_UserControlTextChanged(object sender, EventArgs e) { if (pb_name.Text != null) { SendData1("A,LoadTemplate,{" + pb_name.Text + "}"); } } private void button4_Click(object sender, EventArgs e) { if (tcpClient3 == null) { tcpClient3 = new TcpClient("127.0.0.1", 8003); stream3 = tcpClient3.GetStream(); // 启动接收数据的线程 receiveThread3 = new Thread(new ThreadStart(ReceiveData3)); receiveThread3.Start(); } } private void ReceiveData3() { // throw new NotImplementedException(); } } }