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 辅助方法