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 【这个地方是放方法的】
///
///
///
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("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);
}
///
/// 获取产品型号
///
///
///
public async Task GetProjCode(string machineNo)
{
Model.MESDataModel.SendHeaderWithDtl sendHeaderWithDtl = new SendHeaderWithDtl();
sendHeaderWithDtl.Cmd = (int)Model.MESDataModel.CMDType.获取产品型号;
string computerName = System.Environment.MachineName;
List sendListItems = new List
{
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(result);
string value = rt.code;
string value2 = rt.msg;
List valueList = rt.ProjCode;
return rt;
}
///
/// 校验电芯
///
///
///
public async Task CheckCell(string code,string projCode)
{
Model.MESDataModel.SendHeaderWithDtl sendHeaderWithDtl = new SendHeaderWithDtl();
sendHeaderWithDtl.Cmd = 2; //(int)Model.MESDataModel.CMDType.电芯条码校验;
string computerName = System.Environment.MachineName;
List sendListItems = new List
{
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(result);
string successfulCode = rt.code;
string msg = rt.msg;
if(successfulCode=="0")
{
msg = "true";
}
return msg;
}
///
/// 烘烤数据上传
///
///
///
///
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 sendListItems =
new List();
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(result);
string value = rt.code;
string value2 = rt.msg;
List valueList = rt.ProjCode;
}
///
/// 获取水分检验结果
///
///
///
public async Task 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 sendListItems = new List();
sendListItems.Add(sendListItem);
sendHeaderWithDtl.DataList = sendListItems;
MESFeedback mesFeedBack = await Send(sendHeaderWithDtl);
string result = mesFeedBack.MesResult.ToString();
Model.GuanYu.GYInterfaceModel.RtnWaterInfo rt = JsonConvert.DeserializeObject(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 GetWaterResult2(string code, string projCode)
{
Model.MESDataModel.SendHeaderWithDtl sendHeaderWithDtl = new SendHeaderWithDtl();
sendHeaderWithDtl.Cmd = 2; //(int)Model.MESDataModel.CMDType.电芯条码校验;
string computerName = System.Environment.MachineName;
List sendListItems = new List
{
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(result);
string successfulCode = rt.code;
string msg = rt.msg;
if (successfulCode == "0")
{
msg = "true";
}
return msg;
}
public async Task Send(SendHeaderWithDtl data)
{
MESFeedback task = null;
if (proxy == null)
{
return task;
}
try
{
task = await proxy.Invoke("Receive", data);
}
catch (Exception ex)//进到这里表示连接异常
{
//task = new MESFeedback { Status = "404", MesResult = ex.Message };
}
return task;
}
}
}