275 lines
11 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |