From 1f2fa3f54d4a7b5a2f601c4c947a06476342e3bd Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期五, 22 一月 2021 09:23:06 +0800 Subject: [PATCH] 1. gocator驱动将system.stop移到system.ReceiveData之后 2. 修改测量完成后状态切换逻辑,避免安全光线等干扰 3. 添加设备异常输出日志记录 4. 产品结果输出时做硬盘文件记录 --- src/Bro.M071.Process/M071Process_MES.cs | 79 ++++++++++++++++++++++++++++++++++----- 1 files changed, 68 insertions(+), 11 deletions(-) diff --git a/src/Bro.M071.Process/M071Process_MES.cs b/src/Bro.M071.Process/M071Process_MES.cs index a5277b3..f87208d 100644 --- a/src/Bro.M071.Process/M071Process_MES.cs +++ b/src/Bro.M071.Process/M071Process_MES.cs @@ -82,14 +82,14 @@ { get { - if (incomingCheckMethod == null) + if (dataUploadMethod == null) { - incomingCheckMethod = InitialMESWebServiceMethod(DataUploadMethodName, out DataUploadObj); + dataUploadMethod = InitialMESWebServiceMethod(DataUploadMethodName, out DataUploadObj); } - return incomingCheckMethod; + return dataUploadMethod; } - set => incomingCheckMethod = value; + set => dataUploadMethod = value; } private MethodInfo InitialMESWebServiceMethod(string methodName, out object invokeClass) @@ -138,13 +138,19 @@ //string paraStr = JsonConvert.SerializeObject(paras); //LogAsync(DateTime.Now, $"MES鍏ユ枡妫�娴� {url}", paraStr); - IncomingCheckMethod = InitialMESWebServiceMethod(IncomingCheckMethodName, out IncomingCheckObj); + //IncomingCheckMethod = InitialMESWebServiceMethod(IncomingCheckMethodName, out IncomingCheckObj); Stopwatch sw = new Stopwatch(); sw.Start(); //var result = _webApiHelper.dooPost(url, paraStr); - object[] paras = new object[] { barcode, Config.StationCode }; + object[] paras = new object[] { barcode, Config.StationCode, Config.ProjectCode }; + + if (Config.IsEnableMESLog) + { + LogAsync(DateTime.Now, $"MES鍏ユ枡妫�娴�", JsonConvert.SerializeObject(paras)); + } + var result = IncomingCheckMethod?.Invoke(IncomingCheckObj, paras).ToString(); var mesReturn = (MESIncomingCheckReturn)int.Parse(result); sw.Stop(); @@ -178,7 +184,7 @@ //string paraStr = JsonConvert.SerializeObject(paras); //LogAsync(DateTime.Now, $"MES鏁版嵁涓婁紶 {url}", paraStr); - DataUploadMethod = InitialMESWebServiceMethod(DataUploadMethodName, out DataUploadObj); + //DataUploadMethod = InitialMESWebServiceMethod(DataUploadMethodName, out DataUploadObj); Stopwatch sw = new Stopwatch(); sw.Start(); @@ -195,10 +201,14 @@ pMeasure.PResult == "OK" ? "PASS" : "FAIL", Config.LineCode, GetMESSlantData(pMeasure), - GetMESAlignmentData(pMeasure) + GetMESAlignmentData(pMeasure), + GetNGKeys(pMeasure) }; - //LogAsync(DateTime.Now, $"{barcode}浜у搧妫�娴嬫暟鎹笂浼�", JsonConvert.SerializeObject(paras)); + if (Config.IsEnableMESLog) + { + LogAsync(DateTime.Now, $"{barcode}浜у搧妫�娴嬫暟鎹笂浼�", JsonConvert.SerializeObject(paras)); + } var result = DataUploadMethod?.Invoke(DataUploadObj, paras).ToString(); var mesReturn = (MESUploadReturn)int.Parse(result); @@ -210,12 +220,59 @@ private string GetMESAlignmentData(ProductionMeasurement pMeasure) { - return string.Join(",", pMeasure.Measurements.Where(u => u.MeasureType == "Alignment").Select(u => $"{u.Name}:{u.Spec.ActualValue.Value.ToString(_precision)}")); + return string.Join(",", pMeasure.Measurements.Where(u => u.MeasureType.StartsWith("Alignment")).Select(u => $"{u.Name}:{u.Spec.ActualValue.Value.ToString(_precision)}")); } private string GetMESSlantData(ProductionMeasurement pMeasure) { - return string.Join(",", pMeasure.Measurements.Where(u => u.MeasureType == "Slant").Select(u => $"{u.Name}:{u.Spec.ActualValue.Value.ToString(_precision)}")); + return string.Join(",", pMeasure.Measurements.Where(u => u.MeasureType.StartsWith("Slant")).Select(u => $"{u.Name}:{u.Spec.ActualValue.Value.ToString(_precision)}")); + } + + private string GetNGKeys(ProductionMeasurement pMeasure) + { + string ngCodes = ""; + Dictionary<string, List<string>> ngCodeDict = new Dictionary<string, List<string>>(); + + var ngList = pMeasure.Measurements.Where(m => m.Spec.MeasureResult != true).ToList(); + if (ngList.Count == 0) + return ""; + + ngList.GroupBy(m => m.MeasureType).ToList().ForEach(g => + { + var mType = Config.MeasureTypeCollection.FirstOrDefault(u => u.Code == g.Key); + if (mType != null) + { + if (!ngCodeDict.ContainsKey(mType.NGCode)) + { + ngCodeDict[mType.NGCode] = new List<string>(); + } + + g.ToList().ForEach(k => + { + k.KeyUnitCollection.Select(kk => kk.Key).ToList().ForEach(key => + { + string uploadKeyCode = key; + var keyCodeMap = Config.KeyCodeMappingCollection.FirstOrDefault(kcm => kcm.Key == key); + if (keyCodeMap != null) + { + uploadKeyCode = keyCodeMap.KeyCode; + } + + if (!ngCodeDict[mType.NGCode].Contains(uploadKeyCode)) + { + ngCodeDict[mType.NGCode].Add(uploadKeyCode); + } + }); + }); + } + }); + + if (ngCodeDict.Count > 0) + { + ngCodes = string.Join(";", ngCodeDict.ToList().Select(u => $"{u.Key}:{string.Join(",", u.Value)}")); + } + + return ngCodes; } } -- Gitblit v1.8.0