using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWare_SCADA_BusinessLogical.BLL.Important { public class WorkPieceSPCPushOffManager { /// /// 工件SPC抽检推出 /// /// /// public static void WorkPieceSPCPushOff(WorkPieceLogMiddle loginfo, LogType type) { using (DbModel db = new DbModel()) { WorkPieceLog loginfo2 = new WorkPieceLog(); loginfo2 = EntityPropHelper.Mapper(loginfo); try { if ((loginfo.WorkPieceID != null && loginfo.WorkPieceID.Trim('\0').Length == 22) //|| !((loginfo.WorkingProcedure.Equals("OP10") || loginfo.WorkingProcedure.Equals("OP40")) && loginfo.Remarks.Length > 0) ) { 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) {//没有工件信息,不做更新 loginfo2.Remarks = $"工件{loginfo.WorkPieceID} 工件SPC推出工序{loginfo.WorkingProcedure} 没有获取到工件信息不做更新"; Log4NetHelper.WriteErrorLog(type, $"工件{loginfo.WorkPieceID} 工件SPC推出工序{loginfo.WorkingProcedure} 没有获取到工件信息不做更新"); return; } else {//更新表WorkPieceInfo if (loginfo.WorkingProcedure.Equals("OP10")) { //修复 错误记录成OP05的问题 【Editby shaocx,2024-08-26】 var set_WorkingProcedureCurrent = ""; if (cur_db_info.WorkingProcedureCurrent != "OP10" && cur_db_info.WorkingProcedureCurrent != "OP40") { WorkPieceInfoManager.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 + "SPC"; loginfo2.WorkingProcedure = set_WorkingProcedureCurrent;//解决OP10,OP40同一个的问题 loginfo.WorkingProcedure = set_WorkingProcedureCurrent; //解决OP10,OP40同一个的问题 } else { cur_db_info.WorkingProcedureCurrent = loginfo.WorkingProcedure; cur_db_info.WorkPieceCurrentPosition = loginfo.WorkingProcedure + "SPC"; } 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"))) { cur_db_info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime(); } cur_db_info.WorkingProcedureCompleted = cur_db_info.WorkingProcedureCompleted + loginfo.WorkingProcedure;//已完成工序 cur_db_info.WorkPieceCurrentPositionOrder = cur_db_info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2; } cur_db_info.Remarks = "工件SPC抽检推出"; loginfo2.Remarks = cur_db_info.Remarks; //更新上一工序的结束时间 var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID && o.WorkingProcedureCurrent == loginfo.WorkingProcedure && o.OperationType == OperationType.生产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault(); if (pro != null && pro.WorkPieceID.Length > 0) { pro.EndTime = DateTimeHelper.GetDateTime(); pro.Remarks = (pro.Remarks ?? "") + "SPC抽检结束"; pro.UpdatedUserName = loginfo.MonitoringPoint; pro.UpdateDataCapturePointCname = loginfo.DataCapturePointCname; pro.UpdatedTime = DateTimeHelper.GetDateTime(); } //每次SPC 都插入追溯表 WorkPieceProcess process = new WorkPieceProcess(); process = EntityPropHelper.Mapper(cur_db_info); QualityStateHelper.ResetQualityNoOkForNewProcess(ref process); process.StartTime = DateTimeHelper.GetDateTime(); process.OperationType = OperationType.SPC.ToString(); process.QualityState = (int)QualityStateEnum.Suspected; process.Id = Yitter.IdGenerator.YitIdHelper.NextId(); process.CreatedUserName = loginfo.MonitoringPoint; process.DataCapturePointCname = loginfo.DataCapturePointCname; process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); process.UpdatedUserName = loginfo.MonitoringPoint; process.UpdateDataCapturePointCname = loginfo.DataCapturePointCname; process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); process.Remarks = "工件SPC抽检推出"; process.MyRemarks = "SPC时,插入追溯表"; db.WorkPieceProcess.Add(process); db.WorkPieceInfoLog.Add(WorkPieceInfoManager.GetAddWorkPieceInfoLog(cur_db_info)); } else { loginfo2.Remarks = $"工件SPC抽检推出读取二维码{loginfo.WorkPieceID ?? "空"}异常"; Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}工件SPC抽检推出读码标记 读取工件码数据[{loginfo.WorkPieceID ?? "空"}]时异常:"); } } catch (Exception e) { loginfo2.Remarks = $"读取二维码{loginfo.WorkPieceID ?? "空"}更新数据异常{e.Message}"; } finally { db.WorkPieceLog.Add(WorkPieceInfoManager.GetAddWorkPieceLog(loginfo2));//插入工件采集日志表 db.SaveChanges(); } } } } }