diff --git a/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs b/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs index 50d0bd44..c66bf0ae 100644 --- a/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs @@ -4,14 +4,15 @@ using ZR.Admin.WebApi.Filters; using ZR.Model.MES.andon; using ZR.Model.MES.andon.Dto; using ZR.Service.mes.andon.Iservice; -//创建时间:2025-12-10 + +//创建时间:2025-12-11 namespace ZR.Admin.WebApi.Controllers.andon { /// /// 报警记录 /// - [Route("mes/AndonAlarmRecord")] - [AllowAnonymous] + [Verify] + [Route("business/AndonAlarmRecord")] public class AndonAlarmRecordController : BaseController { /// diff --git a/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordProcessController.cs b/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordProcessController.cs new file mode 100644 index 00000000..4559c3ad --- /dev/null +++ b/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordProcessController.cs @@ -0,0 +1,109 @@ +using Microsoft.AspNetCore.Mvc; +using ZR.Admin.WebApi.Extensions; +using ZR.Admin.WebApi.Filters; +using ZR.Model.MES.andon; +using ZR.Model.MES.andon.Dto; +using ZR.Service.mes.andon.Iservice; + +//创建时间:2025-12-11 +namespace ZR.Admin.WebApi.Controllers.andon +{ + /// + /// 安灯报警处理过程 + /// + [Verify] + [Route("business/AndonAlarmRecordProcess")] + public class AndonAlarmRecordProcessController : BaseController + { + /// + /// 安灯报警处理过程接口 + /// + private readonly IAndonAlarmRecordProcessService _AndonAlarmRecordProcessService; + + public AndonAlarmRecordProcessController(IAndonAlarmRecordProcessService AndonAlarmRecordProcessService) + { + _AndonAlarmRecordProcessService = AndonAlarmRecordProcessService; + } + + /// + /// 查询安灯报警处理过程列表 + /// + /// + /// + [HttpGet("list")] + [ActionPermissionFilter(Permission = "business:andonalarmrecordprocess:list")] + public IActionResult QueryAndonAlarmRecordProcess([FromQuery] AndonAlarmRecordProcessQueryDto parm) + { + var response = _AndonAlarmRecordProcessService.GetList(parm); + return SUCCESS(response); + } + + + /// + /// 查询安灯报警处理过程详情 + /// + /// + /// + [HttpGet("{Id}")] + [ActionPermissionFilter(Permission = "business:andonalarmrecordprocess:query")] + public IActionResult GetAndonAlarmRecordProcess(int Id) + { + var response = _AndonAlarmRecordProcessService.GetInfo(Id); + + var info = response.Adapt(); + return SUCCESS(info); + } + + /// + /// 添加安灯报警处理过程 + /// + /// + [HttpPost] + [ActionPermissionFilter(Permission = "business:andonalarmrecordprocess:add")] + [Log(Title = "安灯报警处理过程", BusinessType = BusinessType.INSERT)] + public IActionResult AddAndonAlarmRecordProcess([FromBody] AndonAlarmRecordProcessDto parm) + { + var modal = parm.Adapt().ToCreate(HttpContext); + + var response = _AndonAlarmRecordProcessService.AddAndonAlarmRecordProcess(modal); + + return SUCCESS(response); + } + + /// + /// 更新安灯报警处理过程 + /// + /// + [HttpPut] + [ActionPermissionFilter(Permission = "business:andonalarmrecordprocess:edit")] + [Log(Title = "安灯报警处理过程", BusinessType = BusinessType.UPDATE)] + public IActionResult UpdateAndonAlarmRecordProcess([FromBody] AndonAlarmRecordProcessDto parm) + { + var modal = parm.Adapt().ToUpdate(HttpContext); + var response = _AndonAlarmRecordProcessService.UpdateAndonAlarmRecordProcess(modal); + + return ToResponse(response); + } + + /// + /// 删除安灯报警处理过程 + /// + /// + [HttpDelete("{ids}")] + [ActionPermissionFilter(Permission = "business:andonalarmrecordprocess:delete")] + [Log(Title = "安灯报警处理过程", BusinessType = BusinessType.DELETE)] + public IActionResult DeleteAndonAlarmRecordProcess(string ids) + { + int[] idsArr = Tools.SpitIntArrary(ids); + if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); } + + var response = _AndonAlarmRecordProcessService.Delete(idsArr); + + return ToResponse(response); + } + + + + + } +} \ No newline at end of file diff --git a/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-安灯报警处理过程-1211104819.zip b/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-安灯报警处理过程-1211104819.zip new file mode 100644 index 00000000..a20234a4 Binary files /dev/null and b/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-安灯报警处理过程-1211104819.zip differ diff --git a/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-报警记录-1211104814.zip b/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-报警记录-1211104814.zip new file mode 100644 index 00000000..b25cec73 Binary files /dev/null and b/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-报警记录-1211104814.zip differ diff --git a/ZR.Model/MES/andon/AndonAlarmRecord.cs b/ZR.Model/MES/andon/AndonAlarmRecord.cs index bcd33450..5894cd52 100644 --- a/ZR.Model/MES/andon/AndonAlarmRecord.cs +++ b/ZR.Model/MES/andon/AndonAlarmRecord.cs @@ -13,52 +13,30 @@ namespace ZR.Model.MES.andon [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public int Id { get; set; } + /// + /// 报警编码 + /// + [SugarColumn(ColumnName = "alarm_code")] + public string AlarmCode { get; set; } + /// /// 产线 /// [SugarColumn(ColumnName = "line_code")] public string LineCode { get; set; } + /// + /// 产线名称 + /// + [SugarColumn(ColumnName = "line_name")] + public string LineName { get; set; } + /// /// 报警类型 /// [SugarColumn(ColumnName = "alarm_type")] public string AlarmType { get; set; } - /// - /// 发送方 - /// - public string Sender { get; set; } - - /// - /// 发送时间 - /// - [SugarColumn(ColumnName = "send_time")] - public DateTime? SendTime { get; set; } - - /// - /// 接收方 - /// - public string Receiver { get; set; } - - /// - /// 响应时间 - /// - [SugarColumn(ColumnName = "response_time")] - public DateTime? ResponseTime { get; set; } - - /// - /// 处理结束时间 - /// - [SugarColumn(ColumnName = "handle_time")] - public DateTime? HandleTime { get; set; } - - /// - /// 持续时间 - /// - [SugarColumn(ColumnName = "duration_time")] - public int? DurationTime { get; set; } - /// /// 报警级别 /// @@ -71,6 +49,45 @@ namespace ZR.Model.MES.andon [SugarColumn(ColumnName = "alarm_info")] public string AlarmInfo { get; set; } + /// + /// 发送方ID + /// + public string Sender { get; set; } + + /// + /// 发送方名称 + /// + [SugarColumn(ColumnName = "sender_name")] + public string SenderName { get; set; } + + /// + /// 发送时间 + /// + [SugarColumn(ColumnName = "send_time")] + public DateTime? SendTime { get; set; } + + /// + /// 接收方 + /// + public string Receiver { get; set; } + + /// + /// 接收方名称 + /// + [SugarColumn(ColumnName = "receiver_name")] + public string ReceiverName { get; set; } + + /// + /// 序号 + /// + public int? Sequence { get; set; } + + /// + /// 持续时间 + /// + [SugarColumn(ColumnName = "duration_time")] + public int? DurationTime { get; set; } + /// /// 状态(未处理、已处理、上报、超时) /// @@ -82,6 +99,11 @@ namespace ZR.Model.MES.andon [SugarColumn(ColumnName = "handle_result")] public string HandleResult { get; set; } + /// + /// 备注 + /// + public string Remarks { get; set; } + /// /// 创建人 /// diff --git a/ZR.Model/MES/andon/AndonAlarmRecordProcess.cs b/ZR.Model/MES/andon/AndonAlarmRecordProcess.cs new file mode 100644 index 00000000..e472f4bf --- /dev/null +++ b/ZR.Model/MES/andon/AndonAlarmRecordProcess.cs @@ -0,0 +1,74 @@ + +namespace ZR.Model.MES.andon +{ + /// + /// 安灯报警处理过程 + /// + [SugarTable("andon_alarm_record_process")] + public class AndonAlarmRecordProcess + { + /// + /// 主键 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + + /// + /// 报警记录编码 + /// + [SugarColumn(ColumnName = "alarm_code")] + public string AlarmCode { get; set; } + + /// + /// 操作 + /// + 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; } + + /// + /// 备注 + /// + public string Remarks { get; set; } + + /// + /// 创建人 + /// + [SugarColumn(ColumnName = "cREATED_BY")] + public string CreatedBy { get; set; } + + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "cREATED_TIME")] + public DateTime? CreatedTime { get; set; } + + /// + /// 更新人 + /// + [SugarColumn(ColumnName = "uPDATED_BY")] + public string UpdatedBy { get; set; } + + /// + /// 更新时间 + /// + [SugarColumn(ColumnName = "uPDATED_TIME")] + public DateTime? UpdatedTime { get; set; } + + } +} \ No newline at end of file diff --git a/ZR.Model/MES/andon/Dto/AndonAlarmRecordDto.cs b/ZR.Model/MES/andon/Dto/AndonAlarmRecordDto.cs index 8f5ab71c..be096eaa 100644 --- a/ZR.Model/MES/andon/Dto/AndonAlarmRecordDto.cs +++ b/ZR.Model/MES/andon/Dto/AndonAlarmRecordDto.cs @@ -17,30 +17,38 @@ namespace ZR.Model.MES.andon.Dto [Required(ErrorMessage = "主键不能为空")] public int Id { get; set; } + public string AlarmCode { get; set; } + public string LineCode { get; set; } + public string LineName { get; set; } + public string AlarmType { get; set; } - public string Sender { get; set; } - - public DateTime? SendTime { get; set; } - - public string Receiver { get; set; } - - public DateTime? ResponseTime { get; set; } - - public DateTime? HandleTime { get; set; } - - public int? DurationTime { get; set; } - public string AlarmLevel { get; set; } public string AlarmInfo { get; set; } + public string Sender { get; set; } + + public string SenderName { get; set; } + + public DateTime? SendTime { get; set; } + + public string Receiver { get; set; } + + public string ReceiverName { get; set; } + + public int? Sequence { get; set; } + + public int? DurationTime { get; set; } + public string Status { get; set; } public string HandleResult { get; set; } + public string Remarks { get; set; } + public string CreatedBy { get; set; } public DateTime? CreatedTime { get; set; } diff --git a/ZR.Model/MES/andon/Dto/AndonAlarmRecordProcessDto.cs b/ZR.Model/MES/andon/Dto/AndonAlarmRecordProcessDto.cs new file mode 100644 index 00000000..3c81f56f --- /dev/null +++ b/ZR.Model/MES/andon/Dto/AndonAlarmRecordProcessDto.cs @@ -0,0 +1,43 @@ +using System.ComponentModel.DataAnnotations; + +namespace ZR.Model.MES.andon.Dto +{ + /// + /// 安灯报警处理过程查询对象 + /// + public class AndonAlarmRecordProcessQueryDto : PagerInfo + { + } + + /// + /// 安灯报警处理过程输入输出对象 + /// + public class AndonAlarmRecordProcessDto + { + [Required(ErrorMessage = "主键不能为空")] + public int Id { get; set; } + + public string AlarmCode { get; set; } + + 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 DateTime? CreatedTime { get; set; } + + public string UpdatedBy { get; set; } + + public DateTime? UpdatedTime { get; set; } + + + + } +} \ No newline at end of file diff --git a/ZR.Service/mes/andon/AndonAlarmRecordProcessService.cs b/ZR.Service/mes/andon/AndonAlarmRecordProcessService.cs new file mode 100644 index 00000000..7ae18e24 --- /dev/null +++ b/ZR.Service/mes/andon/AndonAlarmRecordProcessService.cs @@ -0,0 +1,83 @@ +using Infrastructure.Attribute; +using SqlSugar; +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 +{ + /// + /// 安灯报警处理过程Service业务层处理 + /// + [AppService(ServiceType = typeof(IAndonAlarmRecordProcessService), ServiceLifetime = LifeTime.Transient)] + public class AndonAlarmRecordProcessService : BaseService, IAndonAlarmRecordProcessService + { + /// + /// 查询安灯报警处理过程列表 + /// + /// + /// + public PagedInfo GetList(AndonAlarmRecordProcessQueryDto parm) + { + var predicate = Expressionable.Create(); + + var response = Queryable() + .Where(predicate.ToExpression()) + .ToPage(parm); + + return response; + } + + + /// + /// 获取详情 + /// + /// + /// + public AndonAlarmRecordProcess GetInfo(int Id) + { + var response = Queryable() + .Where(x => x.Id == Id) + .First(); + + return response; + } + + /// + /// 添加安灯报警处理过程 + /// + /// + /// + public AndonAlarmRecordProcess AddAndonAlarmRecordProcess(AndonAlarmRecordProcess model) + { + return Context.Insertable(model).ExecuteReturnEntity(); + } + + /// + /// 修改安灯报警处理过程 + /// + /// + /// + public int UpdateAndonAlarmRecordProcess(AndonAlarmRecordProcess model) + { + //var response = Update(w => w.Id == model.Id, it => new AndonAlarmRecordProcess() + //{ + // AlarmCode = model.AlarmCode, + // Operate = model.Operate, + // Operator = model.Operator, + // OperatorName = model.OperatorName, + // OperateTime = model.OperateTime, + // Remarks = model.Remarks, + // CreatedBy = model.CreatedBy, + // CreatedTime = model.CreatedTime, + // UpdatedBy = model.UpdatedBy, + // UpdatedTime = model.UpdatedTime, + //}); + //return response; + return Update(model, true); + } + + } +} \ No newline at end of file diff --git a/ZR.Service/mes/andon/AndonAlarmRecordService.cs b/ZR.Service/mes/andon/AndonAlarmRecordService.cs index da87cbb7..1d34fcdf 100644 --- a/ZR.Service/mes/andon/AndonAlarmRecordService.cs +++ b/ZR.Service/mes/andon/AndonAlarmRecordService.cs @@ -6,7 +6,6 @@ using ZR.Model.MES.andon.Dto; using ZR.Repository; using ZR.Service.mes.andon.Iservice; - namespace ZR.Service.mes.andon { /// @@ -65,18 +64,22 @@ namespace ZR.Service.mes.andon { //var response = Update(w => w.Id == model.Id, it => new AndonAlarmRecord() //{ + // AlarmCode = model.AlarmCode, // LineCode = model.LineCode, + // LineName = model.LineName, // AlarmType = model.AlarmType, - // Sender = model.Sender, - // SendTime = model.SendTime, - // Receiver = model.Receiver, - // ResponseTime = model.ResponseTime, - // HandleTime = model.HandleTime, - // DurationTime = model.DurationTime, // 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, diff --git a/ZR.Service/mes/andon/IService/IAndonAlarmRecordProcessService.cs b/ZR.Service/mes/andon/IService/IAndonAlarmRecordProcessService.cs new file mode 100644 index 00000000..74d76231 --- /dev/null +++ b/ZR.Service/mes/andon/IService/IAndonAlarmRecordProcessService.cs @@ -0,0 +1,23 @@ +using System; +using ZR.Model; +using System.Collections.Generic; +using ZR.Model.MES.andon; +using ZR.Model.MES.andon.Dto; + +namespace ZR.Service.mes.andon.Iservice +{ + /// + /// 安灯报警处理过程service接口 + /// + public interface IAndonAlarmRecordProcessService : IBaseService + { + PagedInfo GetList(AndonAlarmRecordProcessQueryDto parm); + + AndonAlarmRecordProcess GetInfo(int Id); + + AndonAlarmRecordProcess AddAndonAlarmRecordProcess(AndonAlarmRecordProcess parm); + + int UpdateAndonAlarmRecordProcess(AndonAlarmRecordProcess parm); + + } +} diff --git a/ZR.Service/mes/andon/ScheduledBackgroundService.cs b/ZR.Service/mes/andon/ScheduledBackgroundService.cs new file mode 100644 index 00000000..92d6eff2 --- /dev/null +++ b/ZR.Service/mes/andon/ScheduledBackgroundService.cs @@ -0,0 +1,61 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace ZR.Service.mes.andon +{ + public class ScheduledBackgroundService:BackgroundService + { + private readonly ILogger _logger; + private readonly IServiceScopeFactory _scopeFactory; + private readonly TimeSpan _interval = TimeSpan.FromMinutes(5); + + public ScheduledBackgroundService( + ILogger logger, + IServiceScopeFactory scopeFactory) + { + _logger = logger; + _scopeFactory = scopeFactory; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + _logger.LogInformation($"定时后台服务启动,执行间隔: {_interval.TotalMinutes}分钟"); + + // 延迟启动,等待应用完全初始化 + await Task.Delay(TimeSpan.FromSeconds(10), stoppingToken); + + while (!stoppingToken.IsCancellationRequested) + { + try + { + _logger.LogInformation($"开始执行定时任务: {DateTime.Now:HH:mm:ss}"); + + //// 使用 Scope 获取 Scoped 服务 + //using (var scope = _scopeFactory.CreateScope()) + //{ + // var myService = scope.ServiceProvider.GetRequiredService(); + // await myService.ProcessDataAsync(); + //} + + _logger.LogInformation($"定时任务完成"); + } + catch (Exception ex) + { + _logger.LogError(ex, "定时任务执行异常"); + } + + // 等待指定间隔 + await Task.Delay(_interval, stoppingToken); + } + + _logger.LogInformation("定时后台服务停止"); + } + } +}