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
|
{
|
/// <summary>
|
/// 质量检测完成
|
/// </summary>
|
/// <param name="logMiddle"></param>
|
/// <param name="type"></param>
|
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<WorkPieceLog, WorkPieceLogMiddle>(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<WorkPieceInfo, WorkPieceLogMiddle>(logMiddle);
|
//EntityPropHelper<WorkPieceLog, WorkPieceInfo>.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<EquipmentCurrentMonitor, WorkPieceLog>(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<QualityDataInfo, WorkPieceLog>(logMiddle);
|
db.QualityDataInfo.Add(WorkPieceInfoManager.GetAddQualityDataInfo(qualityData));
|
}
|
//修改QualityDataInfo表 //重复收到质量信息,会覆盖之前的
|
EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.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<WorkPieceProcess, WorkPieceInfo>(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();
|
}
|
}
|
}
|
|
/// <summary>
|
/// 质量检测完成-OP70专用
|
/// </summary>
|
/// <param name="logMiddle"></param>
|
/// <param name="type"></param>
|
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<QualityDataInfo, WorkPieceLog>(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
|
{
|
}
|
}
|
}
|
}
|
}
|