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; using System.Web.UI.WebControls; namespace iWare_SCADA_BusinessLogical.BLL.Important { public class WorkPiecePushOffManager { /// /// 工件推出NOOK /// /// /// public static void WorkPiecePushOff(WorkPieceLogMiddle logMiddle, LogType type) { using (DbModel db = new DbModel()) { WorkPieceLog loginfo2 = new WorkPieceLog(); loginfo2 = EntityPropHelper.Mapper(logMiddle); try { if (logMiddle.WorkPieceID != null && logMiddle.WorkPieceID.Trim('\0').Length == 22) { bool isAddWorkPieceInfo = false; WorkPieceInfo cur_db_info = new WorkPieceInfo(); cur_db_info = db.WorkPieceInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (cur_db_info == null || cur_db_info.WorkPieceID.Length < 1) {//没有工件信息,不做更新 Log4NetHelper.WriteErrorLog(type, $"工件{logMiddle.WorkPieceID} 工件推出NOOK工序{logMiddle.WorkingProcedure} 没有获取到工件信息,此时需要新增数据"); //新增数据 【Editby shaocx,2024-09-07】 WorkPieceInfoHelper.CreateWorkPieceInfoForPushOff(logMiddle, ref cur_db_info, ref isAddWorkPieceInfo); } else {//更新表WorkPieceInfo if (logMiddle.WorkingProcedure.Equals("OP10")) { /* info.WorkPieceCurrentPosition = info.WorkingProcedureCurrent + "NOOK"; 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") { 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 + "NOOK"; loginfo2.WorkingProcedure = set_WorkingProcedureCurrent;//解决OP10,OP40同一个的问题 logMiddle.WorkingProcedure = set_WorkingProcedureCurrent; //解决OP10,OP40同一个的问题 } else { cur_db_info.WorkingProcedureCurrent = logMiddle.WorkingProcedure; cur_db_info.WorkPieceCurrentPosition = logMiddle.WorkingProcedure + "NOOK"; } cur_db_info.WorkPieceState = (int)WorkPieceState.NOOKPush; cur_db_info.UpdatedUserName = logMiddle.MonitoringPoint; SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref cur_db_info, logMiddle.DataCapturePointCname); cur_db_info.UpdatedTime = DateTime.Now; cur_db_info.Remarks = "工件NOOK推出"; loginfo2.Remarks = cur_db_info.Remarks; if (!(cur_db_info.WorkingProcedureStartTime.HasValue && cur_db_info.WorkingProcedureStartTime > DateTime.Parse("1900/01/01"))) { cur_db_info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime(); } cur_db_info.WorkingProcedureEndTime = DateTimeHelper.GetDateTime(); cur_db_info.WorkingProcedureCompleted = cur_db_info.WorkingProcedureCompleted + logMiddle.WorkingProcedure;//已完成工序 cur_db_info.WorkPieceCurrentPositionOrder = cur_db_info.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure) / 2; } QualityDataInfo qualityData = null; qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (logMiddle.WorkingProcedure.Equals("OP35")) {//为了解决OP35的采集到的质量信息是OK还NOOK的情况,OP35 NOOK时更新质量信息 loginfo2.Remarks = $"OP35NOOK原质量信息{(cur_db_info.QualityState.HasValue ? cur_db_info.QualityState.Value.ToString() : "空")}"; cur_db_info.QualityState = (int)QualityStateEnum.NG; if (!cur_db_info.QualityState.Equals(((int)QualityStateEnum.OK).ToString())) { cur_db_info.QualityErrorInfo = $"{logMiddle.WorkingProcedure}工序质量NOOK采集数据不合格{cur_db_info.QualityState}"; } else { cur_db_info.QualityErrorInfo = ""; } logMiddle.QualityState = cur_db_info.QualityState; if (qualityData != null) { qualityData.OP35QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP35QualityReceiveTime = DateTimeHelper.GetDateTime(); db.QualityDataInfoLog.Add(WorkPieceInfoManager.GetAddQualityDataInfoLog(qualityData)); } } //更新上一工序的结束时间 var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == logMiddle.WorkPieceID && o.WorkingProcedureCurrent == logMiddle.WorkingProcedure && o.OperationType == OperationType.生产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault(); if (pro != null && pro.WorkPieceID.Length > 0) { pro.EndTime = DateTimeHelper.GetDateTime(); pro.Remarks = "NOOK结束"; pro.UpdatedUserName = logMiddle.MonitoringPoint; pro.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname; pro.UpdatedTime = DateTimeHelper.GetDateTime(); } else {//如果找不到就新建 【Editby shaocx,2024-09-03】 WorkPieceProcess add_process = new WorkPieceProcess(); add_process = EntityPropHelper.Mapper(cur_db_info); QualityStateHelper.ResetQualityNoOkForNewProcess(ref add_process); add_process.Id = Yitter.IdGenerator.YitIdHelper.NextId(); add_process.StartTime = DateTimeHelper.GetDateTime().AddSeconds(-SystemBussinessHelper.MoNiTimeForWorkingProcedure(logMiddle.WorkingProcedure)); add_process.EndTime = DateTimeHelper.GetDateTime(); //不再默认赋值为合格 【Editby shaocx,2024-08-16】 add_process.QualityState = WorkPieceInfoManager.GetQualityStateValue(logMiddle.QualityState); add_process.CreatedUserName = logMiddle.MonitoringPoint; add_process.JiaJuGongWei = logMiddle.JiaJuGongWei; add_process.DataCapturePointCname = logMiddle.DataCapturePointCname; add_process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); add_process.UpdatedUserName = logMiddle.MonitoringPoint; add_process.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname; add_process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); add_process.OperationType = OperationType.生产.ToString(); add_process.Remarks = "NOOK结束"; add_process.MyRemarks = "NOOK结束时,如果找不到就新建"; db.WorkPieceProcess.Add(add_process); } QualityStateHelper.SetQualityStateForNoOk(ref cur_db_info, ref pro, ref qualityData); if (isAddWorkPieceInfo) { db.WorkPieceInfo.Add(cur_db_info); } db.WorkPieceInfoLog.Add(WorkPieceInfoManager.GetAddWorkPieceInfoLog(cur_db_info)); } else { loginfo2.Remarks = $"工件NOOK推出读取二维码{logMiddle.WorkPieceID ?? "空"}异常"; Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}工件NOOK推出读码标记 读取工件码数据[{logMiddle.WorkPieceID ?? "空"}]时异常:"); } } catch (Exception e) { loginfo2.Remarks = $"读取二维码{logMiddle.WorkPieceID ?? "空"}更新数据异常{e.Message}"; } db.WorkPieceLog.Add(WorkPieceInfoManager.GetAddWorkPieceLog(loginfo2));//插入工件采集日志表 db.SaveChanges(); } } } }