Files
2026-06-08 17:12:01 +08:00

520 lines
22 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Mail;
using PLMTEST;
using DataLinkMesWork;
using System.Collections;
using System.Drawing.Imaging;
using Newtonsoft.Json.Linq;
using System.Web.Http;
using NPOI.SS.Formula.Functions;
using System.IO;
using System.Net.Sockets;
using System.Security.Cryptography;
using System.Windows.Forms;
using NPOI.SS.Formula;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using System.Net.NetworkInformation;
using System.Resources;
using System.Runtime.Versioning;
using NPOI.SS.UserModel;
using System.Diagnostics;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using System.Xml.Linq;
using Adapters;
using System.Security.Policy;
namespace MesWork
{
public class Analysis_MOM_Msg
{
/// <summary>
/// UUID生成
/// </summary>
/// <returns></returns>
public static string UuidUtil()
{
string result = Guid.NewGuid().ToString();
return result;
}
/// <summary>
/// 获取时间戳
/// </summary>
/// <returns></returns>
public static Int64 GetTimeStamp()
{
TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0);
return Convert.ToInt64(ts.TotalSeconds);
}
/// <summary>
/// 接收检测数据
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string OnlineCheckData(string url, [FromBody] JObject jobj)
{
var result = new msgResHeader();
result.MsgId = "";
result.Message = "";
result.Code = "200";
result.Data = "";
string errorMessage = "";
string parentID = "";
int AID = -1;
int isError = 0;
string str = jobj.ToString();
try
{
//存储日志
var CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
//Event_MOM_Log_Insert,@创建时间,@内容
var param = new SqlParameter[] {
new SqlParameter("@接口地址",url),
new SqlParameter("@接口类型",2), // 1. 主动调用接口 2. 被调用接口
new SqlParameter("@请求内容",str),
new SqlParameter("@请求时间",CreateTime)
};
DataLinkMesWork.SQLCommon.ExecuteStoredProcedure("接口_IOT接口交互日志_请求记录", MesWorkForm.ConnectionString, ref param, out DataTable dt, out errorMessage);
if (jobj == null)
{
result.Code = "500";
result.Message = "参数格式不正确!";
string retString1 = JsonConvert.SerializeObject(result);
MW_Log.LoggerHelper.Info("接收检测数据_res", retString1);
return retString1;
}
// 解析订单内容,存储数据库,根据实际业务来写
OnlineCheckData onlineCheckData = JsonConvert.DeserializeObject<OnlineCheckData>(str);
if (onlineCheckData.MsgId == "")
{
throw new Exception("参数MsgId为空");
}
result.MsgId = onlineCheckData.MsgId;
if (onlineCheckData.OpCode == "")
{
throw new Exception("参数OpCode为空");
}
if (onlineCheckData.ProductionCode == "")
{
throw new Exception("参数ProductionCode为空");
}
int Id_tagCF = 0;
SqlParameter[] param1 = new SqlParameter[6];
param1[0] = new SqlParameter("@EngineID", onlineCheckData.ProductionCode);
param1[1] = new SqlParameter("@工位号", onlineCheckData.OpCode);
param1[2] = new SqlParameter("@操作者工号", onlineCheckData.CheckPerson);
param1[3] = new SqlParameter("@扫码时间", onlineCheckData.ScanTime);
param1[4] = new SqlParameter("@合格标志", onlineCheckData.QualityMark);
param1[5] = new SqlParameter("@Id_tagCF", Id_tagCF);
param1[5].Direction = ParameterDirection.Output;
DataLinkMesWork.SQLCommon.ExecuteStoredProcedure("CATL_测量数据合格索引_增加_测试设备", MesWorkForm.ConnectionString, ref param1, out errorMessage);
if (errorMessage != "")
{
throw new Exception(errorMessage);
}
Id_tagCF = Convert.ToInt32(param1[5].Value.ToString());
List<OnlineCheckData_CheckData> onlineCheckData_CheckDataList = onlineCheckData.CheckData;
for (int i = 0;i < onlineCheckData_CheckDataList.Count;i++)
{
OnlineCheckData_CheckData onlineCheckData_CheckData = onlineCheckData_CheckDataList[i];
var param2 = new SqlParameter[] {
new SqlParameter("@Id_tagCF", Id_tagCF),
new SqlParameter("@EngineID", onlineCheckData.ProductionCode),
new SqlParameter("@TagID",onlineCheckData_CheckData.CheckCode),
new SqlParameter("@TagValue",onlineCheckData_CheckData.CheckValue),
new SqlParameter("@IsGoodBad",onlineCheckData_CheckData.QualityMark),
new SqlParameter("@工位号",onlineCheckData.OpCode),
new SqlParameter("@理论值",onlineCheckData_CheckData.StandardValue),
new SqlParameter("@上限值",onlineCheckData_CheckData.MaxValue),
new SqlParameter("@下限值",onlineCheckData_CheckData.MinValue),
new SqlParameter("@测量项目",onlineCheckData_CheckData.CheckName),
new SqlParameter("@测量单位",onlineCheckData_CheckData.Unit),
};
DataLinkMesWork.SQLCommon.ExecuteStoredProcedure("CATL_测量数据合格_增加_测试设备", MesWorkForm.ConnectionString, ref param2, out errorMessage);
if (errorMessage != "")
{
throw new Exception(errorMessage);
}
}
}
catch (Exception err)
{
result.Code = "500";
result.Message = err.Message;
}
string retString = JsonConvert.SerializeObject(result);
MW_Log.LoggerHelper.Info("接收检测数据_res", retString);
return retString;
}
/// <summary>
/// 接收查询检测次数
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string OnlineCheckDataCount(string url, [FromBody] JObject jobj)
{
var result = new msgResHeader2();
result.MsgId = "";
result.Message = "";
result.Code = "200";
result.Data = new checkCountData();
result.Data.CheckCountOk = 0;
result.Data.CheckCountNg = 0;
string errorMessage = "";
string parentID = "";
int AID = -1;
if (jobj == null)
{
result.Code = "500";
result.Message = "参数格式不正确!";
string retString1 = JsonConvert.SerializeObject(result);
MW_Log.LoggerHelper.Info("接收查询检测次数_res", retString1);
return retString1;
}
int isError = 0;
string str = jobj.ToString();
try
{
//存储日志
var CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
//Event_MOM_Log_Insert,@创建时间,@内容
var param = new SqlParameter[] {
new SqlParameter("@接口地址",url),
new SqlParameter("@接口类型",2), // 1. 主动调用接口 2. 被调用接口
new SqlParameter("@请求内容",str),
new SqlParameter("@请求时间",CreateTime)
};
DataLinkMesWork.SQLCommon.ExecuteStoredProcedure("接口_IOT接口交互日志_请求记录", MesWorkForm.ConnectionString, ref param, out DataTable dt, out errorMessage);
// 解析订单内容,存储数据库,根据实际业务来写
OnlineCheckData onlineCheckData = JsonConvert.DeserializeObject<OnlineCheckData>(str);
if (onlineCheckData.MsgId == "")
{
throw new Exception("参数MsgId为空");
}
result.MsgId = onlineCheckData.MsgId;
if (onlineCheckData.OpCode == "")
{
throw new Exception("参数OpCode为空");
}
if (onlineCheckData.ProductionCode == "")
{
throw new Exception("参数ProductionCode为空");
}
SqlParameter[] param1 = new SqlParameter[2];
param1[0] = new SqlParameter("@EngineID", onlineCheckData.ProductionCode);
param1[1] = new SqlParameter("@工位号", onlineCheckData.OpCode);
DataLinkMesWork.SQLCommon.ExecuteStoredProcedure("CATL_测量数据合格_查询测试次数_测试设备", MesWorkForm.ConnectionString, ref param1, out DataTable dt1, out errorMessage);
if (errorMessage != "")
{
throw new Exception(errorMessage);
}
if (dt1 != null && dt1.Rows.Count > 0)
{
result.Data.CheckCountOk = Convert.ToInt32(dt1.Rows[0]["OK"]);
result.Data.CheckCountNg = Convert.ToInt32(dt1.Rows[0]["NG"]);
}
}
catch (Exception err)
{
result.Code = "500";
result.Message = err.Message;
}
string retString = JsonConvert.SerializeObject(result);
MW_Log.LoggerHelper.Info("接收查询检测次数_res", retString);
return retString;
}
/// <summary>
/// 接收查询检测次数
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string OnlineCheckDataCountBool(string url, [FromBody] JObject jobj)
{
var result = new msgResHeader3();
result.MsgId = "";
result.Message = "";
result.Code = "200";
result.Data = new checkCountBoolData();
result.Data.isCheck = false;
string errorMessage = "";
string parentID = "";
int AID = -1;
if (jobj == null)
{
result.Code = "500";
result.Message = "参数格式不正确!";
string retString1 = JsonConvert.SerializeObject(result);
MW_Log.LoggerHelper.Info("接收查询检测次数Bool_res", retString1);
return retString1;
}
int isError = 0;
string str = jobj.ToString();
try
{
//存储日志
var CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
//Event_MOM_Log_Insert,@创建时间,@内容
var param = new SqlParameter[] {
new SqlParameter("@接口地址",url),
new SqlParameter("@接口类型",2), // 1. 主动调用接口 2. 被调用接口
new SqlParameter("@请求内容",str),
new SqlParameter("@请求时间",CreateTime)
};
DataLinkMesWork.SQLCommon.ExecuteStoredProcedure("接口_IOT接口交互日志_请求记录", MesWorkForm.ConnectionString, ref param, out DataTable dt, out errorMessage);
// 解析订单内容,存储数据库,根据实际业务来写
OnlineCheckData onlineCheckData = JsonConvert.DeserializeObject<OnlineCheckData>(str);
if (onlineCheckData.MsgId == "")
{
throw new Exception("参数MsgId为空");
}
result.MsgId = onlineCheckData.MsgId;
if (onlineCheckData.OpCode == "")
{
throw new Exception("参数OpCode为空");
}
if (onlineCheckData.ProductionCode == "")
{
throw new Exception("参数ProductionCode为空");
}
SqlParameter[] param1 = new SqlParameter[2];
param1[0] = new SqlParameter("@EngineID", onlineCheckData.ProductionCode);
param1[1] = new SqlParameter("@工位号", onlineCheckData.OpCode);
DataLinkMesWork.SQLCommon.ExecuteStoredProcedure("CATL_测量数据合格_查询测试次数_测试设备", MesWorkForm.ConnectionString, ref param1, out DataTable dt1, out errorMessage);
if (errorMessage != "")
{
throw new Exception(errorMessage);
}
if (dt1 != null && dt1.Rows.Count > 0)
{
if(Convert.ToInt32(dt1.Rows[0]["OK"]) > 0 || Convert.ToInt32(dt1.Rows[0]["NG"]) > 0)
{
result.Data.isCheck = true;
}
}
}
catch (Exception err)
{
result.Code = "500";
result.Message = err.Message;
}
string retString = JsonConvert.SerializeObject(result);
MW_Log.LoggerHelper.Info("接收查询检测次数_res", retString);
return retString;
}
/// <summary>
/// 接收打印任务
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string ReceivePrintTask(string url, [FromBody] JObject jobj)
{
var result = new msgResHeader();
result.MsgId = "";
result.Message = "";
result.Code = "200";
result.Data = "";
string errorMessage = "";
string parentID = "";
int AID = -1;
if (jobj == null)
{
result.Code = "500";
result.Message = "参数格式不正确!";
string retString1 = JsonConvert.SerializeObject(result);
MW_Log.LoggerHelper.Info("接收打印任务_res", retString1);
return retString1;
}
string str = jobj.ToString();
try
{
//存储日志
var CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
//Event_MOM_Log_Insert,@创建时间,@内容
var param = new SqlParameter[] {
new SqlParameter("@接口地址",url),
new SqlParameter("@接口类型",2), // 1. 主动调用接口 2. 被调用接口
new SqlParameter("@请求内容",str),
new SqlParameter("@请求时间",CreateTime)
};
DataLinkMesWork.SQLCommon.ExecuteStoredProcedure("接口_IOT接口交互日志_请求记录", MesWorkForm.ConnectionString, ref param, out DataTable dt, out errorMessage);
// 解析订单内容,存储数据库,根据实际业务来写
PrintTaskData printTaskData = JsonConvert.DeserializeObject<PrintTaskData>(str);
if (printTaskData.printTemplete == "")
{
throw new Exception("参数printTemplete为空");
}
if (printTaskData.productCode == "")
{
throw new Exception("参数productCode为空");
}
if (printTaskData.printDate == "")
{
throw new Exception("参数printDate为空");
}
string msg = $"MARK|{printTaskData.printTemplete}|{printTaskData.productCode},{printTaskData.printDate}";
// 连接打印机
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
socket.Connect(MesWorkForm.MarkingMachine_Ip, int.Parse(MesWorkForm.MarkingMachine_Port));
}
catch(Exception err)
{
throw new Exception("连接打印机失败:" + err.Message);
}
// 发送数据
try
{
if (socket.Connected)
{
byte[] decBytes = System.Text.Encoding.UTF8.GetBytes(msg);
//socket.Send(decBytes);
socket.Send(decBytes, 0, decBytes.Length, SocketFlags.None);
}
else
{
throw new Exception("连接打印机失败");
}
}
catch (Exception err)
{
throw new Exception("发送打印数据失败:" + err.Message);
}
// 关闭
try
{
if (socket.Connected)
{
socket.Shutdown(SocketShutdown.Both);
socket.Close(100);
}
}
catch (Exception ex)
{
}
}
catch (Exception err)
{
result.Code = "500";
result.Message = err.Message;
}
string retString = JsonConvert.SerializeObject(result);
MW_Log.LoggerHelper.Info("接收打印任务_res", retString);
return retString;
}
public static string GetCharData(string url, [FromBody] JObject jobj)
{
var result = new CharData();
result.reqId = "";
result.msg = "";
result.errorDetail = "";
result.code = "0";
result.data = new List<TestResult>();
string errorMessage = "";
string parentID = "";
int AID = -1;
if (jobj == null)
{
result.code = "500";
result.msg = "参数格式不正确!";
string retString1 = JsonConvert.SerializeObject(result);
MW_Log.LoggerHelper.Info("接收充电数据查询_res", retString1);
return retString1;
}
string str = jobj.ToString();
try
{
//存储日志
var CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
//Event_MOM_Log_Insert,@创建时间,@内容
var param = new SqlParameter[] {
new SqlParameter("@接口地址",url),
new SqlParameter("@接口类型",2), // 1. 主动调用接口 2. 被调用接口
new SqlParameter("@请求内容",str),
new SqlParameter("@请求时间",CreateTime)
};
if (MesWorkForm.charDataToken == "")
{
throw new Exception("未获取到Token");
}
DataLinkMesWork.SQLCommon.ExecuteStoredProcedure("接口_IOT接口交互日志_请求记录", MesWorkForm.ConnectionString, ref param, out DataTable dt, out errorMessage);
CharDataSearchPrams charDataSearchPrams = JsonConvert.DeserializeObject<CharDataSearchPrams>(str);
List<TestResult> testResultList = MesWorkForm.GetCharData_Details(charDataSearchPrams, out string code, out string errorDetail);
//string syncTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//for (int i = 0; i < testResultList.Count; i++)
//{
// string vin = testResultList[i].deviceId;
// string testCode = testResultList[i].testCode;
// string testStatus = testResultList[i].testStatus;
// string testBeginTime = testResultList[i].testBeginTime;
// string testEndTime = testResultList[i].testEndTime;
// string faultInfo = testResultList[i].faultInfo;
// B_DB_Opera.BaseData_tagTable_CharData_Insert(vin, testCode, testStatus, testBeginTime, testEndTime, faultInfo, syncTime, out string errMsg);
//}
result.data = testResultList;
result.code = code;
result.msg = errorDetail;
result.errorDetail = errorDetail;
}
catch (Exception err)
{
result.code = "500";
result.msg = err.Message;
result.errorDetail = err.Message;
}
string retString = JsonConvert.SerializeObject(result);
MW_Log.LoggerHelper.Info("接收充电数据查询_res", retString);
return retString;
}
}
}