安灯修改中

This commit is contained in:
quowingwang
2025-12-19 15:22:41 +08:00
parent 019e11b1c8
commit 11a012035e
6 changed files with 149 additions and 151 deletions

View File

@@ -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,

View File

@@ -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
/// <returns>ApiResult</returns>
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<AndonAlarmRecordProcess>();
var batchUpdateList = new List<AndonAlarmRecord>();
// var totalCount = queryData.Count;
// var batchCount = (int)Math.Ceiling((double)totalCount / BatchSize);
// var allProcessRecords = new List<AndonAlarmRecordProcess>();
// var batchUpdateList = new List<AndonAlarmRecord>();
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