using JinYuan.VirtualDataLibrary; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Diagnostics; using JinYuan.Helper; using JinYuan.MES; using JinYuan.MES.Models; using JinYuan.MES.Enums; using JinYuan.Models; namespace JinYuan.ControlCenters { public class MESDataCombin { #region 1、员工验证 public static string LoginEnyity(string userName, string passWord) { DateTime nowTime = DateTime.Now; string resJson = string.Empty; string josnTxtMsg = string.Empty; try { JObject jo = new JObject(); jo.Add("siteCode", CommonMethods.mesConfig.siteCode); jo.Add("lineCode", CommonMethods.mesConfig.lineCode); jo.Add("equipNum", CommonMethods.mesConfig.equipNum); jo.Add("userName", userName); jo.Add("passWord", passWord); var sw = new Stopwatch(); sw.Start(); resJson = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.LoginMesUrl, jo.ToString()); sw.Stop(); josnTxtMsg = $"{nowTime.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用员工权限校验接口:{CommonMethods.mesConfig.LoginMesUrl},请求数据为:{jo.ToString()}\n{nowTime.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resJson}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowTime.ToString("yyyyMMdd")}\员工权限校验\{nowTime.ToString("HH")}.txt", josnTxtMsg); } catch (Exception ex) { LogHelper.Instance.WriteEX("调用员工权限校验接口", ex); } return resJson; } #endregion #region 2、设备参数设定值请求 /// /// 设备参数设定值请求 /// /// public static string ParamSetRequestData() { var result = new ParamReturnData(); string resJson = string.Empty; string josnTxtMsg = string.Empty; try { var model = new { siteCode = CommonMethods.mesConfig.siteCode, lineCode = CommonMethods.mesConfig.lineCode, equipNum = CommonMethods.mesConfig.equipNum, materialCode = CommonMethods.mesConfig.MaterialCode, userName = CommonMethods.mesConfig.mesUserName }; var nowDate = DateTime.Now; var postcontent = JsonConvert.SerializeObject(model); var sw = new Stopwatch(); sw.Start(); resJson = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.ParamSetpointRequestMesUrl, postcontent); sw.Stop(); josnTxtMsg = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用设备参数设定值请求接口:{CommonMethods.mesConfig.ParamSetpointRequestMesUrl},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resJson}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowDate.ToString("yyyyMMdd")}\设备参数设定值请求\{nowDate.ToString("HH")}.txt", josnTxtMsg); } catch (Exception ex) { LogHelper.Instance.WriteEX("调用设备参数设定值请求接口", ex); } return resJson; } #endregion #region 3、设备参数设定值变更 /// /// 设备参数设定值变更 /// /// public string ParamChangeData() { DateTime nowTime = DateTime.Now; string resJson = string.Empty; string josnTxtMsg = string.Empty; try { ParamChange paramChange = new ParamChange(); List tagListItems = new List(); TagListItem listItem = new TagListItem(); listItem.tagCode = ""; listItem.unitBefore = ""; listItem.standardValueBefore = ""; listItem.trueValueBefore = ""; listItem.falseValueBefore = ""; listItem.minValueBefore = 0; listItem.maxValueBefore = 100; listItem.unitAfter = ""; listItem.standardValueAfter = ""; listItem.trueValueAfter = ""; listItem.falseValueBefore = ""; listItem.minValueAfter = 0; listItem.maxValueAfter = 1000; tagListItems.Add(listItem); paramChange.siteCode = CommonMethods.mesConfig.siteCode; paramChange.lineCode = CommonMethods.mesConfig.lineCode; paramChange.equipNum = CommonMethods.mesConfig.equipNum; paramChange.materialCode = CommonMethods.mesConfig.MaterialCode; paramChange.userName = CommonMethods.mesConfig.mesUserName; paramChange.changeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); paramChange.tagGroupCode = ""; paramChange.tagGroupDescription = ""; paramChange.tagList = tagListItems; string SendJosn = JsonConvert.SerializeObject(paramChange); var sw = new Stopwatch(); sw.Start(); resJson = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.ChangeParamSetValueMesUrl, SendJosn); sw.Stop(); josnTxtMsg = $"{nowTime.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用参数设定值变更接口:{CommonMethods.mesConfig.ParamSetpointRequestMesUrl},请求数据为:{SendJosn},\n{nowTime.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resJson}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowTime.ToString("yyyyMMdd")}\参数设定值变更\{nowTime.ToString("HH")}.txt", josnTxtMsg); } catch (Exception ex) { LogHelper.Instance.WriteEX("调用参数设定值变更接口", ex); } return resJson; } #endregion #region 4、原材料投入信息 #endregion #region 5、产品进站信息(组装) /// /// 产品进站信息(组装) /// /// /// public string Inboundinformation(List listRFID, ref long outTime, ref string strTimeOut) { DateTime nowTime = DateTime.Now; string resJson = string.Empty; string josnTxtMsg = string.Empty; strTimeOut = string.Empty; outTime = 0; try { JObject jo = new JObject(); jo.Add("siteCode", CommonMethods.mesConfig.siteCode); jo.Add("lineCode", CommonMethods.mesConfig.lineCode); jo.Add("equipNum", CommonMethods.mesConfig.equipNum); jo.Add("materialCode", CommonMethods.mesConfig.MaterialCode); jo.Add("userName", CommonMethods.mesConfig.mesUserName); jo.Add("identification", ""); jo.Add("productType", ""); //条码list JArray ja = new JArray(); jo.Add("identificationList", ja); //托杯码List JArray ja2 = new JArray(); for (int i = 0; i < listRFID.Count; i++) { ja2.Add(listRFID[i]); } jo.Add("containerCodeList", ja2); var sw = new Stopwatch(); sw.Start(); resJson = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.InPutStationMesUrl, jo.ToString()); sw.Stop(); outTime = sw.ElapsedMilliseconds; if (outTime > 200) { strTimeOut = $"卷芯进站PC<=>MES上传耗时:{outTime}ms,RFID:{listRFID[0]}"; } josnTxtMsg = $"{nowTime.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{CommonMethods.mesConfig.InPutStationMesUrl},请求数据为:{jo.ToString()},\n{nowTime.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resJson}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowTime.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowTime.ToString("HH")}.txt", josnTxtMsg); } catch (Exception ex) { LogHelper.Instance.WriteEX("调用产品进站信息(组装)接口", ex); } return resJson; } #endregion #region 5.1 产品进站信息多个上传 /// /// 产品进站信息多个上传 /// /// /// /// /// public static bool Inboundinformations(string CellCode, ref string MesMessage, ref MesResType mesResType) { DateTime nowTime = DateTime.Now; MesMessage = "调用进站接口返回失败!"; mesResType = MesResType.B; string resJson = ""; bool res = false; try { var model = new ManyCellInStation { siteCode = CommonMethods.mesConfig.siteCode, lineCode = CommonMethods.mesConfig.lineCode, equipNum = CommonMethods.mesConfig.equipNum, materialCode = CommonMethods.mesConfig.MaterialCode, userName = CommonMethods.mesConfig.mesUserName, identification = CellCode, productType = "OK" }; var nowDate = DateTime.Now; var postcontent = JsonConvert.SerializeObject(model); var sw = new Stopwatch(); sw.Start(); string result = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.InPutStationMesUrl, postcontent); sw.Stop(); long outTime = sw.ElapsedMilliseconds; if (outTime > 1000) { LogHelper.Instance.WriteLog($"电池进站PC<=>MES上传耗时:{outTime}ms,条码:{CellCode}", "MESTime"); } if (string.IsNullOrEmpty(result)) { string resData = result == "" ? "" : result; resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{CommonMethods.mesConfig.InPutStationMesUrl},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson); return res; } var res1 = ReturnMesInMsg(result); if (res1.success) { res = true; GetInMesResType(res1, CellCode, ref MesMessage, ref mesResType); resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{CommonMethods.mesConfig.InPutStationMesUrl},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson); } else { var resData = res1 == null ? "" : result; resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品进站信息(组装)接口:{CommonMethods.mesConfig.InPutStationMesUrl},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowDate.ToString("yyyyMMdd")}\产品进站信息(组装)\{nowDate.ToString("HH")}.txt", resJson); } } catch (Exception ex) { resJson = $"产品进站信息(组装)接口发生异常:{ex.Message}"; LogHelper.Instance.WriteEX("产品进站信息(组装)接口", ex); } return res; } /// /// 进站结果分类 /// /// /// /// /// private static void GetInMesResType(MesResponseIn res1, string listBar, ref string MesMessage, ref MesResType mesResType) { if (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; } } } } } private static MesResponseIn ReturnMesInMsg(string ret) { MesResponseIn obj = new MesResponseIn(); try { obj = JsonConvert.DeserializeObject(ret); return obj; } catch (System.Exception ex) { return obj; } } #endregion #region 6、设备过程加工参数 /// /// 设备过程加工参数 /// /// #endregion #region 7、产品结果加工参数 /// /// 产品结果加工参数 /// /// /// public static string ProductResultParameters(BGearEntity m, MesUploadType unloadType) { DateTime nowTime = DateTime.Now; string resJson = string.Empty; string josnTxtMsg = string.Empty; bool res = false; try { var nowDate = DateTime.Now; string sNowDate = nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff"); var model = new ProductResultParameters { equipNum = CommonMethods.mesConfig.equipNum, type = unloadType.ToString(), }; // 查询进站时间 var BGearList = CommonMethods.db.QuerySqlList(CommonMethods.dBSQL.GetInStationTop1Sql(m.BarCode)); switch (unloadType) { case MesUploadType.DD: var payload1 = new Payload1 { siteCode = CommonMethods.mesConfig.siteCode, lineCode = CommonMethods.mesConfig.lineCode, userName = CommonMethods.mesConfig.mesUserName, materialCode = CommonMethods.mesConfig.MaterialCode, carCode = "", collection = "JS", recordDate = sNowDate, qty = 1, containerCode = "", }; //参数列 var tagDataVOList = new List(); tagDataVOList.Add(new TagDataVOList { tagCode = "CODE_BM", tagValue = m.BarCode.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯条码" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SCANNING_TIME_BM", tagValue = m.BarCode.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯扫码时间" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SURFACE_DETECTION_RESULT", tagValue = m.AreaCheckResult.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯大面检测结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "PET_TENSION_SETTING_BM", tagValue = m.PETtensionSet.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "PET膜张力设定值(N)" }); tagDataVOList.Add(new TagDataVOList { tagCode = "PET_TENSION_BM", tagValue = m.PETtensionReal.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "PET膜张力实际值(N)" }); tagDataVOList.Add(new TagDataVOList { tagCode = "BASE_PLATE_DETECTION_RESULT", tagValue = m.bassPosNegCheckResult.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "底托片正反检测结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SURFACE_TO_TOP_COVER_DISTANCE1", tagValue = m.BigFaceBassDistance1.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯大面上边缘与顶盖底面距离(mm)1" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SURFACE_TO_TOP_COVER_DISTANCE2", tagValue = m.BigFaceBassDistance2.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯大面上边缘与顶盖底面距离(mm)2" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SIDE_TO_TOP_COVER_DISTANCE1", tagValue = m.SideFaceBassDistance1.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯侧面上边缘与顶盖底面距离(mm)1" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SIDE_TO_TOP_COVER_DISTANCE2", tagValue = m.SideFaceBassDistance2.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯侧面上边缘与顶盖底面距离(mm)2" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SURFACE_APPEARANCE_DETECTION", tagValue = m.BigFaceCheckResult.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯大面外观检测结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "LONG_EDGE_MAX_SETTING", tagValue = m.LengthSetMax.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯包膜后尺寸(mm)长边设定值最大值" }); tagDataVOList.Add(new TagDataVOList { tagCode = "LONG_EDGE_MIN_SETTING", tagValue = m.LengthSetMin.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯包膜后尺寸(mm)长边设定值最小值" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SHORT_EDGE_MAX_SETTING", tagValue = m.ShortSetMax.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯包膜后尺寸(mm)短边设定值最大值" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SHORT_EDGE_MIN_SETTING", tagValue = m.ShortSetMin.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯包膜后尺寸(mm)短边设定值最小值" }); tagDataVOList.Add(new TagDataVOList { tagCode = "LONG_EDGE_VALUE", tagValue = m.LengthReal.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯包膜后尺寸(mm)长边实际值" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SHORT_EDGE_VALUE", tagValue = m.ShortReal.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯包膜后尺寸(mm)短边实际值" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SIZE_DETECTION_JUDGE_RESULT", tagValue = m.SideCheckResult.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯包膜后尺寸检测判定结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "BASE_PLATE_POSITION_DETECTION_RESULT", tagValue = m.PositionCherkResult.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "电芯底托片位置检测结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "PROCESS_NAME_BM", tagValue = m.ProcessName.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "工序名" }); tagDataVOList.Add(new TagDataVOList { tagCode = "FRONTLINE_SCAN_1_RESULTS_BM", tagValue = m.FrontlineSweep1Result.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜前线扫1结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "FRONTLINE_SCAN_2_RESULTS_BM", tagValue = m.FrontlineSweep2Result.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜前线扫2结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "FRONTLINE_SCAN_3_RESULTS_BM", tagValue = m.FrontlineSweep3Result.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜前线扫3结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "BOTTOM_CCD_RESULTS_(AREA_ARRAY)_BM", tagValue = m.ButtonCCDResult.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "底托CCD结果(面阵)" }); tagDataVOList.Add(new TagDataVOList { tagCode = "SCAN_1_RESULT_OF_THE_REAR_SURFACE_LINE_BM", tagValue = m.bigArealineSweepResult.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜后大面线扫1结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "REAR_SIDE_LINE_SCAN_1_RESULT_BM", tagValue = m.SideLineSweep1Result.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜后侧面线扫1结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "REAR_SIDE_LINE_SCAN_2_RESULTS_BM", tagValue = m.SideLineSweep2Result.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜后侧面线扫2结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "2D_CAMERA_1_RESULTS_FOR_REAR_LARGE_AREA_INSPECTION_BM", tagValue = m.BigAreaCheck12DResult.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜后大面检测2D相机1结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "2D_CAMERA_2_RESULTS_FOR_REAR_LARGE_AREA_INSPECTION_BM", tagValue = m.BigAreaCheck22DResult.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜后大面检测2D相机2结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "BOTTOM_SUPPORT_NEGATIVE_PRESSURE_BM", tagValue = m.ProcessName.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "底托负压" }); tagDataVOList.Add(new TagDataVOList { tagCode = "1_UPPER_CUTTER_BM", tagValue = m.CutterLife1.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜1上切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "1_CUTTING_BLADE_BM", tagValue = m.CutterLife2.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜1下切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "1_BACKUP_ROLL_1_UPPER_CUTTER_BM", tagValue = m.CutterLife3.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜1备卷1上切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "1_BACKUP_ROLL_1_LOWER_CUTTING_KNIFE_BM", tagValue = m.CutterLife4.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜1备卷1下切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "1_BACKUP_ROLL_2_CUTTING_KNIFE_ON_TOP_BM", tagValue = m.CutterLife5.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜1备卷2上切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "1_BACKUP_ROLL_2_LOWER_CUTTING_KNIFE_BM", tagValue = m.CutterLife6.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜1备卷2下切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "2_UPPER_KNIVES_BM", tagValue = m.CutterLife7.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜2上切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "2_CUTTING_KNIVES_BM", tagValue = m.CutterLife8.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜2下切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "2_BACKUP_ROLLS_AND_1_UPPER_CUTTER_BM", tagValue = m.CutterLife9.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜2备卷1上切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "2_BACKUP_ROLLS_AND_1_LOWER_CUTTING_KNIFE_BM", tagValue = m.CutterLife10.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜2备卷1下切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "2_BACKUP_ROLLS_2_UPPER_CUTTERS_BM", tagValue = m.CutterLife11.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜2备卷2上切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "2_BACKUP_ROLLS_2_LOWER_CUTTERS_BM", tagValue = m.CutterLife12.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "包膜2备卷2下切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "CORNER_CUTTING_1_LEFT_CUTTING_KNIFE_BM", tagValue = m.CutterLife13.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "切角1左切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "CORNER_CUTTING_1_RIGHT_CUTTING_KNIFE_BM", tagValue = m.CutterLife14.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "切角1右切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "CORNER_2_LEFT_CUTTER_BM", tagValue = m.CutterLife15.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "切角2左切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "CORNER_2_RIGHT_CUTTING_KNIFE_BM", tagValue = m.CutterLife16.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "切角2右切刀" }); tagDataVOList.Add(new TagDataVOList { tagCode = "STATION_ENTRY_TIME_BM", tagValue = BGearList[0].InStationTime.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "进站时间" }); tagDataVOList.Add(new TagDataVOList { tagCode = "EXIT_TIME_BM", tagValue = m.OutStationTime.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "出站时间" }); tagDataVOList.Add(new TagDataVOList { tagCode = "OUTBOUND_JUDGMENT_RESULT_BM", tagValue = m.CellResult.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "出站判定结果" }); tagDataVOList.Add(new TagDataVOList { tagCode = "ABNORMAL_FEEDBACK_INFORMATION_BM", tagValue = m.Remark.ToString(), tagTime = m.OutStationTime, tagCalculateResult = "Y", tagRemark = "异常反馈信息" }); //payload1.identification = new List(); Identification identification = new Identification() { identification = m.BarCode, qualityStatus = m.CellResult, }; payload1.identification = identification; payload1.tagDataVOList = tagDataVOList; model.payload = JsonConvert.SerializeObject(payload1); break; } var postcontent = JsonConvert.SerializeObject(model); var sw = new Stopwatch(); sw.Start(); resJson = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.ResultProcessParamMesUrl, postcontent); sw.Stop(); josnTxtMsg = $"{nowTime.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品结果加工参数接口:{CommonMethods.mesConfig.ResultProcessParamMesUrl},请求数据为:{postcontent},\n{nowTime.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resJson}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowTime.ToString("yyyyMMdd")}\调用产品结果加工参数\{nowTime.ToString("HH")}.txt", josnTxtMsg); } catch (Exception ex) { LogHelper.Instance.WriteEX("调用产品结果加工参数接口", ex); } return resJson; } #endregion #region 8、产品出站信息(组装) /// /// 产品出站信息(组装) /// /// /// public string OutboundInformation(BGearEntity m, ref string strTimeOut) { DateTime nowTime = DateTime.Now; string resJson = ""; string josnTxtMsg = string.Empty; #region 多电芯上传屏蔽 //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", CommonMethods.mesConfig.materialLotCodeLocator); // jaMaterialLotCodeList.Add(jo4); // JArray jaIdentiftyList = new JArray();//identiftyList // JObject jo3 = new JObject(); // jo3.Add("identification", m.BarCode); //卷心码 // 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", CommonMethods.mesConfig.siteCode); //jo1.Add("lineCode", CommonMethods.mesConfig.lineCode); //jo1.Add("equipNum", CommonMethods.mesConfig.equipNum); //jo1.Add("userName", CommonMethods.mesConfig.mesUserName); //jo1.Add("productType", ""); //jo1.Add("completeQty", ""); //jo1.Add("type", 1); //追溯标识替换 //jo1.Add("materialCode", CommonMethods.mesConfig.MaterialCode); //jo1.Add("containerCodeAndIdentificationList", jaContainerCode); #endregion //strTimeOut = string.Empty; //try //{ // JArray jaMaterialLotCodeList = new JArray(); //materialLotCodeList // JObject jo4 = new JObject(); // jo4.Add("materialLotCode", ""); // jo4.Add("materialLotCodeLocator", ""); // jaMaterialLotCodeList.Add(jo4); // JArray jaIdentiftyList = new JArray();//identiftyList // JObject jo3 = new JObject(); // jo3.Add("identification", m.BarCode); //卷心码 // jo3.Add("qualityStatus", m.Result); // jo3.Add("qrCode", ""); // // jo3.Add("ngMessage", m.Remark); // jo3.Add("materialLotList", jaMaterialLotCodeList); // jaIdentiftyList.Add(jo3); // JArray jaContainerCode = new JArray(); //containerCodeAndIdentificationList // JObject jo2 = new JObject(); // jo2.Add("containerCode", m.RFID);//托杯码 // jo2.Add("identiftyList", jaIdentiftyList); // jaContainerCode.Add(jo2); // JObject jo1 = new JObject(); // jo1.Add("siteCode", CommonMethods.mesConfig.siteCode); // jo1.Add("lineCode", CommonMethods.mesConfig.lineCode); // jo1.Add("equipNum", CommonMethods.mesConfig.equipNum); // jo1.Add("materialCode", CommonMethods.mesConfig.MaterialCode); // jo1.Add("userName", CommonMethods.mesConfig.mesUserName); // jo1.Add("productType", ""); // jo1.Add("completeQty", ""); // jo1.Add("type", 1); //追溯标识替换 // jo1.Add("containerCodeAndIdentificationList", jaContainerCode); // sw.Restart(); // resJson = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.OutStationMesUrl, jo1.ToString()); // sw.Stop(); // long outTime = sw.ElapsedMilliseconds; // if (outTime > 150) // { // strTimeOut = $"卷芯进站PC<=>MES上传耗时{outTime}ms,{m.RFID},{m.BarCode},{m.SteelShellCode}"; // } // josnTxtMsg = $"{nowTime.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用出站信息(组装)接口:{CommonMethods.mesConfig.OutStationMesUrl},请求数据为:{jo1.ToString()},\n{nowTime.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{outTime}ms,返回结果:{resJson}"; // TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowTime.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowTime.ToString("HH")}.txt", josnTxtMsg); //} //catch (Exception ex) //{ // LogHelper.Instance.WriteEx("调用出站信息(组装)接口", ex); //} return resJson; } /// /// 单个电芯上传 /// /// /// public static bool OutboundInformations(BGearEntity m, ref string MesMessage, ref MesResType mesResType) { DateTime nowDate = DateTime.Now; string resJson = ""; bool res = false; MesMessage = "MES出站失败"; mesResType = MesResType.B; try { JArray jaNGCode = new JArray(); //materialLotCodeList JObject jo4 = new JObject(); jaNGCode.Add(jo4); JArray jaMaterialLotList = new JArray(); //materialLotCodeList JObject jo3 = new JObject(); jo3.Add("materialLotCode", ""); jo3.Add("materialLotCodeLocator", CommonMethods.mesConfig.materialLotCodeLocator); jaMaterialLotList.Add(jo3); JArray jaIdentiftyList = new JArray();//identiftyList JObject jo2 = new JObject(); jo2.Add("identification", m.BarCode); //产品条码 jo2.Add("qualityStatus", m.CellResult); //状态 //jo2.Add("qualityStatus", "OK"); //状态 jo2.Add("qrCode", ""); jo2.Add("ngMessage", m.NGMessage); jo2.Add("ngCode", jaNGCode); jo2.Add("materialLotList", jaMaterialLotList); jaIdentiftyList.Add(jo2); JObject jo1 = new JObject(); jo1.Add("siteCode", CommonMethods.mesConfig.siteCode); jo1.Add("lineCode", CommonMethods.mesConfig.lineCode); jo1.Add("equipNum", CommonMethods.mesConfig.equipNum); jo1.Add("userName", CommonMethods.mesConfig.mesUserName); jo1.Add("productType", CommonMethods.mesConfig.ModelName); jo1.Add("completeQty", ""); jo1.Add("containerCode", ""); jo1.Add("type", 1); //追溯标识替换 jo1.Add("materialCode", CommonMethods.mesConfig.MaterialCode); jo1.Add("identiftyList", jaIdentiftyList); var postcontent = JsonConvert.SerializeObject(jo1); var sw = new Stopwatch(); sw.Start(); string result = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.OutStationMesUrl, postcontent); sw.Stop(); long outTime = sw.ElapsedMilliseconds; if (outTime > 1000) { LogHelper.Instance.WriteLog($"电芯出站PC<=>MES上传耗时:{outTime}ms,电芯码:{m.BarCode}", "MESTime"); } if (string.IsNullOrEmpty(result)) { string resData = result == "" ? "" : result; resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{CommonMethods.mesConfig.InPutStationMesUrl},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson); return res; } var res1 = ReturnMesOutMsg(result); if (res1.success) { res = true; GetOutMesResType(res1, m.BarCode, ref MesMessage, ref mesResType); resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{CommonMethods.mesConfig.InPutStationMesUrl},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson); } else { var resData = res1 == null ? "" : result; resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{CommonMethods.mesConfig.InPutStationMesUrl},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson); } } catch (Exception ex) { LogHelper.Instance.WriteEX("调用出站信息(组装)接口", ex); } return res; } /// /// 进站结果分类 /// /// MES返回信息 /// 电池数据 /// 电池编号 /// /// private static void GetOutMesResType(MesResponseOut res1, string cell, ref string MesMessage, ref MesResType mesResType) { if (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; } } } } } private static MesResponseOut ReturnMesOutMsg(string ret) { MesResponseOut obj = new MesResponseOut(); try { obj = JsonConvert.DeserializeObject(ret); return obj; } catch (System.Exception ex) { return obj; } } #endregion #region 9、报警信息 /// /// 报警信息 /// /// /// public static string EquAlarm(string strGuid, List alarmObj) { DateTime nowTime = DateTime.Now; string resJson = ""; string josnTxtMsg = string.Empty; try { if (alarmObj.Count > 0) { UploadAlarmParam alarmParam = new UploadAlarmParam(); alarmParam.siteCode = CommonMethods.mesConfig.siteCode; alarmParam.lineCode = CommonMethods.mesConfig.lineCode; alarmParam.equipNum = CommonMethods.mesConfig.equipNum; alarmParam.materialCode = CommonMethods.mesConfig.MaterialCode; alarmParam.userName = CommonMethods.mesConfig.mesUserName; alarmParam.recordDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); alarmParam.guid = strGuid; alarmParam.seatId = ""; List alarmLineList = new List(); 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; alarmLineList.Add(alarmList); } alarmParam.alarmLineList = alarmLineList; string SendJosn = JsonConvert.SerializeObject(alarmParam); var sw = new Stopwatch(); sw.Start(); resJson = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.AlarmCurrencyMesUrl, SendJosn); sw.Stop(); josnTxtMsg = $"{nowTime.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用MES设备报警接口:{CommonMethods.mesConfig.AlarmCurrencyMesUrl},请求数据为:{SendJosn},\n{nowTime.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resJson}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowTime.ToString("yyyyMMdd")}\设备报警\{nowTime.ToString("HH")}.txt", josnTxtMsg); } } catch (Exception ex) { LogHelper.Instance.WriteEX("调用MES设备报警接口", ex); } return resJson; } #endregion #region 10、设备状态 /// /// 设备状态 /// /// /// public static string EqpStatusParam(string strStatus, string StartDate, string strGuid, List FaultCodeLists = null) { var nowTime = DateTime.Now; string resJson = ""; string josnTxtMsg = string.Empty; string Date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); try { EqpStatusParam statusParam = new EqpStatusParam(); statusParam.siteCode = CommonMethods.mesConfig.siteCode; statusParam.lineCode = CommonMethods.mesConfig.lineCode; statusParam.equipNum = CommonMethods.mesConfig.equipNum; statusParam.userName = CommonMethods.mesConfig.mesUserName; statusParam.seatId = ""; statusParam.recordDate = StartDate; statusParam.statusCode = strStatus; statusParam.uploadTime = Date; statusParam.guid = strGuid; statusParam.faultCodeList = FaultCodeLists; string SendJosn = JsonConvert.SerializeObject(statusParam); var sw = new Stopwatch(); sw.Start(); resJson = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.StatusMesUrl, SendJosn); sw.Stop(); josnTxtMsg = $"{nowTime.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用MES设备运行状态接口:{CommonMethods.mesConfig.StatusMesUrl},请求数据为:{SendJosn},\n{nowTime.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resJson}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowTime.ToString("yyyyMMdd")}\设备运行状态\{nowTime.ToString("HH")}.txt", josnTxtMsg); } catch (Exception ex) { LogHelper.Instance.WriteEX("调用MES设备运行状态接口", ex); } return resJson; } #endregion #region 11、能耗上传 /// /// 能耗数据 /// /// /// public static string WattHourMeterParam(List meterParams) { DateTime nowTime = DateTime.Now; string resJson = ""; string josnTxtMsg = string.Empty; try { string SendJosn = JsonConvert.SerializeObject(meterParams); var sw = new Stopwatch(); sw.Start(); resJson = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.WattrMeterUrl, SendJosn); sw.Stop(); josnTxtMsg = $"{nowTime.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用设备能耗信息接口:{CommonMethods.mesConfig.WattrMeterUrl},请求数据为:{SendJosn},\n{nowTime.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resJson}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowTime.ToString("yyyyMMdd")}\能耗信息\{nowTime.ToString("HH")}.txt", josnTxtMsg); } catch (Exception ex) { LogHelper.Instance.WriteEX("调用设备能耗信息接口", ex); } return resJson; } #endregion #region 12、风速值上传 /// /// 设备风速接口 /// /// /// public static string UploadDeviceCollectData() { var nowTime = DateTime.Now; string resJson = ""; string josnTxtMsg = string.Empty; try { if (CommonMethods.AntiDustAirSpeed == null) { return ""; } UploadDeviceCollectData uploadDevice = new UploadDeviceCollectData(); uploadDevice.appid = "e1012966a936170c6fcab98e24042d10"; List list = new List(); for (int i = 0; i < CommonMethods.AntiDustAirSpeed.Count; i++) { Collect_code_value_list _Value_List = new Collect_code_value_list(); _Value_List.target_code = 5; _Value_List.target_value = CommonMethods.AntiDustAirSpeed[i].ToString(); _Value_List.target_value_tag = CommonMethods.mesConfig.listAntiDustAirSpeedNum[i]; list.Add(_Value_List); } uploadDevice.collect_code_value_list = list; uploadDevice.collect_time = GetUnixTimestamp(); uploadDevice.device_code = CommonMethods.mesConfig.equipNum; string SendJosn = JsonConvert.SerializeObject(uploadDevice); var sw = new Stopwatch(); sw.Start(); resJson = MESApiHelper.HttpPostJsonAPI(CommonMethods.mesConfig.CollectData, SendJosn); sw.Stop(); josnTxtMsg = $"{nowTime.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用风速接口:{CommonMethods.mesConfig.CollectData},请求数据为:{SendJosn},\n{nowTime.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resJson}"; TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{nowTime.ToString("yyyyMMdd")}\风速信息\{nowTime.ToString("HH")}.txt", josnTxtMsg); } catch (Exception ex) { LogHelper.Instance.WriteEX("调用设备能耗信息接口", ex); } return resJson; } /// /// Tag标签 /// /// /// public static string GetTag(int Num) { if (Num == 0) Num = 1; switch (Num.ToString().Length) { case 1: return $"FSY-4A-{Num}"; case 2: return $"00{Num}"; case 3: return $"0{Num}"; default: return $"{Num}"; } } /// ///本地时间为Unix时间戳 /// /// public static long GetUnixTimestamp() { return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; } #endregion public static List GetMesType(int Num) { List mesResTypes = new List(); for (int i = 0; i < Num; i++) { mesResTypes.Add(MesResType.B); } return mesResTypes; } public static List GetListString(int Num, string str) { List mesResTypes = new List(); for (int i = 0; i < Num; i++) { mesResTypes.Add(str); } return mesResTypes; } } }