schangxiang@126.com
2024-09-06 e4f89a92209ebca77240edaa3b78f66eb6e4b3d5
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
@@ -190,6 +190,7 @@
                            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);
@@ -197,14 +198,15 @@
                        }
                        else
                        {
                            if (info.WorkingProcedureCurrent.Equals("OP05"))
                            {
                                loginfo.Remarks = $"读取二维码{loginfo.WorkPieceID ?? "空"} OP05工序重复读取了";
                                return;
                            }
                            //存在 表 WorkPieceInfo有,但是 WorkPieceProcess这个工序不存在的情况 【Editby shaocx,2024-09-06】
                            //if (info.WorkingProcedureCurrent.Equals("OP05"))
                            //{
                            //    loginfo.Remarks = $"读取二维码{loginfo.WorkPieceID ?? "空"} OP05工序重复读取了";
                            //    return;
                            //}
                        }
                        if ((info.WorkingProcedureCurrent.Equals("OP05") && isAddWorkPieceInfo == false))
                        {
                        if ((loginfo.WorkingProcedure.Equals("OP05") && isAddWorkPieceInfo == false))
                        {//存在 表 WorkPieceInfo有,但是 WorkPieceProcess这个工序不存在的情况
                            //如果是OP05的,并且是 不需要新增 表WorkPieceInfo,那么就不需要更新表 WorkPieceInfo
                        }
                        else
@@ -222,30 +224,14 @@
                            info.WorkPieceCurrentPosition = loginfo.WorkingProcedure;
                            info.WorkPieceCurrentPositionOrder = info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2;
                            info.WorkingProcedureCurrent = loginfo.WorkingProcedure;
                            info.WorkingProcedureCurrent = loginfo.WorkingProcedure;//工序赋值
                            info.Remarks = $"{info.WorkingProcedureCurrent}工件上线";
                        }
                        //修复下 op35 同一个件 下线时间跟下一个上线时间一模一样的问题  【Editby shaocx,2024-08-27】
                        var isNeedAddNewProcess = true;
                        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 = "又一次上线,更新结束时间";
                            }
                        }
                        //特殊处理OP05上线,因为他是根据文本列表内容上线的 【Editby shaocx,2024-09-03】
                        if (loginfo.WorkingProcedure.Equals("OP05"))
                        {
@@ -253,6 +239,26 @@
                            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)
@@ -310,6 +316,7 @@
                        }
                        #region 判断是否跳序,或质量不符合 然后反馈PLC
                        /*
                        if (IsFeedback.HasValue && IsFeedback.Value == (int)FeedbackMode.FeedbackPLC)
                        {
                            bool checkQualityInfoCompleteFlag = false;
@@ -323,43 +330,7 @@
                                message = !checkQualityInfoCompleteFlag ? "跳序," : "";
                                message += info.QualityState != (int)QualityStateEnum.OK ? "质量不符合" : "";
                            }
                            ////反馈给PLC,(写入点待定)
                            //MessageModel fr = null;
                            //fr = plcService.WriteValuePoint("", "", plcFlag, PLCManger.GetTypeForString("bool"));
                            //if (fr.result)
                            //{
                            //    Log4NetHelper.WriteInfoLog(type, $" 工件{info.WorkPieceID} {loginfo.WorkingProcedure}工序反馈给PLC 成功, 出现 {message}");
                            //}
                            //else
                            //{
                            //    Log4NetHelper.WriteErrorLog(type, $" 工件{info.WorkPieceID} {loginfo.WorkingProcedure}工序反馈给PLC 失败, 出现 {message} ,失败原因:{fr.resMsg}");
                            //}
                            //#region 反馈PLC
                            //bool checkQualityInfoCompleteFlag = false;
                            //bool plcFlag = true;//反馈给PLC的标记
                            //string message = "";
                            //checkQualityInfoCompleteFlag = WorkPieceInfoManager.CheckQualityInfoComplete(info, wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                            //if (!checkQualityInfoCompleteFlag || info.QualityState != (int)QualityState.OK)
                            //{
                            //    plcFlag = false;
                            //    message = !checkQualityInfoCompleteFlag ? "跳序," : "";
                            //message += info.QualityState != (int)QualityState.OK ? "质量不符合" : "";
                            //}
                            ////反馈给PLC,(写入点待定)
                            //MessageModel fr = null;
                            //fr = plcService.WriteValuePoint("", "", plcFlag, PLCManger.GetTypeForString("bool"));
                            //if (fr.result)
                            //{
                            //    Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" 工件{wplog.WorkPieceID} {WorkingProcedure}工序反馈给PLC 成功, 出现 {message}");
                            //}
                            //else
                            //{
                            //    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" 工件{wplog.WorkPieceID} {WorkingProcedure}工序反馈给PLC 失败, 出现 {message} ,失败原因:{fr.resMsg}");
                            //}
                            //#endregion
                        }
                        else
                        {//读码完成若工件质量不符合或发生跳序,不用管设备是否把工件放过去,数采系统都不变更当前工序,反馈设备PLC工件不符合,
@@ -367,6 +338,7 @@
                            info.WorkingProcedureCurrent = loginfo.WorkingProcedure;
                        }
                        //*/
                        #endregion
                        #region 更新设备实时表