| | |
| | | info.WorkPieceinitOnlineTime = DateTimeHelper.GetDateTime(); |
| | | info.WorkingProcedurePlan = ConfigHelper.GetConfigString("WorkingProcedureAllStr") ?? "OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80"; |
| | | info.CreatedUserName = loginfo.MonitoringPoint; |
| | | SystemBussinessHelper.SetWorkPieceInfoMiddleForCreatedUserName(ref info, loginfo.DataCapturePointCname); |
| | | info.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); |
| | | info = ParseQRCode(info); |
| | | isAddWorkPieceInfo = true; |
| | |
| | | info.QualityStateUpdateTime = loginfo.UpdatedTime.Value.LocalDateTime; |
| | | info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString(); |
| | | info.UpdatedUserName = loginfo.MonitoringPoint; |
| | | SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref info, loginfo.DataCapturePointCname); |
| | | info.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); |
| | | info.WorkPieceCurrentPosition = loginfo.WorkingProcedure; |
| | | info.WorkPieceCurrentPositionOrder = info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2; |
| | |
| | | pieceInfo.WorkPieceinitOnlineTime = DateTimeHelper.GetDateTime(); |
| | | pieceInfo.WorkingProcedurePlan = ConfigHelper.GetConfigString("WorkingProcedureAllStr") ?? "OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80"; |
| | | pieceInfo.CreatedUserName = ResetUpdatedUserName(logMiddle); |
| | | SystemBussinessHelper.SetWorkPieceInfoMiddleForCreatedUserName(ref pieceInfo, logMiddle.DataCapturePointCname); |
| | | pieceInfo.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); |
| | | pieceInfo.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();// |
| | | pieceInfo.WorkingProcedureEndTime = null; |
| | |
| | | #endregion |
| | | //UpdateKnifeToolLift(db, loginfo);//更新刀具寿命信息 |
| | | } |
| | | |
| | | pieceInfo.WorkingProcedureCurrent = logMiddle.WorkingProcedure;//更新当前工序 【Editby shaocx,2024-09-03】 |
| | | pieceInfo.WorkPieceState = (int)WorkPieceState.WIP;//推出后和SPC抽检后 质量录入时状态修改回在制品 |
| | | pieceInfo.EquipmentID = logMiddle.EquipmentID; |
| | | pieceInfo.QualityStateUpdateUser = logMiddle.UpdatedUserName; |
| | |
| | | pieceInfo.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString(); |
| | | pieceInfo.Remarks = $"{logMiddle.WorkingProcedure}质量检测完成修改"; |
| | | pieceInfo.UpdatedUserName = ResetUpdatedUserName(logMiddle); |
| | | SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref pieceInfo, logMiddle.DataCapturePointCname); |
| | | pieceInfo.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); |
| | | if (!(pieceInfo.WorkingProcedureStartTime.HasValue && pieceInfo.WorkingProcedureStartTime > DateTime.Parse("1900/01/01"))) |
| | | {//工序开始时间没有则赋值 |
| | |
| | | |
| | | if (qualityData.OP30QualityStateCH3 == ((int)QualityState.NG).ToString()) |
| | | { |
| | | logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30涨断工位力矩大; |
| | | logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30涨断工位力矩大.ToString(); |
| | | logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30涨断工位力矩超差; |
| | | logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30涨断工位力矩超差.ToString(); |
| | | //赋值不合格原因 |
| | | SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); |
| | | } |
| | |
| | | |
| | | if (qualityData.OP30QualityStateCH4 == ((int)QualityState.NG).ToString()) |
| | | { |
| | | logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30预拧紧工位力矩大; |
| | | logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30预拧紧工位力矩大.ToString(); |
| | | logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30预拧紧工位力矩超差; |
| | | logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30预拧紧工位力矩超差.ToString(); |
| | | //赋值不合格原因 |
| | | SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); |
| | | } |
| | |
| | | |
| | | if (qualityData.OP30QualityStateCH5 == ((int)QualityState.NG).ToString()) |
| | | { |
| | | logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30终拧紧工位力矩大; |
| | | logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30终拧紧工位力矩大.ToString(); |
| | | logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30终拧紧工位力矩超差; |
| | | logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30终拧紧工位力矩超差.ToString(); |
| | | //赋值不合格原因 |
| | | SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); |
| | | } |
| | |
| | | |
| | | if (qualityData.OP30QualityStateCH6 == ((int)QualityState.NG).ToString()) |
| | | { |
| | | logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30压衬套工位力矩大; |
| | | logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30压衬套工位力矩大.ToString(); |
| | | logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30压衬套工位力矩超差; |
| | | logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30压衬套工位力矩超差.ToString(); |
| | | //赋值不合格原因 |
| | | SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); |
| | | } |
| | |
| | | qualityData.OP80QualityReceiveTime = DateTimeHelper.GetDateTime(); |
| | | } |
| | | |
| | | var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == logMiddle.WorkPieceID && o.WorkingProcedureCurrent == pieceInfo.WorkingProcedureCurrent && o.OperationType == OperationType.生产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault(); |
| | | var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == logMiddle.WorkPieceID |
| | | //修正:查询的工序是当前线程的工序,而不是当前数据的工序 【Editby shaocx,2024-09-03】 |
| | | //&& o.WorkingProcedureCurrent == pieceInfo.WorkingProcedureCurrent |
| | | && o.WorkingProcedureCurrent == logMiddle.WorkingProcedure |
| | | && o.OperationType == OperationType.生产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault(); |
| | | if (pro == null || pro.WorkPieceID.Length < 1 || logMiddle.MonitoringPoint.Equals("OP1002") || logMiddle.MonitoringPoint.Equals("OP1003") || logMiddle.MonitoringPoint.Contains("OP2002")) |
| | | {// OP10 没有上线扫码枪,约定用测量完成信号当上线标记,所以上线需要修改的字段放这里 |
| | | //上线是每次都插入 |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | loginfo2.Remarks = $"质量检测完成{logMiddle.WorkPieceID ?? "空"}更新数据异常{ex.Message}++{ex.StackTrace}"; |
| | | Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}工序监控读码标记 读取工件码数据[{logMiddle.WorkPieceID ?? "空"}]时异常:"); |
| | | loginfo2.Remarks = $"质量检测完成,更新数据异常{ex.Message}"; |
| | | Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}质量检测完成 工件码数据[{logMiddle.WorkPieceID ?? "空"}]时异常:" + ex.Message, ex); |
| | | } |
| | | finally |
| | | { |
| | |
| | | } |
| | | cur_db_info.WorkPieceState = (int)WorkPieceState.NOOKPush; |
| | | cur_db_info.UpdatedUserName = loginfo.MonitoringPoint; |
| | | SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref cur_db_info, loginfo.DataCapturePointCname); |
| | | cur_db_info.UpdatedTime = DateTime.Now; |
| | | cur_db_info.Remarks = "工件NOOK推出"; |
| | | loginfo2.Remarks = cur_db_info.Remarks; |
| | |
| | | } |
| | | cur_db_info.WorkPieceState = (int)WorkPieceState.SPCPush; |
| | | cur_db_info.UpdatedUserName = loginfo.MonitoringPoint; |
| | | SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref cur_db_info, loginfo.DataCapturePointCname); |
| | | cur_db_info.UpdatedTime = DateTime.Now; |
| | | cur_db_info.WorkingProcedureEndTime = DateTimeHelper.GetDateTime(); |
| | | if (!(cur_db_info.WorkingProcedureStartTime.HasValue && cur_db_info.WorkingProcedureStartTime > DateTime.Parse("1900/01/01"))) |
| | |
| | | info.WorkPieceinitOnlineTime = DateTimeHelper.GetDateTime();//WorkPieceInitOnlineTime |
| | | info.WorkingProcedurePlan = ConfigHelper.GetConfigString("WorkingProcedureAllStr") ?? "OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80"; |
| | | info.CreatedUserName = logMiddle.MonitoringPoint; |
| | | SystemBussinessHelper.SetWorkPieceInfoMiddleForCreatedUserName(ref info, logMiddle.DataCapturePointCname); |
| | | info.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); |
| | | info.WorkingProcedureCurrent = logMiddle.WorkingProcedure; |
| | | info.WorkingProcedureEndTime = null; |
| | |
| | | logMiddle.WorkingProcedure = info.WorkingProcedureCurrent; //解决OP10,OP40同一个的问题 |
| | | } |
| | | info.UpdatedUserName = logMiddle.MonitoringPoint; |
| | | SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref info, logMiddle.DataCapturePointCname); |
| | | info.UpdatedTime = DateTimeHelper.GetDateTime(); |
| | | info.WorkingProcedureCompleted = info.WorkingProcedureCompleted + logMiddle.WorkingProcedure;//已完成工序 |
| | | if (!(info.WorkingProcedureStartTime.HasValue && info.WorkingProcedureStartTime > DateTime.Parse("1900/01/01"))) |
| | |
| | | //特殊逻辑:按照OP30的顺序判断 |
| | | if (logMiddle.QualityNoOk != null && qualityNoOk != null |
| | | && ( |
| | | qualityNoOk == (int)QualityNoOkEnum.OP30压衬套工位力矩大 |
| | | || qualityNoOk == (int)QualityNoOkEnum.OP30涨断工位力矩大 |
| | | || qualityNoOk == (int)QualityNoOkEnum.OP30终拧紧工位力矩大 |
| | | || qualityNoOk == (int)QualityNoOkEnum.OP30预拧紧工位力矩大 |
| | | qualityNoOk == (int)QualityNoOkEnum.OP30压衬套工位力矩超差 |
| | | || qualityNoOk == (int)QualityNoOkEnum.OP30涨断工位力矩超差 |
| | | || qualityNoOk == (int)QualityNoOkEnum.OP30终拧紧工位力矩超差 |
| | | || qualityNoOk == (int)QualityNoOkEnum.OP30预拧紧工位力矩超差 |
| | | ) |
| | | ) |
| | | { |
| | |
| | | {//合格/不合格由 QualityStateStr值判断 |
| | | if (logMiddle.QualityState == (int)QualityState.NG) |
| | | { |
| | | qualityNoOkEnum = QualityNoOkEnum.OP35滚压力不合格; |
| | | qualityNoOkEnum = QualityNoOkEnum.OP35滚压力超差; |
| | | } |
| | | else |
| | | { |