Files
602_WGJ/JinYuan.MES/MesDataProcess.cs
T

1824 lines
82 KiB
C#
Raw Normal View History

2025-07-16 18:08:40 +08:00
using JinYuan.Helper;
using JinYuan.MES.Enums;
using JinYuan.MES.Models;
using JinYuan.Models;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Diagnostics;
2025-08-15 21:09:35 +08:00
using System.IO;
2025-07-16 18:08:40 +08:00
namespace JinYuan.MES
{
public class MesDataProcess : IMes
{
2025-07-31 10:01:09 +08:00
private static LoggerHelp _logger = new LoggerHelp();
2025-07-16 18:08:40 +08:00
#region 1、登录验证
/// <summary>
/// 登录MES验证
/// </summary>
/// <param name="url"></param>
/// <param name="siteCode"></param>
/// <param name="lineCode"></param>
/// <param name="equipNum"></param>
/// <param name="userName"></param>
/// <param name="passWord"></param>
/// <param name="resJson"></param>
/// <returns></returns>
public bool LoginEnyity(string url, string siteCode, string lineCode, string equipNum, string userName, string passWord, string UserCardID, ref string Mesage)
{
bool res = false;
string resJson = "";
try
{
var webApi = new MESApiHelper();
var model = new LoginEnyity
{
siteCode = siteCode,
lineCode = lineCode,
equipNum = equipNum,
userName = userName,
passWord = passWord,
2025-07-31 11:18:43 +08:00
userCardID = null// UserCardID
2025-07-16 18:08:40 +08:00
};
var nowDate = DateTime.Now;
var postData = JsonConvert.SerializeObject(model);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postData);
sw.Stop();
if (string.IsNullOrEmpty(result))
{
string resData = result == "" ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用员工权限校验接口:{url},请求数据为:{postData},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\员工权限校验\{nowDate.ToString("HH")}.txt", resJson);
return res;
}
var res1 = ReturnMesMsg<MesResponse>(result);
if (res1 == null || !res1.success || !string.IsNullOrEmpty(res1.code) || !string.IsNullOrEmpty(res1.message))
{
var resData = res1 == null ? "" : JsonConvert.SerializeObject(res1);
Mesage = res1.message;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用员工权限校验接口:{url},请求数据为:{postData}\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\员工权限校验\{nowDate.ToString("HH")}.txt", resJson);
}
else
{
res = true;
Mesage = res1.message;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用员工权限校验接口:{url},请求数据为:{postData}\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{JsonConvert.SerializeObject(result)}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\员工权限校验\{nowDate.ToString("HH")}.txt", resJson);
}
}
catch (Exception ex)
{
resJson = $"调用员工权限校验接口发生异常:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("调用员工权限校验接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
#endregion
#region 2、获取MES参数请求
/// <summary>
/// 获取MES参数请求
/// </summary>
/// <param name="url"></param>
/// <param name="equipNum"></param>
/// <param name="siteCode"></param>
/// <param name="lineCode"></param>
/// <param name="materialCode"></param>
/// <param name="userName"></param>
/// <param name="resJson"></param>
/// <returns></returns>
public ParamReturnData GetParamSetRequest(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, ref string Mesage)
{
string resJson = "";
try
{
var model = new
{
siteCode = siteCode,
lineCode = lineCode,
equipNum = equipNum,
materialCode = materialCode,
userName = userName
};
var nowDate = DateTime.Now;
var postcontent = JsonConvert.SerializeObject(model);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
if (string.IsNullOrEmpty(result))
{
string resData = result == "" ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用设备参数设定值请求接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\设备参数设定值请求\{nowDate.ToString("HH")}.txt", resJson);
return null;
}
var res1 = ReturnMesMsg<ParamReturnData>(result);
if (res1.success)
{
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用设备参数设定值请求接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\设备参数设定值请求\{nowDate.ToString("HH")}.txt", resJson);
}
else
{
var resData = res1 == null ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用设备参数设定值请求接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\设备参数设定值请求\{nowDate.ToString("HH")}.txt", resJson);
}
return res1;
}
catch (Exception ex)
{
resJson = $"设备参数设定值请求接口发生异常:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("设备参数设定值请求接口", ex);
2025-07-16 18:08:40 +08:00
}
2025-07-31 11:18:43 +08:00
2025-07-16 18:08:40 +08:00
return null;
}
#endregion
#region 3、参数变更请求
/// <summary>
/// 参数变更请求
/// </summary>
/// <param name="url"></param>
/// <param name="siteCode"></param>
/// <param name="lineCode"></param>
/// <param name="equipNum"></param>
/// <param name="materialCode"></param>
/// <param name="userName"></param>
/// <param name="paramChangeItems"></param>
/// <param name="Mesage"></param>
/// <returns></returns>
public bool ParamChange(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, List<TagListItem> paramChangeItems, ref string Mesage)
{
bool res = false;
string resJson = "";
try
{
var model = new ParamChange
{
siteCode = siteCode,
lineCode = lineCode,
equipNum = equipNum,
materialCode = materialCode,
userName = userName,
changeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
tagGroupCode = "",
tagGroupDescription = "",
};
model.tagList = new List<TagListItem>();
model.tagList.Add(new TagListItem
{
tagCode = "",
unitBefore = "",
});
var nowDate = DateTime.Now;
var postcontent = JsonConvert.SerializeObject(model);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
var resData = result == "" ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用参数设定值变更接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\MesLogs\{nowDate.ToString("yyyyMMdd")}\参数设定值变更\{nowDate.ToString("HH")}.txt", resJson);
}
catch (Exception ex)
{
resJson = $"参数设定值变更接口发生异常:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("参数设定值变更接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
#endregion
#region 4、单个上传(只上传卷芯码,不上传托杯码)
/// <summary>
/// 单个上传(只上传卷芯码,不上传托杯码)
/// </summary>
/// <param name="url"></param>
/// <param name="siteCode"></param>
/// <param name="lineCode"></param>
/// <param name="equipNum"></param>
/// <param name="materialCode"></param>
/// <param name="userName"></param>
/// <param name="BarCode"></param>
/// <param name="resJson"></param>
/// <param name="mesResType"></param>
/// <returns>{"rows":[{"code":null,"success":true,"message":null,"identification":"InsertAt20231218095755934","containerCode":null,"category":null}],"success":true,"total":1}
/// </returns>
public bool SingleCellInStation(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, string BarCode, ref string Mesage, ref MesResType mesResType)
{
bool res = false;
string resJson = "";
mesResType = MesResType.D;//默认为OK EVEDL14L2JECX01
try
{
var webApi = new MESApiHelper();
var model = new SingleCellInStation
{
siteCode = siteCode,
lineCode = lineCode,
equipNum = equipNum,
materialCode = materialCode,
userName = userName,
identification = BarCode,
2025-07-30 08:00:46 +08:00
productType = "MB56"
2025-07-16 18:08:40 +08:00
};
var nowDate = DateTime.Now;
var postcontent = JsonConvert.SerializeObject(model);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
long outTime = sw.ElapsedMilliseconds;
if (outTime > 1000)
{
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteLog($"预焊进站PC<=>MES上传耗时:{outTime}ms,电芯码:{BarCode}", "MESTime");
2025-07-16 18:08:40 +08:00
}
if (string.IsNullOrEmpty(result))
{
string resData = result == "" ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
return res;
}
var res1 = ReturnMesMsg<MesResponseIn>(result);
if (res1.success)
{
res = true;
GetInMesResType(res1, BarCode, ref Mesage, ref mesResType);
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
}
else
{
GetInMesResType(res1, BarCode, ref Mesage, ref mesResType);
var resData = res1 == null ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
}
}
catch (Exception ex)
{
Mesage = "调用进站接口超时或MES无返回信息!";
mesResType = MesResType.B;
resJson = $"产品进站信息(组装)接口发生异常:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("产品进站信息(组装)接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
#endregion
#region 5、复投单个上传(只上传条码,不上传卷芯码)
/// <summary>
/// 复投单个上传(只上传条码,不上传卷芯码)
/// </summary>
/// <param name="url"></param>
/// <param name="siteCode"></param>
/// <param name="lineCode"></param>
/// <param name="equipNum"></param>
/// <param name="materialCode"></param>
/// <param name="userName"></param>
/// <param name="BarCode"></param>
/// <param name="resJson"></param>
/// <param name="mesResType"></param>
/// <returns></returns>
public bool SingleFTCellInStation(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, string BarCode, ref string Mesage, ref MesResType mesResType)
{
bool res = false;
string resJson = "";
try
{
var webApi = new MESApiHelper();
var model = new ManyCellInStation
{
siteCode = siteCode,
lineCode = lineCode,
equipNum = equipNum,
materialCode = materialCode,
userName = userName,
};
//电芯条码
model.identificationList = new List<string>();
model.identificationList.Add(BarCode);
//电芯托杯码
model.containerCodeList = new List<string>();
var nowDate = DateTime.Now;
var postcontent = JsonConvert.SerializeObject(model);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
long outTime = sw.ElapsedMilliseconds;
if (outTime > 1000)
{
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteLog($"钢壳进站PC<=>MES上传耗时:{outTime}ms,钢壳码:{BarCode}", "MESTime");
2025-07-16 18:08:40 +08:00
}
if (string.IsNullOrEmpty(result))
{
string resData = result == "" ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
return res;
}
var res1 = ReturnMesMsg<MesResponseIn>(result);
if (res1.success)
{
res = true;
GetInMesResType(res1, BarCode, ref Mesage, ref mesResType);
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
}
else
{
var resData = res1 == null ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
}
}
catch (Exception ex)
{
resJson = $"产品进站信息(组装)接口发生异常:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("产品进站信息(组装)接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
#endregion
#region 6、多个电池进站
/// <summary>
/// 多个电池进站
/// </summary>
/// <param name="url"></param>
/// <param name="siteCode"></param>
/// <param name="lineCode"></param>
/// <param name="equipNum"></param>
/// <param name="materialCode"></param>
/// <param name="userName"></param>
/// <param name="listBar"></param>
/// <param name="MesMessage"></param>
/// <param name="mesResType"></param>
/// <returns></returns>
public bool ManyCellInStation(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, List<string> listBar, ref List<string> MesMessage, ref List<MesResType> mesResType)
{
bool res = false;
string resJson = "";
MesMessage = GetListString(listBar.Count, "进站失败");
mesResType = GetMesType(listBar.Count);
try
{
var model = new ManyCellInStation
{
siteCode = siteCode,
lineCode = lineCode,
equipNum = equipNum,
materialCode = materialCode,
userName = userName,
productType = "OK",
};
//电芯条码
model.identificationList = new List<string>();
for (int i = 0; i < listBar.Count; i++)
{
model.identificationList.Add(listBar[i]);
}
var nowDate = DateTime.Now;
var postcontent = JsonConvert.SerializeObject(model);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
long outTime = sw.ElapsedMilliseconds;
if (outTime > 1000)
{
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteLog($"预焊进站PC<=>MES上传耗时:{outTime}ms,电芯码:{listBar[0]},{listBar[1]},{listBar[2]},{listBar[3]}", "MESTime");
2025-07-16 18:08:40 +08:00
}
if (string.IsNullOrEmpty(result))
{
string resData = result == "" ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
return res;
}
var res1 = ReturnMesMsg<MesResponseIn>(result);
bool temple = false;
if (res1 != null)
{
temple = true;
}
if (temple)
{
res = true;
//GetInMesResType(res1, listBar, ref MesMessage, ref mesResType);
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
}
else
{
var resData = res1 == null ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
}
}
catch (Exception ex)
{
resJson = $"产品进站信息(组装)接口发生异常:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("产品进站信息(组装)接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
#endregion
#region 7、单个电池出站
/// <summary>
/// 单个电池出站
/// </summary>
/// <param name="url"></param>
/// <param name="siteCode"></param>
/// <param name="userName"></param>
/// <param name="equipNum"></param>
/// <param name="lineCode"></param>
/// <param name="materialCode"></param>
/// <param name="m"></param>
/// <param name="type"></param>
/// <param name="mesage"></param>
/// <param name="mesResType"></param>
/// <returns></returns>
public bool SingleCellOutStation(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, BGearEntity m, int type, string materialLotCodeLocator, ref string mesage, ref MesResType mesResType)
{
bool res = false;
string resJson = "";
string[] ngCode = new string[1];
ngCode[0] = "";
try
{
JArray jaContainerCode = new JArray(); //containerCodeAndIdentificationList
JArray jaMaterialLotCodeList = new JArray(); //materialLotCodeList
JObject jo4 = new JObject();
jo4.Add("materialLotCode", "");
jo4.Add("materialLotCodeLocator", materialLotCodeLocator);
jaMaterialLotCodeList.Add(jo4);
JArray jaIdentiftyList = new JArray();//identiftyList
JObject jo3 = new JObject();
jo3.Add("identification", m.CSBYHCODEA); //卷心码
jo3.Add("qualityStatus", m.Result);
jo3.Add("qrCode", ""); //
jo3.Add("ngMessage", m.Remark);
jo3.Add("materialLotList", jaMaterialLotCodeList);
jaIdentiftyList.Add(jo3);
JObject jo2 = new JObject();
jo2.Add("containerCode", "");//托杯码
jo2.Add("identiftyList", jaIdentiftyList);
jaContainerCode.Add(jo2);
JObject jo1 = new JObject();
jo1.Add("siteCode", siteCode);
jo1.Add("lineCode", lineCode);
jo1.Add("equipNum", equipNum);
jo1.Add("userName", userName);
jo1.Add("productType", "");
jo1.Add("completeQty", "");
jo1.Add("type", 1); //追溯标识替换
jo1.Add("materialCode", materialCode);
jo1.Add("containerCodeAndIdentificationList", jaContainerCode);
var nowDate = DateTime.Now;
var postcontent = JsonConvert.SerializeObject(jo1);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
long outTime = sw.ElapsedMilliseconds;
if (outTime > 1000)
{
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteLog($"钢壳进出站PC<=>MES上传耗时:{outTime}ms,钢壳码:{m.CSBYHCODEA}", "MESTime");
2025-07-16 18:08:40 +08:00
}
if (string.IsNullOrEmpty(result))
{
string resData = result == "" ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息\{nowDate.ToString("HH")}.txt", resJson);
return res;
}
var res1 = ReturnMesMsg<MesResponse>(result);
if (res1.success)
{
res = true;
GetOutMesResType(res1, m.CSBYHCODEA, ref mesage, ref mesResType);
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息\{nowDate.ToString("HH")}.txt", resJson);
}
else
{
var resData = res1 == null ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息\{nowDate.ToString("HH")}.txt", resJson);
}
}
catch (Exception ex)
{
resJson = $"产品出站信息(组装)接口发生异常:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("产品出站信息(组装)接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
#endregion
#region 8、进出站一体模式(单电池)
/// <summary>
/// 进出站一体模式(单电池)
/// </summary>
/// <param name="url"></param>
/// <param name="siteCode"></param>
/// <param name="lineCode"></param>
/// <param name="equipNum"></param>
/// <param name="materialCode"></param>
/// <param name="userName"></param>
/// <param name="m"></param>
/// <param name="type"></param>
/// <param name="materialLotCodeLocator"></param>
/// <param name="mesage"></param>
/// <param name="mesResType"></param>
/// <returns></returns>
public bool SingleCellInAndOutStation(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, BGearEntity m, int type, string materialLotCodeLocator, ref string mesage, ref MesResType mesResType)
{
bool res = false;
string resJson = "";
string[] ngCode = new string[1];
ngCode[0] = "";
try
{
JArray jaContainerCode = new JArray(); //containerCodeAndIdentificationList
JArray jaMaterialLotCodeList = new JArray(); //materialLotCodeList
JObject jo4 = new JObject();
jo4.Add("materialLotCode", "");
jo4.Add("materialLotCodeLocator", materialLotCodeLocator);
jaMaterialLotCodeList.Add(jo4);
JArray jaIdentiftyList = new JArray();//identiftyList
JObject jo3 = new JObject();
jo3.Add("identification", m.CSBYHCODEA); //卷心码
jo3.Add("qualityStatus", m.Result);
jo3.Add("qrCode", ""); //
jo3.Add("ngMessage", m.Remark);
jo3.Add("materialLotList", jaMaterialLotCodeList);
jaIdentiftyList.Add(jo3);
JObject jo2 = new JObject();
jo2.Add("containerCode", "");//托杯码
jo2.Add("identiftyList", jaIdentiftyList);
jaContainerCode.Add(jo2);
JObject jo1 = new JObject();
jo1.Add("siteCode", siteCode);
jo1.Add("lineCode", lineCode);
jo1.Add("equipNum", equipNum);
jo1.Add("userName", userName);
jo1.Add("productType", "");
jo1.Add("completeQty", "");
jo1.Add("type", 1); //追溯标识替换
jo1.Add("materialCode", materialCode);
jo1.Add("containerCodeAndIdentificationList", jaContainerCode);
var nowDate = DateTime.Now;
var postcontent = JsonConvert.SerializeObject(jo1);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
long outTime = sw.ElapsedMilliseconds;
if (outTime > 1000)
{
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteLog($"钢壳进出站PC<=>MES上传耗时:{outTime}ms,钢壳码:{m.CSBYHCODEA}", "MESTime");
2025-07-16 18:08:40 +08:00
}
if (string.IsNullOrEmpty(result))
{
string resData = result == "" ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用进出站一体信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进出站一体信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
return res;
}
var res1 = ReturnMesMsg<MesResponse>(result);
if (res1.success)
{
res = true;
GetOutMesResType(res1, m.CSBYHCODEA, ref mesage, ref mesResType);
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用进出站一体信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进出站一体信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
}
else
{
var resData = res1 == null ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用进出站一体信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品进出站一体信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
}
}
catch (Exception ex)
{
resJson = $"产品进出站一体信息(组装)接口发生异常:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("产品进出站一体信息(组装)接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
#endregion
/// <summary>
/// 多个电芯上传
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
public bool OutboundInformations(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, BGearEntity listBar, ref string MesMessage, ref MesResType mesResType, List<string> NGcodeList)
{
bool res = false;
string resJson = "";
MesMessage = "出站失败";
mesResType = MesResType.B;
//MesMessage = GetListString(listBar.Count, "出站失败");
//mesResType = GetMesType(listBar.Count);
try
{
var model = new ManyCellOutStation
{
siteCode = siteCode,
lineCode = lineCode,
equipNum = equipNum,
userName = userName,
containerCode = "",
materialCode = materialCode,
productType = "OK",
//completeQty = listBar.Count.ToString(),
type = 1
};
for (int i = 0; i < 1; i++)
{
//先给mes 传OK
2025-07-30 08:00:46 +08:00
model.assembleLineList = new List<assembleLineList>()
2025-07-16 18:08:40 +08:00
{
2025-07-30 08:00:46 +08:00
new assembleLineList()
2025-07-16 18:08:40 +08:00
{
identification=listBar.CSBYHCODEA,
qualityStatus = listBar.CSBYHOUTSTATIONJUDGMENTRESULT,
qrCode = "",
ngCode = NGcodeList,
ngMessage = listBar.Remark,
materialLotList=new List<string>{},
materialLotCode= "",
}
};
//cc.identification = listBar[i].BarCode;
//cc.materialLotList = GetListString(1, "");
//cc.materialLotCode = "";
//cc.materialLotCodeLocator = "";
//cc.qualityStatus = listBar[i].Result.ToString();
//cc.qrCode = "";
//cc.ngCode = GetListString(1, "");
//cc.
//model.containerCodeAndIdentificationList[i].identiftyList.Add(new IdentiftyListItems
//{
// identification = listBar[i].BarCode,
// qualityStatus ="OK" ,
// qrCode = "",
// ngMessage = listBar[i].Remark,
//});
//model.containerCodeAndIdentificationList[i].identiftyList[i].materialLotList = new List<MaterialLotListItems>();
//model.containerCodeAndIdentificationList[i].identiftyList[i].materialLotList.Add(new MaterialLotListItems
//{
// materialLotCode = "",
// materialLotCodeLocator = "",
//});
//model.containerCodeAndIdentificationList.Add(cc);
}
var nowDate = DateTime.Now;
var postcontent = JsonConvert.SerializeObject(model);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
long outTime = sw.ElapsedMilliseconds;
if (outTime > 1000)
{
2025-08-12 14:03:37 +08:00
LoggerHelp.WriteLog($"外观检出站PC<=>MES上传耗时:{outTime}ms,电芯码:{listBar.CSBYHCODEA}", "MESTime");
2025-07-16 18:08:40 +08:00
}
if (string.IsNullOrEmpty(result))
{
string resData = result == "" ? "" : result;
2025-08-12 14:03:37 +08:00
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(包装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(包装)\{nowDate.ToString("HH")}.txt", resJson);
2025-07-16 18:08:40 +08:00
return res;
}
var res1 = ReturnMesMsg<MesResponse>(result);
if (res1.success)
{
res = true;
GetOutMesResType(res1, listBar.CSBYHCODEA, ref MesMessage, ref mesResType);
2025-08-12 14:03:37 +08:00
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(包装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(包装)\{nowDate.ToString("HH")}.txt", resJson);
2025-07-16 18:08:40 +08:00
}
else
{
GetOutMesResType(res1, listBar.CSBYHCODEA, ref MesMessage, ref mesResType);
var resData = res1 == null ? "" : result;
2025-08-12 14:03:37 +08:00
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(包装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(包装)\{nowDate.ToString("HH")}.txt", resJson);
2025-07-16 18:08:40 +08:00
}
}
catch (Exception ex)
{
2025-08-12 14:03:37 +08:00
resJson = $"产品出站信息(包装)接口发生异常:{ex.Message}";
LoggerHelp.WriteEX("产品出站信息(包装)接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
//#region 9、多个电池出站
///// <summary>
///// 多个电池出站
///// </summary>
///// <param name="url"></param>
///// <param name="siteCode"></param>
///// <param name="userName"></param>
///// <param name="equipNum"></param>
///// <param name="lineCode"></param>
///// <param name="materialCode"></param>
///// <param name="listBar"></param>
///// <param name="type"></param>
///// <param name="resJson"></param>
///// <param name="mesResType"></param>
///// <returns></returns>
//public bool ManyCellOutStation(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, List<BGearEntity> list, int type, string materialLotCodeLocator, ref List<string> MesMessage, ref List<MesResType> mesResType)
//{
// DateTime nowDate = DateTime.Now;
// string resJson = "";
// bool res = false;
// MesMessage = GetListString(list.Count, "MES出站失败");
// mesResType = GetMesType(list.Count);
// try
// {
// JArray jaContainerCode = new JArray(); //containerCodeAndIdentificationList
// foreach (BGearEntity m in list)
// {
// JArray jaMaterialLotCodeList = new JArray(); //materialLotCodeList
// JObject jo4 = new JObject();
// jo4.Add("materialLotCode", "");
// jo4.Add("materialLotCodeLocator", materialLotCodeLocator);
// jaMaterialLotCodeList.Add(jo4);
// JArray jaIdentiftyList = new JArray();//identiftyList
// JObject jo3 = new JObject();
// jo3.Add("identification", m.BarCode); //电芯码
// jo3.Add("materialLotList", "");
// jo3.Add("materialLotCode", "");
// jo3.Add("materialLotCodeLocator", "");
// jo3.Add("qualityStatus", m.Result);
// jo3.Add("qrCode", ""); //
// jo3.Add("ngCode",m.ngCode);
// jo3.Add("ngMessage", m.Remark);
// jo3.Add("materialLotList", jaMaterialLotCodeList);
// jaIdentiftyList.Add(jo3);
// }
// JObject jo1 = new JObject();
// jo1.Add("siteCode", siteCode);//工厂代码
// jo1.Add("lineCode", lineCode);//产线编号
// jo1.Add("equipNum", equipNum);//设备编号
// jo1.Add("materialCode", materialCode);//物料编码
// jo1.Add("userName", userName);//员工账号
// jo1.Add("productType", "");//产品类型
// jo1.Add("completeQty", "");//完工数
// jo1.Add("containerCode", "");//托盘码
// jo1.Add("type", 1); //追溯标识替换
// jo1.Add("containerCodeAndIdentificationList", jaContainerCode);
// var postcontent = JsonConvert.SerializeObject(jo1);
// var sw = new Stopwatch();
// sw.Start();
// string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
// sw.Stop();
// long outTime = sw.ElapsedMilliseconds;
// if (outTime > 1000)
// {
// LogHelper.Instance.WriteLog($"预焊出站PC<=>MES上传耗时:{outTime}ms,电芯码:{list[0].BarCode},{list[1].BarCode},{list[2].BarCode},{list[3].BarCode},{list[4].BarCode},{list[5].BarCode},{list[6].BarCode},{list[7].BarCode}", "MESTime");
// }
// if (string.IsNullOrEmpty(result))
// {
// string resData = result == "" ? "" : result;
// resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
// TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
// return res;
// }
// var res1 = ReturnMesMsg<MesResponseOut>(result);
// if (res1.success)
// {
// res = true;
// GetOutMesResType(res1, list, ref MesMessage, ref mesResType);
// resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
// TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
// }
// else
// {
// var resData = res1 == null ? "" : result;
// resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
// TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
// }
// }
// catch (Exception ex)
// {
// resJson = $"产品出站信息(组装)接口发生异常:{ex.Message}";
// LogHelper.Instance.WriteEX("产品出站信息(组装)接口", ex);
// }
// return res;
//}
//#endregion
#region 10、 过程数据上传
/// <summary>
/// 过程数据上传
/// </summary>
/// <param name="url"></param>
/// <param name="siteCode"></param>
/// <param name="userName"></param>
/// <param name="equipNum"></param>
/// <param name="lineCode"></param>
/// <param name="materialCode"></param>
/// <param name="unloadType"></param>
/// <param name="productProcessParam"></param>
/// <param name="resJson"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public bool ProductProcessParam(string url, string siteCode, string userName, string equipNum, string lineCode, string materialCode, MesUploadType unloadType, List<ProductProcessParam> productProcessParam, ref string resJson)
{
throw new NotImplementedException();
}
#endregion
#region 11、结果参数上传
/// <summary>
/// 结果参数上传
/// </summary>
/// <param name="url"></param>
/// <param name="siteCode"></param>
/// <param name="lineCode"></param>
/// <param name="equipNum"></param>
/// <param name="materialCode"></param>
/// <param name="userName"></param>
/// <param name="m"></param>
/// <param name="unloadType"></param>
/// <param name="Mesage"></param>
/// <returns></returns>
public bool ProducResultParam(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, BGearEntity m, MesUploadType unloadType, ref string Mesage)
{
bool res = false;
string resJson = "";
2025-08-15 21:09:35 +08:00
#region 结果上传MES
2025-07-16 18:08:40 +08:00
2025-08-15 21:09:35 +08:00
try
{
var nowDate = DateTime.Now;
string sNowDate = nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff");
2025-07-16 18:08:40 +08:00
2025-08-15 21:09:35 +08:00
var model = new ProductResultParameters
{
equipNum = equipNum,
type = unloadType.ToString(),
payload = ""
};
#region old
//string ZhongliangA = "";
//string ZhongliangB = "";
//string CeHouA = "";
//string CeHouB = "";
//string JiXingA = "";
//string JiXingB = "";
//string HanYingA = "";
//string HanYingB = "";
//string ZhengJiErSiLieA = "";
//string ZhengJiErSiLieB = "";
//string BeiJiErSiLieA = "";
//string BeiJiErSiLieB = "";
//string ZhengJiErFanA = "";
//string ZhengJiErFanB = "";
//string BeiJiErFanA = "";
//string BeiJiErFanB = "";
//for (int i = 0; i < 2; i++)
//{
// //芯包重量1判定结果
// if (m.list_Data1[i, 10] == 1)
// {
// if (i == 0)
// ZhongliangA = "OK";
// else
// ZhongliangB = "OK";
// }
// else if (m.list_Data1[i, 10] == 2)
// {
// if (i == 0)
// ZhongliangA = "NG";
// else
// ZhongliangB = "NG";
// }
// //芯包侧厚判定结果
// if (m.list_Data1[i, 11] == 1)
// {
// if (i == 0)
// CeHouA = "OK";
// else
// CeHouB = "OK";
// }
// else if (m.list_Data1[i, 11] == 2)
// {
// if (i == 0)
// CeHouA = "NG";
// else
// CeHouB = "NG";
// }
// //芯包CCD极性检测结果
// if (m.list_Data1[i, 12] == 1)
// {
// if (i == 0)
// JiXingA = "OK";
// else
// JiXingB = "OK";
// }
// else if (m.list_Data1[i, 12] == 2)
// {
// if (i == 0)
// JiXingA = "NG";
// else
// JiXingB = "NG";
// }
// //芯包焊印位置判定结果
// if (m.list_Data1[i, 15] == 1)
// {
// if (i == 0)
// HanYingA = "OK";
// else
// HanYingB = "OK";
// }
// else if (m.list_Data1[i, 15] == 2)
// {
// if (i == 0)
// HanYingA = "NG";
// else
// HanYingB = "NG";
// }
// //芯包正面极耳撕裂判定结果
// if (m.list_Data1[i, 16] == 1)
// {
// if (i == 0)
// ZhengJiErSiLieA = "OK";
// else
// ZhengJiErSiLieB = "OK";
// }
// else if (m.list_Data1[i, 16] == 2)
// {
// if (i == 0)
// ZhengJiErSiLieA = "NG";
// else
// ZhengJiErSiLieB = "NG";
// }
// //芯包背面极耳撕裂判定结果
// if (m.list_Data1[i, 17] == 1)
// {
// if (i == 0)
// BeiJiErSiLieA = "OK";
// else
// BeiJiErSiLieB = "OK";
// }
// else if (m.list_Data1[i, 17] == 2)
// {
// if (i == 0)
// BeiJiErSiLieA = "NG";
// else
// BeiJiErSiLieB = "NG";
// }
// //芯包正面极耳翻折检测结果
// if (m.list_Data1[i, 18] == 1)
// {
// if (i == 0)
// ZhengJiErFanA = "OK";
// else
// ZhengJiErFanB = "OK";
// }
// else if (m.list_Data1[i, 18] == 2)
// {
// if (i == 0)
// ZhengJiErFanA = "NG";
// else
// ZhengJiErFanB = "NG";
// }
// //芯包背面极耳翻折检测结果
// if (m.list_Data1[i, 19] == 1)
// {
// if (i == 0)
// BeiJiErFanA = "OK";
// else
// BeiJiErFanB = "OK";
// }
// else if (m.list_Data1[i, 19] == 2)
// {
// if (i == 0)
// BeiJiErFanA = "NG";
// else
// BeiJiErFanB = "NG";
// }
//}
#endregion
switch (unloadType)
{
case MesUploadType.DD:
var payload1 = new Payload1
{
siteCode = siteCode,
lineCode = lineCode,
userName = userName,
materialCode = materialCode,
carCode = "",
collection = "JS",
recordDate = sNowDate,
qty = 1,
containerCode = "",
2025-07-16 18:08:40 +08:00
2025-08-15 21:09:35 +08:00
};
payload1.identification = new IdentificationListItem
{
identification = m.CSBYHCODEA,
qualityStatus = m.CSBYHOUTSTATIONJUDGMENTRESULT,
};
2025-07-16 18:08:40 +08:00
2025-08-15 21:09:35 +08:00
payload1.tagDataVOList = GetTagDataVOList(m);
#region old
// payload1.tagDataVOList = new List<TagDataVOListItem>
//{
// new TagDataVOListItem
// {
// tagCode="CSBYH_CELL_TYPE",
// tagValue = m.A_B,
// tagTime = m.TestTime,
// tagCalculateResult = "Y",
// tagRemark = "芯包类型"
// },
// new TagDataVOListItem
// {
// tagCode="CSBYH_IN_STATION_TIME",
// tagValue = m.CSBYHINSTATIONTIME,
// tagTime = m.ScanTime[0],
// tagCalculateResult = "Y",
// tagRemark = "进站时间"
// },
// new TagDataVOListItem
// {
// tagCode="CSBYH_OUT_STATION_TIME",
// tagValue = m.CSBYHOUTSTATIONTIME,
// tagTime = m.TestTime,
// tagCalculateResult = "Y",
// tagRemark = "出站时间"
// },
// //new TagDataVOListItem
// //{
// // tagCode="CSBYH_WEIGHT_NO_A1",
// // tagValue = m.CSBYHWEIGHTNOA1.ToString(),
// // tagTime = m.TestTime,
// // tagCalculateResult = "Y",
// // tagRemark = "芯包称重工位号"
// //}
2025-07-16 18:08:40 +08:00
2025-08-15 21:09:35 +08:00
// };
#endregion
2025-07-16 18:08:40 +08:00
2025-08-15 21:09:35 +08:00
model.payload = JsonConvert.SerializeObject(payload1);
//payload1= JsonConvert.SerializeObject(payload1);
break;
}
2025-07-16 18:08:40 +08:00
2025-08-15 21:09:35 +08:00
var postcontent = JsonConvert.SerializeObject(model);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
2025-07-16 18:08:40 +08:00
2025-08-15 21:09:35 +08:00
if (string.IsNullOrEmpty(result))
{
string resData = result == "" ? "" : result;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品结果加工参数接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品结果加工参数\{nowDate.ToString("HH")}.txt", resJson);
return res;
}
var res1 = ReturnMesMsg<MesResponse>(result);
if (!res1.success)
{
var resData = res1 == null ? "" : JsonConvert.SerializeObject(res1);
Mesage = res1.message;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品结果加工参数接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品结果加工参数\{nowDate.ToString("HH")}.txt", resJson);
}
else
{
res = true;
Mesage = res1.message;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品结果加工参数接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{JsonConvert.SerializeObject(result)}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品结果加工参数\{nowDate.ToString("HH")}.txt", resJson);
}
}
catch (Exception ex)
{
resJson = $"产品结果加工参数接口发生异常:{ex.Message}";
LoggerHelp.WriteEX("产品结果加工参数接口", ex);
}
2025-07-23 15:43:44 +08:00
#endregion
2025-07-16 18:08:40 +08:00
return res;
}
2025-08-15 21:09:35 +08:00
private List<TagDataVOListItem> GetTagDataVOList(BGearEntity m)
{
//var AGearList =
string insertTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
List<TagDataVOListItem> datavolist = new List<TagDataVOListItem>();
string strFileName = System.Environment.CurrentDirectory + "\\采集项目表.csv";
FileStream fileStream = new FileStream(strFileName, FileMode.Open, FileAccess.Read, FileShare.Read);
StreamReader streamReader = new StreamReader(fileStream);
_ = streamReader.ReadLine();
while (!streamReader.EndOfStream)
{
string line = streamReader.ReadLine();
string[] keys = line.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
if (keys.Length == 3)
{
var temp = m.GetType().GetProperty(keys[1]).GetValue(m, null);
datavolist.Add(new TagDataVOListItem()
{
tagCode = keys[0],
tagValue = temp == null ? "0" : temp.ToString(),//m
tagTime = DateTime.Now.ToString(),
tagCalculateResult = "Y",
tagRemark = keys[2]
});
}
}
#region 本地字段没有,手动赋值
// 进站时间
if (string.IsNullOrEmpty(insertTime))
{
datavolist.Add(new TagDataVOListItem()
{
tagCode = "FV_F060_RES_002",
tagValue = DateTime.Now.ToString(),//m
tagTime = DateTime.Now.ToString(),
tagCalculateResult = "Y",
tagRemark = "采集时间"
});
}
else
{
datavolist.Add(new TagDataVOListItem()
{
tagCode = "FV_F060_RES_002",
tagValue = insertTime,//m
tagTime = DateTime.Now.ToString(),
tagCalculateResult = "Y",
tagRemark = "采集时间"
});
}
// 设备名称
datavolist.Add(new TagDataVOListItem()
{
tagCode = "FV_F060_RES_004",
tagValue = "",//m
tagTime = DateTime.Now.ToString(),
tagCalculateResult = "Y",
tagRemark = "设备名称"
});
// 操作员
datavolist.Add(new TagDataVOListItem()
{
tagCode = "FV_F060_RES_005",
tagValue = "",//m
tagTime = DateTime.Now.ToString(),
tagCalculateResult = "Y",
tagRemark = "操作员"
});
#endregion
return datavolist;
}
2025-07-16 18:08:40 +08:00
#endregion
#region 12、设备状态
/// <summary>
/// 设备状态
/// </summary>
/// <param name="url"></param>
/// <param name="equipNum"></param>
/// <param name="siteCode"></param>
/// <param name="lineCode"></param>
/// <param name="statusCode"></param>
/// <param name="materialCode"></param>
/// <param name="userName"></param>
/// <param name="faultCodes"></param>
/// <param name="guid"></param>
/// <param name="resJson"></param>
/// <returns></returns>
public bool UploadEquStatus(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, string guid, string statusCode, List<FaultCodeList> faultCodes, ref string Mesage)
{
bool res = false;
string resJson = "";
try
{
DateTime nowDate = DateTime.Now;
string sNowDate = nowDate.ToString("yyyy/MM/dd HH:mm:ss");
var parameters = new EqpStatusParam
{
siteCode = siteCode,
lineCode = lineCode,
equipNum = equipNum,
materialCode = materialCode,
userName = userName,
seatId = "",
recordDate = sNowDate,
statusCode = statusCode.ToString(),
uploadTime = sNowDate,
guid = guid
};
if (faultCodes != null)
{
parameters.faultCodeList = faultCodes;
}
else
{
parameters.faultCodeList = null;
}
var postcontent = JsonConvert.SerializeObject(parameters);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
res = true;
resJson = $"{sNowDate}:调用设备运行状态接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy/MM/dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{JsonConvert.SerializeObject(result)}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\设备运行状态\{nowDate.ToString("HH")}.txt", resJson);
}
catch (Exception ex)
{
resJson = $"设备运行状态接口发生异常:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("设备运行状态接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
#endregion
#region 13、设备报警上传接口
/// <summary>
/// 设备报警上传接口
/// </summary>
/// <param name="url"></param>
/// <param name="equipNum"></param>
/// <param name="siteCode"></param>
/// <param name="lineCode"></param>
/// <param name="userName"></param>
/// <param name="materialCode"></param>
/// <param name="alarmObj"></param>
/// <param name="guid"></param>
/// <param name="resJson"></param>
/// <returns></returns>
public bool UploadEquAlarm(string url, string siteCode, string lineCode, string equipNum, string materialCode, string userName, List<AlarmData> alarmObj, string guid, ref string mesage)
{
bool res = false;
string resJson = "";
try
{
var nowDate = DateTime.Now;
if (alarmObj.Count > 0)
{
var model = new UploadAlarmParam
{
siteCode = siteCode,
lineCode = lineCode,
equipNum = equipNum,
materialCode = materialCode,
userName = userName,
recordDate = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"),
guid = guid,
seatId = ""
};
model.alarmLineList = new List<AlarmLineListItem>();
for (int j = 0; j < alarmObj.Count; j++)
{
AlarmLineListItem alarmList = new AlarmLineListItem();
alarmList.alarmEndTime = alarmObj[j].EndTime.ToString();
alarmList.alarmType = alarmObj[j].AlarmType;
alarmList.alarmName = alarmObj[j].AlarmContent;
alarmList.alarmStartTime = alarmObj[j].StartTime.ToString();
alarmList.faultCode = alarmObj[j].AlarmCode;
model.alarmLineList.Add(alarmList);
}
var postcontent = JsonConvert.SerializeObject(model);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
res = true;
resJson = $"{nowDate.ToString("yyyy/MM/dd HH:mm:ss.fff")}:调用设备报警信息接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy/MM/dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{JsonConvert.SerializeObject(result)}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\报警信息\{nowDate.ToString("HH")}.txt", resJson);
}
}
catch (Exception ex)
{
resJson = $"调用设备报警信息接口发生异常:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("调用设备报警信息接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
#endregion
#region 14、上传设备能耗数据
/// <summary>
/// 上传设备能耗数据
/// </summary>
/// <param name="url"></param>
/// <param name="equipNum"></param>
/// <param name="siteCode"></param>
/// <param name="lineCode"></param>
/// <param name="userName"></param>
/// <param name="electricMeterNum"></param>
/// <param name="wattrs"></param>
/// <param name="resJson"></param>
/// <returns></returns>
public bool UploadEquEnergy(string url, string siteCode, string lineCode, string equipNum, string userName, List<string> electricMeterNum, List<WattrMeter> wattrs, ref string resJson)
{
bool res = false;
try
{
var nowDate = DateTime.Now;
var postcontent = JsonConvert.SerializeObject(wattrs);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
res = true;
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用设备能耗信息接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{JsonConvert.SerializeObject(result)}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\设备能耗信息\{nowDate.ToString("HH")}.txt", resJson);
}
catch (Exception ex)
{
resJson = $"调用设备能耗信息接口:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("调用设备能耗信息接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
#endregion
#region 15、风速仪数据上传至MES
/// <summary>
/// 风速仪数据上传至MES
/// </summary>
/// <param name="url"></param>
/// <param name="equipNum"></param>
/// <param name="antiDustAirSpeedNum"></param>
/// <param name="collectData"></param>
/// <param name="resJson"></param>
/// <returns></returns>
public bool UploadDeviceCollectData(string url, string equipNum, List<string> antiDustAirSpeedNum, List<float> collectData, ref string mesage)
{
bool res = false;
string resJson = "";
try
{
if (collectData == null) { return false; }
UploadDeviceCollectData uploadDevice = new UploadDeviceCollectData();
uploadDevice.appid = "e1012966a936170c6fcab98e24042d10";
uploadDevice.device_code = equipNum;
uploadDevice.collect_time = GetUnixTimestamp();
List<Collect_code_value_list> list = new List<Collect_code_value_list>();
for (int i = 0; i < collectData.Count; i++)
{
Collect_code_value_list _Value_List = new Collect_code_value_list();
_Value_List.target_code = 5;
_Value_List.target_value = collectData[i].ToString();
_Value_List.target_value_tag = antiDustAirSpeedNum[i];
list.Add(_Value_List);
}
uploadDevice.collect_code_value_list = list;
var nowDate = DateTime.Now;
string postcontent = JsonConvert.SerializeObject(uploadDevice);
var sw = new Stopwatch();
sw.Start();
string result = MESApiHelper.WepPostAPIAsync(url, postcontent);
sw.Stop();
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用风速接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\风速信息\{nowDate.ToString("HH")}.txt", resJson);
}
catch (Exception ex)
{
resJson = $"调用风速接口:{ex.Message}";
2025-07-31 10:01:09 +08:00
LoggerHelp.WriteEX("调用风速接口", ex);
2025-07-16 18:08:40 +08:00
}
return res;
}
#endregion
#region 16、数据处理逻辑
/// <summary>
/// 单电池进站分类
/// </summary>
/// <param name="res1"></param>
/// <param name="BarCode"></param>
/// <param name="MesMessage"></param>
/// <param name="mesResType"></param>
private void GetInMesResType(MesResponseIn res1, string BarCode, ref string MesMessage, ref MesResType mesResType)
{
if (res1 != null && res1 != null)
{
if (res1.success)
{
mesResType = MesResType.D;
MesMessage = "MES进站成功 ";
}
else
{
if (res1.category == null)
{
mesResType = MesResType.B;
MesMessage = res1.message;
}
else
{
switch (res1.category)
{
case "A":
mesResType = MesResType.A;
MesMessage = res1.message;
break;
case "B":
mesResType = MesResType.B;
MesMessage = res1.message;
break;
case "C":
mesResType = MesResType.C;
MesMessage = res1.message;
break;
default:
mesResType = MesResType.UnKnow;
MesMessage = "MES进站失败 ";
break;
}
}
}
}
}
/// <summary>
/// 多电池进站分类
/// </summary>
/// <param name="res1"></param>
/// <param name="listBar"></param>
/// <param name="MesMessage"></param>
/// <param name="mesResType"></param>
//private void GetInMesResType(MesResponseIn res1, List<string> listBar, ref List<string> MesMessage, ref List<MesResType> mesResType)
//{
// if (res1 != null)
// {
// for (int i = 0; i < res1.total; i++)
// {
// for (int j = 0; j < res1.total; j++)
// {
// if (res1.rows[j].identification == listBar[i])
// {
// if (res1.rows[j].success)
// {
// mesResType[i] = MesResType.D;
// MesMessage[i] = "MES进站成功 ";
// }
// else
// {
// if (res1.rows[j].category == null)
// {
// mesResType[i] = MesResType.B;
// MesMessage[i] = res1.rows[j].message;
// }
// else
// {
// switch (res1.rows[j].category)
// {
// case "A":
// mesResType[i] = MesResType.A;
// MesMessage[i] = res1.rows[j].message;
// break;
// case "B":
// mesResType[i] = MesResType.B;
// MesMessage[i] = res1.rows[j].message;
// break;
// case "C":
// mesResType[i] = MesResType.C;
// MesMessage[i] = res1.rows[j].message;
// break;
// default:
// mesResType[i] = MesResType.UnKnow;
// MesMessage[i] = "MES进站失败 ";
// break;
// }
// }
// }
// }
// }
// }
// }
//}
/// <summary>
/// 单电池出站分类
/// </summary>
/// <param name="res1"></param>
/// <param name="BarCode"></param>
/// <param name="MesMessage"></param>
/// <param name="mesResType"></param>
private void GetOutMesResType(MesResponse res1, string BarCode, ref string MesMessage, ref MesResType mesResType)
{
if (res1 != null && res1 != null)
{
if (res1.success)
{
mesResType = MesResType.D;
MesMessage = "MES出站成功 ";
}
else
{
if (res1.category == null)
{
mesResType = MesResType.B;
MesMessage = res1.message;
}
else
{
switch (res1.category)
{
case "A":
mesResType = MesResType.A;
MesMessage = res1.message;
break;
case "B":
mesResType = MesResType.B;
MesMessage = res1.message;
break;
case "C":
mesResType = MesResType.C;
MesMessage = res1.message;
break;
default:
mesResType = MesResType.UnKnow;
MesMessage = "MES出站失败 ";
break;
}
}
}
}
}
/// <summary>
/// 多电池出站结果分类
/// </summary>
/// <param name="res1"></param>
/// <param name="list"></param>
/// <param name="MesMessage"></param>
/// <param name="mesResType"></param>
private void GetOutMesResType(MesResponseOut res1, List<BGearEntity> list, ref List<string> MesMessage, ref List<MesResType> mesResType)
{
if (res1 != null)
{
for (int i = 0; i < list.Count; i++)
{
for (int j = 0; j < res1.total; j++)
{
if (res1.rows[j].identification == list[i].CSBYHCODEA)
{
if (res1.rows[j].success)
{
mesResType[i] = MesResType.D;
MesMessage[i] = "MES出站成功 ";
}
else
{
if (res1.rows[j].category == null)
{
mesResType[i] = MesResType.B;
MesMessage[i] = res1.rows[j].message;
}
else
{
switch (res1.rows[i].category)
{
case "A":
mesResType[i] = MesResType.A;
MesMessage[i] = res1.rows[j].message;
break;
case "B":
mesResType[i] = MesResType.B;
MesMessage[i] = res1.rows[j].message;
break;
case "C":
mesResType[i] = MesResType.C;
MesMessage[i] = res1.rows[j].message;
break;
default:
mesResType[i] = MesResType.UnKnow;
MesMessage[i] = "MES出站失败 ";
break;
}
}
}
}
}
}
}
}
/// <summary>
/// 序列化各类返回
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="ret"></param>
/// <returns></returns>
private T ReturnMesMsg<T>(string ret)
{
try
{
return JsonConvert.DeserializeObject<T>(ret);
}
catch (System.Exception ex)
{
return default(T);
}
}
public List<MesResType> GetMesType(int Num)
{
List<MesResType> mesResTypes = new List<MesResType>();
for (int i = 0; i < Num; i++)
{
mesResTypes.Add(MesResType.B);
}
return mesResTypes;
}
public List<string> GetListString(int Num, string str)
{
List<string> mesResTypes = new List<string>();
for (int i = 0; i < Num; i++)
{
mesResTypes.Add(str);
}
return mesResTypes;
}
/// <summary>
///本地时间为Unix时间戳
/// </summary>
/// <returns></returns>
public static long GetUnixTimestamp()
{
return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
}
#endregion
}
}