| | |
| | | { |
| | | if (loginfo.WorkPieceID != null && loginfo.WorkPieceID.Trim('\0').Length == 22) |
| | | { |
| | | WorkPieceInfo info = new WorkPieceInfo(); |
| | | info = db.WorkPieceInfo.Where(o => o.WorkPieceID == loginfo.WorkPieceID).FirstOrDefault(); |
| | | if (info == null || info.WorkPieceID.Length < 1) |
| | | WorkPieceInfo cur_db_info = new WorkPieceInfo(); |
| | | cur_db_info = db.WorkPieceInfo.Where(o => o.WorkPieceID == loginfo.WorkPieceID).FirstOrDefault(); |
| | | if (cur_db_info == null || cur_db_info.WorkPieceID.Length < 1) |
| | | {//没有工件信息,不做更新 |
| | | Log4NetHelper.WriteErrorLog(type, $"工件{loginfo.WorkPieceID} 工件推出工序{loginfo.WorkingProcedure} 没有获取到工件信息不做更新"); |
| | | return; |
| | |
| | | {//更新表WorkPieceInfo |
| | | if (loginfo.WorkingProcedure.Equals("OP10")) |
| | | { |
| | | /* |
| | | info.WorkPieceCurrentPosition = info.WorkingProcedureCurrent + "NOOK"; |
| | | //var WorkingProcedure = (loginfo.MonitoringPoint.Equals("OP1002") ? "OP10" : "OP40"); |
| | | loginfo2.WorkingProcedure = info.WorkingProcedureCurrent;//解决OP10,OP40同一个的问题 |
| | | loginfo.WorkingProcedure = info.WorkingProcedureCurrent; //解决OP10,OP40同一个的问题 |
| | | //*/ |
| | | //修复 错误记录成OP05的问题 【Editby shaocx,2024-08-26】 |
| | | var set_WorkingProcedureCurrent = ""; |
| | | if (cur_db_info.WorkingProcedureCurrent != "OP10" && cur_db_info.WorkingProcedureCurrent != "OP40") |
| | | { |
| | | SetWorkingProcedureCurrentForOP10(cur_db_info, ref set_WorkingProcedureCurrent); |
| | | } |
| | | else |
| | | { |
| | | set_WorkingProcedureCurrent = cur_db_info.WorkingProcedureCurrent; |
| | | } |
| | | cur_db_info.WorkingProcedureCurrent = set_WorkingProcedureCurrent; |
| | | cur_db_info.WorkPieceCurrentPosition = set_WorkingProcedureCurrent + "NOOK"; |
| | | loginfo2.WorkingProcedure = set_WorkingProcedureCurrent;//解决OP10,OP40同一个的问题 |
| | | loginfo.WorkingProcedure = set_WorkingProcedureCurrent; //解决OP10,OP40同一个的问题 |
| | | } |
| | | else |
| | | { |
| | | info.WorkingProcedureCurrent = loginfo.WorkingProcedure; |
| | | info.WorkPieceCurrentPosition = loginfo.WorkingProcedure + "NOOK"; |
| | | cur_db_info.WorkingProcedureCurrent = loginfo.WorkingProcedure; |
| | | cur_db_info.WorkPieceCurrentPosition = loginfo.WorkingProcedure + "NOOK"; |
| | | } |
| | | info.WorkPieceState = (int)WorkPieceState.NOOKPush; |
| | | info.UpdatedUserName = loginfo.MonitoringPoint; |
| | | info.UpdatedTime = DateTime.Now; |
| | | info.Remarks = "工件NOOK推出"; |
| | | if (!(info.WorkingProcedureStartTime.HasValue && info.WorkingProcedureStartTime > DateTime.Parse("1900/01/01"))) |
| | | cur_db_info.WorkPieceState = (int)WorkPieceState.NOOKPush; |
| | | cur_db_info.UpdatedUserName = loginfo.MonitoringPoint; |
| | | cur_db_info.UpdatedTime = DateTime.Now; |
| | | cur_db_info.Remarks = "工件NOOK推出"; |
| | | if (!(cur_db_info.WorkingProcedureStartTime.HasValue && cur_db_info.WorkingProcedureStartTime > DateTime.Parse("1900/01/01"))) |
| | | { |
| | | info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime(); |
| | | cur_db_info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime(); |
| | | } |
| | | info.WorkingProcedureEndTime = DateTimeHelper.GetDateTime(); |
| | | info.WorkingProcedureCompleted = info.WorkingProcedureCompleted + loginfo.WorkingProcedure;//已完成工序 |
| | | info.WorkPieceCurrentPositionOrder = info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2; |
| | | cur_db_info.WorkingProcedureEndTime = DateTimeHelper.GetDateTime(); |
| | | cur_db_info.WorkingProcedureCompleted = cur_db_info.WorkingProcedureCompleted + loginfo.WorkingProcedure;//已完成工序 |
| | | cur_db_info.WorkPieceCurrentPositionOrder = cur_db_info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2; |
| | | } |
| | | QualityDataInfo qualityData = null; |
| | | qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == loginfo.WorkPieceID).FirstOrDefault(); |
| | | if (loginfo.WorkingProcedure.Equals("OP35")) |
| | | {//为了解决OP35的采集到的质量信息是OK还NOOK的情况,OP35 NOOK时更新质量信息 |
| | | loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"OP35NOOK原质量信息{(info.QualityState.HasValue ? info.QualityState.Value.ToString() : "空")}"; |
| | | info.QualityState = (int)QualityState.NG; |
| | | if (!info.QualityState.Equals(((int)QualityState.OK).ToString())) |
| | | loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"OP35NOOK原质量信息{(cur_db_info.QualityState.HasValue ? cur_db_info.QualityState.Value.ToString() : "空")}"; |
| | | cur_db_info.QualityState = (int)QualityState.NG; |
| | | if (!cur_db_info.QualityState.Equals(((int)QualityState.OK).ToString())) |
| | | { |
| | | info.QualityErrorInfo = $"{loginfo.WorkingProcedure}工序质量NOOK采集数据不合格{info.QualityState}"; |
| | | cur_db_info.QualityErrorInfo = $"{loginfo.WorkingProcedure}工序质量NOOK采集数据不合格{cur_db_info.QualityState}"; |
| | | } |
| | | else |
| | | { |
| | | info.QualityErrorInfo = ""; |
| | | cur_db_info.QualityErrorInfo = ""; |
| | | } |
| | | loginfo.QualityState = info.QualityState; |
| | | loginfo.QualityState = cur_db_info.QualityState; |
| | | |
| | | |
| | | if (qualityData != null) |
| | |
| | | pro.UpdatedTime = DateTimeHelper.GetDateTime(); |
| | | } |
| | | |
| | | QualityStateHelper.SetQualityStateForNoOk(ref info, ref pro, ref qualityData); |
| | | QualityStateHelper.SetQualityStateForNoOk(ref cur_db_info, ref pro, ref qualityData); |
| | | |
| | | db.WorkPieceInfoLog.Add(GetAddWorkPieceInfoLog(info)); |
| | | db.WorkPieceInfoLog.Add(GetAddWorkPieceInfoLog(cur_db_info)); |
| | | |
| | | } |
| | | else |
| | |
| | | { |
| | | set_WorkingProcedureCurrent = cur_db_info.WorkingProcedureCurrent; |
| | | } |
| | | cur_db_info.WorkingProcedureCurrent = set_WorkingProcedureCurrent; |
| | | cur_db_info.WorkPieceCurrentPosition = set_WorkingProcedureCurrent + "SPC"; |
| | | loginfo2.WorkingProcedure = set_WorkingProcedureCurrent;//解决OP10,OP40同一个的问题 |
| | | loginfo.WorkingProcedure = set_WorkingProcedureCurrent; //解决OP10,OP40同一个的问题 |
| | |
| | | } |
| | | else |
| | | { |
| | | info.WorkPieceState = (int)WorkPieceState.WIP; |
| | | //这里修复OP10、OP40 因为PLC先推 SPC推出、再推 产品下线问题,导致 产品下线更新数据时,把SPC数据覆盖的问题 【Editby shaocx,2024-08-27】 |
| | | var isAlow = SystemBussinessHelper.IsAllowUpdateWorkPieceStateToWip(info, db, logMiddle); |
| | | if (isAlow) |
| | | { |
| | | info.WorkPieceState = (int)WorkPieceState.WIP; |
| | | } |
| | | |
| | | |
| | | if (info.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure) + 4 <= info.WorkingProcedurePlan.Length) |
| | | { |
| | | info.WorkPieceCurrentPosition = info.WorkingProcedurePlan.Substring(info.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure), 8); |