zhuangpei-mesbackend/DOAN.Service/MES/quality/FQC/QcFinishedproductDefectService.cs

124 lines
5.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DOAN.Common.SocketHelper;
using DOAN.Model;
using DOAN.Model.MES.andon;
using DOAN.Model.MES.product;
using DOAN.Model.MES.quality.FQC;
using DOAN.Model.MES.quality.IQC;
using DOAN.Model.MES.quality.IQC.Dto;
using DOAN.Repository;
using DOAN.Service.MES.quality.FQC.IService;
using DOAN.ServiceCore.MyMatchPush;
using Infrastructure.Attribute;
using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData;
namespace DOAN.Service.MES.quality.FQC
{
/// <summary>
/// 成品缺陷收集 Service业务层处理
/// </summary>
[AppService(ServiceType = typeof(IQcFinishedproductDefectService), ServiceLifetime = LifeTime.Transient)]
public class QcFinishedproductDefectService : BaseService<QcFinishedproductDefectCollection>, IQcFinishedproductDefectService
{
private readonly SocketGatewayServer _socketGateway;
public QcFinishedproductDefectService(SocketGatewayServer socketGateway)
{
_socketGateway = socketGateway;
}
public bool AddDefectNum(string WorkOrder, string DefectCode)
{
int flag = 0;
// 检查 Workorder 是否存在
var existingRecord = Context.Queryable<QcFinishedproductDefectCollection>()
.Where(it => it.Workorder == WorkOrder)
.Where(it => it.DefectCode == DefectCode)
.First();
ProWorkorder proWorkorder= Context.Queryable<ProWorkorder>().Where(it => it.Workorder == WorkOrder).First();
if (existingRecord != null)
{
// 更新 Number 字段
flag = Context.Updateable<QcFinishedproductDefectCollection>()
.SetColumns(it => new QcFinishedproductDefectCollection
{
Number = it.Number + 1,
UpdatedTime = DateTime.Now
})
.Where(it => it.Workorder == WorkOrder)
.Where(it => it.DefectCode == DefectCode)
.ExecuteCommand();
//两个小时内达到每5次就报警一次
bool isExist= Context.Queryable<QcFinishedproductDefectCollection>()
.Where(it => it.Workorder == WorkOrder)
.Where(it => it.DefectCode == DefectCode)
.Where(it=>it.UpdatedTime-it.CreatedTime>=TimeSpan.FromHours(2))
.Where(it => it.Number % 5 == 0&&it.Number>=5)
.Any();
if(isExist)
{
//触发报警逻辑
AndonFaultRecord record=new AndonFaultRecord();
record.LineCode = proWorkorder.LineCode;
record.FaultDict = "成品缺陷报警";
record.FaultContext = $"工单号:{WorkOrder},缺陷代码:{DefectCode},缺陷次数:{existingRecord.Number + 1}";
record.AskPerson = "system";
record.CreatedTime= DateTime.Now;
//发送报警信息
string message = $"产线:{record.LineCode},\n故障类型{record.FaultDict},\n故障内容:{record.FaultContext},\n报警人:{record.AskPerson}";
//发送手表
Watchup.StartPush(message, _socketGateway);
record.Id = SnowFlakeSingle.Instance.NextId().ToString();
record.StartTime = DateTime.Now;
record.Status = 1;
record.CreatedBy = "system";
record.CreatedTime = DateTime.Now;
int result = Context.Insertable(record).ExecuteCommand();
}
}
else
{
// 插入新记录
QcFinishedproductDefectCollection qcFinishedproductDefect = new QcFinishedproductDefectCollection();
qcFinishedproductDefect.Id = XueHua;
qcFinishedproductDefect.Workorder = WorkOrder;
qcFinishedproductDefect.DefectCode = DefectCode;
qcFinishedproductDefect.CreatedTime = DateTime.Now;
qcFinishedproductDefect.UpdatedTime = DateTime.Now;
qcFinishedproductDefect.Number = 1;
flag = Context.Insertable(qcFinishedproductDefect).ExecuteCommand();
}
return flag > 0 ? true : false;
}
public bool UpdateDefectNum(string WorkOrder, string DefectCode, int num)
{
int flag = 0;
flag = Context.Updateable<QcFinishedproductDefectCollection>()
.SetColumns(it => new QcFinishedproductDefectCollection
{
Number = num,
UpdatedTime = DateTime.Now
})
.Where(it => it.Workorder == WorkOrder)
.Where(it => it.DefectCode == DefectCode)
.ExecuteCommand();
return flag > 0 ? true : false;
}
public List<QcFinishedproductDefectCollection> SearchDefectList(string WorkOrder)
{
return Context.Queryable<QcFinishedproductDefectCollection>().Where(it => it.Workorder == WorkOrder).ToList();
}
}
}