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; } } }