124 lines
5.2 KiB
C#
124 lines
5.2 KiB
C#
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();
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|