308 lines
13 KiB
C#
308 lines
13 KiB
C#
|
|
using Microsoft.AspNet.SignalR.Client;
|
|||
|
|
using StandardDomeNewApp.Communication.SignalRClient.ClinetMethods;
|
|||
|
|
using StandardDomeNewApp.Core;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
using StandardDomeNewApp.Model.WeiHongModel;
|
|||
|
|
using StandardDomeNewApp.Model;
|
|||
|
|
using Newtonsoft.Json;
|
|||
|
|
using static StandardDomeNewApp.Model.WeiHongModel.WeiHongReturnModel;
|
|||
|
|
using static StandardDomeNewApp.Model.MESDataModel;
|
|||
|
|
using static StandardDomeNewApp.Model.GuanYu.GYInterfaceModel;
|
|||
|
|
using System.Data;
|
|||
|
|
using System.Windows;
|
|||
|
|
using System.Windows.Controls;
|
|||
|
|
using System.Windows.Media;
|
|||
|
|
|
|||
|
|
namespace StandardDomeNewApp.Communication.SignalRClient.HubMethods
|
|||
|
|
{
|
|||
|
|
public class HubClient : IHubClient
|
|||
|
|
{
|
|||
|
|
private ConfigInfoModel configInfoModel { set; get; } = ConfigInfoModel.CreateObj();
|
|||
|
|
#region 【这个地方是放方法的】
|
|||
|
|
/// <summary>
|
|||
|
|
///
|
|||
|
|
/// </summary>
|
|||
|
|
private IClientMethods clientMethods { set; get; }
|
|||
|
|
public FrameworkElement framework { set; get; }
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
private ContentCache contentCache = ContentCache.CreateObj(); //用于读取PLC数据
|
|||
|
|
|
|||
|
|
public override void Init(IHubProxy hubProxy)
|
|||
|
|
{
|
|||
|
|
proxy = hubProxy;
|
|||
|
|
//这种类都是后续按照这个格式添加 这里是客户端的方法实例化 如果不同的类型就用不同接口实现不同方法
|
|||
|
|
//clientMethods = new TestClientMethod();
|
|||
|
|
}
|
|||
|
|
public override void BeginRegister()
|
|||
|
|
{
|
|||
|
|
if (proxy == null)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if (clientMethods == null)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
//proxy.On<WeiHongReturnModel.MESFeedback>("ClientReceive", (MESFeedback) =>
|
|||
|
|
//{
|
|||
|
|
// clientMethods.ClientReceive(MESFeedback);
|
|||
|
|
//});
|
|||
|
|
}
|
|||
|
|
public void SignalServerInvoke(int CMD,string JSONPara)
|
|||
|
|
{
|
|||
|
|
if (View.MainWindow.isUploadMES==false)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
switch (CMD)
|
|||
|
|
{
|
|||
|
|
case 0:
|
|||
|
|
Test(JSONPara);
|
|||
|
|
break;
|
|||
|
|
case (int)Model.MESDataModel.CMDType.获取产品型号:
|
|||
|
|
var mesFeedBack= GetProjCode(JSONPara);
|
|||
|
|
break;
|
|||
|
|
case (int)Model.MESDataModel.CMDType.获取水分结果:
|
|||
|
|
GetWaterResult(JSONPara);
|
|||
|
|
break;
|
|||
|
|
case (int)Model.MESDataModel.CMDType.电芯条码校验:
|
|||
|
|
var checkCell= CheckCell(JSONPara,"");
|
|||
|
|
break;
|
|||
|
|
case (int)Model.MESDataModel.CMDType.烘烤数据上传:
|
|||
|
|
GetWaterResult(JSONPara);
|
|||
|
|
break;
|
|||
|
|
case (int)Model.MESDataModel.CMDType.烘烤过程温度上传:
|
|||
|
|
GetWaterResult(JSONPara);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
private async Task Test(string JSONPara)
|
|||
|
|
{
|
|||
|
|
Model.MESDataModel.SendHeaderWithDtl sendHeaderWithDtl = new SendHeaderWithDtl();
|
|||
|
|
sendHeaderWithDtl.Cmd = 1;
|
|||
|
|
Model.MESDataModel.SendListItem sendListItem = new SendListItem();
|
|||
|
|
sendListItem.DataPreporty = "TestName";
|
|||
|
|
sendListItem.DataValue = JSONPara;
|
|||
|
|
|
|||
|
|
object MESFeedBack = await Send(sendHeaderWithDtl);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取产品型号
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="jsonPara"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public async Task<Model.GuanYu.GYInterfaceModel.RtnZHComm> GetProjCode(string machineNo)
|
|||
|
|
{
|
|||
|
|
Model.MESDataModel.SendHeaderWithDtl sendHeaderWithDtl = new SendHeaderWithDtl();
|
|||
|
|
sendHeaderWithDtl.Cmd = (int)Model.MESDataModel.CMDType.获取产品型号;
|
|||
|
|
string computerName = System.Environment.MachineName;
|
|||
|
|
|
|||
|
|
List<Model.MESDataModel.SendListItem> sendListItems = new List<Model.MESDataModel.SendListItem>
|
|||
|
|
{
|
|||
|
|
new SendListItem{ DataPreporty="MachineNo",DataValue=machineNo },
|
|||
|
|
new SendListItem{ DataPreporty="ProcName",DataValue="HK" },
|
|||
|
|
new SendListItem{ DataPreporty="GXDM",DataValue="002" },
|
|||
|
|
new SendListItem{ DataPreporty="ComputerName",DataValue=computerName }
|
|||
|
|
};
|
|||
|
|
sendHeaderWithDtl.DataList = sendListItems;
|
|||
|
|
|
|||
|
|
MESFeedback mesFeedBack = await Send(sendHeaderWithDtl);
|
|||
|
|
string result = mesFeedBack.MesResult.ToString();
|
|||
|
|
Model.GuanYu.GYInterfaceModel.RtnZHComm rt = JsonConvert.DeserializeObject<Model.GuanYu.GYInterfaceModel.RtnZHComm>(result);
|
|||
|
|
|
|||
|
|
string value = rt.code;
|
|||
|
|
string value2 = rt.msg;
|
|||
|
|
List<string> valueList = rt.ProjCode;
|
|||
|
|
|
|||
|
|
return rt;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 校验电芯
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="jsonPara"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public async Task<string> CheckCell(string code,string projCode)
|
|||
|
|
{
|
|||
|
|
Model.MESDataModel.SendHeaderWithDtl sendHeaderWithDtl = new SendHeaderWithDtl();
|
|||
|
|
sendHeaderWithDtl.Cmd = 2; //(int)Model.MESDataModel.CMDType.电芯条码校验;
|
|||
|
|
string computerName = System.Environment.MachineName;
|
|||
|
|
List<Model.MESDataModel.SendListItem> sendListItems = new List<Model.MESDataModel.SendListItem>
|
|||
|
|
{
|
|||
|
|
new SendListItem{ DataPreporty="CellName",DataValue=code },//电芯条码
|
|||
|
|
new SendListItem{ DataPreporty="ProjCode",DataValue=projCode },//电芯型号
|
|||
|
|
new SendListItem{ DataPreporty="infoData1",DataValue="0" },//周次樊工说不用传。3C才需要
|
|||
|
|
new SendListItem{ DataPreporty="ComputerName",DataValue=computerName }//计算机名
|
|||
|
|
};
|
|||
|
|
sendHeaderWithDtl.DataList = sendListItems;
|
|||
|
|
|
|||
|
|
MESFeedback mesFeedBack = await Send(sendHeaderWithDtl);
|
|||
|
|
string result = mesFeedBack.MesResult.ToString();
|
|||
|
|
Model.GuanYu.GYInterfaceModel.RtnZHComm rt = JsonConvert.DeserializeObject<Model.GuanYu.GYInterfaceModel.RtnZHComm>(result);
|
|||
|
|
|
|||
|
|
string successfulCode = rt.code;
|
|||
|
|
string msg = rt.msg;
|
|||
|
|
if(successfulCode=="0")
|
|||
|
|
{
|
|||
|
|
msg = "true";
|
|||
|
|
}
|
|||
|
|
return msg;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 烘烤数据上传
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="code"></param>
|
|||
|
|
/// <param name="projCode"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private async Task UploadBakeData(string code, string projCode)
|
|||
|
|
{
|
|||
|
|
#region
|
|||
|
|
string sql = $@" select a.BatteryCode as Cell_Name,
|
|||
|
|
a.ProjectCode as Proj_Code ,
|
|||
|
|
case when b.WaterResult='OK' then '0'else '1'end as Quality,
|
|||
|
|
'' as NGReason ,
|
|||
|
|
a.CreateTime as StartDate,
|
|||
|
|
b.BeginBakeTime as Baking_Start_Time,
|
|||
|
|
b.EndBakeTime as Baking_End_Time,
|
|||
|
|
'' as Distribution_Num,
|
|||
|
|
c.CavityNo as Cavity ,
|
|||
|
|
b.Layer as Lay ,
|
|||
|
|
'' as Position,
|
|||
|
|
'' as Vacuum_Chamber,
|
|||
|
|
f.Value as Valve_Vacuum,#真空值
|
|||
|
|
e.Value as Temperature,#温度平均值
|
|||
|
|
'machine' as Machine_No,#设备编号
|
|||
|
|
a.UserId as Operator,#操作工
|
|||
|
|
d.WaterContent as Water_Content,# 水含量
|
|||
|
|
a.IsSample as IsTestSample,
|
|||
|
|
'' as Remark ,
|
|||
|
|
'' as Extensions_1,
|
|||
|
|
'' as Extensions_2,
|
|||
|
|
b.BeginBakeAgainTime as Bakeagain_Start_Time,
|
|||
|
|
b.EndBakeAgainTime as Bakeagain_End_Time,
|
|||
|
|
e.AgainValue as Bakeagain_Temperature ,#加烘温度
|
|||
|
|
f.AgainValue as Bakeagain_Vacuum #真空
|
|||
|
|
,b.CurrentId
|
|||
|
|
from TPalletCode a
|
|||
|
|
left join TPallet b on a.PalletCode =b.PalletCode
|
|||
|
|
left join TMachineState c on b.PalletCode =c.PalletCode
|
|||
|
|
left join TWaterSample d on a.BatteryCode =d.BatteryCode
|
|||
|
|
left join TStatusHistoryDataAVG e on b.CurrentId =e.CurrentId and e.DataType ='Temperature'
|
|||
|
|
left join TStatusHistoryDataAVG f on b.CurrentId =f.CurrentId and f.DataType ='Vacuum'
|
|||
|
|
where a.BatteryCode ='{code}' ";
|
|||
|
|
#endregion
|
|||
|
|
DataTable Dt = Util.DatabaseHelper.GetDataTable(sql);
|
|||
|
|
|
|||
|
|
Model.MESDataModel.SendHeaderWithDtl sendHeaderWithDtl = new SendHeaderWithDtl();
|
|||
|
|
Model.MESDataModel.SendHeaderWithDtl MESDataModel =
|
|||
|
|
new Model.MESDataModel.SendHeaderWithDtl();
|
|||
|
|
MESDataModel.Cmd = 3; //(int)Model.MESDataModel.CMDType.烘烤数据上传;
|
|||
|
|
List<Model.MESDataModel.SendListItem> sendListItems =
|
|||
|
|
new List<Model.MESDataModel.SendListItem>();
|
|||
|
|
for (int i = 0; i < Dt.Columns.Count; i++)
|
|||
|
|
{
|
|||
|
|
Model.MESDataModel.SendListItem sendListItem = new MESDataModel.SendListItem();
|
|||
|
|
sendListItem.DataPreporty = Dt.Columns[i].ColumnName;
|
|||
|
|
sendListItem.DataValue = Dt.Rows[0][i].ToString();
|
|||
|
|
sendListItems.Add(sendListItem);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
MESDataModel.DataList = sendListItems;
|
|||
|
|
//proxy.Invoke("Receive", MESDataModel);
|
|||
|
|
MESFeedback mesFeedBack = await Send(sendHeaderWithDtl);
|
|||
|
|
string result = mesFeedBack.MesResult.ToString();
|
|||
|
|
Model.GuanYu.GYInterfaceModel.RtnZHComm rt = JsonConvert.DeserializeObject<Model.GuanYu.GYInterfaceModel.RtnZHComm>(result);
|
|||
|
|
|
|||
|
|
string value = rt.code;
|
|||
|
|
string value2 = rt.msg;
|
|||
|
|
List<string> valueList = rt.ProjCode;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取水分检验结果
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="JSONPara"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public async Task<Model.GuanYu.GYInterfaceModel.RtnWaterInfo> GetWaterResult(string JSONPara)
|
|||
|
|
{
|
|||
|
|
Model.MESDataModel.SendHeaderWithDtl sendHeaderWithDtl = new SendHeaderWithDtl();
|
|||
|
|
sendHeaderWithDtl.Cmd = 5; //(int)Model.MESDataModel.CMDType.获取水分结果;
|
|||
|
|
Model.MESDataModel.SendListItem sendListItem = new SendListItem();
|
|||
|
|
sendListItem.DataPreporty = "strCellName";
|
|||
|
|
sendListItem.DataValue = JSONPara;
|
|||
|
|
List<Model.MESDataModel.SendListItem> sendListItems = new List<SendListItem>();
|
|||
|
|
sendListItems.Add(sendListItem);
|
|||
|
|
sendHeaderWithDtl.DataList = sendListItems;
|
|||
|
|
|
|||
|
|
MESFeedback mesFeedBack = await Send(sendHeaderWithDtl);
|
|||
|
|
string result = mesFeedBack.MesResult.ToString();
|
|||
|
|
Model.GuanYu.GYInterfaceModel.RtnWaterInfo rt = JsonConvert.DeserializeObject<Model.GuanYu.GYInterfaceModel.RtnWaterInfo>(result);
|
|||
|
|
//result = "";
|
|||
|
|
//string valueCode = rt.code;
|
|||
|
|
//string valueMsg = rt.msg;
|
|||
|
|
//var valueList = rt.Data;
|
|||
|
|
// Model.GuanYu.GYInterfaceModel.DataItems returnItems = rt.Data;
|
|||
|
|
//string waterContent = returnItems.Water_Content;
|
|||
|
|
return rt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public async Task<string> GetWaterResult2(string code, string projCode)
|
|||
|
|
{
|
|||
|
|
Model.MESDataModel.SendHeaderWithDtl sendHeaderWithDtl = new SendHeaderWithDtl();
|
|||
|
|
sendHeaderWithDtl.Cmd = 2; //(int)Model.MESDataModel.CMDType.电芯条码校验;
|
|||
|
|
string computerName = System.Environment.MachineName;
|
|||
|
|
List<Model.MESDataModel.SendListItem> sendListItems = new List<Model.MESDataModel.SendListItem>
|
|||
|
|
{
|
|||
|
|
new SendListItem{ DataPreporty="CellName",DataValue=code },//电芯条码
|
|||
|
|
new SendListItem{ DataPreporty="ProjCode",DataValue=projCode },//电芯型号
|
|||
|
|
new SendListItem{ DataPreporty="infoData1",DataValue="0" },//周次樊工说不用传。3C才需要
|
|||
|
|
new SendListItem{ DataPreporty="ComputerName",DataValue=computerName }//计算机名
|
|||
|
|
};
|
|||
|
|
sendHeaderWithDtl.DataList = sendListItems;
|
|||
|
|
|
|||
|
|
MESFeedback mesFeedBack = await Send(sendHeaderWithDtl);
|
|||
|
|
string result = mesFeedBack.MesResult.ToString();
|
|||
|
|
Model.GuanYu.GYInterfaceModel.RtnZHComm rt = JsonConvert.DeserializeObject<Model.GuanYu.GYInterfaceModel.RtnZHComm>(result);
|
|||
|
|
|
|||
|
|
string successfulCode = rt.code;
|
|||
|
|
string msg = rt.msg;
|
|||
|
|
if (successfulCode == "0")
|
|||
|
|
{
|
|||
|
|
msg = "true";
|
|||
|
|
}
|
|||
|
|
return msg;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
public async Task<MESFeedback> Send(SendHeaderWithDtl data)
|
|||
|
|
{
|
|||
|
|
MESFeedback task = null;
|
|||
|
|
if (proxy == null)
|
|||
|
|
{
|
|||
|
|
return task;
|
|||
|
|
}
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
task = await proxy.Invoke<MESFeedback>("Receive", data);
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)//进到这里表示连接异常
|
|||
|
|
{
|
|||
|
|
//task = new MESFeedback { Status = "404", MesResult = ex.Message };
|
|||
|
|
}
|
|||
|
|
return task;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|