/// <summary> /// 定时任务,对比镜头数据 /// </summary> /// <returns></returns> public async Task <List <DVRChannelInfo> > GetDVRChannelInfo() { var configuration = BuildConfiguration(); var dvrurl = configuration.GetSection("DVRInfourl:url").Value; var dvrdata = _dVRrepository.ToList(); List <DVRCheckInfoDto> listdVRCheckInfo = new List <DVRCheckInfoDto>(); List <DVRChannelInfo> listdVRChannelInfo = new List <DVRChannelInfo>(); foreach (var item in dvrdata) { if (dvrdata != null) { string url = $"{dvrurl}/api/DVRInfo/Get?IP={item.DVR_IP}&name={item.DVR_usre}&password={item.DVR_possword}"; var handler = new HttpClientHandler();//{ AutomaticDecompression = DecompressionMethods.GZip }; var response = _httpClient.GetAsync(url).Result; var dt = response.Content.ReadAsStringAsync().Result; var data = Newtonsoft.Json.JsonConvert.DeserializeObject <DVRInfoDto>(dt); //检查通道信息 var cameraData = _camerarepository.Where(u => u.DVR_ID == item.DVR_ID); //检查通道信息存储到数据库 foreach (var tem in data.Channelname) { DVRChannelInfo dVRChannelInfo = new DVRChannelInfo(); var channldata = cameraData.Where(u => u.channel_ID == tem.Number).FirstOrDefault(); dVRChannelInfo.DVRChannelName = tem.Name; dVRChannelInfo.channel_ID = tem.Number; dVRChannelInfo.Camera_ID = channldata.Camera_ID; dVRChannelInfo.DVR_ID = channldata.DVR_ID; if (channldata != null) { string dataName = $"{channldata.Camera_ID} {channldata.Build}-{channldata.floor} {channldata.Direction}{channldata.Location}"; dVRChannelInfo.DataChannelName = dataName; string DVRname = tem.Name.Replace(" ", ""); if (dataName.Replace(" ", "") == DVRname) { dVRChannelInfo.ChannelNameCheck = true; } else { dVRChannelInfo.ChannelNameCheck = false; } } else { dVRChannelInfo.DataChannelName = "无"; } //获取设备截图并比对结果 //string url2 = $"{dvrurl}/api/DVRClannel/GetChannelPicture?DVR_IP={dvrdata.DVR_IP}&DVR_Name={dvrdata.DVR_usre}&DVR_PassWord={dvrdata.DVR_possword}&ChannelID={tem.Number}"; //var handler2 = new HttpClientHandler();//{ AutomaticDecompression = DecompressionMethods.GZip }; //var response2 =await _httpClient.GetStreamAsync(url2); //Image image = Image.FromStream(response2); //image.Save("JFDKJ.JPG"); var requst = await _dVRChannelInforepository.FindAsync(u => u.Camera_ID == channldata.Camera_ID); if (requst == null) { var EE = await _dVRChannelInforepository.InsertAsync(dVRChannelInfo); listdVRChannelInfo.Add(EE); } else { var DD = await _dVRChannelInforepository.UpdateAsync(dVRChannelInfo, true); listdVRChannelInfo.Add(DD); } } } else { return(null); } } return(listdVRChannelInfo); }
/// <summary> /// 定时任务,对比镜头数据 /// </summary> /// <returns></returns> public async Task <List <DVRChannelInfo> > GetDVRChannelInfo(string DVRRoom) { var configuration = BuildConfiguration(); var dvrurl = configuration.GetSection("DVRInfourl:url").Value; var dvrdata = _dVRrepository.Where(u => u.Monitoring_room == DVRRoom).ToList(); List <DVRCheckInfoDto> listdVRCheckInfo = new List <DVRCheckInfoDto>(); List <DVRChannelInfo> listdVRChannelInfo = new List <DVRChannelInfo>(); foreach (var item in dvrdata) { if (dvrdata != null) { string url = $"{dvrurl}/api/DVRInfo/Get?IP={item.DVR_IP}&name={item.DVR_usre}&password={item.DVR_possword}"; var handler = new HttpClientHandler();//{ AutomaticDecompression = DecompressionMethods.GZip }; var response = _httpClient.GetAsync(url).Result; var dt = response.Content.ReadAsStringAsync().Result; try { var data = Newtonsoft.Json.JsonConvert.DeserializeObject <DVRInfoDto>(dt); //检查通道信息 var cameraData = _camerarepository.Where(u => u.DVR_ID == item.DVR_ID); if (data != null) { //检查通道信息存储到数据库 foreach (var tem in data.Channelname) { DVRChannelInfo dVRChannelInfo = new DVRChannelInfo(); var channldata = cameraData.Where(u => u.channel_ID == tem.Number).FirstOrDefault(); dVRChannelInfo.DVRChannelName = tem.Name; dVRChannelInfo.channel_ID = tem.Number; if (channldata != null) { dVRChannelInfo.DVR_ID = channldata.DVR_ID; dVRChannelInfo.Camera_ID = channldata.Camera_ID; string dataName = $"{channldata.Camera_ID} {channldata.Build}-{channldata.floor} {channldata.Direction}{channldata.Location}"; dVRChannelInfo.DataChannelName = dataName; string DVRname = tem.Name.Replace(" ", ""); if (dataName.Replace(" ", "") == DVRname) { dVRChannelInfo.ChannelNameCheck = true; } else { dVRChannelInfo.ChannelNameCheck = false; } } else { dVRChannelInfo.DataChannelName = "无"; } // 获取设备截图并比对结果 string url2 = $"{dvrurl}/api/DVRClannel/GetChannelPicture?DVR_IP={item.DVR_IP}&DVR_Name={item.DVR_usre}&DVR_PassWord={item.DVR_possword}&ChannelID={tem.Number}"; try { ImageHelp2 imageHelp = new ImageHelp2(); var handler2 = new HttpClientHandler();//{ AutomaticDecompression = DecompressionMethods.GZip }; var response2 = await _httpClient.GetStreamAsync(url2); Image image = Image.FromStream(response2); Image image2 = Image.FromFile(Path.Combine(AppContext.BaseDirectory, "yichang.jpg")); Bitmap bitmap1 = imageHelp.Resize(image); Bitmap bitmap2 = imageHelp.Resize(image2); var reqst = ImageHash.GetSimilarity(bitmap1, bitmap2, ImageHash.HashEnum.Difference); if (reqst > 0.9) { dVRChannelInfo.ImageCheck = false; } else { dVRChannelInfo.ImageCheck = true; } } catch (Exception) { dVRChannelInfo.ImageCheck = null; } var requst = await _dVRChannelInforepository.FindAsync(u => u.DVRChannelName == tem.Name); dVRChannelInfo.LastUpdateTime = DateTime.Now.ToString(); if (requst == null) { var EE = await _dVRChannelInforepository.InsertAsync(dVRChannelInfo, true); listdVRChannelInfo.Add(EE); } else { var F = _dVRChannelInforepository.DeleteAsync(requst); var DD = await _dVRChannelInforepository.InsertAsync(dVRChannelInfo, true); listdVRChannelInfo.Add(DD); } } } } catch (Exception) { } } else { return(null); } } return(listdVRChannelInfo); }