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;
using System.Web.UI.WebControls;
namespace iWare_SCADA_BusinessLogical.BLL.Important
{
public class WorkPieceSPCPushOffManager
{
///
/// 工件SPC抽检推出
///
///
///
public static void WorkPieceSPCPushOff(WorkPieceLogMiddle logMiddle, LogType type)
{
using (DbModel db = new DbModel())
{
WorkPieceLog loginfo2 = new WorkPieceLog();
loginfo2 = EntityPropHelper.Mapper(logMiddle);
try
{
if ((logMiddle.WorkPieceID != null && logMiddle.WorkPieceID.Trim('\0').Length == 22)
//|| !((loginfo.WorkingProcedure.Equals("OP10") || loginfo.WorkingProcedure.Equals("OP40")) && loginfo.Remarks.Length > 0)
)
{
bool isAddWorkPieceInfo = false;
WorkPieceInfo cur_db_info = new WorkPieceInfo();
cur_db_info = db.WorkPieceInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault();
if (cur_db_info == null || cur_db_info.WorkPieceID.Length < 1)
{//此时需要新增数据
loginfo2.Remarks = $"工件{logMiddle.WorkPieceID} 工件SPC推出工序{logMiddle.WorkingProcedure} 没有获取到工件信息,此时需要新增数据";
Log4NetHelper.WriteErrorLog(type, $"工件{logMiddle.WorkPieceID} 工件SPC推出工序{logMiddle.WorkingProcedure} 没有获取到工件信息,此时需要新增数据");
//新增数据 【Editby shaocx,2024-09-07】
WorkPieceInfoHelper.CreateWorkPieceInfoForNoData(logMiddle, ref cur_db_info, ref isAddWorkPieceInfo);
}
else
{//更新表WorkPieceInfo
if (logMiddle.WorkingProcedure.Equals("OP10"))
{
//修复 错误记录成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 + "SPC";
loginfo2.WorkingProcedure = set_WorkingProcedureCurrent;//解决OP10,OP40同一个的问题
logMiddle.WorkingProcedure = set_WorkingProcedureCurrent; //解决OP10,OP40同一个的问题
}
else
{
cur_db_info.WorkingProcedureCurrent = logMiddle.WorkingProcedure;
cur_db_info.WorkPieceCurrentPosition = logMiddle.WorkingProcedure + "SPC";
}
cur_db_info.WorkPieceState = (int)WorkPieceState.SPCPush;
cur_db_info.UpdatedUserName = logMiddle.MonitoringPoint;
SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref cur_db_info, logMiddle.DataCapturePointCname);
cur_db_info.UpdatedTime = DateTime.Now;
cur_db_info.WorkingProcedureEndTime = DateTimeHelper.GetDateTime();
if (!(cur_db_info.WorkingProcedureStartTime.HasValue && cur_db_info.WorkingProcedureStartTime > DateTime.Parse("1900/01/01")))
{
cur_db_info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();
}
cur_db_info.WorkingProcedureCompleted = cur_db_info.WorkingProcedureCompleted + logMiddle.WorkingProcedure;//已完成工序
cur_db_info.WorkPieceCurrentPositionOrder = cur_db_info.WorkingProcedurePlan.IndexOf(logMiddle.WorkingProcedure) / 2;
}
cur_db_info.Remarks = "工件SPC抽检推出";
loginfo2.Remarks = cur_db_info.Remarks;
//更新上一工序的结束时间
var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == logMiddle.WorkPieceID && o.WorkingProcedureCurrent == logMiddle.WorkingProcedure
&& o.OperationType == OperationType.生产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault();
if (pro != null && pro.WorkPieceID.Length > 0)
{
pro.EndTime = DateTimeHelper.GetDateTime();
pro.Remarks = (pro.Remarks ?? "") + "SPC抽检结束";
pro.UpdatedUserName = logMiddle.MonitoringPoint;
pro.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname;
pro.UpdatedTime = DateTimeHelper.GetDateTime();
}
//每次SPC 都插入追溯表
WorkPieceProcess process = new WorkPieceProcess();
process = EntityPropHelper.Mapper(cur_db_info);
QualityStateHelper.ResetQualityNoOkForNewProcess(ref process);
process.StartTime = DateTimeHelper.GetDateTime();
process.OperationType = OperationType.SPC.ToString();
process.QualityState = (int)QualityStateEnum.Suspected;
process.Id = Yitter.IdGenerator.YitIdHelper.NextId();
process.CreatedUserName = logMiddle.MonitoringPoint;
process.JiaJuGongWei = logMiddle.JiaJuGongWei;
process.DataCapturePointCname = logMiddle.DataCapturePointCname;
process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
process.UpdatedUserName = logMiddle.MonitoringPoint;
process.UpdateDataCapturePointCname = logMiddle.DataCapturePointCname;
process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
process.Remarks = "工件SPC抽检推出";
process.MyRemarks = "SPC时,插入追溯表";
db.WorkPieceProcess.Add(process);
if (isAddWorkPieceInfo)
{
db.WorkPieceInfo.Add(cur_db_info);
}
db.WorkPieceInfoLog.Add(WorkPieceInfoManager.GetAddWorkPieceInfoLog(cur_db_info));
}
else
{
loginfo2.Remarks = $"工件SPC抽检推出读取二维码{logMiddle.WorkPieceID ?? "空"}异常";
Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}工件SPC抽检推出读码标记 读取工件码数据[{logMiddle.WorkPieceID ?? "空"}]时异常:");
}
}
catch (Exception e)
{
loginfo2.Remarks = $"读取二维码{logMiddle.WorkPieceID ?? "空"}更新数据异常{e.Message}";
}
finally
{
db.WorkPieceLog.Add(WorkPieceInfoManager.GetAddWorkPieceLog(loginfo2));//插入工件采集日志表
db.SaveChanges();
}
}
}
}
}