Пример #1
0
        /// <summary>
        /// 定时任务,自动对比主机数据,每天2:00启动一次
        /// </summary>

        public async Task <List <DVRCheckInfoDto> > GetDVRInfoCheck()
        {
            var configuration = BuildConfiguration();

            var dvrurl  = configuration.GetSection("DVRInfourl:url").Value;
            var dvrdata = await _dVRrepository.GetListAsync();

            List <DVRCheckInfoDto> listdVRCheckInfo = new List <DVRCheckInfoDto>();

            foreach (var item in dvrdata)
            {
                string url      = $"{dvrurl}/api/DVRInfo/Get?IP={item.DVR_IP}&name={item.DVR_usre}&password={item.DVR_possword}";
                var    handler  = new HttpClientHandler();
                var    response = _httpClient.GetAsync(url).Result;
                var    dt       = response.Content.ReadAsStringAsync().Result;
                var    data     = Newtonsoft.Json.JsonConvert.DeserializeObject <DVRInfoDto>(dt);

                DVRCheckInfo dVRCheckInfo = new DVRCheckInfo();

                //硬盘检查
                int dvrhard = (int)(item.Hard_drive * 0.91 / 1000);
                if (dvrhard == data.HardDrive)
                {
                    dVRCheckInfo.DiskTotal = data.HardDrive;
                    dVRCheckInfo.DiskChenk = true;
                }
                else
                {
                    dVRCheckInfo.DiskTotal = 0;
                    dVRCheckInfo.DiskChenk = false;
                }
                //在线及sn检查
                if (item.DVR_SN != null)
                {
                    dVRCheckInfo.DVR_SN      = data.DVR_SN;
                    dVRCheckInfo.DVR_ID      = item.DVR_ID;
                    dVRCheckInfo.DVR_Channel = data.ChannelTotal;
                    dVRCheckInfo.DVR_Online  = true;

                    if (item.DVR_SN == data.DVR_SN)
                    {
                        dVRCheckInfo.SNChenk = true;
                    }
                    else
                    {
                        dVRCheckInfo.SNChenk = false;
                    }
                }
                else
                {
                    dVRCheckInfo.DVR_Online = false;
                }
                dVRCheckInfo.LastModificationTime = DateTime.Now;
                //时间检查验证
                var      servertime = DateTime.Now;
                DateTime dvrtime    = Convert.ToDateTime(data.DVR_DateTine);
                if (servertime.Second + 5 >= dvrtime.Second && dvrtime.Second >= servertime.Second - 5)
                {
                    dVRCheckInfo.DVRTime       = data.DVR_DateTine;
                    dVRCheckInfo.TimeInfoChenk = true;
                }
                else
                {
                    dVRCheckInfo.TimeInfoChenk = false;
                    dVRCheckInfo.DVRTime       = data.DVR_DateTine;
                }

                var dvrcheckdata = _dVRCheckInforepository.GetListAsync().Result;
                int nuber        = dvrcheckdata.Where(u => u.DVR_ID == item.DVR_ID).Count();
                if (nuber == 0)
                {
                    var DD = await _dVRCheckInforepository.InsertAsync(dVRCheckInfo);
                }
                else
                {
                    var id = dvrcheckdata.Where(u => u.DVR_ID == item.DVR_ID).FirstOrDefault().Id;
                    await _dVRCheckInforepository.DeleteAsync(id);

                    var DD = await _dVRCheckInforepository.InsertAsync(dVRCheckInfo);
                }

                Console.WriteLine($"{item.DVR_ID}+{DateTime.Now}+写入成功");
            }

            return(listdVRCheckInfo);
        }
        /// <summary>
        /// 定时任务,自动对比主机数据,每天2:00启动一次
        /// </summary>

        public async Task <List <DVRCheckInfoDto> > GetDVRInfoCheck()
        {
            var configuration = BuildConfiguration();

            var dvrurl  = configuration.GetSection("DVRInfourl:url").Value;
            var dvrdata = await _dVRrepository.GetListAsync();;

            List <DVRCheckInfoDto> listdVRCheckInfo = new List <DVRCheckInfoDto>();

            foreach (var item in dvrdata)
            {
                string url      = $"{dvrurl}/api/DVRInfo/Get?IP={item.DVR_IP}&name={item.DVR_usre}&password={item.DVR_possword}";
                var    handler  = new HttpClientHandler();
                var    response = _httpClient.GetAsync(url).Result;
                var    dt       = response.Content.ReadAsStringAsync().Result;
                var    data     = Newtonsoft.Json.JsonConvert.DeserializeObject <DVRInfoDto>(dt);

                DVRCheckInfo dVRCheckInfo = new DVRCheckInfo();
                dVRCheckInfo.DVR_ID = item.DVR_ID;
                dVRCheckInfo.LastModificationTime = DateTime.Now;
                //硬盘检查
                int dvrhard = (int)(item.Hard_drive * 0.91 / 1000);
                if (dvrhard == data.HardDrive)
                {
                    dVRCheckInfo.DiskTotal = data.HardDrive;
                    dVRCheckInfo.DiskChenk = true;
                }
                else
                {
                    dVRCheckInfo.DiskTotal = data.HardDrive;
                    dVRCheckInfo.DiskChenk = false;
                }
                //在线及sn检查
                if (!string.IsNullOrEmpty(data.DVR_SN))
                {
                    dVRCheckInfo.DVR_SN = data.DVR_SN;

                    dVRCheckInfo.DVR_Channel = data.ChannelTotal;
                    dVRCheckInfo.DVR_Online  = true;

                    if (item.DVR_SN == data.DVR_SN)
                    {
                        dVRCheckInfo.SNChenk = true;
                    }
                    else
                    {
                        dVRCheckInfo.SNChenk = false;
                    }
                }
                else
                {
                    dVRCheckInfo.DVR_Online = false;
                }

                //时间检查验证
                var      servertime = DateTime.Now;
                DateTime dvrtime    = Convert.ToDateTime(data.DVR_DateTine);
                dVRCheckInfo.DVRTime = data.DVR_DateTine;
                if (servertime.Second + 5 >= dvrtime.Second && dvrtime.Second >= servertime.Second - 5)
                {
                    dVRCheckInfo.TimeInfoChenk = true;
                }
                else
                {
                    dVRCheckInfo.TimeInfoChenk = false;
                }
                //90天存储检查

                String startTime = DateTime.Now.AddDays(-90).ToString("yyyy-MM-dd hh:mm:ss");
                String endTime   = DateTime.Now.AddDays(-90).AddHours(1).ToString("yyyy-MM-dd hh:mm:ss");;
                string url2      = $"{dvrurl}/api/DVRInfo/QueryVideoFileByTime?IP={item.DVR_IP}&name={item.DVR_usre}&password={item.DVR_possword}&startTimestr={startTime}&endTimestr={endTime}";
                var    handler2  = new HttpClientHandler();
                var    response2 = _httpClient.GetAsync(url2).Result;
                var    dt2       = response2.Content.ReadAsStringAsync().Result;
                var    data2     = Newtonsoft.Json.JsonConvert.DeserializeObject <int>(dt2);

                if (data2 == -1)
                {
                    response2 = _httpClient.GetAsync(url2).Result;
                    dt2       = response2.Content.ReadAsStringAsync().Result;
                    data2     = Newtonsoft.Json.JsonConvert.DeserializeObject <int>(dt2);
                }


                if (data2 > 0)
                {
                    dVRCheckInfo.VideoCheck90Day = true;
                }
                if (data2 == 0)
                {
                    dVRCheckInfo.VideoCheck90Day = false;
                }

                int nuber = _dVRCheckInforepository.Where(u => u.DVR_ID == item.DVR_ID).Count();
                if (nuber == 0)
                {
                    var DD = await _dVRCheckInforepository.InsertAsync(dVRCheckInfo, true);
                }
                else
                {
                    var id = _dVRCheckInforepository.Where(u => u.DVR_ID == item.DVR_ID).FirstOrDefault().Id;
                    await _dVRCheckInforepository.DeleteAsync(id);

                    var DD = await _dVRCheckInforepository.InsertAsync(dVRCheckInfo, true);
                }

                Console.WriteLine($"{item.DVR_ID}+{DateTime.Now}+写入成功");
            }

            return(listdVRCheckInfo);
        }