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