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 WorkPiecePushOffManager
|
{
|
/// <summary>
|
/// 工件推出NOOK
|
/// </summary>
|
/// <param name="loginfo"></param>
|
/// <param name="type"></param>
|
public static void WorkPiecePushOff(WorkPieceLogMiddle loginfo, LogType type)
|
{
|
using (DbModel db = new DbModel())
|
{
|
WorkPieceLog loginfo2 = new WorkPieceLog();
|
loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(loginfo);
|
try
|
{
|
if (loginfo.WorkPieceID != null && loginfo.WorkPieceID.Trim('\0').Length == 22)
|
{
|
WorkPieceInfo cur_db_info = new WorkPieceInfo();
|
cur_db_info = db.WorkPieceInfo.Where(o => o.WorkPieceID == loginfo.WorkPieceID).FirstOrDefault();
|
if (cur_db_info == null || cur_db_info.WorkPieceID.Length < 1)
|
{//没有工件信息,不做更新
|
Log4NetHelper.WriteErrorLog(type, $"工件{loginfo.WorkPieceID} 工件推出NOOK工序{loginfo.WorkingProcedure} 没有获取到工件信息不做更新");
|
return;
|
}
|
else
|
{//更新表WorkPieceInfo
|
if (loginfo.WorkingProcedure.Equals("OP10"))
|
{
|
/*
|
info.WorkPieceCurrentPosition = info.WorkingProcedureCurrent + "NOOK";
|
loginfo2.WorkingProcedure = info.WorkingProcedureCurrent;//解决OP10,OP40同一个的问题
|
loginfo.WorkingProcedure = info.WorkingProcedureCurrent; //解决OP10,OP40同一个的问题
|
//*/
|
//修复 错误记录成OP05的问题 【Editby shaocx,2024-08-26】
|
var set_WorkingProcedureCurrent = "";
|
if (cur_db_info.WorkingProcedureCurrent != "OP10" && cur_db_info.WorkingProcedureCurrent != "OP40")
|
{
|
WorkPieceInfoManager.SetWorkingProcedureCurrentForOP10(cur_db_info, ref set_WorkingProcedureCurrent);
|
}
|
else
|
{
|
set_WorkingProcedureCurrent = cur_db_info.WorkingProcedureCurrent;
|
}
|
cur_db_info.WorkingProcedureCurrent = set_WorkingProcedureCurrent;
|
cur_db_info.WorkPieceCurrentPosition = set_WorkingProcedureCurrent + "NOOK";
|
loginfo2.WorkingProcedure = set_WorkingProcedureCurrent;//解决OP10,OP40同一个的问题
|
loginfo.WorkingProcedure = set_WorkingProcedureCurrent; //解决OP10,OP40同一个的问题
|
}
|
else
|
{
|
cur_db_info.WorkingProcedureCurrent = loginfo.WorkingProcedure;
|
cur_db_info.WorkPieceCurrentPosition = loginfo.WorkingProcedure + "NOOK";
|
}
|
cur_db_info.WorkPieceState = (int)WorkPieceState.NOOKPush;
|
cur_db_info.UpdatedUserName = loginfo.MonitoringPoint;
|
SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref cur_db_info, loginfo.DataCapturePointCname);
|
cur_db_info.UpdatedTime = DateTime.Now;
|
cur_db_info.Remarks = "工件NOOK推出";
|
loginfo2.Remarks = cur_db_info.Remarks;
|
if (!(cur_db_info.WorkingProcedureStartTime.HasValue && cur_db_info.WorkingProcedureStartTime > DateTime.Parse("1900/01/01")))
|
{
|
cur_db_info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();
|
}
|
cur_db_info.WorkingProcedureEndTime = DateTimeHelper.GetDateTime();
|
cur_db_info.WorkingProcedureCompleted = cur_db_info.WorkingProcedureCompleted + loginfo.WorkingProcedure;//已完成工序
|
cur_db_info.WorkPieceCurrentPositionOrder = cur_db_info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2;
|
}
|
QualityDataInfo qualityData = null;
|
qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == loginfo.WorkPieceID).FirstOrDefault();
|
if (loginfo.WorkingProcedure.Equals("OP35"))
|
{//为了解决OP35的采集到的质量信息是OK还NOOK的情况,OP35 NOOK时更新质量信息
|
loginfo2.Remarks = $"OP35NOOK原质量信息{(cur_db_info.QualityState.HasValue ? cur_db_info.QualityState.Value.ToString() : "空")}";
|
cur_db_info.QualityState = (int)QualityStateEnum.NG;
|
if (!cur_db_info.QualityState.Equals(((int)QualityStateEnum.OK).ToString()))
|
{
|
cur_db_info.QualityErrorInfo = $"{loginfo.WorkingProcedure}工序质量NOOK采集数据不合格{cur_db_info.QualityState}";
|
}
|
else
|
{
|
cur_db_info.QualityErrorInfo = "";
|
}
|
loginfo.QualityState = cur_db_info.QualityState;
|
|
|
if (qualityData != null)
|
{
|
qualityData.OP35QualityState = loginfo.QualityState.HasValue ? loginfo.QualityState.Value.ToString() : "3";
|
qualityData.OP35QualityReceiveTime = DateTimeHelper.GetDateTime();
|
db.QualityDataInfoLog.Add(WorkPieceInfoManager.GetAddQualityDataInfoLog(qualityData));
|
}
|
}
|
//更新上一工序的结束时间
|
var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID
|
&& o.WorkingProcedureCurrent == loginfo.WorkingProcedure && o.OperationType == OperationType.生产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault();
|
if (pro != null && pro.WorkPieceID.Length > 0)
|
{
|
pro.EndTime = DateTimeHelper.GetDateTime();
|
pro.Remarks = "NOOK结束";
|
pro.UpdatedUserName = loginfo.MonitoringPoint;
|
pro.UpdateDataCapturePointCname = loginfo.DataCapturePointCname;
|
pro.UpdatedTime = DateTimeHelper.GetDateTime();
|
}
|
else
|
{//如果找不到就新建 【Editby shaocx,2024-09-03】
|
WorkPieceProcess add_process = new WorkPieceProcess();
|
add_process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(cur_db_info);
|
QualityStateHelper.ResetQualityNoOkForNewProcess(ref add_process);
|
add_process.Id = Yitter.IdGenerator.YitIdHelper.NextId();
|
add_process.StartTime = DateTimeHelper.GetDateTime().AddSeconds(-SystemBussinessHelper.MoNiTimeForWorkingProcedure(loginfo.WorkingProcedure));
|
add_process.EndTime = DateTimeHelper.GetDateTime();
|
//不再默认赋值为合格 【Editby shaocx,2024-08-16】
|
add_process.QualityState = WorkPieceInfoManager.GetQualityStateValue(loginfo.QualityState);
|
|
add_process.CreatedUserName = loginfo.MonitoringPoint;
|
add_process.DataCapturePointCname = loginfo.DataCapturePointCname;
|
add_process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
|
add_process.UpdatedUserName = loginfo.MonitoringPoint;
|
add_process.UpdateDataCapturePointCname = loginfo.DataCapturePointCname;
|
add_process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
|
add_process.OperationType = OperationType.生产.ToString();
|
add_process.Remarks = "NOOK结束";
|
add_process.MyRemarks = "NOOK结束时,如果找不到就新建";
|
db.WorkPieceProcess.Add(add_process);
|
}
|
|
QualityStateHelper.SetQualityStateForNoOk(ref cur_db_info, ref pro, ref qualityData);
|
|
db.WorkPieceInfoLog.Add(WorkPieceInfoManager.GetAddWorkPieceInfoLog(cur_db_info));
|
|
}
|
else
|
{
|
loginfo2.Remarks = $"工件NOOK推出读取二维码{loginfo.WorkPieceID ?? "空"}异常";
|
Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}工件NOOK推出读码标记 读取工件码数据[{loginfo.WorkPieceID ?? "空"}]时异常:");
|
}
|
}
|
catch (Exception e)
|
{
|
loginfo2.Remarks = $"读取二维码{loginfo.WorkPieceID ?? "空"}更新数据异常{e.Message}";
|
}
|
|
|
db.WorkPieceLog.Add(WorkPieceInfoManager.GetAddWorkPieceLog(loginfo2));//插入工件采集日志表
|
db.SaveChanges();
|
}
|
|
}
|
}
|
}
|