diff --git a/ZR.Model/MES/andon/AndonAlarmLevel.cs b/ZR.Model/MES/andon/AndonAlarmLevel.cs index 95d39b52..81a4d8ec 100644 --- a/ZR.Model/MES/andon/AndonAlarmLevel.cs +++ b/ZR.Model/MES/andon/AndonAlarmLevel.cs @@ -20,17 +20,11 @@ namespace ZR.Model.MES.andon public string LevelName { get; set; } /// - /// 三色灯颜色(红色/黄色/绿色) + /// 三色灯颜色(红色/黄色) /// [SugarColumn(ColumnName = "light_color")] public string LightColor { get; set; } - /// - /// 处理时限(分钟) - /// - [SugarColumn(ColumnName = "handle_timeout")] - public int? HandleTimeout { get; set; } - /// /// 适用场景 /// diff --git a/ZR.Model/MES/andon/AndonAlarmTypeDict.cs b/ZR.Model/MES/andon/AndonAlarmTypeDict.cs index 31b29a12..36b4e2d3 100644 --- a/ZR.Model/MES/andon/AndonAlarmTypeDict.cs +++ b/ZR.Model/MES/andon/AndonAlarmTypeDict.cs @@ -49,5 +49,10 @@ namespace ZR.Model.MES.andon [SugarColumn(ColumnName = "updated_time")] public DateTime? UpdatedTime { get; set; } + /// + /// 响应时间(分) + /// + [SugarColumn(ColumnName = "response_time")] + public int ResponseTime { get; set; } } } \ No newline at end of file diff --git a/ZR.Model/MES/andon/Dto/AndonAlarmLevelDto.cs b/ZR.Model/MES/andon/Dto/AndonAlarmLevelDto.cs index 544433d5..a22333c1 100644 --- a/ZR.Model/MES/andon/Dto/AndonAlarmLevelDto.cs +++ b/ZR.Model/MES/andon/Dto/AndonAlarmLevelDto.cs @@ -22,8 +22,6 @@ namespace ZR.Model.MES.andon.Dto public string LightColor { get; set; } - public int? HandleTimeout { get; set; } - public string ApplyScenario { get; set; } public string CreatedBy { get; set; } diff --git a/ZR.Model/MES/andon/Dto/AndonAlarmTypeDictDto.cs b/ZR.Model/MES/andon/Dto/AndonAlarmTypeDictDto.cs index 2700dfe7..399be1a0 100644 --- a/ZR.Model/MES/andon/Dto/AndonAlarmTypeDictDto.cs +++ b/ZR.Model/MES/andon/Dto/AndonAlarmTypeDictDto.cs @@ -29,7 +29,7 @@ namespace ZR.Model.MES.andon.Dto public DateTime? UpdatedTime { get; set; } - + public int ResponseTime { get; set; } } diff --git a/ZR.Service/mes/andon/AndonAlarmLevelService.cs b/ZR.Service/mes/andon/AndonAlarmLevelService.cs index dd1bfdcf..108e59cb 100644 --- a/ZR.Service/mes/andon/AndonAlarmLevelService.cs +++ b/ZR.Service/mes/andon/AndonAlarmLevelService.cs @@ -71,7 +71,6 @@ namespace ZR.Service.mes.andon //{ // LevelName = model.LevelName, // LightColor = model.LightColor, - // HandleTimeout = model.HandleTimeout, // ApplyScenario = model.ApplyScenario, // CreatedBy = model.CreatedBy, // CreatedTime = model.CreatedTime, diff --git a/ZR.Service/mes/andon/AndonAlarmRecordService.cs b/ZR.Service/mes/andon/AndonAlarmRecordService.cs index a78ff08a..7d8f8edf 100644 --- a/ZR.Service/mes/andon/AndonAlarmRecordService.cs +++ b/ZR.Service/mes/andon/AndonAlarmRecordService.cs @@ -123,63 +123,64 @@ namespace ZR.Service.mes.andon 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); - } + return null; + //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); + //} } @@ -282,102 +283,103 @@ namespace ZR.Service.mes.andon /// ApiResult public ApiResult AlarmReportAuto() { - // 定义批次大小,可配置化(便于后续调整) - const int BatchSize = 500; - var currentTime = DateTime.Now; - var startTime = currentTime.AddHours(-1); - var endTime = currentTime; + return null; + //// 定义批次大小,可配置化(便于后续调整) + //const int BatchSize = 500; + //var currentTime = DateTime.Now; + //var startTime = currentTime.AddHours(-1); + //var endTime = currentTime; - try - { - var alarmLevelMap = andonAlarmLevelService.Queryable() - .Where(level => !string.IsNullOrWhiteSpace(level.LevelName) && level.HandleTimeout.HasValue) - .ToDictionary( - level => (object)level.LevelName.Trim(), - level => (object)Convert.ToInt32(level.HandleTimeout.Value) - ); + //try + //{ + // var alarmLevelMap = andonAlarmLevelService.Queryable() + // .Where(level => !string.IsNullOrWhiteSpace(level.LevelName) && level.HandleTimeout.HasValue) + // .ToDictionary( + // level => (object)level.LevelName.Trim(), + // level => (object)Convert.ToInt32(level.HandleTimeout.Value) + // ); - var queryData = Queryable() - .Where(x => - (x.Status == "待响应" || x.Status == "及时响应" || x.Status == "超时响应") - && x.CreatedTime >= startTime - && x.CreatedTime <= endTime) - .ToList(); + // var queryData = Queryable() + // .Where(x => + // (x.Status == "待响应" || x.Status == "及时响应" || x.Status == "超时响应") + // && x.CreatedTime >= startTime + // && x.CreatedTime <= endTime) + // .ToList(); - if (!queryData.Any()) - { - return ApiResult.Success("无需要处理的报警数据"); - } + // if (!queryData.Any()) + // { + // return ApiResult.Success("无需要处理的报警数据"); + // } - var totalCount = queryData.Count; - var batchCount = (int)Math.Ceiling((double)totalCount / BatchSize); - var allProcessRecords = new List(); - var batchUpdateList = new List(); + // var totalCount = queryData.Count; + // var batchCount = (int)Math.Ceiling((double)totalCount / BatchSize); + // var allProcessRecords = new List(); + // var batchUpdateList = new List(); - for (int batchIndex = 0; batchIndex < batchCount; batchIndex++) - { - try - { - var currentBatch = queryData.Skip(batchIndex * BatchSize).Take(BatchSize).ToList(); - batchUpdateList.Clear(); + // for (int batchIndex = 0; batchIndex < batchCount; batchIndex++) + // { + // try + // { + // var currentBatch = queryData.Skip(batchIndex * BatchSize).Take(BatchSize).ToList(); + // batchUpdateList.Clear(); - foreach (var item in currentBatch) - { - if (string.IsNullOrWhiteSpace(item.AlarmLevel)) continue; - var alarmLevelKey = item.AlarmLevel?.Trim() ?? ""; - int timeoutMinutes = 0; - if (alarmLevelMap.TryGetValue(alarmLevelKey, out object value)) - { - timeoutMinutes = (int)value; - } + // foreach (var item in currentBatch) + // { + // if (string.IsNullOrWhiteSpace(item.AlarmLevel)) continue; + // var alarmLevelKey = item.AlarmLevel?.Trim() ?? ""; + // int timeoutMinutes = 0; + // if (alarmLevelMap.TryGetValue(alarmLevelKey, out object value)) + // { + // timeoutMinutes = (int)value; + // } - if (timeoutMinutes <= 0) continue; - var createdTime = item.CreatedTime.ObjToDate(); - var timeoutTime = createdTime.AddMinutes(timeoutMinutes); - var isTimeout = currentTime > timeoutTime; + // if (timeoutMinutes <= 0) continue; + // var createdTime = item.CreatedTime.ObjToDate(); + // var timeoutTime = createdTime.AddMinutes(timeoutMinutes); + // var isTimeout = currentTime > timeoutTime; - if (isTimeout) - { - UpdateAlarmItemStatus(item, currentTime); - batchUpdateList.Add(item); + // if (isTimeout) + // { + // UpdateAlarmItemStatus(item, currentTime); + // batchUpdateList.Add(item); - var processRecord = CreateAlarmProcessRecord(item, currentTime); - allProcessRecords.Add(processRecord); - } - } + // var processRecord = CreateAlarmProcessRecord(item, currentTime); + // allProcessRecords.Add(processRecord); + // } + // } - if (batchUpdateList.Any()) - { - UpdateAndonAlarmRecordBatch(batchUpdateList); - } + // if (batchUpdateList.Any()) + // { + // UpdateAndonAlarmRecordBatch(batchUpdateList); + // } - Console.WriteLine($"批次 {batchIndex + 1}/{batchCount} 处理完成,本批更新 {batchUpdateList.Count} 条报警记录"); - } - catch (Exception batchEx) - { - Console.WriteLine($"批次 {batchIndex + 1} 处理失败:{batchEx.Message}"); - continue; - } - } + // Console.WriteLine($"批次 {batchIndex + 1}/{batchCount} 处理完成,本批更新 {batchUpdateList.Count} 条报警记录"); + // } + // catch (Exception batchEx) + // { + // Console.WriteLine($"批次 {batchIndex + 1} 处理失败:{batchEx.Message}"); + // continue; + // } + // } - if (allProcessRecords.Any()) - { - var processBatchCount = (int)Math.Ceiling((double)allProcessRecords.Count / BatchSize); - for (int pBatchIndex = 0; pBatchIndex < processBatchCount; pBatchIndex++) - { - var processBatch = allProcessRecords.Skip(pBatchIndex * BatchSize).Take(BatchSize).ToList(); - andonAlarmRecordProcessService.Insert(processBatch); - } - } + // if (allProcessRecords.Any()) + // { + // var processBatchCount = (int)Math.Ceiling((double)allProcessRecords.Count / BatchSize); + // for (int pBatchIndex = 0; pBatchIndex < processBatchCount; pBatchIndex++) + // { + // var processBatch = allProcessRecords.Skip(pBatchIndex * BatchSize).Take(BatchSize).ToList(); + // andonAlarmRecordProcessService.Insert(processBatch); + // } + // } - // 报警给领导,手表 - return ApiResult.Success($"成功处理 {totalCount} 条报警记录,其中超时上报 {allProcessRecords.Count} 条"); - } - catch (Exception ex) - { - Console.WriteLine($"自动超时报警处理失败:{ex.ToString()}"); // 记录完整异常栈,便于排查 - return ApiResult.Error(500, "自动超时报警处理异常,请查看日志"); - } + // // 报警给领导,手表 + // return ApiResult.Success($"成功处理 {totalCount} 条报警记录,其中超时上报 {allProcessRecords.Count} 条"); + //} + //catch (Exception ex) + //{ + // Console.WriteLine($"自动超时报警处理失败:{ex.ToString()}"); // 记录完整异常栈,便于排查 + // return ApiResult.Error(500, "自动超时报警处理异常,请查看日志"); + //} } #region 辅助方法