2024-08-21 16:50:14 +08:00

151 lines
5.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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>
}
}