72 lines
2.8 KiB
C#
72 lines
2.8 KiB
C#
using Quartz;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using ToolLibrary.LogHelper;
|
|
using YunDa.ISAS.ExternalInteraction.DataTransferObject.InspectionEquipment;
|
|
using YunDa.ISAS.Redis.Entities.CameraAuthCategory;
|
|
|
|
namespace Yunda.ISAS.DataMonitoringServer.TimeWorkers
|
|
{
|
|
/// <summary>
|
|
/// 摄像机权限
|
|
/// </summary>
|
|
[DisallowConcurrentExecution]
|
|
public class CamAuthFixedTimeJob : IJob
|
|
{
|
|
public async Task Execute(IJobExecutionContext context)
|
|
{
|
|
CamAuthUpdate();
|
|
}
|
|
|
|
private async void CamAuthUpdate()
|
|
{
|
|
try
|
|
{
|
|
if (TimeWorkService._redisDataRepository.CameraAuthTimeRepository != null)
|
|
{
|
|
var videos =await TimeWorkService._redisDataRepository.CameraAuthTimeRepository.HashSetGetAllAsync(nameof(CameraAuthTimeRedis));
|
|
var listFreeVideo = new Dictionary<string, List<string>>();
|
|
if (videos != null && videos.Count != 0)
|
|
{
|
|
videos.ForEach(t =>
|
|
{
|
|
if (!t.IsNotifyFreeAuth && (t.FreeAuthTime < DateTime.Now || t.FreeAuthTime < DateTime.Now - TimeSpan.FromSeconds(1)))
|
|
{
|
|
if (t.CameraAuthenticationEntity != null)
|
|
{
|
|
if (listFreeVideo.ContainsKey(t.CameraAuthenticationEntity.Code))
|
|
{
|
|
listFreeVideo[t.CameraAuthenticationEntity.Code].Add(t.VideoDevEntity.DevName);
|
|
}
|
|
else
|
|
{
|
|
listFreeVideo.Add(t.CameraAuthenticationEntity.Code, new List<string>() { t.VideoDevEntity.DevName });
|
|
}
|
|
}
|
|
|
|
}
|
|
});
|
|
}
|
|
if (listFreeVideo.Count > 0)
|
|
{
|
|
foreach (var item in listFreeVideo)
|
|
{
|
|
var req = new ApplyControlToExternalInput()
|
|
{
|
|
Code = item.Key,
|
|
CamNames = item.Value
|
|
};
|
|
TimeWorkService._webApiRequest.SendFreeCamAuth(req);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
Log4Helper.Error(this.GetType(), "定时摄像机鉴权数据更新发生错误", ex);
|
|
}
|
|
}
|
|
}
|
|
}
|