| | |
| | | } |
| | | } |
| | | 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) |
| | |
| | | .OrderByDescending(o => o.WarnStartTime).FirstOrDefault(); |
| | | if (loginfo.IsMessage) |
| | | {//若有告警,如果有设备状态变更,肯定插入,此处只修改即可 |
| | | //若有告警,如果设备状态没有变更,有告警,也不插入新的(问题:当状态没有更改,如一直是故障,但告警信息有变化,怎么办 ps:此处先不管) |
| | | //若有告警,如果设备状态没有变更,有告警,也不插入新的(问题:当状态没有更改,如一直是故障,但告警信息有变化,怎么办 ps:此处先不管) |
| | | infolog.WarnStartTime = DateTimeHelper.GetDateTime(); |
| | | infolog.WarnType = alertall; |
| | | infolog.Warnmsg = warnmsg; |
| | |
| | | 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(); |
| | | } |