diff --git a/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs b/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs index 6138f298..fef0760c 100644 --- a/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs @@ -115,6 +115,44 @@ namespace ZR.Admin.WebApi.Controllers.andon return SUCCESS(response); } + /// + /// 报警响应 + /// + /// + [HttpPost("response")] + [ActionPermissionFilter(Permission = "business:andonalarmrecord:edit")] + [Log(Title = "报警响应", BusinessType = BusinessType.UPDATE)] + public ApiResult AlarmResponse([FromBody] AndonAlarmRecordDto parm) + { + var result = _AndonAlarmRecordService.AlarmResponse(parm); + return result; + } + /// + /// 报警处理 + /// + /// + [HttpPost("handle")] + [ActionPermissionFilter(Permission = "business:andonalarmrecord:edit")] + [Log(Title = "报警处理", BusinessType = BusinessType.UPDATE)] + public ApiResult AlarmHandle([FromBody] AndonAlarmRecordDto parm) + { + var result = _AndonAlarmRecordService.AlarmHandle(parm); + return result; + } + + + /// + /// 报警主动上报 + /// + /// + [HttpPost("reportHand")] + [ActionPermissionFilter(Permission = "business:andonalarmrecord:edit")] + [Log(Title = "报警上报", BusinessType = BusinessType.UPDATE)] + public ApiResult AlarmReportHand([FromBody] AndonAlarmRecordDto parm) + { + var result = _AndonAlarmRecordService.AlarmReportHand(parm); + return result; + } } } \ No newline at end of file diff --git a/ZR.Model/MES/andon/AndonAlarmRecordProcess.cs b/ZR.Model/MES/andon/AndonAlarmRecordProcess.cs index 16eb03dc..9b1e2faf 100644 --- a/ZR.Model/MES/andon/AndonAlarmRecordProcess.cs +++ b/ZR.Model/MES/andon/AndonAlarmRecordProcess.cs @@ -24,23 +24,6 @@ namespace ZR.Model.MES.andon /// public string Operate { get; set; } - /// - /// 操作人 - /// - public string Operator { get; set; } - - /// - /// 操作人名称 - /// - [SugarColumn(ColumnName = "operator_name")] - public string OperatorName { get; set; } - - /// - /// 操作时间 - /// - [SugarColumn(ColumnName = "operate_time")] - public DateTime? OperateTime { get; set; } - /// /// 备注 /// @@ -52,6 +35,12 @@ namespace ZR.Model.MES.andon [SugarColumn(ColumnName = "created_by")] public string CreatedBy { get; set; } + /// + /// 创建人名称 + /// + [SugarColumn(ColumnName = "created_name")] + public string CreatedName { get; set; } + /// /// 创建时间 /// @@ -64,6 +53,12 @@ namespace ZR.Model.MES.andon [SugarColumn(ColumnName = "updated_by")] public string UpdatedBy { get; set; } + /// + /// 更新人名称 + /// + [SugarColumn(ColumnName = "updated_name")] + public string UpdatedName { get; set; } + /// /// 更新时间 /// diff --git a/ZR.Model/MES/andon/Dto/AndonAlarmRecordDto.cs b/ZR.Model/MES/andon/Dto/AndonAlarmRecordDto.cs index fef0cf44..edc577d0 100644 --- a/ZR.Model/MES/andon/Dto/AndonAlarmRecordDto.cs +++ b/ZR.Model/MES/andon/Dto/AndonAlarmRecordDto.cs @@ -53,6 +53,9 @@ namespace ZR.Model.MES.andon.Dto public DateTime? UpdatedTime { get; set; } + public string UserId { get; set; } + public string UserName { get; set; } + } diff --git a/ZR.Model/MES/andon/Dto/AndonAlarmRecordProcessDto.cs b/ZR.Model/MES/andon/Dto/AndonAlarmRecordProcessDto.cs index e9fc29d3..3fab080a 100644 --- a/ZR.Model/MES/andon/Dto/AndonAlarmRecordProcessDto.cs +++ b/ZR.Model/MES/andon/Dto/AndonAlarmRecordProcessDto.cs @@ -22,19 +22,16 @@ namespace ZR.Model.MES.andon.Dto public string Operate { get; set; } - public string Operator { get; set; } - - public string OperatorName { get; set; } - - public DateTime? OperateTime { get; set; } - public string Remarks { get; set; } public string CreatedBy { get; set; } + public string CreatedName { get; set; } + public DateTime? CreatedTime { get; set; } public string UpdatedBy { get; set; } + public string UpdatedName { get; set; } public DateTime? UpdatedTime { get; set; } diff --git a/ZR.Service/mes/andon/AndonAlarmRecordService.cs b/ZR.Service/mes/andon/AndonAlarmRecordService.cs index c9d02858..ba521570 100644 --- a/ZR.Service/mes/andon/AndonAlarmRecordService.cs +++ b/ZR.Service/mes/andon/AndonAlarmRecordService.cs @@ -1,5 +1,8 @@ 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; @@ -15,6 +18,8 @@ namespace ZR.Service.mes.andon [AppService(ServiceType = typeof(IAndonAlarmRecordService), ServiceLifetime = LifeTime.Transient)] public class AndonAlarmRecordService : BaseService, IAndonAlarmRecordService { + private AndonAlarmLevelService andonAlarmLevelService = new AndonAlarmLevelService(); + private AndonAlarmRecordProcessService andonAlarmRecordProcessService = new AndonAlarmRecordProcessService(); /// /// 查询报警记录列表 /// @@ -114,5 +119,157 @@ namespace ZR.Service.mes.andon 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); + } + } } } \ No newline at end of file diff --git a/ZR.Service/mes/andon/IService/IAndonAlarmRecordService.cs b/ZR.Service/mes/andon/IService/IAndonAlarmRecordService.cs index 6a645185..edd35b5e 100644 --- a/ZR.Service/mes/andon/IService/IAndonAlarmRecordService.cs +++ b/ZR.Service/mes/andon/IService/IAndonAlarmRecordService.cs @@ -3,6 +3,7 @@ using ZR.Model; using System.Collections.Generic; using ZR.Model.MES.andon; using ZR.Model.MES.andon.Dto; +using Infrastructure.Model; namespace ZR.Service.mes.andon.Iservice { @@ -19,5 +20,10 @@ namespace ZR.Service.mes.andon.Iservice AndonAlarmRecord AddAndonAlarmRecord(AndonAlarmRecord parm); int UpdateAndonAlarmRecord(AndonAlarmRecord parm); + ApiResult AlarmResponse(AndonAlarmRecordDto parm); + + ApiResult AlarmHandle(AndonAlarmRecordDto parm); + + ApiResult AlarmReportHand(AndonAlarmRecordDto parm); } }