DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/Important/QualityInfoCompleteManager.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,444 @@ 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 QualityInfoCompleteManager { /// <summary> /// è´¨éæ£æµå®æ /// </summary> /// <param name="logMiddle"></param> /// <param name="type"></param> public static void QualityInfoComplete(WorkPieceLogMiddle logMiddle, LogType type) { //æ ¹æ®è´¨éæ°æ®å¤ææ¯å¦åæ ¼/ä¸åæ ¼ ãEditby shaocx,2024-06-25ã WorkPieceInfoManager.SetLogMiddleForQuality(ref logMiddle); //æ¤å¤åæ¶æå ¥äºWorkPieceLogï¼WorkPieceInfoLog表ï¼å¹¶æ°å¢æä¿®æ¹WorkPieceInfo表 //æå ¥è´¨éç¸å ³è¡¨QualityDataInfo using (DbModel db = new DbModel()) { bool isAddWorkPieceInfo = false; WorkPieceLog loginfo2 = new WorkPieceLog(); loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(logMiddle); try { if (logMiddle.WorkPieceID.Length == 22) {//è·åå°ç工件å·å¼å¸¸ WorkPieceInfo pieceInfo = new WorkPieceInfo(); pieceInfo = db.WorkPieceInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (pieceInfo == null || pieceInfo.WorkPieceID.Length < 1) {//没æå·¥ä»¶ä¿¡æ¯ï¼ä¸åæ´æ° if (logMiddle.MonitoringPoint.Equals("OP1002") || logMiddle.MonitoringPoint.Equals("OP1003") || logMiddle.MonitoringPoint.Contains("OP2002")) {//OP10 没æä¸çº¿æ«ç æªï¼çº¦å®ç¨æµéå®æä¿¡å·å½ä¸çº¿æ è®° pieceInfo = EntityPropHelper.Mapper<WorkPieceInfo, WorkPieceLogMiddle>(logMiddle); //EntityPropHelper<WorkPieceLog, WorkPieceInfo>.CopyProp(loginfo, info, loginfo.GetWorkPieceInfoDict()); if (!logMiddle.WorkingProcedure.Equals("OP05")) {//å½å·¥ä»¶äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åºä¸æ¯OP05ï¼å设置为å¯çç¶æ pieceInfo.QualityState = (int)QualityStateEnum.Suspected; pieceInfo.QualityErrorInfo = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{logMiddle.MonitoringPoint}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; pieceInfo.Remarks = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{logMiddle.WorkingProcedure}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; } else { pieceInfo.QualityState = (int)QualityStateEnum.OK;//æ¤å¤éè¦æ³¨æï¼å¤æææå·¥åºè´¨éï¼ç¶ååèµå¼ //é»è®¤åæ ¼ï¼OP05é»è®¤æ¯åæ ¼ pieceInfo.Remarks = "OP05æ°å¢å·¥ä»¶ä¿¡æ¯"; } pieceInfo.WorkPieceinitOnlineTime = DateTimeHelper.GetDateTime(); pieceInfo.WorkingProcedurePlan = ConfigHelper.GetConfigString("WorkingProcedureAllStr") ?? "OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80"; pieceInfo.CreatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle); SystemBussinessHelper.SetWorkPieceInfoMiddleForCreatedUserName(ref pieceInfo, logMiddle.DataCapturePointCname); pieceInfo.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); pieceInfo.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();// pieceInfo.WorkingProcedureEndTime = null; pieceInfo = WorkPieceInfoManager.ParseQRCode(pieceInfo); isAddWorkPieceInfo = true; } else { loginfo2.Remarks = $"|工件{logMiddle.WorkPieceID} è´¨éæ£æµå®æå·¥åº{logMiddle.MonitoringPoint} 没æè·åå°å·¥ä»¶ä¿¡æ¯ä¸åæ´æ°"; Log4NetHelper.WriteErrorLog(type, $"工件{logMiddle.WorkPieceID} è´¨éæ£æµå®æå·¥åº{logMiddle.MonitoringPoint} 没æè·åå°å·¥ä»¶ä¿¡æ¯ä¸åæ´æ°"); return; } } if (logMiddle.MonitoringPoint.Equals("OP1002") || logMiddle.MonitoringPoint.Equals("OP1003") || logMiddle.MonitoringPoint.Contains("OP2002")) {// OP10 没æä¸çº¿æ«ç æªï¼çº¦å®ç¨æµéå®æä¿¡å·å½ä¸çº¿æ è®°ï¼æä»¥ä¸çº¿éè¦ä¿®æ¹çåæ®µæ¾è¿é if (logMiddle.WorkingProcedure.Equals("OP10")) { var WorkingProcedure = (logMiddle.MonitoringPoint.Equals("OP1002") ? "OP10" : "OP40"); loginfo2.WorkingProcedure = WorkingProcedure;//è§£å³OP10ï¼OP40åä¸ä¸ªçé®é¢ logMiddle.WorkingProcedure = WorkingProcedure;//è§£å³OP10ï¼OP40åä¸ä¸ªçé®é¢ } pieceInfo.WorkPieceCurrentPosition = logMiddle.WorkingProcedure; pieceInfo.WorkPieceCurrentPositionOrder = pieceInfo.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure) / 2; pieceInfo.WorkingProcedureCurrent = logMiddle.WorkingProcedure; pieceInfo.WorkingProcedureStartTime = DateTimeHelper.GetDateTime(); #region æ´æ°è®¾å¤å®æ¶è¡¨ bool isAddEquipmentCurrentMonitor = false; EquipmentCurrentMonitor equinfo = new EquipmentCurrentMonitor(); equinfo = db.EquipmentCurrentMonitor.Where(o => o.EquipmentID == logMiddle.EquipmentID).FirstOrDefault(); if (equinfo == null || equinfo.Id < 1) {//没æå·¥ä»¶ä¿¡æ¯ï¼ä¸åæ´æ° Log4NetHelper.WriteErrorLog(type, $"设å¤{logMiddle.EquipmentID} åè¦çæ§{logMiddle.WorkingProcedure} 没æè·åå°è®¾å¤çæ§ä¿¡æ¯ï¼ç°æ°å¢"); equinfo = EntityPropHelper.Mapper<EquipmentCurrentMonitor, WorkPieceLog>(logMiddle); equinfo.OnlineTime = DateTime.Now; isAddEquipmentCurrentMonitor = true; } else {//æ´æ°å·¥ä»¶ equinfo.WorkPieceID = logMiddle.WorkPieceID; equinfo.UpdatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle); equinfo.UpdatedTime = DateTime.Now; equinfo.OnlineTime = DateTime.Now; } if (isAddEquipmentCurrentMonitor) { equinfo.Id = Yitter.IdGenerator.YitIdHelper.NextId(); db.EquipmentCurrentMonitor.Add(equinfo); } #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.QualityStateUpdateTime = logMiddle.UpdatedTime.Value.LocalDateTime; pieceInfo.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString(); pieceInfo.Remarks = $"{logMiddle.WorkingProcedure}è´¨éæ£æµå®æä¿®æ¹"; pieceInfo.UpdatedUserName = WorkPieceInfoManager.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"))) {//å·¥åºå¼å§æ¶é´æ²¡æåèµå¼ pieceInfo.WorkingProcedureStartTime = DateTimeHelper.GetDateTime(); } pieceInfo.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityStateEnum.OK : QualityStateEnum.NG); //èµå¼ä¸åæ ¼åå WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); if (!pieceInfo.QualityState.Equals(((int)QualityStateEnum.OK).ToString())) { pieceInfo.QualityErrorInfo = $"{logMiddle.WorkingProcedure}å·¥åºè´¨éééæ°æ®ä¸åæ ¼{pieceInfo.QualityState}"; } else { pieceInfo.QualityErrorInfo = ""; } logMiddle.QualityState = pieceInfo.QualityState; if (isAddWorkPieceInfo) { db.WorkPieceInfo.Add(pieceInfo); } #region æ ¹æ®æ å弿´æ°ææ°è´¨éæ°æ®ï¼OP10/OP40/OP20/OP60ï¼ var qcofig = db.EquipmentQualityConfig.Where(o => o.WorkingProcedure.Equals(logMiddle.WorkingProcedure) && o.ParamType != 1 && o.IsDeleted == false).ToList(); if (qcofig.Count > 0) { WorkPieceInfoManager.QualityDataHand(logMiddle, qcofig); } #endregion var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1) {//æå ¥QualityDataInfo表 qualityData = EntityPropHelper.Mapper<QualityDataInfo, WorkPieceLog>(logMiddle); db.QualityDataInfo.Add(WorkPieceInfoManager.GetAddQualityDataInfo(qualityData)); } //ä¿®æ¹QualityDataInfo表 //é夿¶å°è´¨éä¿¡æ¯ï¼ä¼è¦çä¹åç EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.CopyProp(logMiddle, qualityData, WorkPieceInfoManager.GetQualityDataInfoUpdate(logMiddle, logMiddle.WorkingProcedure, logMiddle.MonitoringPoint));//æå®ä¿®æ¹å段 qualityData.QualityStateUpdateUser = pieceInfo.UpdatedUserName; qualityData.QualityReceiveTime = pieceInfo.UpdatedTime.Value.LocalDateTime; qualityData.QualityStateUpdateMode = pieceInfo.QualityStateUpdateMode; if (logMiddle.WorkingProcedure.Equals("OP10")) { qualityData.OP10QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP10QualityReceiveTime = DateTimeHelper.GetDateTime(); } else if (logMiddle.WorkingProcedure.Equals("OP20")) { //Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}è´¨éä¿¡æ¯ã{loginfo.QualityStateStr ?? "空"}ã" + // $"ã{(loginfo.QualityState.HasValue? loginfo.QualityState.Value:999)}ãã{(info.QualityState.HasValue ? info.QualityState.Value : 888)}ã 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}]"); qualityData.OP20QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP20QualityReceiveTime = DateTimeHelper.GetDateTime(); qualityData.OP20QualityFilePath = logMiddle.OP20QualityFilePath; } else if (logMiddle.WorkingProcedure.Equals("OP30")) { switch (logMiddle.MonitoringPoint) { case "OP3002CH3": qualityData.OP30QualityFilePathCH3 = logMiddle.OP30QualityFilePathCH3; qualityData.OP30QualityStateCH3 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP30QualityReceiveTimeCH3 = DateTimeHelper.GetDateTime(); if (qualityData.OP30QualityStateCH3 == ((int)QualityStateEnum.NG).ToString()) { logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30涨æå·¥ä½åç©è¶ å·®; logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30涨æå·¥ä½åç©è¶ å·®.ToString(); //èµå¼ä¸åæ ¼åå WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); } break; case "OP3002CH4": qualityData.OP30QualityFilePathCH4 = logMiddle.OP30QualityFilePathCH4; qualityData.OP30QualityStateCH4 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP30QualityReceiveTimeCH4 = DateTimeHelper.GetDateTime(); if (qualityData.OP30QualityStateCH4 == ((int)QualityStateEnum.NG).ToString()) { logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30颿§ç´§å·¥ä½åç©è¶ å·®; logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30颿§ç´§å·¥ä½åç©è¶ å·®.ToString(); //èµå¼ä¸åæ ¼åå WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); } break; case "OP3002CH5": qualityData.OP30QualityFilePathCH5 = logMiddle.OP30QualityFilePathCH5; qualityData.OP30QualityStateCH5 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP30QualityReceiveTimeCH5 = DateTimeHelper.GetDateTime(); if (qualityData.OP30QualityStateCH5 == ((int)QualityStateEnum.NG).ToString()) { logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30ç»æ§ç´§å·¥ä½åç©è¶ å·®; logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30ç»æ§ç´§å·¥ä½åç©è¶ å·®.ToString(); //èµå¼ä¸åæ ¼åå WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); } break; case "OP3002CH6": qualityData.OP30QualityFilePathCH6 = logMiddle.OP30QualityFilePathCH6; qualityData.OP30QualityStateCH6 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP30QualityReceiveTimeCH6 = DateTimeHelper.GetDateTime(); if (qualityData.OP30QualityStateCH6 == ((int)QualityStateEnum.NG).ToString()) { logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30å衬å¥å·¥ä½åç©è¶ å·®; logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30å衬å¥å·¥ä½åç©è¶ å·®.ToString(); //èµå¼ä¸åæ ¼åå WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); } break; default: break; } //qualityData.OP30QualityState = loginfo.QualityState.HasValue ? loginfo.QualityState.Value.ToString() : "3"; //qualityData.OP30QualityReceiveTime = DateTimeHelper.GetDateTime(); } else if (logMiddle.WorkingProcedure.Equals("OP35")) { qualityData.OP35QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP35QualityReceiveTime = DateTimeHelper.GetDateTime(); } else if (logMiddle.WorkingProcedure.Equals("OP40")) { qualityData.OP40QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP40QualityReceiveTime = DateTimeHelper.GetDateTime(); } else if (logMiddle.WorkingProcedure.Equals("OP60")) { qualityData.OP60QualityFilePath = logMiddle.OP60QualityFilePath; qualityData.OP60QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP60QualityReceiveTime = DateTimeHelper.GetDateTime(); } else if (logMiddle.WorkingProcedure.Equals("OP80")) { qualityData.OP80QualityFilePath = logMiddle.OP80QualityFilePath; qualityData.OP80QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP80QualityReceiveTime = DateTimeHelper.GetDateTime(); } 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 没æä¸çº¿æ«ç æªï¼çº¦å®ç¨æµéå®æä¿¡å·å½ä¸çº¿æ è®°ï¼æä»¥ä¸çº¿éè¦ä¿®æ¹çåæ®µæ¾è¿é //ä¸çº¿æ¯æ¯æ¬¡é½æå ¥ WorkPieceProcess process_05 = WorkPieceProcessHelper.CreateWorkPieceProcessForOP05(logMiddle, db, pieceInfo); if (process_05 != null) {//å建OP05å·¥åºï¼å½æ²¡æ05å·¥åºæ¶,æå建 ãEditby shaocx,2024-08-29ã db.WorkPieceProcess.Add(process_05); } WorkPieceProcess process = new WorkPieceProcess(); process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(pieceInfo); QualityStateHelper.ResetQualityNoOkForNewProcess(ref process); process.StartTime = DateTimeHelper.GetDateTime(); //ä¸åé»è®¤èµå¼ä¸ºåæ ¼ ãEditby shaocx,2024-08-16ã //process.QualityState = pieceInfo.QualityState.HasValue ? pieceInfo.QualityState.Value : (int)QualityState.OK;//é»è®¤åæ ¼ï¼å·²å¤ç process.QualityState = WorkPieceInfoManager.GetQualityStateValue(pieceInfo.QualityState); //è®°å½è´¨éä¸åæ ¼åå ãEditby shaocx,2024-06-26ã //èµå¼ä¸åæ ¼åå WorkPieceInfoManager.SetQualityNoOk_WorkPieceProcess(logMiddle, ref process); process.Id = Yitter.IdGenerator.YitIdHelper.NextId(); process.CreatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle); process.DataCapturePointCname = logMiddle.DataCapturePointCname; process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); process.UpdatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle); process.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname; process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); process.OperationType = OperationType.ç产.ToString(); process.QualityDataInfoID = qualityData.Id; process.Remarks = ""; process.MyRemarks = "è´¨éæ£æµå®ææ¶ï¼å¦ææ¾ä¸å°å°±æ°å»º"; db.WorkPieceProcess.Add(process); } else {//å ¶ä»çé½åªæ¯ä¿®æ¹ pro.QualityDataInfoID = qualityData.Id; pro.UpdatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle); pro.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname; pro.UpdatedTime = DateTimeHelper.GetDateTime(); //ä¸åé»è®¤èµå¼ä¸ºåæ ¼ ãEditby shaocx,2024-08-16ã //pro.QualityState = pieceInfo.QualityState.HasValue ? pieceInfo.QualityState.Value : 9; pro.QualityState = WorkPieceInfoManager.GetQualityStateValue(pieceInfo.QualityState); //èµå¼ä¸åæ ¼åå WorkPieceInfoManager.SetQualityNoOk_WorkPieceProcess(logMiddle, ref pro); //TODO:夿妿æ¯60å·¥åºï¼é£ä¹å°±è¦æ´æ°pro表çå建人为loginfo.MonitoringPoint ãEditby shaocx,2024-06-05ã if (logMiddle.WorkingProcedure == "OP60") { pro.CreatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle); pro.DataCapturePointCname = logMiddle.DataCapturePointCname; } } if (logMiddle.QualityType != null && logMiddle.QualityType.Equals(QualityType.SPC.ToString())) {//SPCåé¦ï¼ if (logMiddle.QualityState != (int)QualityStateEnum.OK) { //彿å°å·¥åºæ£æµå°ä¸åæ ¼å·¥ä»¶æ¶ï¼ä»è¯¥å·¥ä»¶å 工宿æ¶å»åæå®æ¶é´èµ·è³æ¥æ£ä¸åæ ¼æ¶é´æ¢ï¼ç³»ç»å°è¯¥å·¥ä»¶çæåå 工工åºå¨è¯¥æ¶é´æ®µå å å·¥çææå·¥ä»¶ãæ£å¨å å·¥ç工件ã该工åºå ¥å£å¤ç第ä¸ä¸ªå·¥ä»¶å ¨é¨æ 记为çä¼¼ç¶æï¼ç±äººå·¥å¤æ£å·¥ä»¶å¹¶ä¿®æ¹ç¶æï¼å¹¶æ¯ææ¹éåæ´ã //çå¤ï¼å¨çº¿æµéä¸éè¦èµ°è¿ä¸ªæµç¨ï¼åªæSPCæ½æ£æéè¦ï¼éè¦æè¿æ¶é´æ®µçå·¥ä»¶å ¨é¨ç½®ä¸ºçä¼¼ï¼åªææ¯å·²å®æå·¥ä»¶ //æ¶é´æ®µèµ·å§æ¶é´ï¼æ½æ£å·¥ä»¶ç产æ¶é´åä¸SPCæ½æ£æ¶é´ //æ¶é´æ®µç»ææ¶é´ï¼æ½æ£å·¥ä»¶è´¨éç»æåºç°åçæ¶é´ //æ½æ£å·¥ä»¶å·¥åºæ«ææªå¤å ¥å£å¤ç第ä¸ä¸ªå·¥ä»¶ ä¹æè´¨éç¶æç½®ä¸ºçä¼¼ //ï¼æ¯ä¸å·¥åºSPCæ½æ£æ¯è®¾ç½®çåºå®çï¼æ¯å¦200æ½4ï¼ç¶æç½®ä¸ºçä¼¼æ¶è¥å·¥ä»¶è¿å¨è®¾å¤å ï¼ä¼ç»§ç»çäº§å®æ¯åæåºï¼ //ç®åè¿åé»è¾æ¾å°äº WebAPIä¸äº } } db.WorkPieceInfoLog.Add(WorkPieceInfoManager.GetAddWorkPieceInfoLog(pieceInfo)); db.QualityDataInfoLog.Add(WorkPieceInfoManager.GetAddQualityDataInfoLog(qualityData));//æå ¥æ¥å¿ } else { loginfo2.Remarks = $"è´¨éæ£æµå®æè¯»åäºç»´ç {logMiddle.WorkPieceID ?? "空"}å¼å¸¸"; Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}å·¥åºçæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); } } catch (Exception ex) { loginfo2.Remarks = $"è´¨éæ£æµå®æ,æ´æ°æ°æ®å¼å¸¸{ex.Message}"; Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}è´¨éæ£æµå®æ å·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼" + ex.Message, ex); } finally { loginfo2.Remarks = $"è´¨éï¼{logMiddle.QualityStateStr ?? "空"}"; db.WorkPieceLog.Add(WorkPieceInfoManager.GetAddWorkPieceLog(loginfo2));//æå ¥å·¥ä»¶é鿥å¿è¡¨ db.SaveChanges(); } } } /// <summary> /// è´¨éæ£æµå®æ-OP70ä¸ç¨ /// </summary> /// <param name="logMiddle"></param> /// <param name="type"></param> public static void QualityInfoCompleteForOP70(WorkPieceLogMiddle logMiddle, LogType type) { if (string.IsNullOrEmpty(logMiddle.QualityOP70To1) && string.IsNullOrEmpty(logMiddle.QualityOP70To2) && string.IsNullOrEmpty(logMiddle.QualityOP70To3)) { Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}å·¥åºçæ§æ¸ æ´æºæ°æ® 读åå·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]è·åçä¸ä¸ªå¼é½æ¯ç©ºçï¼ä¸å¤çè¿å"); return; } using (DbModel db = new DbModel()) { try { bool isAdd = false; if (logMiddle.WorkPieceID.Length == 22) { var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1) {//æå ¥QualityDataInfo表 isAdd = true; qualityData = EntityPropHelper.Mapper<QualityDataInfo, WorkPieceLog>(logMiddle); } qualityData.QualityStateUpdateUser = "OP7009"; qualityData.QualityReceiveTime = DateTime.Now; //ç¹æ®å¤çOP70çè´¨éæ°æ® if (string.IsNullOrEmpty(qualityData.QualityOP70To1) && !string.IsNullOrEmpty(SystemHelper.GetStrForQualityOP70(logMiddle.QualityOP70To1))) { qualityData.QualityOP70To1 = logMiddle.QualityOP70To1; } if (string.IsNullOrEmpty(qualityData.QualityOP70To2) && !string.IsNullOrEmpty(SystemHelper.GetStrForQualityOP70(logMiddle.QualityOP70To2))) { qualityData.QualityOP70To2 = logMiddle.QualityOP70To2; } if (string.IsNullOrEmpty(qualityData.QualityOP70To3) && !string.IsNullOrEmpty(SystemHelper.GetStrForQualityOP70(logMiddle.QualityOP70To3))) { qualityData.QualityOP70To3 = logMiddle.QualityOP70To3; } db.QualityDataInfoLog.Add(WorkPieceInfoManager.GetAddQualityDataInfoLog(qualityData));//æå ¥æ¥å¿ if (isAdd) { db.QualityDataInfo.Add(WorkPieceInfoManager.GetAddQualityDataInfo(qualityData)); } db.SaveChanges();//ä¿åæ°æ® } else { Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}å·¥åºçæ§æ¸ æ´æºæ°æ® 读åå·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); } } catch (Exception ex) { Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}å·¥åºçæ§æ¸ æ´æºæ°æ® 读åå·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼", ex); } finally { } } } } } DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/Important/ReadQRcodeManager.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,276 @@ using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; using System.Collections.Generic; using System.Data.Entity.Validation; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWare_SCADA_BusinessLogical.BLL.Important { public class ReadQRcodeManager { /// <summary> /// 读åäºç»´ç æ¶é»è¾ /// æ ¡éªå·¥ä»¶æ¯å¦è·³åºï¼è´¨éæ¯å¦åæ ¼ /// </summary> public static void ReadQRcode(WorkPieceLog loginfo, LogType type, PLCService plcService, int? IsFeedback) {//æ¤å¤åæ¶æå ¥äºWorkPieceLogï¼WorkPieceInfoLog表ï¼å¹¶æ°å¢æä¿®æ¹WorkPieceInfo表 using (DbModel db = new DbModel()) { try { bool isAddWorkPieceInfo = false; if (loginfo.WorkPieceID.Length == 22) { WorkPieceInfo info = new WorkPieceInfo(); info = db.WorkPieceInfo.Where(o => o.WorkPieceID == loginfo.WorkPieceID).FirstOrDefault(); if (info == null || info.WorkPieceID.Length < 1) {//æå ¥WorkPieceInfo表 loginfo = CommonManager.Instance.GetWorkPieceID(loginfo, type); info = EntityPropHelper.Mapper<WorkPieceInfo, WorkPieceLog>(loginfo); //EntityPropHelper<WorkPieceLog, WorkPieceInfo>.CopyProp(loginfo, info, loginfo.GetWorkPieceInfoDict()); if (!loginfo.WorkingProcedure.Equals("OP05")) {//å½å·¥ä»¶äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åºä¸æ¯OP05ï¼å设置为å¯çç¶æ info.QualityState = (int)QualityStateEnum.Suspected; info.QualityErrorInfo = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{loginfo.MonitoringPoint}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; info.Remarks = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{loginfo.WorkingProcedure}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; } else {//OP05å·¥åº info.QualityState = (int)QualityStateEnum.OK;//æ¤å¤éè¦æ³¨æï¼å¤æææå·¥åºè´¨éï¼ç¶ååèµå¼ //é»è®¤åæ ¼ï¼OP05é»è®¤æ¯åæ ¼ info.Remarks = "OP05æ°å¢å·¥ä»¶ä¿¡æ¯"; } 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 = WorkPieceInfoManager.ParseQRCode(info); isAddWorkPieceInfo = true; } else { //åå¨ è¡¨ WorkPieceInfoæï¼ä½æ¯ WorkPieceProcessè¿ä¸ªå·¥åºä¸åå¨çæ åµ ãEditby shaocx,2024-09-06ã //if (info.WorkingProcedureCurrent.Equals("OP05")) //{ // loginfo.Remarks = $"读åäºç»´ç {loginfo.WorkPieceID ?? "空"} OP05å·¥åºéå¤è¯»åäº"; // return; //} } if ((loginfo.WorkingProcedure.Equals("OP05") && isAddWorkPieceInfo == false)) {//åå¨ è¡¨ WorkPieceInfoæï¼ä½æ¯ WorkPieceProcessè¿ä¸ªå·¥åºä¸åå¨çæ åµ //妿æ¯OP05çï¼å¹¶ä¸æ¯ ä¸éè¦æ°å¢ 表WorkPieceInfoï¼é£ä¹å°±ä¸éè¦æ´æ°è¡¨ WorkPieceInfo } else { info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();// info.WorkingProcedureEndTime = null; info.WorkPieceState = (int)WorkPieceState.WIP; info.EquipmentID = loginfo.EquipmentID; info.QualityStateUpdateUser = loginfo.UpdatedUserName; 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; info.WorkingProcedureCurrent = loginfo.WorkingProcedure;//å·¥åºèµå¼ info.Remarks = $"{info.WorkingProcedureCurrent}工件ä¸çº¿"; } //ä¿®å¤ä¸ op35 åä¸ä¸ªä»¶ ä¸çº¿æ¶é´è·ä¸ä¸ä¸ªä¸çº¿æ¶é´ä¸æ¨¡ä¸æ ·çé®é¢ ãEditby shaocx,2024-08-27ã var isNeedAddNewProcess = true; //ç¹æ®å¤çOP05ä¸çº¿ï¼å ä¸ºä»æ¯æ ¹æ®ææ¬å表å 容ä¸çº¿ç ãEditby shaocx,2024-09-03ã if (loginfo.WorkingProcedure.Equals("OP05")) { var op05Proccss = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID && o.WorkingProcedureCurrent == loginfo.WorkingProcedure).FirstOrDefault(); 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) { //æ¯æ¬¡æ«æä¸çº¿é½æå ¥è¿½æº¯è¡¨ WorkPieceProcess new_process = new WorkPieceProcess(); new_process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(info); QualityStateHelper.ResetQualityNoOkForNewProcess(ref new_process); new_process.StartTime = DateTimeHelper.GetDateTime(); //ä¸åé»è®¤èµå¼ä¸ºåæ ¼ ãEditby shaocx,2024-08-16ã //process.QualityState = info.QualityState.HasValue ? info.QualityState.Value : (int)QualityState.OK;//é»è®¤åæ ¼ï¼å·²å¤ç new_process.QualityState = WorkPieceInfoManager.GetQualityStateValue(info.QualityState); if (new_process.WorkingProcedureCurrent == WorkingProcedureForHMI.OP70.ToString()) { //ç¹æ®å¤çOP70ï¼å 为OP70æ²¡ææµéï¼é»è®¤åæ ¼ [Editby shaocx,2024-07-03] new_process.QualityState = (int)QualityStateEnum.OK;//é»è®¤åæ ¼ï¼OP70é»è®¤æ¯åæ ¼ } new_process.Id = Yitter.IdGenerator.YitIdHelper.NextId(); new_process.CreatedUserName = loginfo.MonitoringPoint; new_process.DataCapturePointCname = loginfo.DataCapturePointCname; new_process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); new_process.UpdatedUserName = loginfo.MonitoringPoint; new_process.UpdateDataCapturePointCname = loginfo.DataCapturePointCname; new_process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); new_process.OperationType = OperationType.ç产.ToString(); new_process.Remarks = ""; new_process.MyRemarks = "读ç ä¸çº¿æ¶ï¼æ¯æ¬¡æ«æä¸çº¿é½æå ¥è¿½æº¯è¡¨"; if (loginfo.WorkingProcedure.Equals("OP05")) {//ç¹æ®å¤çOP05å·¥åº new_process.EndTime = new_process.StartTime; //妿已ç»åå¨å ¶ä»å·¥åºï¼é£ä¹å°±å¿ é¡»è¦æç §å ¶ä»å·¥åºçæ¶é´å¾åæ¨æ°æ® ãEditby shaocx,2024-09-05ã var op05OtherProccss = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID).OrderBy(x => x.StartTime).FirstOrDefault(); if (op05OtherProccss != null) {//说ææï¼é£ä¹æ¶é´å°±æç §è¿ä¸ªæ¶é´å¾åæ¨ var _time = op05OtherProccss.StartTime.AddHours(-1); new_process.StartTime = _time; new_process.EndTime = _time; new_process.CreatedTime = _time; new_process.UpdatedTime = _time; } } db.WorkPieceProcess.Add(new_process); } //db.Database.AutoTransactionsEnabled = false;// åä¸ä¸ªSaveChangesé»è®¤äºå¡ï¼ å ³éé»è®¤äºå¡ï¼... 好åä¸è½ç¨åï¼åé¢åç ç©¶å§ if (isAddWorkPieceInfo) { db.WorkPieceInfo.Add(info); } else {//ä¸ç¡®å®infoæ¯ç´æ¥ä¼ä¿®æ¹è¿æ¯éè¦å次æ¥è¯¢ï¼å¾ æµè¯ //info.Remarks = "ä¿®æ¹ï¼å ·ä½ä¿®æ¹é»è¾å¾ å®"; } #region 夿æ¯å¦è·³åº,æè´¨éä¸ç¬¦å ç¶ååé¦PLC /* if (IsFeedback.HasValue && IsFeedback.Value == (int)FeedbackMode.FeedbackPLC) { bool checkQualityInfoCompleteFlag = false; bool plcFlag = true;//åé¦ç»PLCçæ è®° string message = ""; checkQualityInfoCompleteFlag = WorkPieceInfoManager.CheckQualityInfoComplete(info, loginfo, type); if (!checkQualityInfoCompleteFlag || info.QualityState != (int)QualityStateEnum.OK) { plcFlag = false; message = !checkQualityInfoCompleteFlag ? "è·³åºï¼" : ""; message += info.QualityState != (int)QualityStateEnum.OK ? "è´¨éä¸ç¬¦å" : ""; } } else {//读ç 宿è¥å·¥ä»¶è´¨éä¸ç¬¦åæåçè·³åºï¼ä¸ç¨ç®¡è®¾å¤æ¯å¦æå·¥ä»¶æ¾è¿å»ï¼æ°éç³»ç»é½ä¸åæ´å½åå·¥åºï¼åé¦è®¾å¤PLC工件ä¸ç¬¦åï¼ //è¥å·¥åºåç»æ¶éç¹æ¶å°ç¸å ³å·¥ä»¶ä¿¡æ¯ååæ´å½åå·¥åºï¼ ä½è´¨éä¿¡æ¯ä¸å info.WorkingProcedureCurrent = loginfo.WorkingProcedure; } //*/ #endregion #region æ´æ°è®¾å¤å®æ¶è¡¨ bool isAddEquipmentCurrentMonitor = false; EquipmentCurrentMonitor equinfo = new EquipmentCurrentMonitor(); equinfo = db.EquipmentCurrentMonitor.Where(o => o.EquipmentID == loginfo.EquipmentID).FirstOrDefault(); if (equinfo == null || equinfo.Id < 1) {//没æå·¥ä»¶ä¿¡æ¯ï¼ä¸åæ´æ° Log4NetHelper.WriteErrorLog(type, $"设å¤{loginfo.EquipmentID} åè¦çæ§{loginfo.WorkingProcedure} 没æè·åå°è®¾å¤çæ§ä¿¡æ¯ï¼ç°æ°å¢"); equinfo = EntityPropHelper.Mapper<EquipmentCurrentMonitor, WorkPieceLog>(loginfo); equinfo.OnlineTime = DateTime.Now; isAddEquipmentCurrentMonitor = true; } else {//æ´æ°å·¥ä»¶ equinfo.WorkPieceID = loginfo.WorkPieceID; equinfo.UpdatedUserName = loginfo.MonitoringPoint; equinfo.UpdatedTime = DateTime.Now; equinfo.OnlineTime = DateTime.Now; } if (isAddEquipmentCurrentMonitor) { equinfo.Id = Yitter.IdGenerator.YitIdHelper.NextId(); db.EquipmentCurrentMonitor.Add(equinfo); } #endregion //db.WorkPieceLog.Add(GetAddWorkPieceLog(loginfo)); db.WorkPieceInfoLog.Add(WorkPieceInfoManager.GetAddWorkPieceInfoLog(info)); //UpdateKnifeToolLift(db, loginfo);//æ´æ°åå ·å¯¿å½ä¿¡æ¯ } else { loginfo.Remarks = $"ä¸çº¿å®æè¯»åäºç»´ç {loginfo.WorkPieceID ?? "空"}å¼å¸¸"; Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}ä¸çº¿çæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); } } catch (Exception e) { loginfo.Remarks = $"读åäºç»´ç {loginfo.WorkPieceID ?? "空"}æ´æ°æ°æ®å¼å¸¸{e.Message}"; Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}ä¸çº¿çæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼", e); } finally { loginfo.Id = Yitter.IdGenerator.YitIdHelper.NextId(); db.WorkPieceLog.Add(loginfo); //ä¿åæ°æ®åºçå¼å¸¸ææ [Editby shaocx,2024-08-29] try { db.SaveChanges(); } catch (DbEntityValidationException exception) { var errorMessages = exception.EntityValidationErrors .SelectMany(validationResult => validationResult.ValidationErrors) .Select(m => m.ErrorMessage); var fullErrorMessage = string.Join(", ", errorMessages); var exceptionMessage = string.Concat(exception.Message, " éªè¯å¼å¸¸æ¶æ¯æ¯ï¼", fullErrorMessage); Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}ä¸çº¿çæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}],ä¿åæ°æ®åºæ¶å¼å¸¸ï¼" + exceptionMessage, exception); throw new DbEntityValidationException(exceptionMessage, exception.EntityValidationErrors); } catch (Exception) { throw; } } } } } } DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/Important/WorkPiecePushOffManager.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,159 @@ 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 WorkPiecePushOffManager { /// <summary> /// 工件æ¨åºNOOK /// </summary> /// <param name="loginfo"></param> /// <param name="type"></param> public static void WorkPiecePushOff(WorkPieceLogMiddle loginfo, LogType type) { using (DbModel db = new DbModel()) { WorkPieceLog loginfo2 = new WorkPieceLog(); loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(loginfo); try { if (loginfo.WorkPieceID != null && loginfo.WorkPieceID.Trim('\0').Length == 22) { 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} 工件æ¨åºNOOKå·¥åº{loginfo.WorkingProcedure} 没æè·åå°å·¥ä»¶ä¿¡æ¯ä¸åæ´æ°"); return; } else {//æ´æ°è¡¨WorkPieceInfo if (loginfo.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åä¸ä¸ªçé®é¢ loginfo.WorkingProcedure = set_WorkingProcedureCurrent; //è§£å³OP10ï¼OP40åä¸ä¸ªçé®é¢ } else { cur_db_info.WorkingProcedureCurrent = loginfo.WorkingProcedure; cur_db_info.WorkPieceCurrentPosition = loginfo.WorkingProcedure + "NOOK"; } 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; 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 + 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 = $"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 = $"{loginfo.WorkingProcedure}å·¥åºè´¨éNOOKééæ°æ®ä¸åæ ¼{cur_db_info.QualityState}"; } else { cur_db_info.QualityErrorInfo = ""; } loginfo.QualityState = cur_db_info.QualityState; if (qualityData != null) { qualityData.OP35QualityState = loginfo.QualityState.HasValue ? loginfo.QualityState.Value.ToString() : "3"; qualityData.OP35QualityReceiveTime = DateTimeHelper.GetDateTime(); db.QualityDataInfoLog.Add(WorkPieceInfoManager.GetAddQualityDataInfoLog(qualityData)); } } //æ´æ°ä¸ä¸å·¥åºçç»ææ¶é´ 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 = "NOOKç»æ"; pro.UpdatedUserName = loginfo.MonitoringPoint; pro.UpdateDataCapturePointCname = loginfo.DataCapturePointCname; pro.UpdatedTime = DateTimeHelper.GetDateTime(); } else {//妿æ¾ä¸å°å°±æ°å»º ãEditby shaocx,2024-09-03ã WorkPieceProcess add_process = new WorkPieceProcess(); add_process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(cur_db_info); QualityStateHelper.ResetQualityNoOkForNewProcess(ref add_process); add_process.Id = Yitter.IdGenerator.YitIdHelper.NextId(); add_process.StartTime = DateTimeHelper.GetDateTime().AddSeconds(-SystemBussinessHelper.MoNiTimeForWorkingProcedure(loginfo.WorkingProcedure)); add_process.EndTime = DateTimeHelper.GetDateTime(); //ä¸åé»è®¤èµå¼ä¸ºåæ ¼ ãEditby shaocx,2024-08-16ã add_process.QualityState = WorkPieceInfoManager.GetQualityStateValue(loginfo.QualityState); add_process.CreatedUserName = loginfo.MonitoringPoint; add_process.DataCapturePointCname = loginfo.DataCapturePointCname; add_process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); add_process.UpdatedUserName = loginfo.MonitoringPoint; add_process.UpdateDataCapturePointCname = loginfo.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); db.WorkPieceInfoLog.Add(WorkPieceInfoManager.GetAddWorkPieceInfoLog(cur_db_info)); } else { loginfo2.Remarks = $"工件NOOKæ¨åºè¯»åäºç»´ç {loginfo.WorkPieceID ?? "空"}å¼å¸¸"; Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}工件NOOKæ¨åºè¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); } } catch (Exception e) { loginfo2.Remarks = $"读åäºç»´ç {loginfo.WorkPieceID ?? "空"}æ´æ°æ°æ®å¼å¸¸{e.Message}"; } db.WorkPieceLog.Add(WorkPieceInfoManager.GetAddWorkPieceLog(loginfo2));//æå ¥å·¥ä»¶é鿥å¿è¡¨ db.SaveChanges(); } } } } DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/Important/WorkPieceSPCPushOffManager.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,132 @@ 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 { /// <summary> /// 工件SPCæ½æ£æ¨åº /// </summary> /// <param name="loginfo"></param> /// <param name="type"></param> public static void WorkPieceSPCPushOff(WorkPieceLogMiddle loginfo, LogType type) { using (DbModel db = new DbModel()) { WorkPieceLog loginfo2 = new WorkPieceLog(); loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(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<WorkPieceProcess, WorkPieceInfo>(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(); } } } } } DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/Important/WorkingProcedureCompleteManager.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,272 @@ 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 WorkingProcedureCompleteManager { /// <summary> /// å·¥åºå®æ /// </summary> /// <param name="logMiddle"></param> /// <param name="type"></param> public static void WorkingProcedureComplete(WorkPieceLogMiddle logMiddle, LogType type) { using (DbModel db = new DbModel()) { if (logMiddle.WorkingProcedure.Equals("OP70")) { logMiddle.QualityState = (int)QualityStateEnum.OK; //妿æ¯OP70ï¼åé»è®¤æ¯åæ ¼ ãEditby shaocx,2024-06-25ã } WorkPieceLog loginfo2 = new WorkPieceLog(); loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(logMiddle); try { if (logMiddle.WorkPieceID != null && logMiddle.WorkPieceID.Trim('\0').Length == 22) { bool isAddWorkPieceInfo = false; WorkPieceInfo db_info = new WorkPieceInfo(); db_info = db.WorkPieceInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (db_info == null || db_info.WorkPieceID.Length < 1) {//没æå·¥ä»¶ä¿¡æ¯ï¼ä¸åæ´æ° ï¼ä¸ºäºæµè¯å å æ°å¢ï¼ Log4NetHelper.WriteErrorLog(type, $"工件{logMiddle.WorkPieceID} 工件æ¨åºå·¥åº{logMiddle.WorkingProcedure} 没æè·åå°å·¥ä»¶ä¿¡æ¯ä¸åæ´æ°"); //db.WorkPieceLog.Add(GetAddWorkPieceLog(loginfo));//æå ¥å·¥ä»¶é鿥å¿è¡¨ //db.SaveChanges(); loginfo2 = CommonManager.Instance.GetWorkPieceID(logMiddle, type); db_info = EntityPropHelper.Mapper<WorkPieceInfo, WorkPieceLog>(logMiddle); //EntityPropHelper<WorkPieceLog, WorkPieceInfo>.CopyProp(loginfo, info, loginfo.GetWorkPieceInfoDict()); if (!logMiddle.WorkingProcedure.Equals("OP05")) {//å½å·¥ä»¶äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åºä¸æ¯OP05ï¼å设置为å¯çç¶æ db_info.QualityState = (int)QualityStateEnum.Suspected; db_info.QualityErrorInfo = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{logMiddle.MonitoringPoint}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; db_info.Remarks = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{logMiddle.MonitoringPoint}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; } else { db_info.QualityState = (int)QualityStateEnum.OK;//æ¤å¤éè¦æ³¨æï¼å¤æææå·¥åºè´¨éï¼ç¶ååèµå¼ //é»è®¤åæ ¼ï¼OP05é»è®¤æ¯åæ ¼ db_info.Remarks = "OP05æ°å¢å·¥ä»¶ä¿¡æ¯"; } db_info.WorkPieceinitOnlineTime = DateTimeHelper.GetDateTime();//WorkPieceInitOnlineTime db_info.WorkingProcedurePlan = ConfigHelper.GetConfigString("WorkingProcedureAllStr") ?? "OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80"; db_info.CreatedUserName = logMiddle.MonitoringPoint; SystemBussinessHelper.SetWorkPieceInfoMiddleForCreatedUserName(ref db_info, logMiddle.DataCapturePointCname); db_info.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); db_info.WorkingProcedureCurrent = logMiddle.WorkingProcedure; db_info.WorkingProcedureEndTime = null; db_info = WorkPieceInfoManager.ParseQRCode(db_info); isAddWorkPieceInfo = true; } if (logMiddle.WorkingProcedure.Equals("OP10")) { //var WorkingProcedure = (loginfo.MonitoringPoint.Equals("OP1002") ? "OP10" : "OP40"); loginfo2.WorkingProcedure = db_info.WorkingProcedureCurrent;//è§£å³OP10ï¼OP40åä¸ä¸ªçé®é¢ logMiddle.WorkingProcedure = db_info.WorkingProcedureCurrent; //è§£å³OP10ï¼OP40åä¸ä¸ªçé®é¢ } db_info.WorkingProcedureCurrent = logMiddle.WorkingProcedure;//èµå¼ææ°å·¥åº ãEditby shaocx,2024-09-03ã db_info.UpdatedUserName = logMiddle.MonitoringPoint; SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref db_info, logMiddle.DataCapturePointCname); db_info.UpdatedTime = DateTimeHelper.GetDateTime(); db_info.WorkingProcedureCompleted = db_info.WorkingProcedureCompleted + logMiddle.WorkingProcedure;//å·²å®æå·¥åº if (!(db_info.WorkingProcedureStartTime.HasValue && db_info.WorkingProcedureStartTime > DateTime.Parse("1900/01/01"))) {//è¥ä¸ç´æ²¡æå·¥åºå¼å§æ¶é´ï¼åèµå¼å½åæ¶é´ db_info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime(); } db_info.WorkingProcedureEndTime = DateTimeHelper.GetDateTime(); db_info.WorkPieceCurrentPositionOrder = db_info.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure) / 2; db_info.Remarks = $"{logMiddle.WorkingProcedure}å·¥åºå®æ"; long op80id = 0; if (logMiddle.WorkingProcedure.Equals("OP80")) { db_info.WorkPieceState = (int)WorkPieceState.FinishedProducts; db_info.WorkPieceLastOfflineTime = DateTimeHelper.GetDateTime(); db_info.WorkPieceCurrentPosition = "OP80"; db_info.CompleteTime = DateTimeHelper.GetDateTime(); db_info.OP80NewCode = logMiddle.OP80NewCode; //è´¨æ£æ°æ®æ¹ä¸º è·åæä»¶åä¿®æ¹ ãEditby shaocx,2024-06-15ã /* info.QualityState = (int)((loginfo.QualityStateStr.Equals("OK") || loginfo.QualityStateStr.Equals("0K")) ? QualityState.OK : QualityState.NG); loginfo.QualityState = info.QualityState; info.QualityStateUpdateUser = loginfo.UpdatedUserName; info.QualityStateUpdateTime = loginfo.UpdatedTime.Value.LocalDateTime; info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString(); //*/ var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1) {//æå ¥QualityDataInfo表 qualityData = EntityPropHelper.Mapper<QualityDataInfo, WorkPieceLog>(logMiddle); db.QualityDataInfo.Add(WorkPieceInfoManager.GetAddQualityDataInfo(qualityData)); } //ä¿®æ¹QualityDataInfo表 //é夿¶å°è´¨éä¿¡æ¯ï¼ä¼è¦çä¹åç EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.CopyProp(logMiddle, qualityData, WorkPieceInfoManager.GetQualityDataInfoUpdate(logMiddle, logMiddle.WorkingProcedure, logMiddle.MonitoringPoint));//æå®ä¿®æ¹å段 //è´¨æ£æ°æ®æ¹ä¸º è·åæä»¶åä¿®æ¹ ãEditby shaocx,2024-06-15ã /* qualityData.QualityStateUpdateUser = info.UpdatedUserName; qualityData.QualityReceiveTime = info.UpdatedTime.Value.LocalDateTime; qualityData.QualityStateUpdateMode = info.QualityStateUpdateMode; qualityData.OP80QualityState = loginfo.QualityState.HasValue ? loginfo.QualityState.Value.ToString() : "3"; qualityData.OP80QualityReceiveTime = DateTimeHelper.GetDateTime(); qualityData.OP80QualityFilePath = loginfo.OP80QualityFilePath; op80id = qualityData.Id; loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"è´¨éï¼{loginfo.QualityStateStr ?? "空"}"; if (!info.QualityState.Equals(((int)QualityState.OK).ToString())) { info.QualityErrorInfo = $"{loginfo.WorkingProcedure}å·¥åºè´¨éééæ°æ®ä¸åæ ¼"; } else { info.QualityErrorInfo = ""; } //*/ loginfo2.Remarks = $"æµéåæ ¼ç¶æ:{logMiddle.St3_Means_OK},ç§°éç¶æ:{logMiddle.St4_Weight_OK}"; } else if (logMiddle.WorkingProcedure.Equals("OP30")) { db_info.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityStateEnum.OK : QualityStateEnum.NG); logMiddle.QualityState = db_info.QualityState; db_info.QualityStateUpdateUser = logMiddle.UpdatedUserName; db_info.QualityStateUpdateTime = logMiddle.UpdatedTime.Value.LocalDateTime; db_info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString(); var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1) {//æå ¥QualityDataInfo表 qualityData = EntityPropHelper.Mapper<QualityDataInfo, WorkPieceLog>(logMiddle); db.QualityDataInfo.Add(WorkPieceInfoManager.GetAddQualityDataInfo(qualityData)); } qualityData.QualityStateUpdateUser = db_info.UpdatedUserName; qualityData.QualityReceiveTime = db_info.UpdatedTime.Value.LocalDateTime; qualityData.QualityStateUpdateMode = db_info.QualityStateUpdateMode; qualityData.OP30QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP30QualityReceiveTime = DateTimeHelper.GetDateTime(); loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"è´¨éï¼{logMiddle.QualityStateStr ?? "空"}"; if (!db_info.QualityState.Equals(((int)QualityStateEnum.OK).ToString())) { db_info.QualityErrorInfo = $"{logMiddle.WorkingProcedure}å·¥åºè´¨éééæ°æ®ä¸åæ ¼"; } else { db_info.QualityErrorInfo = ""; } } else { //è¿éä¿®å¤OP10ãOP40 å 为PLCå æ¨ SPCæ¨åºã忍 产åä¸çº¿é®é¢ï¼å¯¼è´ 产åä¸çº¿æ´æ°æ°æ®æ¶ï¼æSPCæ°æ®è¦ççé®é¢ ãEditby shaocx,2024-08-27ã var isAlow = SystemBussinessHelper.IsAllowUpdateWorkPieceStateToWip(db_info, db, logMiddle); if (isAlow) { db_info.WorkPieceState = (int)WorkPieceState.WIP; } if (db_info.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure) + 4 <= db_info.WorkingProcedurePlan.Length) { db_info.WorkPieceCurrentPosition = db_info.WorkingProcedurePlan.Substring(db_info.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure), 8); } } var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == logMiddle.WorkPieceID && o.WorkingProcedureCurrent == db_info.WorkingProcedureCurrent && o.OperationType == OperationType.ç产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault(); if (pro == null || pro.WorkPieceID.Length < 1) { WorkPieceProcess add_process = new WorkPieceProcess(); add_process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(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(); if (logMiddle.WorkingProcedure.Equals("OP80")) {//OP80çè´¨éæ°æ®æ¯åæ¥è·åæä»¶æç //è´¨æ£æ°æ®ï¼åèè å¦å¤ä¸¤ç§ç¶æ ãEditby shaocx,2024-08-27ã QualityStateHelper.SetQualityStateForOP80(logMiddle, ref db_info, ref add_process); } else { //ä¸åé»è®¤èµå¼ä¸ºåæ ¼ ãEditby shaocx,2024-08-16ã //process.QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value : (int)QualityState.OK;//é»è®¤åæ ¼ï¼å·²å¤ç add_process.QualityState = WorkPieceInfoManager.GetQualityStateValue(logMiddle.QualityState); } add_process.CreatedUserName = logMiddle.MonitoringPoint; 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 = ""; add_process.MyRemarks = "å·¥åºå®ææ¶ï¼å¦ææ¾ä¸å°å°±æ°å»º"; if (logMiddle.WorkingProcedure.Equals("OP80")) { add_process.GetQcDataFlag = logMiddle.GetQcDataFlag;//èµå¼æ è®° [Editby shaocx,2024-06-15] } if (op80id > 0) { add_process.QualityDataInfoID = op80id; } db.WorkPieceProcess.Add(add_process); } else { if (logMiddle.WorkingProcedure.Equals("OP80")) {//OP80çè´¨éæ°æ®æ¯åæ¥è·åæä»¶æç //è´¨æ£æ°æ®ï¼åèè å¦å¤ä¸¤ç§ç¶æ ãEditby shaocx,2024-08-27ã QualityStateHelper.SetQualityStateForOP80(logMiddle, ref db_info, ref pro); } if (op80id > 0) { pro.QualityDataInfoID = op80id; } pro.EndTime = DateTimeHelper.GetDateTime(); pro.UpdatedUserName = logMiddle.MonitoringPoint; pro.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname; pro.UpdatedTime = DateTimeHelper.GetDateTime(); if (logMiddle.WorkingProcedure.Equals("OP80")) { if (pro.GetQcDataFlag != 0) { pro.GetQcDataFlag = logMiddle.GetQcDataFlag;//èµå¼æ è®° [Editby shaocx,2024-06-15] } } } if (isAddWorkPieceInfo) { db.WorkPieceInfo.Add(db_info); } db.WorkPieceInfoLog.Add(WorkPieceInfoManager.GetAddWorkPieceInfoLog(db_info)); } else { loginfo2.Remarks = $"ä¸çº¿å®æè¯»åäºç»´ç {logMiddle.WorkPieceID ?? "空"}å¼å¸¸"; Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}å·¥åºä¸çº¿ 读åå·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); } } catch (Exception e) { loginfo2.Remarks = $"读åäºç»´ç {logMiddle.WorkPieceID ?? "空"}æ´æ°æ°æ®å¼å¸¸{e.Message}"; } db.WorkPieceLog.Add(WorkPieceInfoManager.GetAddWorkPieceLog(loginfo2));//æå ¥å·¥ä»¶é鿥å¿è¡¨ db.SaveChanges(); } } } } DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
@@ -156,267 +156,7 @@ } } /// <summary> /// 读åäºç»´ç æ¶é»è¾ /// æ ¡éªå·¥ä»¶æ¯å¦è·³åºï¼è´¨éæ¯å¦åæ ¼ /// </summary> public static void ReadQRcode(WorkPieceLog loginfo, LogType type, PLCService plcService, int? IsFeedback) {//æ¤å¤åæ¶æå ¥äºWorkPieceLogï¼WorkPieceInfoLog表ï¼å¹¶æ°å¢æä¿®æ¹WorkPieceInfo表 using (DbModel db = new DbModel()) { try { bool isAddWorkPieceInfo = false; if (loginfo.WorkPieceID.Length == 22) { WorkPieceInfo info = new WorkPieceInfo(); info = db.WorkPieceInfo.Where(o => o.WorkPieceID == loginfo.WorkPieceID).FirstOrDefault(); if (info == null || info.WorkPieceID.Length < 1) {//æå ¥WorkPieceInfo表 loginfo = CommonManager.Instance.GetWorkPieceID(loginfo, type); info = EntityPropHelper.Mapper<WorkPieceInfo, WorkPieceLog>(loginfo); //EntityPropHelper<WorkPieceLog, WorkPieceInfo>.CopyProp(loginfo, info, loginfo.GetWorkPieceInfoDict()); if (!loginfo.WorkingProcedure.Equals("OP05")) {//å½å·¥ä»¶äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åºä¸æ¯OP05ï¼å设置为å¯çç¶æ info.QualityState = (int)QualityStateEnum.Suspected; info.QualityErrorInfo = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{loginfo.MonitoringPoint}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; info.Remarks = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{loginfo.WorkingProcedure}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; } else {//OP05å·¥åº info.QualityState = (int)QualityStateEnum.OK;//æ¤å¤éè¦æ³¨æï¼å¤æææå·¥åºè´¨éï¼ç¶ååèµå¼ //é»è®¤åæ ¼ï¼OP05é»è®¤æ¯åæ ¼ info.Remarks = "OP05æ°å¢å·¥ä»¶ä¿¡æ¯"; } 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); isAddWorkPieceInfo = true; } else { //åå¨ è¡¨ WorkPieceInfoæï¼ä½æ¯ WorkPieceProcessè¿ä¸ªå·¥åºä¸åå¨çæ åµ ãEditby shaocx,2024-09-06ã //if (info.WorkingProcedureCurrent.Equals("OP05")) //{ // loginfo.Remarks = $"读åäºç»´ç {loginfo.WorkPieceID ?? "空"} OP05å·¥åºéå¤è¯»åäº"; // return; //} } if ((loginfo.WorkingProcedure.Equals("OP05") && isAddWorkPieceInfo == false)) {//åå¨ è¡¨ WorkPieceInfoæï¼ä½æ¯ WorkPieceProcessè¿ä¸ªå·¥åºä¸åå¨çæ åµ //妿æ¯OP05çï¼å¹¶ä¸æ¯ ä¸éè¦æ°å¢ 表WorkPieceInfoï¼é£ä¹å°±ä¸éè¦æ´æ°è¡¨ WorkPieceInfo } else { info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();// info.WorkingProcedureEndTime = null; info.WorkPieceState = (int)WorkPieceState.WIP; info.EquipmentID = loginfo.EquipmentID; info.QualityStateUpdateUser = loginfo.UpdatedUserName; 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; info.WorkingProcedureCurrent = loginfo.WorkingProcedure;//å·¥åºèµå¼ info.Remarks = $"{info.WorkingProcedureCurrent}工件ä¸çº¿"; } //ä¿®å¤ä¸ op35 åä¸ä¸ªä»¶ ä¸çº¿æ¶é´è·ä¸ä¸ä¸ªä¸çº¿æ¶é´ä¸æ¨¡ä¸æ ·çé®é¢ ãEditby shaocx,2024-08-27ã var isNeedAddNewProcess = true; //ç¹æ®å¤çOP05ä¸çº¿ï¼å ä¸ºä»æ¯æ ¹æ®ææ¬å表å 容ä¸çº¿ç ãEditby shaocx,2024-09-03ã if (loginfo.WorkingProcedure.Equals("OP05")) { var op05Proccss = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID && o.WorkingProcedureCurrent == loginfo.WorkingProcedure).FirstOrDefault(); 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) { //æ¯æ¬¡æ«æä¸çº¿é½æå ¥è¿½æº¯è¡¨ WorkPieceProcess new_process = new WorkPieceProcess(); new_process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(info); QualityStateHelper.ResetQualityNoOkForNewProcess(ref new_process); new_process.StartTime = DateTimeHelper.GetDateTime(); //ä¸åé»è®¤èµå¼ä¸ºåæ ¼ ãEditby shaocx,2024-08-16ã //process.QualityState = info.QualityState.HasValue ? info.QualityState.Value : (int)QualityState.OK;//é»è®¤åæ ¼ï¼å·²å¤ç new_process.QualityState = GetQualityStateValue(info.QualityState); if (new_process.WorkingProcedureCurrent == WorkingProcedureForHMI.OP70.ToString()) { //ç¹æ®å¤çOP70ï¼å 为OP70æ²¡ææµéï¼é»è®¤åæ ¼ [Editby shaocx,2024-07-03] new_process.QualityState = (int)QualityStateEnum.OK;//é»è®¤åæ ¼ï¼OP70é»è®¤æ¯åæ ¼ } new_process.Id = Yitter.IdGenerator.YitIdHelper.NextId(); new_process.CreatedUserName = loginfo.MonitoringPoint; new_process.DataCapturePointCname = loginfo.DataCapturePointCname; new_process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); new_process.UpdatedUserName = loginfo.MonitoringPoint; new_process.UpdateDataCapturePointCname = loginfo.DataCapturePointCname; new_process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); new_process.OperationType = OperationType.ç产.ToString(); new_process.Remarks = ""; new_process.MyRemarks = "读ç ä¸çº¿æ¶ï¼æ¯æ¬¡æ«æä¸çº¿é½æå ¥è¿½æº¯è¡¨"; if (loginfo.WorkingProcedure.Equals("OP05")) {//ç¹æ®å¤çOP05å·¥åº new_process.EndTime = new_process.StartTime; //妿已ç»åå¨å ¶ä»å·¥åºï¼é£ä¹å°±å¿ é¡»è¦æç §å ¶ä»å·¥åºçæ¶é´å¾åæ¨æ°æ® ãEditby shaocx,2024-09-05ã var op05OtherProccss = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID).OrderBy(x => x.StartTime).FirstOrDefault(); if (op05OtherProccss != null) {//说ææï¼é£ä¹æ¶é´å°±æç §è¿ä¸ªæ¶é´å¾åæ¨ var _time = op05OtherProccss.StartTime.AddHours(-1); new_process.StartTime = _time; new_process.EndTime = _time; new_process.CreatedTime = _time; new_process.UpdatedTime = _time; } } db.WorkPieceProcess.Add(new_process); } //db.Database.AutoTransactionsEnabled = false;// åä¸ä¸ªSaveChangesé»è®¤äºå¡ï¼ å ³éé»è®¤äºå¡ï¼... 好åä¸è½ç¨åï¼åé¢åç ç©¶å§ if (isAddWorkPieceInfo) { db.WorkPieceInfo.Add(info); } else {//ä¸ç¡®å®infoæ¯ç´æ¥ä¼ä¿®æ¹è¿æ¯éè¦å次æ¥è¯¢ï¼å¾ æµè¯ //info.Remarks = "ä¿®æ¹ï¼å ·ä½ä¿®æ¹é»è¾å¾ å®"; } #region 夿æ¯å¦è·³åº,æè´¨éä¸ç¬¦å ç¶ååé¦PLC /* if (IsFeedback.HasValue && IsFeedback.Value == (int)FeedbackMode.FeedbackPLC) { bool checkQualityInfoCompleteFlag = false; bool plcFlag = true;//åé¦ç»PLCçæ è®° string message = ""; checkQualityInfoCompleteFlag = WorkPieceInfoManager.CheckQualityInfoComplete(info, loginfo, type); if (!checkQualityInfoCompleteFlag || info.QualityState != (int)QualityStateEnum.OK) { plcFlag = false; message = !checkQualityInfoCompleteFlag ? "è·³åºï¼" : ""; message += info.QualityState != (int)QualityStateEnum.OK ? "è´¨éä¸ç¬¦å" : ""; } } else {//读ç 宿è¥å·¥ä»¶è´¨éä¸ç¬¦åæåçè·³åºï¼ä¸ç¨ç®¡è®¾å¤æ¯å¦æå·¥ä»¶æ¾è¿å»ï¼æ°éç³»ç»é½ä¸åæ´å½åå·¥åºï¼åé¦è®¾å¤PLC工件ä¸ç¬¦åï¼ //è¥å·¥åºåç»æ¶éç¹æ¶å°ç¸å ³å·¥ä»¶ä¿¡æ¯ååæ´å½åå·¥åºï¼ ä½è´¨éä¿¡æ¯ä¸å info.WorkingProcedureCurrent = loginfo.WorkingProcedure; } //*/ #endregion #region æ´æ°è®¾å¤å®æ¶è¡¨ bool isAddEquipmentCurrentMonitor = false; EquipmentCurrentMonitor equinfo = new EquipmentCurrentMonitor(); equinfo = db.EquipmentCurrentMonitor.Where(o => o.EquipmentID == loginfo.EquipmentID).FirstOrDefault(); if (equinfo == null || equinfo.Id < 1) {//没æå·¥ä»¶ä¿¡æ¯ï¼ä¸åæ´æ° Log4NetHelper.WriteErrorLog(type, $"设å¤{loginfo.EquipmentID} åè¦çæ§{loginfo.WorkingProcedure} 没æè·åå°è®¾å¤çæ§ä¿¡æ¯ï¼ç°æ°å¢"); equinfo = EntityPropHelper.Mapper<EquipmentCurrentMonitor, WorkPieceLog>(loginfo); equinfo.OnlineTime = DateTime.Now; isAddEquipmentCurrentMonitor = true; } else {//æ´æ°å·¥ä»¶ equinfo.WorkPieceID = loginfo.WorkPieceID; equinfo.UpdatedUserName = loginfo.MonitoringPoint; equinfo.UpdatedTime = DateTime.Now; equinfo.OnlineTime = DateTime.Now; } if (isAddEquipmentCurrentMonitor) { equinfo.Id = Yitter.IdGenerator.YitIdHelper.NextId(); db.EquipmentCurrentMonitor.Add(equinfo); } #endregion //db.WorkPieceLog.Add(GetAddWorkPieceLog(loginfo)); db.WorkPieceInfoLog.Add(GetAddWorkPieceInfoLog(info)); //UpdateKnifeToolLift(db, loginfo);//æ´æ°åå ·å¯¿å½ä¿¡æ¯ } else { loginfo.Remarks = $"ä¸çº¿å®æè¯»åäºç»´ç {loginfo.WorkPieceID ?? "空"}å¼å¸¸"; Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}ä¸çº¿çæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); } } catch (Exception e) { loginfo.Remarks = $"读åäºç»´ç {loginfo.WorkPieceID ?? "空"}æ´æ°æ°æ®å¼å¸¸{e.Message}"; Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}ä¸çº¿çæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼", e); } finally { loginfo.Id = Yitter.IdGenerator.YitIdHelper.NextId(); db.WorkPieceLog.Add(loginfo); //ä¿åæ°æ®åºçå¼å¸¸ææ [Editby shaocx,2024-08-29] try { db.SaveChanges(); } catch (DbEntityValidationException exception) { var errorMessages = exception.EntityValidationErrors .SelectMany(validationResult => validationResult.ValidationErrors) .Select(m => m.ErrorMessage); var fullErrorMessage = string.Join(", ", errorMessages); var exceptionMessage = string.Concat(exception.Message, " éªè¯å¼å¸¸æ¶æ¯æ¯ï¼", fullErrorMessage); Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}ä¸çº¿çæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}],ä¿åæ°æ®åºæ¶å¼å¸¸ï¼" + exceptionMessage, exception); throw new DbEntityValidationException(exceptionMessage, exception.EntityValidationErrors); } catch (Exception) { throw; } } } } public static WorkPieceLogMiddle QualityDataHand(WorkPieceLogMiddle loginfo, List<EquipmentQualityConfig> qcofig) { try @@ -510,436 +250,7 @@ return loginfo; } /// <summary> /// è´¨éæ£æµå®æ /// </summary> /// <param name="logMiddle"></param> /// <param name="type"></param> public static void QualityInfoComplete(WorkPieceLogMiddle logMiddle, LogType type) { //æ ¹æ®è´¨éæ°æ®å¤ææ¯å¦åæ ¼/ä¸åæ ¼ ãEditby shaocx,2024-06-25ã WorkPieceInfoManager.SetLogMiddleForQuality(ref logMiddle); //æ¤å¤åæ¶æå ¥äºWorkPieceLogï¼WorkPieceInfoLog表ï¼å¹¶æ°å¢æä¿®æ¹WorkPieceInfo表 //æå ¥è´¨éç¸å ³è¡¨QualityDataInfo using (DbModel db = new DbModel()) { bool isAddWorkPieceInfo = false; WorkPieceLog loginfo2 = new WorkPieceLog(); loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(logMiddle); try { if (logMiddle.WorkPieceID.Length == 22) {//è·åå°ç工件å·å¼å¸¸ WorkPieceInfo pieceInfo = new WorkPieceInfo(); pieceInfo = db.WorkPieceInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (pieceInfo == null || pieceInfo.WorkPieceID.Length < 1) {//没æå·¥ä»¶ä¿¡æ¯ï¼ä¸åæ´æ° if (logMiddle.MonitoringPoint.Equals("OP1002") || logMiddle.MonitoringPoint.Equals("OP1003") || logMiddle.MonitoringPoint.Contains("OP2002")) {//OP10 没æä¸çº¿æ«ç æªï¼çº¦å®ç¨æµéå®æä¿¡å·å½ä¸çº¿æ è®° pieceInfo = EntityPropHelper.Mapper<WorkPieceInfo, WorkPieceLogMiddle>(logMiddle); //EntityPropHelper<WorkPieceLog, WorkPieceInfo>.CopyProp(loginfo, info, loginfo.GetWorkPieceInfoDict()); if (!logMiddle.WorkingProcedure.Equals("OP05")) {//å½å·¥ä»¶äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åºä¸æ¯OP05ï¼å设置为å¯çç¶æ pieceInfo.QualityState = (int)QualityStateEnum.Suspected; pieceInfo.QualityErrorInfo = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{logMiddle.MonitoringPoint}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; pieceInfo.Remarks = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{logMiddle.WorkingProcedure}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; } else { pieceInfo.QualityState = (int)QualityStateEnum.OK;//æ¤å¤éè¦æ³¨æï¼å¤æææå·¥åºè´¨éï¼ç¶ååèµå¼ //é»è®¤åæ ¼ï¼OP05é»è®¤æ¯åæ ¼ pieceInfo.Remarks = "OP05æ°å¢å·¥ä»¶ä¿¡æ¯"; } 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; pieceInfo = ParseQRCode(pieceInfo); isAddWorkPieceInfo = true; } else { loginfo2.Remarks = $"|工件{logMiddle.WorkPieceID} è´¨éæ£æµå®æå·¥åº{logMiddle.MonitoringPoint} 没æè·åå°å·¥ä»¶ä¿¡æ¯ä¸åæ´æ°"; Log4NetHelper.WriteErrorLog(type, $"工件{logMiddle.WorkPieceID} è´¨éæ£æµå®æå·¥åº{logMiddle.MonitoringPoint} 没æè·åå°å·¥ä»¶ä¿¡æ¯ä¸åæ´æ°"); return; } } if (logMiddle.MonitoringPoint.Equals("OP1002") || logMiddle.MonitoringPoint.Equals("OP1003") || logMiddle.MonitoringPoint.Contains("OP2002")) {// OP10 没æä¸çº¿æ«ç æªï¼çº¦å®ç¨æµéå®æä¿¡å·å½ä¸çº¿æ è®°ï¼æä»¥ä¸çº¿éè¦ä¿®æ¹çåæ®µæ¾è¿é if (logMiddle.WorkingProcedure.Equals("OP10")) { var WorkingProcedure = (logMiddle.MonitoringPoint.Equals("OP1002") ? "OP10" : "OP40"); loginfo2.WorkingProcedure = WorkingProcedure;//è§£å³OP10ï¼OP40åä¸ä¸ªçé®é¢ logMiddle.WorkingProcedure = WorkingProcedure;//è§£å³OP10ï¼OP40åä¸ä¸ªçé®é¢ } pieceInfo.WorkPieceCurrentPosition = logMiddle.WorkingProcedure; pieceInfo.WorkPieceCurrentPositionOrder = pieceInfo.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure) / 2; pieceInfo.WorkingProcedureCurrent = logMiddle.WorkingProcedure; pieceInfo.WorkingProcedureStartTime = DateTimeHelper.GetDateTime(); #region æ´æ°è®¾å¤å®æ¶è¡¨ bool isAddEquipmentCurrentMonitor = false; EquipmentCurrentMonitor equinfo = new EquipmentCurrentMonitor(); equinfo = db.EquipmentCurrentMonitor.Where(o => o.EquipmentID == logMiddle.EquipmentID).FirstOrDefault(); if (equinfo == null || equinfo.Id < 1) {//没æå·¥ä»¶ä¿¡æ¯ï¼ä¸åæ´æ° Log4NetHelper.WriteErrorLog(type, $"设å¤{logMiddle.EquipmentID} åè¦çæ§{logMiddle.WorkingProcedure} 没æè·åå°è®¾å¤çæ§ä¿¡æ¯ï¼ç°æ°å¢"); equinfo = EntityPropHelper.Mapper<EquipmentCurrentMonitor, WorkPieceLog>(logMiddle); equinfo.OnlineTime = DateTime.Now; isAddEquipmentCurrentMonitor = true; } else {//æ´æ°å·¥ä»¶ equinfo.WorkPieceID = logMiddle.WorkPieceID; equinfo.UpdatedUserName = ResetUpdatedUserName(logMiddle); equinfo.UpdatedTime = DateTime.Now; equinfo.OnlineTime = DateTime.Now; } if (isAddEquipmentCurrentMonitor) { equinfo.Id = Yitter.IdGenerator.YitIdHelper.NextId(); db.EquipmentCurrentMonitor.Add(equinfo); } #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.QualityStateUpdateTime = logMiddle.UpdatedTime.Value.LocalDateTime; 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"))) {//å·¥åºå¼å§æ¶é´æ²¡æåèµå¼ pieceInfo.WorkingProcedureStartTime = DateTimeHelper.GetDateTime(); } pieceInfo.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityStateEnum.OK : QualityStateEnum.NG); //èµå¼ä¸åæ ¼åå SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); if (!pieceInfo.QualityState.Equals(((int)QualityStateEnum.OK).ToString())) { pieceInfo.QualityErrorInfo = $"{logMiddle.WorkingProcedure}å·¥åºè´¨éééæ°æ®ä¸åæ ¼{pieceInfo.QualityState}"; } else { pieceInfo.QualityErrorInfo = ""; } logMiddle.QualityState = pieceInfo.QualityState; if (isAddWorkPieceInfo) { db.WorkPieceInfo.Add(pieceInfo); } #region æ ¹æ®æ å弿´æ°ææ°è´¨éæ°æ®ï¼OP10/OP40/OP20/OP60ï¼ var qcofig = db.EquipmentQualityConfig.Where(o => o.WorkingProcedure.Equals(logMiddle.WorkingProcedure) && o.ParamType != 1 && o.IsDeleted == false).ToList(); if (qcofig.Count > 0) { QualityDataHand(logMiddle, qcofig); } #endregion var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1) {//æå ¥QualityDataInfo表 qualityData = EntityPropHelper.Mapper<QualityDataInfo, WorkPieceLog>(logMiddle); db.QualityDataInfo.Add(GetAddQualityDataInfo(qualityData)); } //ä¿®æ¹QualityDataInfo表 //é夿¶å°è´¨éä¿¡æ¯ï¼ä¼è¦çä¹åç EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.CopyProp(logMiddle, qualityData, GetQualityDataInfoUpdate(logMiddle, logMiddle.WorkingProcedure, logMiddle.MonitoringPoint));//æå®ä¿®æ¹å段 qualityData.QualityStateUpdateUser = pieceInfo.UpdatedUserName; qualityData.QualityReceiveTime = pieceInfo.UpdatedTime.Value.LocalDateTime; qualityData.QualityStateUpdateMode = pieceInfo.QualityStateUpdateMode; if (logMiddle.WorkingProcedure.Equals("OP10")) { qualityData.OP10QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP10QualityReceiveTime = DateTimeHelper.GetDateTime(); } else if (logMiddle.WorkingProcedure.Equals("OP20")) { //Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}è´¨éä¿¡æ¯ã{loginfo.QualityStateStr ?? "空"}ã" + // $"ã{(loginfo.QualityState.HasValue? loginfo.QualityState.Value:999)}ãã{(info.QualityState.HasValue ? info.QualityState.Value : 888)}ã 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}]"); qualityData.OP20QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP20QualityReceiveTime = DateTimeHelper.GetDateTime(); qualityData.OP20QualityFilePath = logMiddle.OP20QualityFilePath; } else if (logMiddle.WorkingProcedure.Equals("OP30")) { switch (logMiddle.MonitoringPoint) { case "OP3002CH3": qualityData.OP30QualityFilePathCH3 = logMiddle.OP30QualityFilePathCH3; qualityData.OP30QualityStateCH3 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP30QualityReceiveTimeCH3 = DateTimeHelper.GetDateTime(); if (qualityData.OP30QualityStateCH3 == ((int)QualityStateEnum.NG).ToString()) { logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30涨æå·¥ä½åç©è¶ å·®; logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30涨æå·¥ä½åç©è¶ å·®.ToString(); //èµå¼ä¸åæ ¼åå SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); } break; case "OP3002CH4": qualityData.OP30QualityFilePathCH4 = logMiddle.OP30QualityFilePathCH4; qualityData.OP30QualityStateCH4 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP30QualityReceiveTimeCH4 = DateTimeHelper.GetDateTime(); if (qualityData.OP30QualityStateCH4 == ((int)QualityStateEnum.NG).ToString()) { logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30颿§ç´§å·¥ä½åç©è¶ å·®; logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30颿§ç´§å·¥ä½åç©è¶ å·®.ToString(); //èµå¼ä¸åæ ¼åå SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); } break; case "OP3002CH5": qualityData.OP30QualityFilePathCH5 = logMiddle.OP30QualityFilePathCH5; qualityData.OP30QualityStateCH5 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP30QualityReceiveTimeCH5 = DateTimeHelper.GetDateTime(); if (qualityData.OP30QualityStateCH5 == ((int)QualityStateEnum.NG).ToString()) { logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30ç»æ§ç´§å·¥ä½åç©è¶ å·®; logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30ç»æ§ç´§å·¥ä½åç©è¶ å·®.ToString(); //èµå¼ä¸åæ ¼åå SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); } break; case "OP3002CH6": qualityData.OP30QualityFilePathCH6 = logMiddle.OP30QualityFilePathCH6; qualityData.OP30QualityStateCH6 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP30QualityReceiveTimeCH6 = DateTimeHelper.GetDateTime(); if (qualityData.OP30QualityStateCH6 == ((int)QualityStateEnum.NG).ToString()) { logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30å衬å¥å·¥ä½åç©è¶ å·®; logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30å衬å¥å·¥ä½åç©è¶ å·®.ToString(); //èµå¼ä¸åæ ¼åå SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo); } break; default: break; } //qualityData.OP30QualityState = loginfo.QualityState.HasValue ? loginfo.QualityState.Value.ToString() : "3"; //qualityData.OP30QualityReceiveTime = DateTimeHelper.GetDateTime(); } else if (logMiddle.WorkingProcedure.Equals("OP35")) { qualityData.OP35QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP35QualityReceiveTime = DateTimeHelper.GetDateTime(); } else if (logMiddle.WorkingProcedure.Equals("OP40")) { qualityData.OP40QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP40QualityReceiveTime = DateTimeHelper.GetDateTime(); } else if (logMiddle.WorkingProcedure.Equals("OP60")) { qualityData.OP60QualityFilePath = logMiddle.OP60QualityFilePath; qualityData.OP60QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP60QualityReceiveTime = DateTimeHelper.GetDateTime(); } else if (logMiddle.WorkingProcedure.Equals("OP80")) { qualityData.OP80QualityFilePath = logMiddle.OP80QualityFilePath; qualityData.OP80QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP80QualityReceiveTime = DateTimeHelper.GetDateTime(); } 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 没æä¸çº¿æ«ç æªï¼çº¦å®ç¨æµéå®æä¿¡å·å½ä¸çº¿æ è®°ï¼æä»¥ä¸çº¿éè¦ä¿®æ¹çåæ®µæ¾è¿é //ä¸çº¿æ¯æ¯æ¬¡é½æå ¥ WorkPieceProcess process_05 = WorkPieceProcessHelper.CreateWorkPieceProcessForOP05(logMiddle, db, pieceInfo); if (process_05 != null) {//å建OP05å·¥åºï¼å½æ²¡æ05å·¥åºæ¶,æå建 ãEditby shaocx,2024-08-29ã db.WorkPieceProcess.Add(process_05); } WorkPieceProcess process = new WorkPieceProcess(); process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(pieceInfo); QualityStateHelper.ResetQualityNoOkForNewProcess(ref process); process.StartTime = DateTimeHelper.GetDateTime(); //ä¸åé»è®¤èµå¼ä¸ºåæ ¼ ãEditby shaocx,2024-08-16ã //process.QualityState = pieceInfo.QualityState.HasValue ? pieceInfo.QualityState.Value : (int)QualityState.OK;//é»è®¤åæ ¼ï¼å·²å¤ç process.QualityState = WorkPieceInfoManager.GetQualityStateValue(pieceInfo.QualityState); //è®°å½è´¨éä¸åæ ¼åå ãEditby shaocx,2024-06-26ã //èµå¼ä¸åæ ¼åå SetQualityNoOk_WorkPieceProcess(logMiddle, ref process); process.Id = Yitter.IdGenerator.YitIdHelper.NextId(); process.CreatedUserName = ResetUpdatedUserName(logMiddle); process.DataCapturePointCname = logMiddle.DataCapturePointCname; process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); process.UpdatedUserName = ResetUpdatedUserName(logMiddle); process.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname; process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); process.OperationType = OperationType.ç产.ToString(); process.QualityDataInfoID = qualityData.Id; process.Remarks = ""; process.MyRemarks = "è´¨éæ£æµå®ææ¶ï¼å¦ææ¾ä¸å°å°±æ°å»º"; db.WorkPieceProcess.Add(process); } else {//å ¶ä»çé½åªæ¯ä¿®æ¹ pro.QualityDataInfoID = qualityData.Id; pro.UpdatedUserName = ResetUpdatedUserName(logMiddle); pro.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname; pro.UpdatedTime = DateTimeHelper.GetDateTime(); //ä¸åé»è®¤èµå¼ä¸ºåæ ¼ ãEditby shaocx,2024-08-16ã //pro.QualityState = pieceInfo.QualityState.HasValue ? pieceInfo.QualityState.Value : 9; pro.QualityState = WorkPieceInfoManager.GetQualityStateValue(pieceInfo.QualityState); //èµå¼ä¸åæ ¼åå SetQualityNoOk_WorkPieceProcess(logMiddle, ref pro); //TODO:夿妿æ¯60å·¥åºï¼é£ä¹å°±è¦æ´æ°pro表çå建人为loginfo.MonitoringPoint ãEditby shaocx,2024-06-05ã if (logMiddle.WorkingProcedure == "OP60") { pro.CreatedUserName = ResetUpdatedUserName(logMiddle); pro.DataCapturePointCname = logMiddle.DataCapturePointCname; } } if (logMiddle.QualityType != null && logMiddle.QualityType.Equals(QualityType.SPC.ToString())) {//SPCåé¦ï¼ if (logMiddle.QualityState != (int)QualityStateEnum.OK) { //彿å°å·¥åºæ£æµå°ä¸åæ ¼å·¥ä»¶æ¶ï¼ä»è¯¥å·¥ä»¶å 工宿æ¶å»åæå®æ¶é´èµ·è³æ¥æ£ä¸åæ ¼æ¶é´æ¢ï¼ç³»ç»å°è¯¥å·¥ä»¶çæåå 工工åºå¨è¯¥æ¶é´æ®µå å å·¥çææå·¥ä»¶ãæ£å¨å å·¥ç工件ã该工åºå ¥å£å¤ç第ä¸ä¸ªå·¥ä»¶å ¨é¨æ 记为çä¼¼ç¶æï¼ç±äººå·¥å¤æ£å·¥ä»¶å¹¶ä¿®æ¹ç¶æï¼å¹¶æ¯ææ¹éåæ´ã //çå¤ï¼å¨çº¿æµéä¸éè¦èµ°è¿ä¸ªæµç¨ï¼åªæSPCæ½æ£æéè¦ï¼éè¦æè¿æ¶é´æ®µçå·¥ä»¶å ¨é¨ç½®ä¸ºçä¼¼ï¼åªææ¯å·²å®æå·¥ä»¶ //æ¶é´æ®µèµ·å§æ¶é´ï¼æ½æ£å·¥ä»¶ç产æ¶é´åä¸SPCæ½æ£æ¶é´ //æ¶é´æ®µç»ææ¶é´ï¼æ½æ£å·¥ä»¶è´¨éç»æåºç°åçæ¶é´ //æ½æ£å·¥ä»¶å·¥åºæ«ææªå¤å ¥å£å¤ç第ä¸ä¸ªå·¥ä»¶ ä¹æè´¨éç¶æç½®ä¸ºçä¼¼ //ï¼æ¯ä¸å·¥åºSPCæ½æ£æ¯è®¾ç½®çåºå®çï¼æ¯å¦200æ½4ï¼ç¶æç½®ä¸ºçä¼¼æ¶è¥å·¥ä»¶è¿å¨è®¾å¤å ï¼ä¼ç»§ç»çäº§å®æ¯åæåºï¼ //ç®åè¿åé»è¾æ¾å°äº WebAPIä¸äº } } db.WorkPieceInfoLog.Add(GetAddWorkPieceInfoLog(pieceInfo)); db.QualityDataInfoLog.Add(GetAddQualityDataInfoLog(qualityData));//æå ¥æ¥å¿ } else { loginfo2.Remarks = $"è´¨éæ£æµå®æè¯»åäºç»´ç {logMiddle.WorkPieceID ?? "空"}å¼å¸¸"; Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}å·¥åºçæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); } } catch (Exception ex) { loginfo2.Remarks = $"è´¨éæ£æµå®æ,æ´æ°æ°æ®å¼å¸¸{ex.Message}"; Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}è´¨éæ£æµå®æ å·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼" + ex.Message, ex); } finally { loginfo2.Remarks = $"è´¨éï¼{logMiddle.QualityStateStr ?? "空"}"; db.WorkPieceLog.Add(GetAddWorkPieceLog(loginfo2));//æå ¥å·¥ä»¶é鿥å¿è¡¨ db.SaveChanges(); } } } /// <summary> /// è´¨éæ£æµå®æ-OP70ä¸ç¨ /// </summary> /// <param name="logMiddle"></param> /// <param name="type"></param> public static void QualityInfoCompleteForOP70(WorkPieceLogMiddle logMiddle, LogType type) { if (string.IsNullOrEmpty(logMiddle.QualityOP70To1) && string.IsNullOrEmpty(logMiddle.QualityOP70To2) && string.IsNullOrEmpty(logMiddle.QualityOP70To3)) { Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}å·¥åºçæ§æ¸ æ´æºæ°æ® 读åå·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]è·åçä¸ä¸ªå¼é½æ¯ç©ºçï¼ä¸å¤çè¿å"); return; } using (DbModel db = new DbModel()) { try { bool isAdd = false; if (logMiddle.WorkPieceID.Length == 22) { var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1) {//æå ¥QualityDataInfo表 isAdd = true; qualityData = EntityPropHelper.Mapper<QualityDataInfo, WorkPieceLog>(logMiddle); } qualityData.QualityStateUpdateUser = "OP7009"; qualityData.QualityReceiveTime = DateTime.Now; //ç¹æ®å¤çOP70çè´¨éæ°æ® if (string.IsNullOrEmpty(qualityData.QualityOP70To1) && !string.IsNullOrEmpty(SystemHelper.GetStrForQualityOP70(logMiddle.QualityOP70To1))) { qualityData.QualityOP70To1 = logMiddle.QualityOP70To1; } if (string.IsNullOrEmpty(qualityData.QualityOP70To2) && !string.IsNullOrEmpty(SystemHelper.GetStrForQualityOP70(logMiddle.QualityOP70To2))) { qualityData.QualityOP70To2 = logMiddle.QualityOP70To2; } if (string.IsNullOrEmpty(qualityData.QualityOP70To3) && !string.IsNullOrEmpty(SystemHelper.GetStrForQualityOP70(logMiddle.QualityOP70To3))) { qualityData.QualityOP70To3 = logMiddle.QualityOP70To3; } db.QualityDataInfoLog.Add(GetAddQualityDataInfoLog(qualityData));//æå ¥æ¥å¿ if (isAdd) { db.QualityDataInfo.Add(GetAddQualityDataInfo(qualityData)); } db.SaveChanges();//ä¿åæ°æ® } else { Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}å·¥åºçæ§æ¸ æ´æºæ°æ® 读åå·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); } } catch (Exception ex) { Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}å·¥åºçæ§æ¸ æ´æºæ°æ® 读åå·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼", ex); } finally { } } } /// <summary> /// èµå¼ ä¿®æ¹äºº ãEditby shaocx,2024-07-05ã @@ -955,268 +266,8 @@ return logMiddle.MonitoringPoint; } /// <summary> /// 工件æ¨åºNOOK /// </summary> /// <param name="loginfo"></param> /// <param name="type"></param> public static void WorkPiecePushOff(WorkPieceLogMiddle loginfo, LogType type) { using (DbModel db = new DbModel()) { WorkPieceLog loginfo2 = new WorkPieceLog(); loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(loginfo); try { if (loginfo.WorkPieceID != null && loginfo.WorkPieceID.Trim('\0').Length == 22) { 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} 工件æ¨åºNOOKå·¥åº{loginfo.WorkingProcedure} 没æè·åå°å·¥ä»¶ä¿¡æ¯ä¸åæ´æ°"); return; } else {//æ´æ°è¡¨WorkPieceInfo if (loginfo.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") { 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 { cur_db_info.WorkingProcedureCurrent = loginfo.WorkingProcedure; cur_db_info.WorkPieceCurrentPosition = loginfo.WorkingProcedure + "NOOK"; } 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; 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 + 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 = $"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 = $"{loginfo.WorkingProcedure}å·¥åºè´¨éNOOKééæ°æ®ä¸åæ ¼{cur_db_info.QualityState}"; } else { cur_db_info.QualityErrorInfo = ""; } loginfo.QualityState = cur_db_info.QualityState; if (qualityData != null) { qualityData.OP35QualityState = loginfo.QualityState.HasValue ? loginfo.QualityState.Value.ToString() : "3"; qualityData.OP35QualityReceiveTime = DateTimeHelper.GetDateTime(); db.QualityDataInfoLog.Add(GetAddQualityDataInfoLog(qualityData)); } } //æ´æ°ä¸ä¸å·¥åºçç»ææ¶é´ 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 = "NOOKç»æ"; pro.UpdatedUserName = loginfo.MonitoringPoint; pro.UpdateDataCapturePointCname = loginfo.DataCapturePointCname; pro.UpdatedTime = DateTimeHelper.GetDateTime(); } else {//妿æ¾ä¸å°å°±æ°å»º ãEditby shaocx,2024-09-03ã WorkPieceProcess add_process = new WorkPieceProcess(); add_process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(cur_db_info); QualityStateHelper.ResetQualityNoOkForNewProcess(ref add_process); add_process.Id = Yitter.IdGenerator.YitIdHelper.NextId(); add_process.StartTime = DateTimeHelper.GetDateTime().AddSeconds(-SystemBussinessHelper.MoNiTimeForWorkingProcedure(loginfo.WorkingProcedure)); add_process.EndTime = DateTimeHelper.GetDateTime(); //ä¸åé»è®¤èµå¼ä¸ºåæ ¼ ãEditby shaocx,2024-08-16ã add_process.QualityState = WorkPieceInfoManager.GetQualityStateValue(loginfo.QualityState); add_process.CreatedUserName = loginfo.MonitoringPoint; add_process.DataCapturePointCname = loginfo.DataCapturePointCname; add_process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); add_process.UpdatedUserName = loginfo.MonitoringPoint; add_process.UpdateDataCapturePointCname = loginfo.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); db.WorkPieceInfoLog.Add(GetAddWorkPieceInfoLog(cur_db_info)); } else { loginfo2.Remarks = $"工件NOOKæ¨åºè¯»åäºç»´ç {loginfo.WorkPieceID ?? "空"}å¼å¸¸"; Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}工件NOOKæ¨åºè¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); } } catch (Exception e) { loginfo2.Remarks = $"读åäºç»´ç {loginfo.WorkPieceID ?? "空"}æ´æ°æ°æ®å¼å¸¸{e.Message}"; } db.WorkPieceLog.Add(GetAddWorkPieceLog(loginfo2));//æå ¥å·¥ä»¶é鿥å¿è¡¨ db.SaveChanges(); } } /// <summary> /// 工件SPCæ½æ£æ¨åº /// </summary> /// <param name="loginfo"></param> /// <param name="type"></param> public static void WorkPieceSPCPushOff(WorkPieceLogMiddle loginfo, LogType type) { using (DbModel db = new DbModel()) { WorkPieceLog loginfo2 = new WorkPieceLog(); loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(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") { 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<WorkPieceProcess, WorkPieceInfo>(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(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(GetAddWorkPieceLog(loginfo2));//æå ¥å·¥ä»¶é鿥å¿è¡¨ db.SaveChanges(); } } } public static void SetWorkingProcedureCurrentForOP10(WorkPieceInfo cur_db_info, ref string set_WorkingProcedureCurrent) @@ -1248,264 +299,7 @@ } } /// <summary> /// å·¥åºå®æ /// </summary> /// <param name="logMiddle"></param> /// <param name="type"></param> public static void WorkingProcedureComplete(WorkPieceLogMiddle logMiddle, LogType type) { using (DbModel db = new DbModel()) { if (logMiddle.WorkingProcedure.Equals("OP70")) { logMiddle.QualityState = (int)QualityStateEnum.OK; //妿æ¯OP70ï¼åé»è®¤æ¯åæ ¼ ãEditby shaocx,2024-06-25ã } WorkPieceLog loginfo2 = new WorkPieceLog(); loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(logMiddle); try { if (logMiddle.WorkPieceID != null && logMiddle.WorkPieceID.Trim('\0').Length == 22) { bool isAddWorkPieceInfo = false; WorkPieceInfo db_info = new WorkPieceInfo(); db_info = db.WorkPieceInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (db_info == null || db_info.WorkPieceID.Length < 1) {//没æå·¥ä»¶ä¿¡æ¯ï¼ä¸åæ´æ° ï¼ä¸ºäºæµè¯å å æ°å¢ï¼ Log4NetHelper.WriteErrorLog(type, $"工件{logMiddle.WorkPieceID} 工件æ¨åºå·¥åº{logMiddle.WorkingProcedure} 没æè·åå°å·¥ä»¶ä¿¡æ¯ä¸åæ´æ°"); //db.WorkPieceLog.Add(GetAddWorkPieceLog(loginfo));//æå ¥å·¥ä»¶é鿥å¿è¡¨ //db.SaveChanges(); loginfo2 = CommonManager.Instance.GetWorkPieceID(logMiddle, type); db_info = EntityPropHelper.Mapper<WorkPieceInfo, WorkPieceLog>(logMiddle); //EntityPropHelper<WorkPieceLog, WorkPieceInfo>.CopyProp(loginfo, info, loginfo.GetWorkPieceInfoDict()); if (!logMiddle.WorkingProcedure.Equals("OP05")) {//å½å·¥ä»¶äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åºä¸æ¯OP05ï¼å设置为å¯çç¶æ db_info.QualityState = (int)QualityStateEnum.Suspected; db_info.QualityErrorInfo = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{logMiddle.MonitoringPoint}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; db_info.Remarks = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{logMiddle.MonitoringPoint}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; } else { db_info.QualityState = (int)QualityStateEnum.OK;//æ¤å¤éè¦æ³¨æï¼å¤æææå·¥åºè´¨éï¼ç¶ååèµå¼ //é»è®¤åæ ¼ï¼OP05é»è®¤æ¯åæ ¼ db_info.Remarks = "OP05æ°å¢å·¥ä»¶ä¿¡æ¯"; } db_info.WorkPieceinitOnlineTime = DateTimeHelper.GetDateTime();//WorkPieceInitOnlineTime db_info.WorkingProcedurePlan = ConfigHelper.GetConfigString("WorkingProcedureAllStr") ?? "OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80"; db_info.CreatedUserName = logMiddle.MonitoringPoint; SystemBussinessHelper.SetWorkPieceInfoMiddleForCreatedUserName(ref db_info, logMiddle.DataCapturePointCname); db_info.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); db_info.WorkingProcedureCurrent = logMiddle.WorkingProcedure; db_info.WorkingProcedureEndTime = null; db_info = ParseQRCode(db_info); isAddWorkPieceInfo = true; } if (logMiddle.WorkingProcedure.Equals("OP10")) { //var WorkingProcedure = (loginfo.MonitoringPoint.Equals("OP1002") ? "OP10" : "OP40"); loginfo2.WorkingProcedure = db_info.WorkingProcedureCurrent;//è§£å³OP10ï¼OP40åä¸ä¸ªçé®é¢ logMiddle.WorkingProcedure = db_info.WorkingProcedureCurrent; //è§£å³OP10ï¼OP40åä¸ä¸ªçé®é¢ } db_info.WorkingProcedureCurrent = logMiddle.WorkingProcedure;//èµå¼ææ°å·¥åº ãEditby shaocx,2024-09-03ã db_info.UpdatedUserName = logMiddle.MonitoringPoint; SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref db_info, logMiddle.DataCapturePointCname); db_info.UpdatedTime = DateTimeHelper.GetDateTime(); db_info.WorkingProcedureCompleted = db_info.WorkingProcedureCompleted + logMiddle.WorkingProcedure;//å·²å®æå·¥åº if (!(db_info.WorkingProcedureStartTime.HasValue && db_info.WorkingProcedureStartTime > DateTime.Parse("1900/01/01"))) {//è¥ä¸ç´æ²¡æå·¥åºå¼å§æ¶é´ï¼åèµå¼å½åæ¶é´ db_info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime(); } db_info.WorkingProcedureEndTime = DateTimeHelper.GetDateTime(); db_info.WorkPieceCurrentPositionOrder = db_info.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure) / 2; db_info.Remarks = $"{logMiddle.WorkingProcedure}å·¥åºå®æ"; long op80id = 0; if (logMiddle.WorkingProcedure.Equals("OP80")) { db_info.WorkPieceState = (int)WorkPieceState.FinishedProducts; db_info.WorkPieceLastOfflineTime = DateTimeHelper.GetDateTime(); db_info.WorkPieceCurrentPosition = "OP80"; db_info.CompleteTime = DateTimeHelper.GetDateTime(); db_info.OP80NewCode = logMiddle.OP80NewCode; //è´¨æ£æ°æ®æ¹ä¸º è·åæä»¶åä¿®æ¹ ãEditby shaocx,2024-06-15ã /* info.QualityState = (int)((loginfo.QualityStateStr.Equals("OK") || loginfo.QualityStateStr.Equals("0K")) ? QualityState.OK : QualityState.NG); loginfo.QualityState = info.QualityState; info.QualityStateUpdateUser = loginfo.UpdatedUserName; info.QualityStateUpdateTime = loginfo.UpdatedTime.Value.LocalDateTime; info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString(); //*/ var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1) {//æå ¥QualityDataInfo表 qualityData = EntityPropHelper.Mapper<QualityDataInfo, WorkPieceLog>(logMiddle); db.QualityDataInfo.Add(GetAddQualityDataInfo(qualityData)); } //ä¿®æ¹QualityDataInfo表 //é夿¶å°è´¨éä¿¡æ¯ï¼ä¼è¦çä¹åç EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.CopyProp(logMiddle, qualityData, GetQualityDataInfoUpdate(logMiddle, logMiddle.WorkingProcedure, logMiddle.MonitoringPoint));//æå®ä¿®æ¹å段 //è´¨æ£æ°æ®æ¹ä¸º è·åæä»¶åä¿®æ¹ ãEditby shaocx,2024-06-15ã /* qualityData.QualityStateUpdateUser = info.UpdatedUserName; qualityData.QualityReceiveTime = info.UpdatedTime.Value.LocalDateTime; qualityData.QualityStateUpdateMode = info.QualityStateUpdateMode; qualityData.OP80QualityState = loginfo.QualityState.HasValue ? loginfo.QualityState.Value.ToString() : "3"; qualityData.OP80QualityReceiveTime = DateTimeHelper.GetDateTime(); qualityData.OP80QualityFilePath = loginfo.OP80QualityFilePath; op80id = qualityData.Id; loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"è´¨éï¼{loginfo.QualityStateStr ?? "空"}"; if (!info.QualityState.Equals(((int)QualityState.OK).ToString())) { info.QualityErrorInfo = $"{loginfo.WorkingProcedure}å·¥åºè´¨éééæ°æ®ä¸åæ ¼"; } else { info.QualityErrorInfo = ""; } //*/ loginfo2.Remarks = $"æµéåæ ¼ç¶æ:{logMiddle.St3_Means_OK},ç§°éç¶æ:{logMiddle.St4_Weight_OK}"; } else if (logMiddle.WorkingProcedure.Equals("OP30")) { db_info.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityStateEnum.OK : QualityStateEnum.NG); logMiddle.QualityState = db_info.QualityState; db_info.QualityStateUpdateUser = logMiddle.UpdatedUserName; db_info.QualityStateUpdateTime = logMiddle.UpdatedTime.Value.LocalDateTime; db_info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString(); var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault(); if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1) {//æå ¥QualityDataInfo表 qualityData = EntityPropHelper.Mapper<QualityDataInfo, WorkPieceLog>(logMiddle); db.QualityDataInfo.Add(GetAddQualityDataInfo(qualityData)); } qualityData.QualityStateUpdateUser = db_info.UpdatedUserName; qualityData.QualityReceiveTime = db_info.UpdatedTime.Value.LocalDateTime; qualityData.QualityStateUpdateMode = db_info.QualityStateUpdateMode; qualityData.OP30QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3"; qualityData.OP30QualityReceiveTime = DateTimeHelper.GetDateTime(); loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"è´¨éï¼{logMiddle.QualityStateStr ?? "空"}"; if (!db_info.QualityState.Equals(((int)QualityStateEnum.OK).ToString())) { db_info.QualityErrorInfo = $"{logMiddle.WorkingProcedure}å·¥åºè´¨éééæ°æ®ä¸åæ ¼"; } else { db_info.QualityErrorInfo = ""; } } else { //è¿éä¿®å¤OP10ãOP40 å 为PLCå æ¨ SPCæ¨åºã忍 产åä¸çº¿é®é¢ï¼å¯¼è´ 产åä¸çº¿æ´æ°æ°æ®æ¶ï¼æSPCæ°æ®è¦ççé®é¢ ãEditby shaocx,2024-08-27ã var isAlow = SystemBussinessHelper.IsAllowUpdateWorkPieceStateToWip(db_info, db, logMiddle); if (isAlow) { db_info.WorkPieceState = (int)WorkPieceState.WIP; } if (db_info.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure) + 4 <= db_info.WorkingProcedurePlan.Length) { db_info.WorkPieceCurrentPosition = db_info.WorkingProcedurePlan.Substring(db_info.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure), 8); } } var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == logMiddle.WorkPieceID && o.WorkingProcedureCurrent == db_info.WorkingProcedureCurrent && o.OperationType == OperationType.ç产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault(); if (pro == null || pro.WorkPieceID.Length < 1) { WorkPieceProcess add_process = new WorkPieceProcess(); add_process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(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(); if (logMiddle.WorkingProcedure.Equals("OP80")) {//OP80çè´¨éæ°æ®æ¯åæ¥è·åæä»¶æç //è´¨æ£æ°æ®ï¼åèè å¦å¤ä¸¤ç§ç¶æ ãEditby shaocx,2024-08-27ã QualityStateHelper.SetQualityStateForOP80(logMiddle, ref db_info, ref add_process); } else { //ä¸åé»è®¤èµå¼ä¸ºåæ ¼ ãEditby shaocx,2024-08-16ã //process.QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value : (int)QualityState.OK;//é»è®¤åæ ¼ï¼å·²å¤ç add_process.QualityState = WorkPieceInfoManager.GetQualityStateValue(logMiddle.QualityState); } add_process.CreatedUserName = logMiddle.MonitoringPoint; 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 = ""; add_process.MyRemarks = "å·¥åºå®ææ¶ï¼å¦ææ¾ä¸å°å°±æ°å»º"; if (logMiddle.WorkingProcedure.Equals("OP80")) { add_process.GetQcDataFlag = logMiddle.GetQcDataFlag;//èµå¼æ è®° [Editby shaocx,2024-06-15] } if (op80id > 0) { add_process.QualityDataInfoID = op80id; } db.WorkPieceProcess.Add(add_process); } else { if (logMiddle.WorkingProcedure.Equals("OP80")) {//OP80çè´¨éæ°æ®æ¯åæ¥è·åæä»¶æç //è´¨æ£æ°æ®ï¼åèè å¦å¤ä¸¤ç§ç¶æ ãEditby shaocx,2024-08-27ã QualityStateHelper.SetQualityStateForOP80(logMiddle, ref db_info, ref pro); } if (op80id > 0) { pro.QualityDataInfoID = op80id; } pro.EndTime = DateTimeHelper.GetDateTime(); pro.UpdatedUserName = logMiddle.MonitoringPoint; pro.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname; pro.UpdatedTime = DateTimeHelper.GetDateTime(); if (logMiddle.WorkingProcedure.Equals("OP80")) { if (pro.GetQcDataFlag != 0) { pro.GetQcDataFlag = logMiddle.GetQcDataFlag;//èµå¼æ è®° [Editby shaocx,2024-06-15] } } } if (isAddWorkPieceInfo) { db.WorkPieceInfo.Add(db_info); } db.WorkPieceInfoLog.Add(GetAddWorkPieceInfoLog(db_info)); } else { loginfo2.Remarks = $"ä¸çº¿å®æè¯»åäºç»´ç {logMiddle.WorkPieceID ?? "空"}å¼å¸¸"; Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}å·¥åºä¸çº¿ 读åå·¥ä»¶ç æ°æ®[{logMiddle.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); } } catch (Exception e) { loginfo2.Remarks = $"读åäºç»´ç {logMiddle.WorkPieceID ?? "空"}æ´æ°æ°æ®å¼å¸¸{e.Message}"; } db.WorkPieceLog.Add(GetAddWorkPieceLog(loginfo2));//æå ¥å·¥ä»¶é鿥å¿è¡¨ db.SaveChanges(); } } public static void AlertMonitor(WorkPieceLog loginfo, LogType type) { DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP0506.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; @@ -63,7 +64,7 @@ wplog.UpdatedTime = DateTimeHelper.GetDateTime(); wplog.UpdatedUserName = DataCapturePointCode; //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); return; } DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP2001.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; @@ -110,7 +111,7 @@ } } //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.ReadQRcode(wplog, LogType.PLCOP20, plcService, _dataCaptureConfig.IsFeedback); ReadQRcodeManager.ReadQRcode(wplog, LogType.PLCOP20, plcService, _dataCaptureConfig.IsFeedback); //夿æ¯å¦è·³åºï¼ä¸ä¸å·¥åºè´¨éæ¯å¦åæ ¼ DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP2003.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; @@ -110,7 +111,7 @@ } } //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.ReadQRcode(wplog, LogType.PLCOP20, plcService, _dataCaptureConfig.IsFeedback); ReadQRcodeManager.ReadQRcode(wplog, LogType.PLCOP20, plcService, _dataCaptureConfig.IsFeedback); //夿æ¯å¦è·³åºï¼ä¸ä¸å·¥åºè´¨éæ¯å¦åæ ¼ DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP2004.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; @@ -13,7 +14,7 @@ /// <summary> /// OP20SPCæ¨åºæ è®° /// </summary> public class DataCaptureHandler_OP2004: DataCaptureHandler public class DataCaptureHandler_OP2004 : DataCaptureHandler { public static readonly DataCaptureHandler_OP2004 Instance = new DataCaptureHandler_OP2004(); @@ -101,7 +102,7 @@ wplog.MonitoringPoint = "OP2004"; foreach (var col in colConfig) { switch(col.DbNumber+ col.Offset) switch (col.DbNumber + col.Offset) { case "": var valuecol = plcService.ReadValuePoint(col.DbNumber, col.Offset, PLCManger.GetTypeForString(col.DataCaptureColumnType)); @@ -110,7 +111,7 @@ } } //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.ReadQRcode(wplog, LogType.PLCOP20, plcService, _dataCaptureConfig.IsFeedback); ReadQRcodeManager.ReadQRcode(wplog, LogType.PLCOP20, plcService, _dataCaptureConfig.IsFeedback); //夿æ¯å¦è·³åºï¼ä¸ä¸å·¥åºè´¨éæ¯å¦åæ ¼ DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP2005.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; @@ -110,7 +111,7 @@ } } //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.ReadQRcode(wplog, LogType.PLCOP20, plcService, _dataCaptureConfig.IsFeedback); ReadQRcodeManager.ReadQRcode(wplog, LogType.PLCOP20, plcService, _dataCaptureConfig.IsFeedback); //夿æ¯å¦è·³åºï¼ä¸ä¸å·¥åºè´¨éæ¯å¦åæ ¼ DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandler/DataCaptureHandler_OP2006.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; @@ -109,7 +110,7 @@ } } //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.ReadQRcode(wplog, LogType.PLCOP20, plcService, _dataCaptureConfig.IsFeedback); ReadQRcodeManager.ReadQRcode(wplog, LogType.PLCOP20, plcService, _dataCaptureConfig.IsFeedback); //夿æ¯å¦è·³åºï¼ä¸ä¸å·¥åºè´¨éæ¯å¦åæ ¼ DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_01.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using iWare_SCADA_Model.MiddleModel; @@ -197,7 +198,7 @@ SystemBussinessHelper.SetWorkPieceLogMiddleForCreatedUserName(ref wplog, wplog.MonitoringPoint, DataCapturePointCname); //读åäºç»´ç åæ´æ°æ°æ®åº WorkPieceInfoManager.ReadQRcode(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), plcService, _dataCaptureConfig.IsFeedback); ReadQRcodeManager.ReadQRcode(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), plcService, _dataCaptureConfig.IsFeedback); threadStatusMonitor.Threadstatue = 1; DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_02.cs
@@ -21,6 +21,7 @@ using Spire.Additions.Xps.Schema; using log4net; using static Org.BouncyCastle.Math.EC.ECCurve; using iWare_SCADA_BusinessLogical.BLL.Important; namespace iWare_SCADA_BusinessLogical { @@ -630,7 +631,7 @@ //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.QualityInfoComplete(logMiddle, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); QualityInfoCompleteManager.QualityInfoComplete(logMiddle, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); threadStatusMonitor.Threadstatue = 1; DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_03.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using iWare_SCADA_Model.MiddleModel; @@ -64,7 +65,7 @@ wplog.UpdatedTime = DateTimeHelper.GetDateTime(); wplog.UpdatedUserName = DataCapturePointCode; //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); return; } @@ -153,13 +154,13 @@ {//op20ä¼åæ¶æ¨åºå¤ä»¶ï¼æä»¥ç¹æ®å¤ç wplog.WorkPieceID = wplog.WorkPieceIDA; wplog.Remarks = "NOOKæ¨åºå·¥ä»¶A"; WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); wplog.WorkPieceID = wplog.WorkPieceIDB; wplog.Remarks = "NOOKæ¨åºå·¥ä»¶B"; WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); wplog.WorkPieceID = wplog.WorkPieceIDC; wplog.Remarks = "NOOKæ¨åºå·¥ä»¶C"; WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); //wplog.WorkPieceID = wplog.WorkPieceIDD; //wplog.Remarks = "NOOKæ¨åºå·¥ä»¶D"; //WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); @@ -167,7 +168,7 @@ else { //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); } threadStatusMonitor.Threadstatue = 1; DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_04.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using iWare_SCADA_Model.MiddleModel; @@ -63,7 +64,7 @@ wplog.UpdatedTime = DateTimeHelper.GetDateTime(); wplog.UpdatedUserName = DataCapturePointCode; //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPieceSPCPushOffManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); return; } @@ -153,24 +154,24 @@ {//op20,op50,op60 ä¼åæ¶æ¨åºå¤ä»¶ï¼æä»¥ç¹æ®å¤ç wplog.WorkPieceID = wplog.WorkPieceIDA; wplog.Remarks = "SPCæ¨åºå·¥ä»¶A"; WorkPieceInfoManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPieceSPCPushOffManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); wplog.WorkPieceID = wplog.WorkPieceIDB; wplog.Remarks = "SPCæ¨åºå·¥ä»¶B"; WorkPieceInfoManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPieceSPCPushOffManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); wplog.WorkPieceID = wplog.WorkPieceIDC; wplog.Remarks = "SPCæ¨åºå·¥ä»¶C"; WorkPieceInfoManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPieceSPCPushOffManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); if (_dataCaptureConfig.WorkingProcedure.Equals("OP60")) { wplog.WorkPieceID = wplog.WorkPieceIDD; wplog.Remarks = "SPCæ¨åºå·¥ä»¶D"; WorkPieceInfoManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPieceSPCPushOffManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); } } else { //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPieceSPCPushOffManager.WorkPieceSPCPushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); } threadStatusMonitor.Threadstatue = 1; DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_05.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using iWare_SCADA_Model.MiddleModel; @@ -344,7 +345,7 @@ //*/ //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.WorkingProcedureComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkingProcedureCompleteManager.WorkingProcedureComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); threadStatusMonitor.Threadstatue = 1; } DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_06.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using iWare_SCADA_Model.MiddleModel; @@ -65,7 +66,7 @@ wplog.UpdatedTime = DateTimeHelper.GetDateTime(); wplog.UpdatedUserName = DataCapturePointCode; //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); WorkPiecePushOffManager.WorkPiecePushOff(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); return; } DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_OP0501.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; @@ -326,8 +327,8 @@ { Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"{_dataCaptureConfig.WorkingProcedure}å·¥åºè¯»åå·¥æ§æºä¸äºç»´ç ä¿¡æ¯,读å工件äºç»´ç :{item.WorkPieceID.ToString()}"); WorkPieceInfoManager.ReadQRcode(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), null, _dataCaptureConfig.IsFeedback); ReadQRcodeManager.ReadQRcode(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), null, _dataCaptureConfig.IsFeedback); threadStatusMonitor.Threadstatue = 1; } DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP1002.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using log4net; @@ -172,7 +173,7 @@ //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); QualityInfoCompleteManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); threadStatusMonitor.Threadstatue = 1; DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP1003.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; @@ -170,7 +171,7 @@ //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); QualityInfoCompleteManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); threadStatusMonitor.Threadstatue = 1; } SystemValue.value_OP1003 = value.ToString(); DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP1004.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; @@ -129,16 +130,16 @@ { Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}å·¥åº1çæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®{wplog.WorkPieceID}æ¨åºåå [{wplog.OP10Flag}]"); WorkPieceInfoManager.WorkPiecePushOff(wplog, LogType.PLCOP10); WorkPiecePushOffManager.WorkPiecePushOff(wplog, LogType.PLCOP10); threadStatusMonitor.Threadstatue = 1; wplog.Remarks =$"æ¨åºåå [{wplog.OP10Flag}] NOOK"; wplog.Remarks = $"æ¨åºåå [{wplog.OP10Flag}] NOOK"; } //else if (wplog.OP10Flag == 2 || wplog.OP10Flag == 3) else { Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}å·¥åº23çæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®{wplog.WorkPieceID}æ¨åºåå [{wplog.OP10Flag}]"); WorkPieceInfoManager.WorkPieceSPCPushOff(wplog, LogType.PLCOP10); WorkPieceSPCPushOffManager.WorkPieceSPCPushOff(wplog, LogType.PLCOP10); wplog.Remarks = $"æ¨åºåå [{wplog.OP10Flag}] SPC"; threadStatusMonitor.Threadstatue = 1; } DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP7009.cs
@@ -1,4 +1,5 @@ using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using log4net; @@ -159,7 +160,7 @@ foreach (var item in noFinishWorkPieceProcessList) { wplog.WorkPieceID = item.WorkPieceID; WorkPieceInfoManager.QualityInfoCompleteForOP70(wplog, LogType.OP7009); QualityInfoCompleteManager.QualityInfoCompleteForOP70(wplog, LogType.OP7009); // threadStatusMonitor.Threadstatue = 1; } } DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/iWare_SCADA_BusinessLogical.csproj
@@ -80,6 +80,11 @@ <Compile Include="BLL\CommonManager.cs" /> <Compile Include="BLL\DataCaptureColumnDictManager.cs" /> <Compile Include="BLL\DataCaptureConfigManager.cs" /> <Compile Include="BLL\Important\QualityInfoCompleteManager.cs" /> <Compile Include="BLL\Important\ReadQRcodeManager.cs" /> <Compile Include="BLL\Important\WorkingProcedureCompleteManager.cs" /> <Compile Include="BLL\Important\WorkPiecePushOffManager.cs" /> <Compile Include="BLL\Important\WorkPieceSPCPushOffManager.cs" /> <Compile Include="BLL\SystemValue.cs" /> <Compile Include="BLL\WorkPieceInfoManager.cs" /> <Compile Include="BLL\WorkPieceLogManager.cs" /> DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Test/UnitTest1.cs
@@ -1,5 +1,6 @@ using iWare_SCADA_BusinessLogical; using iWare_SCADA_BusinessLogical.BLL; using iWare_SCADA_BusinessLogical.BLL.Important; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -147,7 +148,7 @@ WorkPieceInfoManager.SetLogMiddleForQuality(ref logMiddle); //æ´æ°WorkPieceInfo表以åæå ¥WorkPieceLog表åWorkPieceInfoLog表 WorkPieceInfoManager.QualityInfoComplete(logMiddle, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); QualityInfoCompleteManager.QualityInfoComplete(logMiddle, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); string cc = "";