using iWare_SCADA_BusinessLogical.Utils;
using iWare_SCADA_Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace iWare_SCADA_BusinessLogical.BLL.Important
{
public class QualityInfoCompleteManager
{
///
/// 质量检测完成
///
///
///
public static void QualityInfoComplete(WorkPieceLogMiddle logMiddle, LogType type)
{
//根据质量数据判断是否合格/不合格 【Editby shaocx,2024-06-25】
WorkPieceInfoManager.SetLogMiddleForQuality(ref logMiddle);
//此处同时插入了WorkPieceLog,WorkPieceInfoLog表,并新增或修改WorkPieceInfo表
//插入质量相关表QualityDataInfo
using (DbModel db = new DbModel())
{
bool isAddWorkPieceInfo = false;
WorkPieceLog loginfo2 = new WorkPieceLog();
loginfo2 = EntityPropHelper.Mapper(logMiddle);
try
{
if (logMiddle.WorkPieceID.Length == 22)
{//获取到的工件号异常
WorkPieceInfo pieceInfo = new WorkPieceInfo();
pieceInfo = db.WorkPieceInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault();
if (pieceInfo == null || pieceInfo.WorkPieceID.Length < 1)
{//没有工件信息,不做更新
if (logMiddle.MonitoringPoint.Equals("OP1002") || logMiddle.MonitoringPoint.Equals("OP1003") || logMiddle.MonitoringPoint.Contains("OP2002"))
{//OP10 没有上线扫码枪,约定用测量完成信号当上线标记
pieceInfo = EntityPropHelper.Mapper(logMiddle);
//EntityPropHelper.CopyProp(loginfo, info, loginfo.GetWorkPieceInfoDict());
if (!logMiddle.WorkingProcedure.Equals("OP05"))
{//当工件二维码第一次出现的工序不是OP05,则设置为可疑状态
pieceInfo.QualityState = (int)QualityStateEnum.Suspected;
pieceInfo.QualityErrorInfo = $"工件二维码第一次出现的工序{logMiddle.MonitoringPoint}不是OP05,数据缺失,请确认情况并做相应处理!";
pieceInfo.Remarks = $"工件二维码第一次出现的工序{logMiddle.WorkingProcedure}不是OP05,数据缺失,请确认情况并做相应处理!";
}
else
{
pieceInfo.QualityState = (int)QualityStateEnum.OK;//此处需要注意,判断所有工序质量,然后再赋值 //默认合格,OP05默认是合格
pieceInfo.Remarks = "OP05新增工件信息";
}
pieceInfo.WorkPieceinitOnlineTime = DateTimeHelper.GetDateTime();
pieceInfo.WorkingProcedurePlan = ConfigHelper.GetConfigString("WorkingProcedureAllStr") ?? "OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80";
pieceInfo.CreatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle);
SystemBussinessHelper.SetWorkPieceInfoMiddleForCreatedUserName(ref pieceInfo, logMiddle.DataCapturePointCname);
pieceInfo.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
pieceInfo.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();//
pieceInfo.WorkingProcedureEndTime = null;
pieceInfo = WorkPieceInfoManager.ParseQRCode(pieceInfo);
isAddWorkPieceInfo = true;
}
else
{
loginfo2.Remarks = $"|工件{logMiddle.WorkPieceID} 质量检测完成工序{logMiddle.MonitoringPoint} 没有获取到工件信息,此时需要新增数据";
Log4NetHelper.WriteErrorLog(type, $"工件{logMiddle.WorkPieceID} 质量检测完成工序{logMiddle.MonitoringPoint} 没有获取到工件信息,此时需要新增数据");
//新增数据 【Editby shaocx,2024-09-07】
WorkPieceInfoHelper.CreateWorkPieceInfoForNoData(logMiddle, ref pieceInfo, ref isAddWorkPieceInfo);
}
}
if (logMiddle.MonitoringPoint.Equals("OP1002") || logMiddle.MonitoringPoint.Equals("OP1003") || logMiddle.MonitoringPoint.Contains("OP2002"))
{// OP10 没有上线扫码枪,约定用测量完成信号当上线标记,所以上线需要修改的字段放这里
if (logMiddle.WorkingProcedure.Equals("OP10"))
{
var WorkingProcedure = (logMiddle.MonitoringPoint.Equals("OP1002") ? "OP10" : "OP40");
loginfo2.WorkingProcedure = WorkingProcedure;//解决OP10,OP40同一个的问题
logMiddle.WorkingProcedure = WorkingProcedure;//解决OP10,OP40同一个的问题
}
pieceInfo.WorkPieceCurrentPosition = logMiddle.WorkingProcedure;
pieceInfo.WorkPieceCurrentPositionOrder = pieceInfo.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure) / 2;
pieceInfo.WorkingProcedureCurrent = logMiddle.WorkingProcedure;
pieceInfo.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();
#region 更新设备实时表
bool isAddEquipmentCurrentMonitor = false;
EquipmentCurrentMonitor equinfo = new EquipmentCurrentMonitor();
equinfo = db.EquipmentCurrentMonitor.Where(o => o.EquipmentID == logMiddle.EquipmentID).FirstOrDefault();
if (equinfo == null || equinfo.Id < 1)
{//没有工件信息,不做更新
Log4NetHelper.WriteErrorLog(type, $"设备{logMiddle.EquipmentID} 告警监控{logMiddle.WorkingProcedure} 没有获取到设备监控信息,现新增");
equinfo = EntityPropHelper.Mapper(logMiddle);
equinfo.OnlineTime = DateTime.Now;
isAddEquipmentCurrentMonitor = true;
}
else
{//更新工件
equinfo.WorkPieceID = logMiddle.WorkPieceID;
equinfo.UpdatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle);
equinfo.UpdatedTime = DateTime.Now;
equinfo.OnlineTime = DateTime.Now;
}
if (isAddEquipmentCurrentMonitor)
{
equinfo.Id = Yitter.IdGenerator.YitIdHelper.NextId();
db.EquipmentCurrentMonitor.Add(equinfo);
}
#endregion
//UpdateKnifeToolLift(db, loginfo);//更新刀具寿命信息
}
pieceInfo.WorkingProcedureCurrent = logMiddle.WorkingProcedure;//更新当前工序 【Editby shaocx,2024-09-03】
pieceInfo.WorkPieceState = (int)WorkPieceState.WIP;//推出后和SPC抽检后 质量录入时状态修改回在制品
pieceInfo.EquipmentID = logMiddle.EquipmentID;
pieceInfo.QualityStateUpdateUser = logMiddle.UpdatedUserName;
pieceInfo.QualityStateUpdateTime = logMiddle.UpdatedTime.Value.LocalDateTime;
pieceInfo.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString();
pieceInfo.Remarks = $"{logMiddle.WorkingProcedure}质量检测完成修改";
pieceInfo.UpdatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle);
SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref pieceInfo, logMiddle.DataCapturePointCname);
pieceInfo.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
if (!(pieceInfo.WorkingProcedureStartTime.HasValue && pieceInfo.WorkingProcedureStartTime > DateTime.Parse("1900/01/01")))
{//工序开始时间没有则赋值
pieceInfo.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();
}
pieceInfo.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityStateEnum.OK : QualityStateEnum.NG);
//赋值不合格原因
WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo);
if (!pieceInfo.QualityState.Equals(((int)QualityStateEnum.OK).ToString()))
{
pieceInfo.QualityErrorInfo = $"{logMiddle.WorkingProcedure}工序质量采集数据不合格{pieceInfo.QualityState}";
}
else
{
pieceInfo.QualityErrorInfo = "";
}
logMiddle.QualityState = pieceInfo.QualityState;
if (isAddWorkPieceInfo)
{
db.WorkPieceInfo.Add(pieceInfo);
}
#region 根据标准值更新最新质量数据(OP10/OP40/OP20/OP60)
var qcofig = db.EquipmentQualityConfig.Where(o => o.WorkingProcedure.Equals(logMiddle.WorkingProcedure) && o.ParamType != 1 && o.IsDeleted == false).ToList();
if (qcofig.Count > 0)
{
WorkPieceInfoManager.QualityDataHand(logMiddle, qcofig);
}
#endregion
var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault();
if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1)
{//插入QualityDataInfo表
qualityData = EntityPropHelper.Mapper(logMiddle);
db.QualityDataInfo.Add(WorkPieceInfoManager.GetAddQualityDataInfo(qualityData));
}
//修改QualityDataInfo表 //重复收到质量信息,会覆盖之前的
EntityPropHelper.CopyProp(logMiddle, qualityData, WorkPieceInfoManager.GetQualityDataInfoUpdate(logMiddle, logMiddle.WorkingProcedure, logMiddle.MonitoringPoint));//指定修改字段
qualityData.QualityStateUpdateUser = pieceInfo.UpdatedUserName;
qualityData.QualityReceiveTime = pieceInfo.UpdatedTime.Value.LocalDateTime;
qualityData.QualityStateUpdateMode = pieceInfo.QualityStateUpdateMode;
if (logMiddle.WorkingProcedure.Equals("OP10"))
{
qualityData.OP10QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3";
qualityData.OP10QualityReceiveTime = DateTimeHelper.GetDateTime();
}
else if (logMiddle.WorkingProcedure.Equals("OP20"))
{
//Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}质量信息【{loginfo.QualityStateStr ?? "空"}】" +
// $"【{(loginfo.QualityState.HasValue? loginfo.QualityState.Value:999)}】【{(info.QualityState.HasValue ? info.QualityState.Value : 888)}】 读取工件码数据[{loginfo.WorkPieceID ?? "空"}]");
qualityData.OP20QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3";
qualityData.OP20QualityReceiveTime = DateTimeHelper.GetDateTime();
qualityData.OP20QualityFilePath = logMiddle.OP20QualityFilePath;
}
else if (logMiddle.WorkingProcedure.Equals("OP30"))
{
switch (logMiddle.MonitoringPoint)
{
case "OP3002CH3":
qualityData.OP30QualityFilePathCH3 = logMiddle.OP30QualityFilePathCH3;
qualityData.OP30QualityStateCH3 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3";
qualityData.OP30QualityReceiveTimeCH3 = DateTimeHelper.GetDateTime();
if (qualityData.OP30QualityStateCH3 == ((int)QualityStateEnum.NG).ToString())
{
logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30涨断工位力矩超差;
logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30涨断工位力矩超差.ToString();
//赋值不合格原因
WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo);
}
break;
case "OP3002CH4":
qualityData.OP30QualityFilePathCH4 = logMiddle.OP30QualityFilePathCH4;
qualityData.OP30QualityStateCH4 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3";
qualityData.OP30QualityReceiveTimeCH4 = DateTimeHelper.GetDateTime();
if (qualityData.OP30QualityStateCH4 == ((int)QualityStateEnum.NG).ToString())
{
logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30预拧紧工位力矩超差;
logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30预拧紧工位力矩超差.ToString();
//赋值不合格原因
WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo);
}
break;
case "OP3002CH5":
qualityData.OP30QualityFilePathCH5 = logMiddle.OP30QualityFilePathCH5;
qualityData.OP30QualityStateCH5 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3";
qualityData.OP30QualityReceiveTimeCH5 = DateTimeHelper.GetDateTime();
if (qualityData.OP30QualityStateCH5 == ((int)QualityStateEnum.NG).ToString())
{
logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30终拧紧工位力矩超差;
logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30终拧紧工位力矩超差.ToString();
//赋值不合格原因
WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo);
}
break;
case "OP3002CH6":
qualityData.OP30QualityFilePathCH6 = logMiddle.OP30QualityFilePathCH6;
qualityData.OP30QualityStateCH6 = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3";
qualityData.OP30QualityReceiveTimeCH6 = DateTimeHelper.GetDateTime();
if (qualityData.OP30QualityStateCH6 == ((int)QualityStateEnum.NG).ToString())
{
logMiddle.QualityNoOk = (int)QualityNoOkEnum.OP30压衬套工位力矩超差;
logMiddle.QualityNoOkReason = QualityNoOkEnum.OP30压衬套工位力矩超差.ToString();
//赋值不合格原因
WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref pieceInfo);
}
break;
default:
break;
}
//qualityData.OP30QualityState = loginfo.QualityState.HasValue ? loginfo.QualityState.Value.ToString() : "3";
//qualityData.OP30QualityReceiveTime = DateTimeHelper.GetDateTime();
}
else if (logMiddle.WorkingProcedure.Equals("OP35"))
{
qualityData.OP35QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3";
qualityData.OP35QualityReceiveTime = DateTimeHelper.GetDateTime();
}
else if (logMiddle.WorkingProcedure.Equals("OP40"))
{
qualityData.OP40QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3";
qualityData.OP40QualityReceiveTime = DateTimeHelper.GetDateTime();
}
else if (logMiddle.WorkingProcedure.Equals("OP60"))
{
qualityData.OP60QualityFilePath = logMiddle.OP60QualityFilePath;
qualityData.OP60QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3";
qualityData.OP60QualityReceiveTime = DateTimeHelper.GetDateTime();
}
else if (logMiddle.WorkingProcedure.Equals("OP80"))
{
qualityData.OP80QualityFilePath = logMiddle.OP80QualityFilePath;
qualityData.OP80QualityState = logMiddle.QualityState.HasValue ? logMiddle.QualityState.Value.ToString() : "3";
qualityData.OP80QualityReceiveTime = DateTimeHelper.GetDateTime();
}
var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == logMiddle.WorkPieceID
//修正:查询的工序是当前线程的工序,而不是当前数据的工序 【Editby shaocx,2024-09-03】
//&& o.WorkingProcedureCurrent == pieceInfo.WorkingProcedureCurrent
&& o.WorkingProcedureCurrent == logMiddle.WorkingProcedure
&& o.OperationType == OperationType.生产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault();
if (pro == null || pro.WorkPieceID.Length < 1 || logMiddle.MonitoringPoint.Equals("OP1002") || logMiddle.MonitoringPoint.Equals("OP1003") || logMiddle.MonitoringPoint.Contains("OP2002"))
{// OP10 没有上线扫码枪,约定用测量完成信号当上线标记,所以上线需要修改的字段放这里
//上线是每次都插入
WorkPieceProcess process_05 = WorkPieceProcessHelper.CreateWorkPieceProcessForOP05(logMiddle, db, pieceInfo);
if (process_05 != null)
{//创建OP05工序,当没有05工序时,才创建 【Editby shaocx,2024-08-29】
db.WorkPieceProcess.Add(process_05);
}
WorkPieceProcess process = new WorkPieceProcess();
process = EntityPropHelper.Mapper(pieceInfo);
QualityStateHelper.ResetQualityNoOkForNewProcess(ref process);
process.StartTime = DateTimeHelper.GetDateTime();
//不再默认赋值为合格 【Editby shaocx,2024-08-16】
//process.QualityState = pieceInfo.QualityState.HasValue ? pieceInfo.QualityState.Value : (int)QualityState.OK;//默认合格,已处理
process.QualityState = WorkPieceInfoManager.GetQualityStateValue(pieceInfo.QualityState);
//记录质量不合格原因 【Editby shaocx,2024-06-26】
//赋值不合格原因
WorkPieceInfoManager.SetQualityNoOk_WorkPieceProcess(logMiddle, ref process);
process.Id = Yitter.IdGenerator.YitIdHelper.NextId();
process.CreatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle);
process.DataCapturePointCname = logMiddle.DataCapturePointCname;
process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
process.UpdatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle);
process.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname;
process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
process.OperationType = OperationType.生产.ToString();
process.QualityDataInfoID = qualityData.Id;
process.Remarks = "";
process.MyRemarks = "质量检测完成时,如果找不到就新建";
db.WorkPieceProcess.Add(process);
}
else
{//其他的都只是修改
pro.QualityDataInfoID = qualityData.Id;
pro.UpdatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle);
pro.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname;
pro.UpdatedTime = DateTimeHelper.GetDateTime();
//不再默认赋值为合格 【Editby shaocx,2024-08-16】
//pro.QualityState = pieceInfo.QualityState.HasValue ? pieceInfo.QualityState.Value : 9;
pro.QualityState = WorkPieceInfoManager.GetQualityStateValue(pieceInfo.QualityState);
//赋值不合格原因
WorkPieceInfoManager.SetQualityNoOk_WorkPieceProcess(logMiddle, ref pro);
//TODO:判断如果是60工序,那么就要更新pro表的创建人为loginfo.MonitoringPoint 【Editby shaocx,2024-06-05】
if (logMiddle.WorkingProcedure == "OP60")
{
pro.CreatedUserName = WorkPieceInfoManager.ResetUpdatedUserName(logMiddle);
pro.DataCapturePointCname = logMiddle.DataCapturePointCname;
}
}
if (logMiddle.QualityType != null && logMiddle.QualityType.Equals(QualityType.SPC.ToString()))
{//SPC反馈,
if (logMiddle.QualityState != (int)QualityStateEnum.OK)
{
//当某到工序检测到不合格工件时,从该工件加工完成时刻前指定时间起至报检不合格时间止,系统将该工件的最后加工工序在该时间段内加工的所有工件、正在加工的工件、该工序入口处的第一个工件全部标记为疑似状态,由人工复检工件并修改状态,并支持批量变更。
//答复:在线测量不需要走这个流程,只有SPC抽检才需要,需要把这时间段的工件全部置为疑似,哪怕是已完成工件
//时间段起始时间:抽检工件生产时间前一SPC抽检时间
//时间段结束时间:抽检工件质量结果出现后的时间
//抽检工件工序扫描枪外入口处的第一个工件 也把质量状态置为疑似
//(每一工序SPC抽检是设置的固定的,比如200抽4,状态置为疑似时若工件还在设备内,会继续生产完毕后排出)
//目前这块逻辑放到了 WebAPI中了
}
}
db.WorkPieceInfoLog.Add(WorkPieceInfoManager.GetAddWorkPieceInfoLog(pieceInfo));
db.QualityDataInfoLog.Add(WorkPieceInfoManager.GetAddQualityDataInfoLog(qualityData));//插入日志
}
else
{
loginfo2.Remarks = $"质量检测完成读取二维码{logMiddle.WorkPieceID ?? "空"}异常";
Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}工序监控读码标记 读取工件码数据[{logMiddle.WorkPieceID ?? "空"}]时异常:");
}
}
catch (Exception ex)
{
loginfo2.Remarks = $"质量检测完成,更新数据异常{ex.Message}";
Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}质量检测完成 工件码数据[{logMiddle.WorkPieceID ?? "空"}]时异常:" + ex.Message, ex);
}
finally
{
loginfo2.Remarks = $"质量:{logMiddle.QualityStateStr ?? "空"}";
db.WorkPieceLog.Add(WorkPieceInfoManager.GetAddWorkPieceLog(loginfo2));//插入工件采集日志表
db.SaveChanges();
}
}
}
///
/// 质量检测完成-OP70专用
///
///
///
public static void QualityInfoCompleteForOP70(WorkPieceLogMiddle logMiddle, LogType type)
{
if (string.IsNullOrEmpty(logMiddle.QualityOP70To1) && string.IsNullOrEmpty(logMiddle.QualityOP70To2) && string.IsNullOrEmpty(logMiddle.QualityOP70To3))
{
Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}工序监控清洗机数据 读取工件码数据[{logMiddle.WorkPieceID ?? "空"}]获取的三个值都是空的,不处理返回");
return;
}
using (DbModel db = new DbModel())
{
try
{
bool isAdd = false;
if (logMiddle.WorkPieceID.Length == 22)
{
var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault();
if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1)
{//插入QualityDataInfo表
isAdd = true;
qualityData = EntityPropHelper.Mapper(logMiddle);
}
qualityData.QualityStateUpdateUser = "OP7009";
qualityData.QualityReceiveTime = DateTime.Now;
//特殊处理OP70的质量数据
if (string.IsNullOrEmpty(qualityData.QualityOP70To1) && !string.IsNullOrEmpty(SystemHelper.GetStrForQualityOP70(logMiddle.QualityOP70To1)))
{
qualityData.QualityOP70To1 = logMiddle.QualityOP70To1;
}
if (string.IsNullOrEmpty(qualityData.QualityOP70To2) && !string.IsNullOrEmpty(SystemHelper.GetStrForQualityOP70(logMiddle.QualityOP70To2)))
{
qualityData.QualityOP70To2 = logMiddle.QualityOP70To2;
}
if (string.IsNullOrEmpty(qualityData.QualityOP70To3) && !string.IsNullOrEmpty(SystemHelper.GetStrForQualityOP70(logMiddle.QualityOP70To3)))
{
qualityData.QualityOP70To3 = logMiddle.QualityOP70To3;
}
db.QualityDataInfoLog.Add(WorkPieceInfoManager.GetAddQualityDataInfoLog(qualityData));//插入日志
if (isAdd)
{
db.QualityDataInfo.Add(WorkPieceInfoManager.GetAddQualityDataInfo(qualityData));
}
//更新表WorkPieceProcess
var pro_70 = db.WorkPieceProcess.Where(o => o.WorkPieceID == logMiddle.WorkPieceID && o.WorkingProcedureCurrent == "OP70"
).OrderByDescending(o => o.StartTime).FirstOrDefault();
if (pro_70 != null)
{
pro_70.Update70Flag = 2;
}
db.SaveChanges();//保存数据
}
else
{
Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}工序监控清洗机数据 读取工件码数据[{logMiddle.WorkPieceID ?? "空"}]时异常:");
}
}
catch (Exception ex)
{
Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}工序监控清洗机数据 读取工件码数据[{logMiddle.WorkPieceID ?? "空"}]时异常:", ex);
}
finally
{
}
}
}
}
}