using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WCS { public partial class FormBarCode : Form { public FormBarCode() { InitializeComponent(); } private void txtInfo_KeyDown(object sender, KeyEventArgs e) { try { if (e.KeyCode == Keys.Enter) { string errText = string.Empty; if (this.txtInfo.Text.Trim().Length == 20)//ZX188 { //GC36X5221011D4171210 string Code = this.txtInfo.Text.Trim().ToUpper(); if (Code.Substring(0, 2) == "GC") { //查询WMS本地数据库是否已经存在,批号,物料编号,存在直接取数据库信息,否则通过HTTP接口获取数据 DataTable dt = DataClass.Instance().GetGoodsCount(Code); if (dt != null) { if (dt.Rows.Count > 0) { SysInfo.AppendText(DateTime.Now.ToString()+ "批号:" + Code + " WMS已存在,开始打印"+"\r\n"); XtraReport1 br = new XtraReport1(); br.SetBindData(dt, "1"); SysInfo.AppendText(DateTime.Now.ToString() + "批号:" + Code + " 条码打印成功" + "\r\n"); } else { rdlist.Clear(); errText = string.Empty; string retJson = string.Empty; REQUEST_DATAItem req = new REQUEST_DATAItem(); req.DATA_AUTH = "2011"; req.LOT_NO = Code; rdlist.Add(req); RootBarCode bc = new RootBarCode(); bc.REQUEST_DATA = rdlist; string StrValue = JsonConvert.SerializeObject(bc); SysInfo.AppendText(DateTime.Now.ToString() + "批号:" + Code + " 调用MES接口数据" + "\r\n"); string strJson = ApiPost("http://"+ MesIpPort + "/mc/http/interface.ms?model=WMS&method=QueryLotInfos", StrValue.ToString()); if (errText.Length > 0) { SysInfo.AppendText(DateTime.Now.ToString() + "查询MES条码信息接口异常:" + errText + "\r\n"); return; } else { //批号,物料编号,物料名称,规格,长度,工字轮,厂家,日期,张力,间距; if (strJson.Length > 0) { //lblMsg.Text = "批号:" + Code + " MES返回数据"; //解析条码信息,写入数据库,成功后打印条码 JObject strJo = (JObject)JsonConvert.DeserializeObject(strJson); string code = strJo["code"].ToString().Trim();//0-成功/1-失败 string msg = strJo["msg"].ToString().Trim();//0-成功/1-失败 if (code == "0") { JArray Jarows = JArray.Parse(strJo["DATA_LIST"].ToString()); if (Jarows.Count > 0) { for (int i = 0; i < Jarows.Count; i++) { JObject Jorow = (JObject)JsonConvert.DeserializeObject(Jarows[i].ToString()); string barCode = Jorow["LOT_NO"].ToString().Trim();//批号 string goodsId = Jorow["ITEM_CODE"].ToString().Trim();//物料编号 string goodsName = Jorow["ITEM_NAME"].ToString().Trim();//物料名称 string SPECIFICATION = Jorow["ITEM_SPEC"].ToString().Trim().Substring(0,2);//物料规格 string GLENGTH = Jorow["ITEM_QTY"].ToString().Trim();//长度 string gzlid = Jorow["WHEEL_CODE"].ToString().Trim();//工字轮代码 string gzlname = Jorow["WHEEL_NAME"].ToString().Trim();//工字轮名称 string PROVIDER_ID = Jorow["MANUFACTOR"].ToString().Trim();//厂家 string CREATE_DATE = Jorow["REPORT_DATE"].ToString().Trim();//日期 string rxzl = Jorow["TENSION"].ToString().Trim();//张力 string rxjj = Jorow["SPACE_NUM"].ToString().Trim();//间距 string rxxj = Jorow["WIRE_DIAMETER"].ToString().Trim();//线径 string LOT_ID = "DH" + DateTime.Now.ToString("yyyyMMddHHmmssfff"); if (DataClass.Instance().insert_T_BASE_GOODS(goodsId, goodsName, SPECIFICATION, barCode, Convert.ToDecimal(GLENGTH), PROVIDER_ID, Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")), gzlid, gzlname, rxjj, rxzl, rxxj)) { SysInfo.AppendText(DateTime.Now.ToString() + "物料数据新增成功,批号:" + barCode + "\r\n"); string plcId = DataClass.Instance().GetPlcId(); if (DataClass.Instance().insert_T_ONGOODSSHELF(LOT_ID, goodsId, goodsName, "", Convert.ToDecimal(GLENGTH), Convert.ToDecimal(GLENGTH), Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")), barCode, plcId)) { SysInfo.AppendText(DateTime.Now.ToString() + "入库任务生成成功,批号:" + barCode + "\r\n"); SysInfo.AppendText(DateTime.Now.ToString() + "批号:" + Code + " ,开始打印" + "\r\n"); DataTable dt2 = DataClass.Instance().GetGoodsCount(Code); if (dt2 != null) { if (dt2.Rows.Count > 0) { XtraReport1 br = new XtraReport1(); br.SetBindData(dt2, "1"); } } SysInfo.AppendText(DateTime.Now.ToString() + "批号:" + Code + " 条码打印成功" + "\r\n"); SysInfo.AppendText("\r\n"); GetGoods(Code); } else { SysInfo.AppendText(DateTime.Now.ToString() + "入库任务生成失败,批号:" + barCode + "\r\n"); } } } } } else { SysInfo.AppendText(DateTime.Now.ToString() + "获取条码信息MES返回错误:" + msg + "\r\n"); } } } } } } this.txtInfo.Text = ""; } else { MessageBox.Show("批号格式异常"); } } else { // SysInfo.AppendText(DateTime.Now.ToString() + " 扫码枪条码设置格式错误,请设置Enter条码格式" + "\r\n"); } } catch (Exception ex) { MessageBox.Show("查询批号数据异常:" + ex.Message); } } private void txtInfo_Leave(object sender, EventArgs e) { this.txtInfo.Select(); //this.txtInfo.Focus(); } List rdlist = new List(); public class REQUEST_DATAItem { /// /// /// public string DATA_AUTH { get; set; } /// /// /// public string LOT_NO { get; set; } } public class RootBarCode { /// /// /// public List REQUEST_DATA { get; set; } } #region Api的post方法 private static readonly object lockapi = new object(); private string ApiPost(string url, string message) { lock (lockapi) { string returnmessage = string.Empty; try { Encoding encoding = Encoding.UTF8; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; //request.Accept = "text/html, application/xhtml+xml, *"; request.ContentType = "application/json"; //request.ContentLength = buffer.Length; byte[] buffer = encoding.GetBytes(message); request.GetRequestStream().Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { returnmessage = reader.ReadToEnd(); } } catch (Exception ex) { returnmessage = ex.Message; } WriteSysLog.SysLog("发送:\r\n" + message + "\r\n信息:\r\n" + returnmessage); return returnmessage; } } #endregion private void GetGoods(string barcode) { DataTable dt = DataClass.Instance().GetGoodsCount(barcode); gridControl4.DataSource = dt; } private void button1_Click(object sender, EventArgs e) { GetGoods(""); } string MesIpPort = ""; private void FormBarCode_Load(object sender, EventArgs e) { MesIpPort = RfConfig.Create().WmsSendIP + ":" + RfConfig.Create().WmsPort; //GetGoods(""); } private void gridView4_DoubleClick(object sender, EventArgs e) { try { if (gridView4.RowCount == 0) { return; } string BARCODE = gridView4.GetFocusedRowCellValue("BARCODE").ToString(); if (BARCODE != "") { SysInfo.AppendText(DateTime.Now.ToString() + "批号:" + BARCODE + " ,开始打印" + "\r\n"); DataTable dt2 = DataClass.Instance().GetGoodsCount(BARCODE); if (dt2 != null) { if (dt2.Rows.Count > 0) { XtraReport1 br = new XtraReport1(); br.SetBindData(dt2, "1"); } } SysInfo.AppendText(DateTime.Now.ToString() + "批号:" + BARCODE + " 条码打印成功" + "\r\n"); GetGoods(BARCODE); } } catch { } } } }