233
schangxiang@126.com
2024-07-05 b27a2ba1ccbd8e2e7b61a700dde5f891ed6ae35d
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
@@ -502,7 +502,7 @@
                                }
                                pieceInfo.WorkPieceinitOnlineTime = DateTimeHelper.GetDateTime();
                                pieceInfo.WorkingProcedurePlan = ConfigHelper.GetConfigString("WorkingProcedureAllStr") ?? "OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80";
                                pieceInfo.CreatedUserName = logMiddle.MonitoringPoint;
                                pieceInfo.CreatedUserName = ResetUpdatedUserName(logMiddle);
                                pieceInfo.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
                                pieceInfo.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();//
                                pieceInfo.WorkingProcedureEndTime = null;
@@ -547,7 +547,7 @@
                            else
                            {//更新工件
                                equinfo.WorkPieceID = logMiddle.WorkPieceID;
                                equinfo.UpdatedUserName = logMiddle.MonitoringPoint;
                                equinfo.UpdatedUserName = ResetUpdatedUserName(logMiddle);
                                equinfo.UpdatedTime = DateTime.Now;
                                equinfo.OnlineTime = DateTime.Now;
                            }
@@ -565,7 +565,7 @@
                        pieceInfo.QualityStateUpdateTime = logMiddle.UpdatedTime.Value.LocalDateTime;
                        pieceInfo.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString();
                        pieceInfo.Remarks = pieceInfo.Remarks ?? "" + $"{logMiddle.WorkingProcedure}质量检测完成修改";
                        pieceInfo.UpdatedUserName = logMiddle.MonitoringPoint;
                        pieceInfo.UpdatedUserName = ResetUpdatedUserName(logMiddle);
                        pieceInfo.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
                        if (!(pieceInfo.WorkingProcedureStartTime.HasValue && pieceInfo.WorkingProcedureStartTime > DateTime.Parse("1900/01/01")))
                        {//工序开始时间没有则赋值
@@ -727,9 +727,9 @@
                            SetQualityNoOk_WorkPieceProcess(logMiddle, ref process);
                            process.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                            process.CreatedUserName = logMiddle.MonitoringPoint;
                            process.CreatedUserName = ResetUpdatedUserName(logMiddle);
                            process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
                            process.UpdatedUserName = logMiddle.MonitoringPoint;
                            process.UpdatedUserName = ResetUpdatedUserName(logMiddle);
                            process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
                            process.OperationType = OperationType.生产.ToString();
                            process.QualityDataInfoID = qualityData.Id;
@@ -739,7 +739,7 @@
                        else
                        {//其他的都只是修改
                            pro.QualityDataInfoID = qualityData.Id;
                            pro.UpdatedUserName = logMiddle.MonitoringPoint;
                            pro.UpdatedUserName = ResetUpdatedUserName(logMiddle);
                            pro.UpdatedTime = DateTimeHelper.GetDateTime();
                            pro.QualityState = pieceInfo.QualityState.HasValue ? pieceInfo.QualityState.Value : 9;
                            //赋值不合格原因
@@ -748,7 +748,7 @@
                            //TODO:判断如果是60工序,那么就要更新pro表的创建人为loginfo.MonitoringPoint 【Editby shaocx,2024-06-05】
                            if (logMiddle.WorkingProcedure == "OP60")
                            {
                                pro.CreatedUserName = logMiddle.MonitoringPoint;
                                pro.CreatedUserName = ResetUpdatedUserName(logMiddle);
                            }
                        }
@@ -791,6 +791,21 @@
                }
            }
        }
        /// <summary>
        /// 赋值 修改人 【Editby shaocx,2024-07-05】
        /// </summary>
        /// <param name="logMiddle"></param>
        /// <returns></returns>
        public static string ResetUpdatedUserName(WorkPieceLogMiddle logMiddle)
        {
            if (logMiddle.MonitoringPoint.Equals("OP1003"))
            {//因为OP10和OP40是一台机器,OP1003专门是OP40测量的。
                return "OP4003";
            }
            return logMiddle.MonitoringPoint;
        }
        /// <summary>
        /// 工件推出NOOK
        /// </summary>
@@ -2248,6 +2263,8 @@
        public static void SetLogMiddleForQuality(ref WorkPieceLogMiddle logMiddle)
        {
            logMiddle.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityState.OK : QualityState.NG);
            //根据质量数据判断是否合格/不合格 【Editby shaocx,2024-06-25】
            QualityNoOkEnum? qualityNoOkEnum = null;
            QualityState qualityState = WorkPieceInfoManager.CalcQualityStateForOP(logMiddle, ref qualityNoOkEnum);
@@ -2267,7 +2284,7 @@
        {
            QualityState qualityState = QualityState.Suspected;
            if (logMiddle.WorkingProcedure == "OP60")
            {
            {//合格/不合格由 WMS自行判断
                decimal _QualityOP60To1 = SystemHelper.GetDecimal(logMiddle.QualityOP60To1);
                decimal _QualityOP60To2 = SystemHelper.GetDecimal(logMiddle.QualityOP60To2);
                var isPass_QualityOP60To1 = false;
@@ -2306,8 +2323,14 @@
                }
                return qualityState;
            }
            if (logMiddle.WorkingProcedure == "OP80")
            {
            else if (logMiddle.WorkingProcedure == "OP80")
            {//合格/不合格由 OP80 判断,QualityState 和 QualityStateStr 都在调用当前方法前 写入值了
                if (logMiddle.QualityState == (int)QualityState.OK)
                {
                    qualityState = QualityState.OK;
                    return qualityState;
                }
                decimal _QualityOP80_D_TKZJ = SystemHelper.GetDecimal(logMiddle.QualityOP80_D_TKZJ);
                if (!(_QualityOP80_D_TKZJ >= (decimal)53.018 && _QualityOP80_D_TKZJ <= (decimal)53.03))
                {
@@ -2390,35 +2413,63 @@
                return qualityState;
            }
            else if (logMiddle.WorkingProcedure == "OP10")
            {
            {//合格/不合格由 QualityStateStr值判断
                if (logMiddle.QualityState == (int)QualityState.NG)
                {
                    qualityNoOkEnum = QualityNoOkEnum.OP10厚度超差;
                }
                else
                {
                    qualityState = QualityState.OK;
                }
                return qualityState;
            }
            else if (logMiddle.WorkingProcedure == "OP20")
            {
            {//合格/不合格由 QualityStateStr值判断
                if (logMiddle.QualityState == (int)QualityState.NG)
                {
                    qualityNoOkEnum = QualityNoOkEnum.OP20小头孔直径超差;
                }
                else
                {
                    qualityState = QualityState.OK;
                }
                return qualityState;
            }
            else if (logMiddle.WorkingProcedure == "OP30")
            {//合格/不合格由 QualityStateStr值判断
                if (logMiddle.QualityStateStr.Equals("OK"))
                {
                    qualityState = QualityState.OK;
                }
                else
                {
                    qualityState = QualityState.NG;
                }
                return qualityState;
            }
            else if (logMiddle.WorkingProcedure == "OP35")
            {
            {//合格/不合格由 QualityStateStr值判断
                if (logMiddle.QualityState == (int)QualityState.NG)
                {
                    qualityNoOkEnum = QualityNoOkEnum.OP35滚压力不合格;
                }
                else
                {
                    qualityState = QualityState.OK;
                }
                return qualityState;
            }
            else if (logMiddle.WorkingProcedure == "OP40")
            {
            {//合格/不合格由 QualityStateStr值判断
                if (logMiddle.QualityState == (int)QualityState.NG)
                {
                    qualityNoOkEnum = QualityNoOkEnum.OP40厚度超差;
                }
                else
                {
                    qualityState = QualityState.OK;
                }
                return qualityState;
            }
            return qualityState;