293 lines
14 KiB
C#
293 lines
14 KiB
C#
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<REQUEST_DATAItem> rdlist = new List<REQUEST_DATAItem>();
|
||
|
||
public class REQUEST_DATAItem
|
||
{
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public string DATA_AUTH { get; set; }
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public string LOT_NO { get; set; }
|
||
}
|
||
|
||
public class RootBarCode
|
||
{
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public List<REQUEST_DATAItem> 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 { }
|
||
}
|
||
}
|
||
}
|