schangxiang@126.com
2024-09-05 be9b996f8d4dd05efcd84e9e9397d31a0d33ab50
代码回归
已修改1个文件
215 ■■■■ 文件已修改
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs 215 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
@@ -298,112 +298,111 @@
                                }
                            }
                            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 ? "质量不符合" : "";
                                }
                                ////反馈给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工件不符合,
                             //若工序后续收集点收到相关工件信息再变更当前工序,  但质量信息不变
                                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);//更新刀具寿命信息
                        }
                        //db.Database.AutoTransactionsEnabled = false;// 同一个SaveChanges默认事务, 关闭默认事务:... 好像不能用啊,后面再研究吧
                        if (isAddWorkPieceInfo)
                        {
                            db.WorkPieceInfo.Add(info);
                        }
                        else
                        {
                            loginfo.Remarks = $"上线完成读取二维码{loginfo.WorkPieceID ?? "空"}异常";
                            Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}上线监控读码标记 读取工件码数据[{loginfo.WorkPieceID ?? "空"}]时异常:");
                        {//不确定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 ? "质量不符合" : "";
                            }
                            ////反馈给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工件不符合,
                         //若工序后续收集点收到相关工件信息再变更当前工序,  但质量信息不变
                            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)
@@ -1949,7 +1948,7 @@
                        .OrderByDescending(o => o.WarnStartTime).FirstOrDefault();
                    if (loginfo.IsMessage)
                    {//若有告警,如果有设备状态变更,肯定插入,此处只修改即可
                        //若有告警,如果设备状态没有变更,有告警,也不插入新的(问题:当状态没有更改,如一直是故障,但告警信息有变化,怎么办  ps:此处先不管)
                     //若有告警,如果设备状态没有变更,有告警,也不插入新的(问题:当状态没有更改,如一直是故障,但告警信息有变化,怎么办  ps:此处先不管)
                        infolog.WarnStartTime = DateTimeHelper.GetDateTime();
                        infolog.WarnType = alertall;
                        infolog.Warnmsg = warnmsg;
@@ -2299,10 +2298,10 @@
                        info.UpdatedTime = DateTimeHelper.GetDateTime();
                        info.UpdatedUserName = threadinfo.Threadcode;
                        info.Threadlastmodifytime = threadinfo.Threadlastmodifytime > DateTime.MinValue ? threadinfo.Threadlastmodifytime : info.Threadlastmodifytime;//如果有传参则更新
                        //if (info.Threadstatue==1)
                        //{
                        //    info.Threadlastmodifytime = DateTimeHelper.GetDateTime();//最新跑到数据
                        //}
                                                                                                                                                                      //if (info.Threadstatue==1)
                                                                                                                                                                      //{
                                                                                                                                                                      //    info.Threadlastmodifytime = DateTimeHelper.GetDateTime();//最新跑到数据
                                                                                                                                                                      //}
                    }
                    db.SaveChanges();
                }