schangxiang@126.com
2024-09-03 a635f1bbbaf5ebacde78f9d1bcb9b34bc2359902
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/OP80QualityDataHandler.cs
@@ -28,6 +28,7 @@
        public static readonly string path = ConfigHelper.GetConfigString("OP80QualityData");//OP80的地址
        public static readonly string query_WorkingProcedureCurrent = "OP80";
        public static readonly string _DataCapturePointCode = "OP8002";
        public static readonly string _DataCapturePointName = "OP80质量数据采集";
        public static readonly string _EquipmentId = "EOP80";
        public static readonly LogType logType = LogType.PLCOP80_QC;
@@ -154,7 +155,8 @@
            }
        }
        private void Do_One(bool isAdd_WorkPieceInfo, bool isAdd_WorkPieceProcess, bool isAdd_QualityDataInfo, List<FileInfo> allFiles, DbModel db, WorkPieceInfo info, WorkPieceProcess pieceProcess, QualityDataInfo qualityData,
        private void Do_One(bool isAdd_WorkPieceInfo, bool isAdd_WorkPieceProcess, bool isAdd_QualityDataInfo, List<FileInfo> allFiles, DbModel db, WorkPieceInfo info,
            WorkPieceProcess pieceProcess, QualityDataInfo qualityData,
             List<FileInfo> findFiles)
        {
            try
@@ -174,8 +176,9 @@
                logMiddle.EquipmentID = _dataCaptureConfig.EquipmentID; ;
                logMiddle.Remarks = logMiddle.WorkingProcedure;
                logMiddle.MonitoringPoint = _DataCapturePointCode;
                //logMiddle.CreatedUserName = _DataCapturePointCode;
                SystemBussinessHelper.SetWorkPieceLogMiddleForCreatedUserName(ref logMiddle, DataCapturePointCode, DataCapturePointCname);
                logMiddle.CreatedTime = DateTimeHelper.GetDateTime();
                logMiddle.CreatedUserName = _DataCapturePointCode;
                logMiddle.UpdatedTime = DateTimeHelper.GetDateTime();
                logMiddle.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                logMiddle.IsDeleted = false;
@@ -319,26 +322,35 @@
                }
                else
                {
                    logMiddle.Remarks = (logMiddle.Remarks ?? "") + $"OP80下线完成读取文件{file.FullName}异常,行数不是2行";
                    logMiddle.Remarks = $"OP80下线完成读取文件{file.FullName}异常,行数不是2行";
                }
                //更新WorkPieceInfo表以及插入WorkPieceLog表和WorkPieceInfoLog表
                info.OP80NewCode = logMiddle.OP80NewCode;//更新成品吗
                info.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityState.OK : QualityState.NG);
                logMiddle.QualityState = info.QualityState;
                //根据质量数据判断是否合格/不合格 【Editby shaocx,2024-06-25】
                WorkPieceInfoManager.SetLogMiddleForQuality(ref logMiddle);
                //如果OP80下线,已经更改了质检状态,并且质检状态等于不合格,则这里就不要继续更改质检状态了 【Editby shaocx,2024-08-28】
                bool isNeedUpdateQualityState = true;
                var ooDateTime = Convert.ToDateTime("0001-01-01");
                if (pieceProcess.EndTime != ooDateTime && pieceProcess.QualityState == (int)QualityState.NG)
                {
                    isNeedUpdateQualityState = false;
                }
                if (isNeedUpdateQualityState)
                {
                    info.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityState.OK : QualityState.NG);
                    logMiddle.QualityState = info.QualityState;
                    //根据质量数据判断是否合格/不合格 【Editby shaocx,2024-06-25】
                    WorkPieceInfoManager.SetLogMiddleForQuality(ref logMiddle);
                //赋值不合格原因
                //TODO:需要配置OP80质量不合格的原因是啥??
                WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref info);
                    //赋值不合格原因
                    WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref info);
                info.QualityStateUpdateUser = logMiddle.UpdatedUserName;
                info.QualityStateUpdateTime = logMiddle.UpdatedTime.Value.LocalDateTime;
                info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString();
                    info.QualityStateUpdateUser = logMiddle.UpdatedUserName;
                    info.QualityStateUpdateTime = logMiddle.UpdatedTime.Value.LocalDateTime;
                    info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString();
                }
                //var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == wplog.WorkPieceID).FirstOrDefault();
                //if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1)
                //{//插入QualityDataInfo表
@@ -348,11 +360,22 @@
                //修改QualityDataInfo表 //重复收到质量信息,会覆盖之前的
                EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.CopyProp(logMiddle, qualityData, WorkPieceInfoManager.GetQualityDataInfoUpdate(logMiddle, logMiddle.WorkingProcedure, logMiddle.MonitoringPoint));//指定修改字段
                //单独处理 质量数据的状态
                if (isNeedUpdateQualityState)
                {
                    qualityData.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityState.OK : QualityState.NG);
                }
                else
                {//必然是不合格
                    qualityData.QualityState = (int)(QualityState.NG);
                }
                qualityData.OP80QualityState = qualityData.QualityState.ToString();
                qualityData.EquipmentID = _EquipmentId;
                qualityData.QualityStateUpdateUser = info.UpdatedUserName;
                qualityData.QualityReceiveTime = info.UpdatedTime.Value.LocalDateTime;
                qualityData.QualityStateUpdateMode = info.QualityStateUpdateMode;
                qualityData.OP80QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3";
                qualityData.OP80QualityReceiveTime = DateTimeHelper.GetDateTime();
                qualityData.OP80QualityFilePath = logMiddle.OP80QualityFilePath;
                long op80id = qualityData.Id;
@@ -360,7 +383,7 @@
                {
                    pieceProcess.QualityDataInfoID = op80id;
                }
                loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"质量:{logMiddle.QualityStateStr ?? "空"}";
                loginfo2.Remarks = $"质量:{logMiddle.QualityStateStr ?? "空"}";
                if (!info.QualityState.Equals(((int)QualityState.OK).ToString()))
                {
                    info.QualityErrorInfo = $"{logMiddle.WorkingProcedure}工序质量采集数据不合格";
@@ -374,13 +397,15 @@
                pieceProcess.GetQcDataFlag_Remark = "找到文件";
                pieceProcess.GetQcDataFlag = 1;
                //不再默认赋值为合格 【Editby shaocx,2024-08-16】
                //pieceProcess.QualityState = info.QualityState.HasValue ? info.QualityState.Value : (int)QualityState.OK;//默认合格,已处理
                pieceProcess.QualityState = WorkPieceInfoManager.GetQualityStateValue(info.QualityState);
                if (isNeedUpdateQualityState)
                {
                    //不再默认赋值为合格 【Editby shaocx,2024-08-16】
                    pieceProcess.QualityState = WorkPieceInfoManager.GetQualityStateValue(info.QualityState);
                //赋值不合格原因
                //TODO:需要配置OP80质量不合格的原因是啥??
                WorkPieceInfoManager.SetQualityNoOk_WorkPieceProcess(logMiddle, ref pieceProcess);
                    //赋值不合格原因
                    //TODO:需要配置OP80质量不合格的原因是啥??
                    WorkPieceInfoManager.SetQualityNoOk_WorkPieceProcess(logMiddle, ref pieceProcess);
                }
                pieceProcess.EndTime = file.LastWriteTime;//下线时间改为 文件最后修改时间 【Editby shaocx,2024-06-17】
@@ -487,7 +512,8 @@
                            WorkingProcedureCurrent = query_WorkingProcedureCurrent,
                            EquipmentID = _EquipmentId,
                            CreatedTime = DateTime.Now,
                            CreatedUserName = _DataCapturePointCode
                            CreatedUserName = _DataCapturePointCode,
                            DataCapturePointCname= _DataCapturePointName
                        };
                    }
@@ -512,13 +538,16 @@
                        isAdd_WorkPieceProcess = true;
                        process = new WorkPieceProcess();
                        process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(info);
                        QualityStateHelper.ResetQualityNoOkForNewProcess(ref process);
                        process.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                        process.WorkingProcedureCurrent = query_WorkingProcedureCurrent;
                        process.StartTime = DateTimeHelper.GetDateTime();
                        process.EndTime = file.LastWriteTime;
                        process.CreatedUserName = _DataCapturePointCode;
                        process.DataCapturePointCname = DataCapturePointCname;
                        process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
                        process.UpdatedUserName = _DataCapturePointCode;
                        process.UpdateDataCapturePointCname = DataCapturePointCname;
                        process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
                        process.OperationType = OperationType.生产.ToString();
                        process.Remarks = "";