151 lines
5.3 KiB
C#
Raw Normal View History

2024-08-21 16:50:14 +08:00
using Microsoft.AspNetCore.Mvc;
using System;
using System.Text;
using System.Text.RegularExpressions;
using VideoSurveillanceAdapter;
using Yunda.ISAS.DataMonitoringServer.DataAnalysis;
using Yunda.ISAS.DataMonitoringServer.DataCenter;
using YunDa.ISAS.DataTransferObject;
using YunDa.ISAS.DataTransferObject.EquipmentLiveData;
using YunDa.ISAS.DataTransferObject.VideoSurveillance.VideoDevDto;
namespace Yunda.ISAS.DataMonitoringServer.WebApi.Controllers
{
[Route("isas/api/dataMonitoringService/presetPoint/[action]")]
public class PresetPointController
{
private readonly CameraDataCenter _cameraDataCenter;
public PresetPointController(/*CameraDataCenter cameraDataCenter*/)
{
_cameraDataCenter = WebApiServer._cameraDataCenter;
}
public string Index()
{
return "Hello DataMonitoringService!";
}
[HttpPost]
public RequestEasyResult PresetGoto([FromBody] VideoDevOutput input, [FromQuery] int presetNo, int channelNo)
{
RequestEasyResult requestEasyResult = new RequestEasyResult();
try
{
var videoPlayer = GetVideoPlayer(input);
if (videoPlayer != null)
{
var res = videoPlayer.GotoPreset(presetNo, channelNo);
if (res)
{
requestEasyResult.Flag = res;
requestEasyResult.Message = "预置位调用成功";
}
else
{
requestEasyResult.Flag = res;
requestEasyResult.Message = "预置位调用失败";
}
}
else
{
requestEasyResult.Message = $"{videoPlayer.CameraConfigure.Name}登陆失败";
}
}
catch (Exception ex)
{
requestEasyResult.Message = ex.Message;
MonitoringEventBus.LogHandler(ex.Message, "异常信息");
}
return requestEasyResult;
}
[HttpPost]
public RequestEasyResult PresetSet([FromBody] VideoDevOutput input, [FromQuery] int presetNo, int channelNo, string presetName)
{
RequestEasyResult requestEasyResult = new RequestEasyResult();
try
{
var videoPlayer = GetVideoPlayer(input);
if (videoPlayer != null)
{
byte[] byName = Encoding.GetEncoding("GB2312").GetBytes(presetName);
if (byName.Length > 32)
{
requestEasyResult.Flag = false;
requestEasyResult.Message = "名字太长";
}
var reg = "[ \\[ \\] \\^ \\-_ *×――(^)$% ~!/@#$…&%¥—+=<>《》|!??::•`·、。,;,.;\"‘’“”-]";
var match = Regex.Match(presetName, reg);
if (match.Success)
{
requestEasyResult.Flag = false;
requestEasyResult.Message = "名字中包含特殊字符";
}
var res = videoPlayer.SetPreset(presetNo, channelNo, presetName);
if (res)
{
requestEasyResult.Flag = res;
requestEasyResult.Message = "预置位设置成功";
}
else
{
requestEasyResult.Flag = res;
requestEasyResult.Message = "预置位设置失败";
}
}
else
{
requestEasyResult.Message = $"{videoPlayer.CameraConfigure.Name}登陆失败";
}
}
catch (Exception ex)
{
requestEasyResult.Message = ex.Message;
MonitoringEventBus.LogHandler(ex.Message, "异常信息");
}
return requestEasyResult;
}
private VideoPlayer GetVideoPlayer(VideoDevOutput input)
{
VideoPlayer videoPlayer = new VideoPlayer();
videoPlayer.CameraConfigure = new CameraConfigure
{
ID = input.Id.ToString(),
Name = input.DevName,
Ip = input.IP,
Port = (int)input.Port,
UserName = input.DevUserName,
Password = input.DevPassword,
IsRecordVideo = false,
CameraBrand = CameraBrand.Hik,
};
var player = _cameraDataCenter.FindCamera(videoPlayer);
if (player == null)
{
var isloginSuccess = videoPlayer.LoginCamera();
if (isloginSuccess)
{
_cameraDataCenter.CameraCollection.Add(videoPlayer);
}
else
{
MonitoringEventBus.LogHandler($"{videoPlayer.CameraConfigure.Name}登陆失败", "异常信息");
return null;
}
}
else
{
videoPlayer = player;
}
return videoPlayer;
}
/// <summary>
}
}