| | |
| | | info.WorkPieceinitOnlineTime = DateTimeHelper.GetDateTime(); |
| | | info.WorkingProcedurePlan = ConfigHelper.GetConfigString("WorkingProcedureAllStr") ?? "OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80"; |
| | | info.CreatedUserName = loginfo.MonitoringPoint; |
| | | info.WorkingProcedureCurrent = loginfo.WorkingProcedure;//工序赋值 |
| | | SystemBussinessHelper.SetWorkPieceInfoMiddleForCreatedUserName(ref info, loginfo.DataCapturePointCname); |
| | | info.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); |
| | | info = ParseQRCode(info); |
| | |
| | | } |
| | | else |
| | | { |
| | | if (info.WorkingProcedureCurrent.Equals("OP05")) |
| | | { |
| | | loginfo.Remarks = $"读取二维码{loginfo.WorkPieceID ?? "空"} OP05工序重复读取了"; |
| | | return; |
| | | } |
| | | //存在 表 WorkPieceInfo有,但是 WorkPieceProcess这个工序不存在的情况 【Editby shaocx,2024-09-06】 |
| | | //if (info.WorkingProcedureCurrent.Equals("OP05")) |
| | | //{ |
| | | // loginfo.Remarks = $"读取二维码{loginfo.WorkPieceID ?? "空"} OP05工序重复读取了"; |
| | | // return; |
| | | //} |
| | | } |
| | | if ((info.WorkingProcedureCurrent.Equals("OP05") && isAddWorkPieceInfo == false)) |
| | | { |
| | | if ((loginfo.WorkingProcedure.Equals("OP05") && isAddWorkPieceInfo == false)) |
| | | {//存在 表 WorkPieceInfo有,但是 WorkPieceProcess这个工序不存在的情况 |
| | | //如果是OP05的,并且是 不需要新增 表WorkPieceInfo,那么就不需要更新表 WorkPieceInfo |
| | | } |
| | | else |
| | |
| | | |
| | | info.WorkPieceCurrentPosition = loginfo.WorkingProcedure; |
| | | info.WorkPieceCurrentPositionOrder = info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2; |
| | | info.WorkingProcedureCurrent = loginfo.WorkingProcedure; |
| | | info.WorkingProcedureCurrent = loginfo.WorkingProcedure;//工序赋值 |
| | | info.Remarks = $"{info.WorkingProcedureCurrent}工件上线"; |
| | | } |
| | | |
| | | |
| | | //修复下 op35 同一个件 下线时间跟下一个上线时间一模一样的问题 【Editby shaocx,2024-08-27】 |
| | | var isNeedAddNewProcess = true; |
| | | var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID && !o.OperationType.Equals("SPC") && (o.EndTime == null || o.EndTime <= DateTime.MinValue)).OrderByDescending(o => o.StartTime).FirstOrDefault(); |
| | | if (pro != null && pro.WorkPieceID.Length > 1) |
| | | { |
| | | if (pro.WorkingProcedureCurrent == loginfo.WorkingProcedure) |
| | | {//表示工序相同 |
| | | isNeedAddNewProcess = false; |
| | | pro.Remarks = "又一次上线,更新结束时间"; |
| | | } |
| | | else |
| | | { |
| | | pro.EndTime = DateTimeHelper.GetDateTime(); |
| | | pro.UpdatedUserName = loginfo.MonitoringPoint; |
| | | pro.UpdateDataCapturePointCname = loginfo.DataCapturePointCname; |
| | | pro.UpdatedTime = DateTimeHelper.GetDateTime(); |
| | | pro.Remarks = "又一次上线,更新结束时间"; |
| | | } |
| | | } |
| | | |
| | | //特殊处理OP05上线,因为他是根据文本列表内容上线的 【Editby shaocx,2024-09-03】 |
| | | if (loginfo.WorkingProcedure.Equals("OP05")) |
| | | { |
| | |
| | | if (op05Proccss != null) |
| | | { |
| | | isNeedAddNewProcess = false;//不需要新增了 |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID && !o.OperationType.Equals("SPC") && (o.EndTime == null || o.EndTime <= DateTime.MinValue)).OrderByDescending(o => o.StartTime).FirstOrDefault(); |
| | | if (pro != null && pro.WorkPieceID.Length > 1) |
| | | { |
| | | if (pro.WorkingProcedureCurrent == loginfo.WorkingProcedure) |
| | | {//表示工序相同 |
| | | isNeedAddNewProcess = false; |
| | | pro.Remarks = "又一次上线,更新结束时间"; |
| | | } |
| | | else |
| | | { |
| | | pro.EndTime = DateTimeHelper.GetDateTime(); |
| | | pro.UpdatedUserName = loginfo.MonitoringPoint; |
| | | pro.UpdateDataCapturePointCname = loginfo.DataCapturePointCname; |
| | | pro.UpdatedTime = DateTimeHelper.GetDateTime(); |
| | | pro.Remarks = "又一次上线,更新结束时间"; |
| | | } |
| | | } |
| | | } |
| | | if (isNeedAddNewProcess) |
| | |
| | | } |
| | | |
| | | #region 判断是否跳序,或质量不符合 然后反馈PLC |
| | | /* |
| | | if (IsFeedback.HasValue && IsFeedback.Value == (int)FeedbackMode.FeedbackPLC) |
| | | { |
| | | bool checkQualityInfoCompleteFlag = false; |
| | |
| | | message = !checkQualityInfoCompleteFlag ? "跳序," : ""; |
| | | message += info.QualityState != (int)QualityStateEnum.OK ? "质量不符合" : ""; |
| | | } |
| | | ////反馈给PLC,(写入点待定) |
| | | //MessageModel fr = null; |
| | | //fr = plcService.WriteValuePoint("", "", plcFlag, PLCManger.GetTypeForString("bool")); |
| | | //if (fr.result) |
| | | //{ |
| | | // Log4NetHelper.WriteInfoLog(type, $" 工件{info.WorkPieceID} {loginfo.WorkingProcedure}工序反馈给PLC 成功, 出现 {message}"); |
| | | //} |
| | | //else |
| | | //{ |
| | | // Log4NetHelper.WriteErrorLog(type, $" 工件{info.WorkPieceID} {loginfo.WorkingProcedure}工序反馈给PLC 失败, 出现 {message} ,失败原因:{fr.resMsg}"); |
| | | //} |
| | | |
| | | //#region 反馈PLC |
| | | |
| | | //bool checkQualityInfoCompleteFlag = false; |
| | | //bool plcFlag = true;//反馈给PLC的标记 |
| | | //string message = ""; |
| | | //checkQualityInfoCompleteFlag = WorkPieceInfoManager.CheckQualityInfoComplete(info, wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); |
| | | |
| | | //if (!checkQualityInfoCompleteFlag || info.QualityState != (int)QualityState.OK) |
| | | //{ |
| | | // plcFlag = false; |
| | | // message = !checkQualityInfoCompleteFlag ? "跳序," : ""; |
| | | //message += info.QualityState != (int)QualityState.OK ? "质量不符合" : ""; |
| | | //} |
| | | ////反馈给PLC,(写入点待定) |
| | | //MessageModel fr = null; |
| | | //fr = plcService.WriteValuePoint("", "", plcFlag, PLCManger.GetTypeForString("bool")); |
| | | //if (fr.result) |
| | | //{ |
| | | // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" 工件{wplog.WorkPieceID} {WorkingProcedure}工序反馈给PLC 成功, 出现 {message}"); |
| | | //} |
| | | //else |
| | | //{ |
| | | // Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" 工件{wplog.WorkPieceID} {WorkingProcedure}工序反馈给PLC 失败, 出现 {message} ,失败原因:{fr.resMsg}"); |
| | | //} |
| | | //#endregion |
| | | |
| | | } |
| | | else |
| | | {//读码完成若工件质量不符合或发生跳序,不用管设备是否把工件放过去,数采系统都不变更当前工序,反馈设备PLC工件不符合, |
| | |
| | | |
| | | info.WorkingProcedureCurrent = loginfo.WorkingProcedure; |
| | | } |
| | | //*/ |
| | | #endregion |
| | | |
| | | #region 更新设备实时表 |