| | |
| | | |
| | | Log4NetHelper.WriteInfoLog(logType, $"OP80下线完成读取到文件{file.Name},是指定的工件{pieceProcess.WorkPieceID}"); |
| | | |
| | | WorkPieceLogMiddle wplog = new WorkPieceLogMiddle(); |
| | | wplog.WorkPieceID = pieceProcess.WorkPieceID; |
| | | wplog.WorkingProcedure = query_WorkingProcedureCurrent; |
| | | wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wplog.EquipmentID = _dataCaptureConfig.EquipmentID; ; |
| | | wplog.Remarks = wplog.WorkingProcedure; |
| | | wplog.MonitoringPoint = _DataCapturePointCode; |
| | | wplog.CreatedTime = DateTimeHelper.GetDateTime(); |
| | | wplog.CreatedUserName = _DataCapturePointCode; |
| | | wplog.UpdatedTime = DateTimeHelper.GetDateTime(); |
| | | wplog.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString(); |
| | | wplog.IsDeleted = false; |
| | | WorkPieceLogMiddle logMiddle = new WorkPieceLogMiddle(); |
| | | logMiddle.WorkPieceID = pieceProcess.WorkPieceID; |
| | | logMiddle.WorkingProcedure = query_WorkingProcedureCurrent; |
| | | logMiddle.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | logMiddle.EquipmentID = _dataCaptureConfig.EquipmentID; ; |
| | | logMiddle.Remarks = logMiddle.WorkingProcedure; |
| | | logMiddle.MonitoringPoint = _DataCapturePointCode; |
| | | logMiddle.CreatedTime = DateTimeHelper.GetDateTime(); |
| | | logMiddle.CreatedUserName = _DataCapturePointCode; |
| | | logMiddle.UpdatedTime = DateTimeHelper.GetDateTime(); |
| | | logMiddle.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString(); |
| | | logMiddle.IsDeleted = false; |
| | | |
| | | WorkPieceLog loginfo2 = new WorkPieceLog(); |
| | | loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(wplog); |
| | | loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(logMiddle); |
| | | |
| | | var datatable = CSVHelper.ReadCSVList(file.FullName); |
| | | List<string> rowFirst = new List<string>(); |
| | |
| | | { |
| | | if (oP80Info.OP80ItemStatusInfolist.Any(o => !o.状态.Equals("OK"))) |
| | | { |
| | | wplog.QualityStateStr = "NG"; |
| | | logMiddle.QualityStateStr = "NG"; |
| | | } |
| | | else |
| | | { |
| | | wplog.QualityStateStr = "OK"; |
| | | logMiddle.QualityStateStr = "OK"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | wplog.QualityStateStr = "OK"; |
| | | logMiddle.QualityStateStr = "OK"; |
| | | } |
| | | |
| | | |
| | | wplog.OP80QualityFilePath = file.FullName; |
| | | wplog.OP80NewCode = oP80Info.批号?.Replace("#", ""); |
| | | logMiddle.OP80QualityFilePath = file.FullName; |
| | | logMiddle.OP80NewCode = oP80Info.批号?.Replace("#", ""); |
| | | //大头重量 |
| | | wplog.QualityOP80To1 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Weight Big End")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80To1 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Weight Big End")).FirstOrDefault()?.绝对值; |
| | | //小头重量 |
| | | wplog.QualityOP80To2 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Weight Small End")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80To2 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Weight Small End")).FirstOrDefault()?.绝对值; |
| | | //总重 |
| | | wplog.QualityOP80To3 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Total Weight")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80To3 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Total Weight")).FirstOrDefault()?.绝对值; |
| | | //弯曲 |
| | | wplog.QualityOP80To4 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Bend to A")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80To4 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Bend to A")).FirstOrDefault()?.绝对值; |
| | | //扭度 |
| | | wplog.QualityOP80To5 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Twist to A")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80To5 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Twist to A")).FirstOrDefault()?.绝对值; |
| | | //大头垂直度 |
| | | wplog.QualityOP80To6 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_C_Squareness")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80To6 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_C_Squareness")).FirstOrDefault()?.绝对值; |
| | | //小头垂直度 |
| | | wplog.QualityOP80To10 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Sma_End_C_Squareness")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80To10 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Sma_End_C_Squareness")).FirstOrDefault()?.绝对值; |
| | | //大头孔分组级别 |
| | | wplog.QualityOP80To7 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Dime Big_End Class")).FirstOrDefault()?.状态; |
| | | logMiddle.QualityOP80To7 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Dime Big_End Class")).FirstOrDefault()?.状态; |
| | | //小头孔分组级别 |
| | | wplog.QualityOP80To8 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Dime Small_End Class")).FirstOrDefault()?.状态; |
| | | logMiddle.QualityOP80To8 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Dime Small_End Class")).FirstOrDefault()?.状态; |
| | | //重量组别 |
| | | wplog.QualityOP80To9 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Weight Class")).FirstOrDefault()?.状态; |
| | | logMiddle.QualityOP80To9 = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Weight Class")).FirstOrDefault()?.状态; |
| | | //wplog.Remarks = (wplog.Remarks ?? "") + $"OP80下线完成读取文件{file.FullName},数据【{wplog.OP80NewCode??"空"}】【{wplog.QualityOP80To1 ?? "空"}】【{wplog.QualityOP80To2 ?? "空"}】【{wplog.QualityOP80To3 ?? "空"}】【{wplog.QualityOP80To4 ?? "空"}】【{wplog.QualityOP80To5 ?? "空"}】"; |
| | | |
| | | //新增OP80的一些质量数据 【Editby shaocx,2024-06-13】 |
| | | wplog.QualityOP80_Houdu = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Thickness")).FirstOrDefault()?.绝对值; |
| | | wplog.QualityOP80_ZXJ = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Distance of Two Head")).FirstOrDefault()?.绝对值; |
| | | wplog.QualityOP80_DTKYZD = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Cylindricity")).FirstOrDefault()?.绝对值; |
| | | wplog.QualityOP80_XTSMYD = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Top_Roundn")).FirstOrDefault()?.绝对值; |
| | | wplog.QualityOP80_XTXMYD = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Bot_Roundn")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_Houdu = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Thickness")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_ZXJ = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Distance of Two Head")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_DTKYZD = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Cylindricity")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_XTSMYD = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Top_Roundn")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_XTXMYD = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Bot_Roundn")).FirstOrDefault()?.绝对值; |
| | | |
| | | |
| | | wplog.QualityOP80_D_S_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Top_X_Dia.")).FirstOrDefault()?.绝对值; |
| | | wplog.QualityOP80_D_S_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Top_Y_Dia.")).FirstOrDefault()?.绝对值; |
| | | wplog.QualityOP80_D_X_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Bot_X_Dia.")).FirstOrDefault()?.绝对值; |
| | | wplog.QualityOP80_D_X_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Bot_Y_Dia.")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_D_S_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Top_X_Dia.")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_D_S_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Top_Y_Dia.")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_D_X_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Bot_X_Dia.")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_D_X_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Big_End_Bot_Y_Dia.")).FirstOrDefault()?.绝对值; |
| | | //计算大头孔直径,大头孔直径=(大头上面X方向直径+大头上面Y方向直径+大头下面X方向直径+大头下面Y方向直径)/4 |
| | | List<decimal> valueList = new List<decimal>() { |
| | | SystemHelper.GetDecimal(wplog.QualityOP80_D_S_X), |
| | | SystemHelper.GetDecimal(wplog.QualityOP80_D_S_Y), |
| | | SystemHelper.GetDecimal(wplog.QualityOP80_D_X_X), |
| | | SystemHelper.GetDecimal(wplog.QualityOP80_D_X_Y), |
| | | SystemHelper.GetDecimal(logMiddle.QualityOP80_D_S_X), |
| | | SystemHelper.GetDecimal(logMiddle.QualityOP80_D_S_Y), |
| | | SystemHelper.GetDecimal(logMiddle.QualityOP80_D_X_X), |
| | | SystemHelper.GetDecimal(logMiddle.QualityOP80_D_X_Y), |
| | | }; |
| | | wplog.QualityOP80_D_TKZJ = SystemHelper.CalcDecimalAvg(valueList, 3); |
| | | logMiddle.QualityOP80_D_TKZJ = SystemHelper.CalcDecimalAvg(valueList, 3); |
| | | |
| | | |
| | | wplog.QualityOP80_X_S_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Top_X_Dia.")).FirstOrDefault()?.绝对值; |
| | | wplog.QualityOP80_X_S_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Top_Y_Dia.")).FirstOrDefault()?.绝对值; |
| | | wplog.QualityOP80_X_X_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Bot_X_Dia.")).FirstOrDefault()?.绝对值; |
| | | wplog.QualityOP80_X_X_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Bot_Y_Dia.")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_X_S_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Top_X_Dia.")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_X_S_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Top_Y_Dia.")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_X_X_X = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Bot_X_Dia.")).FirstOrDefault()?.绝对值; |
| | | logMiddle.QualityOP80_X_X_Y = oP80Info.OP80ItemInfolist.Where(o => o.名称.Equals("Small_End_Bot_Y_Dia.")).FirstOrDefault()?.绝对值; |
| | | //计算小头孔直径,小头孔直径=(小头上面X方向直径+小头上面Y方向直径+小头下面X方向直径+小头下面Y方向直径)/4 |
| | | valueList = new List<decimal>(); |
| | | valueList = new List<decimal>() { |
| | | SystemHelper.GetDecimal(wplog.QualityOP80_X_S_X), |
| | | SystemHelper.GetDecimal(wplog.QualityOP80_X_S_Y), |
| | | SystemHelper.GetDecimal(wplog.QualityOP80_X_X_X), |
| | | SystemHelper.GetDecimal(wplog.QualityOP80_X_X_Y), |
| | | SystemHelper.GetDecimal(logMiddle.QualityOP80_X_S_X), |
| | | SystemHelper.GetDecimal(logMiddle.QualityOP80_X_S_Y), |
| | | SystemHelper.GetDecimal(logMiddle.QualityOP80_X_X_X), |
| | | SystemHelper.GetDecimal(logMiddle.QualityOP80_X_X_Y), |
| | | }; |
| | | wplog.QualityOP80_X_TKZJ = SystemHelper.CalcDecimalAvg(valueList, 3); |
| | | logMiddle.QualityOP80_X_TKZJ = SystemHelper.CalcDecimalAvg(valueList, 3); |
| | | |
| | | } |
| | | else |
| | | { |
| | | wplog.Remarks = (wplog.Remarks ?? "") + $"OP80下线完成读取文件{file.FullName}异常,行数不是2行"; |
| | | logMiddle.Remarks = (logMiddle.Remarks ?? "") + $"OP80下线完成读取文件{file.FullName}异常,行数不是2行"; |
| | | } |
| | | |
| | | |
| | | //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表 |
| | | info.OP80NewCode = wplog.OP80NewCode;//更新成品吗 |
| | | info.OP80NewCode = logMiddle.OP80NewCode;//更新成品吗 |
| | | |
| | | info.QualityState = (int)((wplog.QualityStateStr.Equals("OK") || wplog.QualityStateStr.Equals("0K")) ? QualityState.OK : QualityState.NG); |
| | | wplog.QualityState = info.QualityState; |
| | | info.QualityStateUpdateUser = wplog.UpdatedUserName; |
| | | info.QualityStateUpdateTime = wplog.UpdatedTime.Value.LocalDateTime; |
| | | info.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityState.OK : QualityState.NG); |
| | | logMiddle.QualityState = info.QualityState; |
| | | //赋值不合格原因 |
| | | //TODO:需要配置OP80质量不合格的原因是啥?? |
| | | WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref info); |
| | | |
| | | info.QualityStateUpdateUser = logMiddle.UpdatedUserName; |
| | | info.QualityStateUpdateTime = logMiddle.UpdatedTime.Value.LocalDateTime; |
| | | info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString(); |
| | | |
| | | //var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == wplog.WorkPieceID).FirstOrDefault(); |
| | |
| | | // db.QualityDataInfo.Add(GetAddQualityDataInfo(qualityData)); |
| | | //} |
| | | //修改QualityDataInfo表 //重复收到质量信息,会覆盖之前的 |
| | | EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.CopyProp(wplog, qualityData, WorkPieceInfoManager.GetQualityDataInfoUpdate(wplog.WorkingProcedure, wplog.MonitoringPoint));//指定修改字段 |
| | | EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.CopyProp(logMiddle, qualityData, WorkPieceInfoManager.GetQualityDataInfoUpdate(logMiddle, logMiddle.WorkingProcedure, logMiddle.MonitoringPoint));//指定修改字段 |
| | | |
| | | qualityData.EquipmentID = _EquipmentId; |
| | | qualityData.QualityStateUpdateUser = info.UpdatedUserName; |
| | | qualityData.QualityReceiveTime = info.UpdatedTime.Value.LocalDateTime; |
| | | qualityData.QualityStateUpdateMode = info.QualityStateUpdateMode; |
| | | qualityData.OP80QualityState = wplog.QualityState.HasValue ? wplog.QualityState.Value.ToString() : "3"; |
| | | qualityData.OP80QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; |
| | | qualityData.OP80QualityReceiveTime = DateTimeHelper.GetDateTime(); |
| | | qualityData.OP80QualityFilePath = wplog.OP80QualityFilePath; |
| | | qualityData.OP80QualityFilePath = logMiddle.OP80QualityFilePath; |
| | | long op80id = qualityData.Id; |
| | | if (op80id > 0) |
| | | { |
| | | pieceProcess.QualityDataInfoID = op80id; |
| | | } |
| | | loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"质量:{wplog.QualityStateStr ?? "空"}"; |
| | | loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"质量:{logMiddle.QualityStateStr ?? "空"}"; |
| | | if (!info.QualityState.Equals(((int)QualityState.OK).ToString())) |
| | | { |
| | | info.QualityErrorInfo = $"{wplog.WorkingProcedure}工序质量采集数据不合格"; |
| | | info.QualityErrorInfo = $"{logMiddle.WorkingProcedure}工序质量采集数据不合格"; |
| | | } |
| | | else |
| | | { |
| | |
| | | pieceProcess.GetQcDataFlag_Remark = "找到文件"; |
| | | pieceProcess.GetQcDataFlag = 1; |
| | | pieceProcess.QualityState = info.QualityState.HasValue ? info.QualityState.Value : (int)QualityState.OK; |
| | | //赋值不合格原因 |
| | | //TODO:需要配置OP80质量不合格的原因是啥?? |
| | | WorkPieceInfoManager.SetQualityNoOk_WorkPieceProcess(logMiddle, ref pieceProcess); |
| | | |
| | | pieceProcess.EndTime = file.LastWriteTime;//下线时间改为 文件最后修改时间 【Editby shaocx,2024-06-17】 |
| | | |
| | | db.WorkPieceLog.Add(WorkPieceInfoManager.GetAddWorkPieceLog(loginfo2));//插入工件采集日志表 |