2
schangxiang@126.com
2024-07-03 68a5f2b163aa0b5c85327d2f01926a5db24166ad
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
@@ -226,7 +226,14 @@
                        WorkPieceProcess process = new WorkPieceProcess();
                        process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(info);
                        process.StartTime = DateTimeHelper.GetDateTime();
                        process.QualityState = info.QualityState.HasValue ? info.QualityState.Value : (int)QualityState.OK;
                        if (process.WorkingProcedureCurrent == WorkingProcedureForHMI.OP70.ToString())
                        { //特殊处理OP70,因为OP70没有测量,默认合格 [Editby shaocx,2024-07-03]
                            process.QualityState = (int)QualityState.OK;
                        }
                        process.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                        process.CreatedUserName = loginfo.MonitoringPoint;
                        process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
@@ -2234,11 +2241,29 @@
            return loginfo;
        }
        /// <summary>
        /// 设置中间变量的质量数据
        /// </summary>
        /// <param name="logMiddle"></param>
        public static void SetLogMiddleForQuality(ref WorkPieceLogMiddle logMiddle)
        {
            //根据质量数据判断是否合格/不合格 【Editby shaocx,2024-06-25】
            QualityNoOkEnum? qualityNoOkEnum = null;
            QualityState qualityState = WorkPieceInfoManager.CalcQualityStateForOP(logMiddle, ref qualityNoOkEnum);
            logMiddle.QualityState = (int)qualityState;
            logMiddle.QualityStateStr = qualityState.ToString();
            if (qualityNoOkEnum != null)
            {
                logMiddle.QualityNoOk = (int)qualityNoOkEnum;
                logMiddle.QualityNoOkReason = qualityNoOkEnum.ToString();
            }
        }
        /// <summary>
        /// 计算OP 质量数据是否合格
        /// </summary>
        public static QualityState CalcQualityStateForOP(WorkPieceLogMiddle logMiddle, ref QualityNoOkEnum? qualityNoOkEnum)
        private static QualityState CalcQualityStateForOP(WorkPieceLogMiddle logMiddle, ref QualityNoOkEnum? qualityNoOkEnum)
        {
            QualityState qualityState = QualityState.Suspected;
            if (logMiddle.WorkingProcedure == "OP60")
@@ -2283,6 +2308,12 @@
            }
            if (logMiddle.WorkingProcedure == "OP80")
            {
                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))
                {
@@ -2320,13 +2351,13 @@
                }
                decimal _QualityOP80To4 = SystemHelper.GetDecimal(logMiddle.QualityOP80To4);
                if (!(_QualityOP80To4 >= (decimal)0 && _QualityOP80To4 <= (decimal)0.075))
                if (!(_QualityOP80To4 >= (decimal)(-0.075) && _QualityOP80To4 <= (decimal)0.075))
                {
                    qualityNoOkEnum = QualityNoOkEnum.OP80小头孔平行度弯曲超差;
                }
                decimal _QualityOP80To5 = SystemHelper.GetDecimal(logMiddle.QualityOP80To5);
                if (!(_QualityOP80To5 >= (decimal)0 && _QualityOP80To5 <= (decimal)0.2))
                if (!(_QualityOP80To5 >= (decimal)(-0.2) && _QualityOP80To5 <= (decimal)0.2))
                {
                    qualityNoOkEnum = QualityNoOkEnum.OP80小头孔平行度扭曲超差;
                }
@@ -2370,13 +2401,21 @@
                {
                    qualityNoOkEnum = QualityNoOkEnum.OP10厚度超差;
                }
                else
                {
                    qualityState = QualityState.OK;
                }
                return qualityState;
            }
            else if (logMiddle.WorkingProcedure == "OP20")
            {
            {//合格/不合格 是根据PLC判断的
                if (logMiddle.QualityState == (int)QualityState.NG)
                {
                    qualityNoOkEnum = QualityNoOkEnum.OP20小头孔直径超差;
                }
                else
                {
                    qualityState = QualityState.OK;
                }
                return qualityState;
            }
@@ -2386,6 +2425,10 @@
                {
                    qualityNoOkEnum = QualityNoOkEnum.OP35滚压力不合格;
                }
                else
                {
                    qualityState = QualityState.OK;
                }
                return qualityState;
            }
            else if (logMiddle.WorkingProcedure == "OP40")
@@ -2394,6 +2437,10 @@
                {
                    qualityNoOkEnum = QualityNoOkEnum.OP40厚度超差;
                }
                else
                {
                    qualityState = QualityState.OK;
                }
                return qualityState;
            }
            return qualityState;