BaoKai_202508-Wcs-Jingwang..../WCSIce/FormBarCode.cs

293 lines
14 KiB
C#
Raw Permalink Normal View History

2025-08-24 12:51:29 +08:00
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 { }
}
}
}