public async void StartProcess()
        {
            try
            {
                // var facilitie = _facilityService.GetFacilitiesByFarmId("00012F001");
                //var devices = _deviceService.GetDevicesByFacilityId("00012F001G001");
                if (!Directory.Exists(_companyPicsPath))
                {
                    Directory.CreateDirectory(_companyPicsPath);
                }
                var farms = await _farmService.GetAllAsync();

                farms.ToList().ForEach(farm =>
                {
                    var dep = _sysDepartmentService.GetById(farm.SysDepartmentSerialnum);
                    if (dep != null)
                    {
                        var depPath = GetDepPath(dep);
                        //if (!Directory.Exists(depPath))
                        //    Directory.CreateDirectory(depPath);
                        var facilities = _facilityService.GetFacilitiesByFarmId(farm.Serialnum);
                        facilities.ToList().ForEach(fac =>
                        {
                            //if (!Directory.Exists(Path.Combine(depPath, farm.Serialnum)))
                            //    Directory.CreateDirectory(Path.Combine(depPath, farm.Serialnum));

                            var facilityPath = Path.Combine(depPath, farm.Serialnum, fac.Serialnum);
                            //if (!Directory.Exists(facilityPath))
                            //    Directory.CreateDirectory(facilityPath);
                            var facilityCameras = _facilityCameraService.GetFacilityCamerasByFacilityId(fac.Serialnum);
                            facilityCameras.ToList().ForEach(station =>
                            {
                                try
                                {
                                    CHCNetSDK.NET_DVR_Init();
                                    var userHandle = Login(station.IP, station.DataPort, station.UserID, station.UserPwd);
                                    //var userHandle = Login("120.209.96.139", 20001, "admin", "smt12345");

                                    if (userHandle != -1)
                                    {
                                        //从设备获取预置点
                                        var points = GetCameraPresetPoints(userHandle, station);

                                        var cameraStationPath = Path.Combine(facilityPath, station.IP);
                                        if (!points.Any())
                                        {
                                            var fileName = TakePhoto(userHandle, station.Channel, Path.Combine(_companyPicsPath, cameraStationPath));
                                            Process(fileName, station);
                                        }
                                        else
                                        {
                                            for (int i = 0; i < points.Count(); i++)
                                            {
                                                var point = points.ElementAt(i);
                                                //跳转到预置点
                                                bool success = GotoCameraPreset(userHandle, Convert.ToUInt32(point.PresetPoint));
                                                if (success)
                                                {
                                                    //等3秒聚焦
                                                    Thread.Sleep(3000);
                                                    //拍照
                                                    var fileName = TakePhoto(userHandle, station.Channel, Path.Combine(_companyPicsPath, cameraStationPath), i + 1);
                                                    //处理文件对应的记录
                                                    Process(fileName, station);
                                                }
                                            }
                                        }

                                        CHCNetSDK.NET_DVR_Logout(userHandle);
                                    }
                                    //设备运行记录
                                    var record = new FacilityCameraRunLogDto
                                    {
                                        //Serialnum = Guid.NewGuid().ToString(),
                                        FacilityCameraSerialnum = station.Serialnum,
                                        Status = userHandle > -1
                                    };
                                    _facilityCameraRunLogRepService.AddRunLog(record);
                                    //统计数据
                                    var list = _facilityCameraRunStatisticsRepService.GetByFacilityCameraIdAndYearAndMonth(station.Serialnum,
                                                                                                                           DateTime.Now.Year, DateTime.Now.Month);
                                    var statistics = new FacilityCameraRunStatisticsDto();
                                    statistics.AllCount++;
                                    if (userHandle > -1)
                                    {
                                        statistics.OnlineCount++;
                                    }
                                    statistics.OnlinePercent = Math.Round((statistics.OnlineCount * 1M) / (statistics.AllCount * 1M), 1) * 100M;
                                    if (list == null || !list.Any())
                                    {
                                        //statistics.Serialnum = Guid.NewGuid().ToString();
                                        statistics.FacilityCameraSerialnum = station.Serialnum;
                                        statistics.Year  = DateTime.Now.Year;
                                        statistics.Month = DateTime.Now.Month;
                                        _facilityCameraRunStatisticsRepService.Add(statistics);
                                    }
                                    else
                                    {
                                        list.ToList().ForEach(logs => {
                                            logs.AllCount++;
                                            if (userHandle > -1)
                                            {
                                                logs.OnlineCount++;
                                            }
                                            logs.OnlinePercent = Math.Round((logs.OnlineCount * 1M) / (logs.AllCount * 1M), 1) * 100M;
                                            _facilityCameraRunStatisticsRepService.Update(logs);
                                        });
                                    }
                                }
                                catch (Exception ex)
                                {
                                    XTrace.WriteException(ex);
                                }
                                finally
                                {
                                    // CHCNetSDK.NET_DVR_Cleanup();
                                }
                            });
                        });
                    }
                });
            }
            catch (Exception ex)
            {
                //  throw;
            }
        }