shgx_tz_mom/ZR.Service/mes/andon/AndonAlarmRecordService.cs
2025-12-12 17:14:20 +08:00

275 lines
11 KiB
C#

using Infrastructure.Attribute;
using Infrastructure.Model;
using JinianNet.JNTemplate.Parsers;
using SqlSugar;
using SqlSugar.Extensions;
using System;
using ZR.Model;
using ZR.Model.MES.andon;
using ZR.Model.MES.andon.Dto;
using ZR.Repository;
using ZR.Service.mes.andon.Iservice;
namespace ZR.Service.mes.andon
{
/// <summary>
/// 报警记录Service业务层处理
/// </summary>
[AppService(ServiceType = typeof(IAndonAlarmRecordService), ServiceLifetime = LifeTime.Transient)]
public class AndonAlarmRecordService : BaseService<AndonAlarmRecord>, IAndonAlarmRecordService
{
private AndonAlarmLevelService andonAlarmLevelService = new AndonAlarmLevelService();
private AndonAlarmRecordProcessService andonAlarmRecordProcessService = new AndonAlarmRecordProcessService();
/// <summary>
/// 查询报警记录列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public PagedInfo<AndonAlarmRecordDto> GetList(AndonAlarmRecordQueryDto parm)
{
var predicate = Expressionable.Create<AndonAlarmRecord>();
if (parm != null)
{
if (parm.startTime != null && parm.startTime > DateTime.MinValue)
{
predicate = predicate.And(it => it.CreatedTime >= parm.startTime);
}
if (parm.endTime != null && parm.endTime > DateTime.MaxValue)
{
predicate = predicate.And(it => it.CreatedTime <= parm.endTime);
}
}
var response = Queryable()
.Where(predicate.ToExpression())
.ToPage<AndonAlarmRecord, AndonAlarmRecordDto>(parm);
return response;
}
public PagedInfo<AndonAlarmRecordDto> GetListToday(AndonAlarmRecordQueryDto parm)
{
var predicate = Expressionable.Create<AndonAlarmRecord>();
DateTime dtNow = DateTime.Now;
DateTime startTime = new DateTime(dtNow.Year, dtNow.Month, dtNow.Day, 0, 0, 0);
DateTime endTime = new DateTime(dtNow.Year, dtNow.Month, dtNow.Day, 23, 59, 59);
predicate = predicate.And(it => it.CreatedTime >= startTime);
predicate = predicate.And(it => it.CreatedTime <= endTime);
var response = Queryable()
.Where(predicate.ToExpression())
.ToPage<AndonAlarmRecord, AndonAlarmRecordDto>(parm);
return response;
}
/// <summary>
/// 获取详情
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public AndonAlarmRecord GetInfo(int Id)
{
var response = Queryable()
.Where(x => x.Id == Id)
.First();
return response;
}
/// <summary>
/// 添加报警记录
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public AndonAlarmRecord AddAndonAlarmRecord(AndonAlarmRecord model)
{
return Context.Insertable(model).ExecuteReturnEntity();
}
/// <summary>
/// 修改报警记录
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public int UpdateAndonAlarmRecord(AndonAlarmRecord model)
{
//var response = Update(w => w.Id == model.Id, it => new AndonAlarmRecord()
//{
// AlarmCode = model.AlarmCode,
// LineCode = model.LineCode,
// LineName = model.LineName,
// AlarmType = model.AlarmType,
// AlarmLevel = model.AlarmLevel,
// AlarmInfo = model.AlarmInfo,
// Sender = model.Sender,
// SenderName = model.SenderName,
// SendTime = model.SendTime,
// Receiver = model.Receiver,
// ReceiverName = model.ReceiverName,
// Sequence = model.Sequence,
// DurationTime = model.DurationTime,
// Status = model.Status,
// HandleResult = model.HandleResult,
// Remarks = model.Remarks,
// CreatedBy = model.CreatedBy,
// CreatedTime = model.CreatedTime,
// UpdatedBy = model.UpdatedBy,
// UpdatedTime = model.UpdatedTime,
//});
//return response;
return Update(model, true);
}
public ApiResult AlarmResponse(AndonAlarmRecordDto parm)
{
try
{
var response = new ApiResult();
if (parm != null)
{
var record = Queryable()
.Where(x => x.Id == parm.Id)
.First();
if (record != null)
{
if (record.AlarmLevel != null && record.AlarmLevel.Length > 0)
{
int minute = 0;
var levelInfo = andonAlarmLevelService.Queryable()
.Where(x => x.LevelName == record.AlarmLevel).First();
if (levelInfo != null && levelInfo.HandleTimeout != null)
{
minute = (int)levelInfo.HandleTimeout;
}
// 提前计算超时时间,提高可读性
var createdTime = record.CreatedTime.ObjToDate();
var timeoutTime = createdTime.AddMinutes(minute);
var isTimeout = DateTime.Now > timeoutTime;
record.Status = isTimeout ? "超时响应" : "及时响应";
}
else
{
record.Status = "及时响应";
}
record.Remarks = parm.Remarks;
record.UpdatedBy = parm.UserId;
record.UpdatedTime = DateTime.Now;
UpdateAndonAlarmRecord(record);
AndonAlarmRecordProcess andonAlarmRecordProcess = new AndonAlarmRecordProcess();
andonAlarmRecordProcess.AlarmCode = record.AlarmCode;
andonAlarmRecordProcess.Operate = record.Status;
andonAlarmRecordProcess.CreatedBy = parm.UserId;
andonAlarmRecordProcess.CreatedName = parm.UserName;
andonAlarmRecordProcess.CreatedTime = DateTime.Now;
andonAlarmRecordProcess.UpdatedBy = parm.UserId;
andonAlarmRecordProcess.UpdatedName = parm.UserName;
andonAlarmRecordProcess.UpdatedTime = DateTime.Now;
int iResult = andonAlarmRecordProcessService.Insert(andonAlarmRecordProcess);
return ApiResult.Success("成功",andonAlarmRecordProcess);
}
}
else
{
response.Code = 500;
response.Msg = "参数不能为空";
}
return response;
}
catch (Exception ex)
{
return ApiResult.Error(500, ex.Message);
}
}
public ApiResult AlarmHandle(AndonAlarmRecordDto parm)
{
try
{
if (parm == null)
{
return ApiResult.Error(500, "参数不能为空");
}
if (parm.Status == "及时响应" || parm.Status == "超时响应")
{
var record = Queryable()
.Where(x => x.Id == parm.Id)
.First();
if(parm.Status == "及时响应")
{
record.Status = "及时处理";
}
else
{
record.Status = "超时处理";
}
record.HandleResult = parm.HandleResult;
record.Remarks = parm.Remarks;
record.UpdatedBy = parm.UserId;
record.UpdatedTime = DateTime.Now;
UpdateAndonAlarmRecord(record);
AndonAlarmRecordProcess andonAlarmRecordProcess = new AndonAlarmRecordProcess();
andonAlarmRecordProcess.AlarmCode = record.AlarmCode;
andonAlarmRecordProcess.Operate = record.Status;
andonAlarmRecordProcess.CreatedBy = parm.UserId;
andonAlarmRecordProcess.CreatedName = parm.UserName;
andonAlarmRecordProcess.CreatedTime = DateTime.Now;
andonAlarmRecordProcess.UpdatedBy = parm.UserId;
andonAlarmRecordProcess.UpdatedName = parm.UserName;
andonAlarmRecordProcess.UpdatedTime = DateTime.Now;
int iResult = andonAlarmRecordProcessService.Insert(andonAlarmRecordProcess);
return ApiResult.Success("成功", andonAlarmRecordProcess);
}
else
{
return ApiResult.Error(500, "只能处理响应状态数据");
}
}
catch (Exception ex)
{
return ApiResult.Error(500, ex.Message);
}
}
public ApiResult AlarmReportHand(AndonAlarmRecordDto parm)
{
try
{
if (parm == null)
{
return ApiResult.Error(500, "参数不能为空");
}
if (parm.Status == "待响应" || parm.Status == "及时响应" || parm.Status == "超时响应")
{
var record = Queryable()
.Where(x => x.Id == parm.Id)
.First();
record.Status = "主动上报";
record.Remarks = parm.Remarks;
record.UpdatedBy = parm.UserId;
record.UpdatedTime = DateTime.Now;
UpdateAndonAlarmRecord(record);
AndonAlarmRecordProcess andonAlarmRecordProcess = new AndonAlarmRecordProcess();
andonAlarmRecordProcess.AlarmCode = record.AlarmCode;
andonAlarmRecordProcess.Operate = record.Status;
andonAlarmRecordProcess.CreatedBy = parm.UserId;
andonAlarmRecordProcess.CreatedName = parm.UserName;
andonAlarmRecordProcess.CreatedTime = DateTime.Now;
andonAlarmRecordProcess.UpdatedBy = parm.UserId;
andonAlarmRecordProcess.UpdatedName = parm.UserName;
andonAlarmRecordProcess.UpdatedTime = DateTime.Now;
int iResult = andonAlarmRecordProcessService.Insert(andonAlarmRecordProcess);
return ApiResult.Success("成功", andonAlarmRecordProcess);
}
else
{
return ApiResult.Error(500, "只能处理响应状态数据");
}
}
catch (Exception ex)
{
return ApiResult.Error(500, ex.Message);
}
}
}
}