Пример #1
0
        /// <summary>
        /// 将monitorysite转发成CameraView对象
        /// </summary>
        /// <param name="ms"></param>
        /// <returns></returns>
        public static CameraView ToCameraView(this MonitorySite ms)
        {
            var        cam  = ms.Camera;
            CameraView view = new CameraView()
            {
                Status         = cam.IPDevice.Status != null ? cam.IPDevice.Status.MappingCode : "0",
                CameraId       = cam.CameraId,
                IPDeviceId     = cam.IPDeviceId,
                EncoderChannel = cam.EncoderChannel,
                CameraName     = ms.MonitorySiteName,
                CameraNo       = cam.CameraNo,
                DeviceType     = cam.IPDevice.DeviceType.SystemOptionName,
                EncoderInfo    = new EncoderInfo()
                {
                    EncoderType = cam.Encoder.EncoderType.EncoderCode,
                    EndPoints   = cam.Encoder.DeviceInfo.EndPoints,
                    Password    = cam.Encoder.DeviceInfo.Password,
                    User        = cam.Encoder.DeviceInfo.UserName
                },
                VideoForwardInfo = new ViewModel.ServiceInfo()
                {
                    EndPoints = cam.VideoForward.EndPoints,
                    User      = cam.VideoForward.Username,
                    Password  = cam.VideoForward.Password
                }
            };

            return(view);
        }
Пример #2
0
        /// <summary>
        /// 根据组织机构获取查勤点
        /// </summary>
        /// <param name="organizationId"></param>
        /// <returns></returns>
        public static MonitorySite GetMonitorySiteByOrganizationId(Guid organizationId, AllInOneContext.AllInOneContext db)
        {
            MonitorySite monitorySite = db.MonitorySite
                                        .FirstOrDefault(p => p.OrganizationId.Equals(organizationId) &&
                                                        p.IsDutycheckSite == true);

            return(monitorySite);
        }
Пример #3
0
 public IActionResult Remove(Guid id)
 {
     using (var db = new AllInOneContext.AllInOneContext())
     {
         using (var transaction = db.Database.BeginTransaction())
         {
             try
             {
                 MonitorySite ms = db.MonitorySite.FirstOrDefault(t => t.MonitorySiteId.Equals(id));
                 if (ms == null)
                 {
                     return(NotFound());
                 }
                 Camera       camera       = db.Set <Camera>().First(t => t.CameraId.Equals(ms.CameraId));
                 IPDeviceInfo cameraDevice = db.IPDeviceInfo.First(t => t.IPDeviceInfoId.Equals(camera.IPDeviceId));
                 db.MonitorySite.Remove(ms);
                 db.Set <Camera>().Remove(camera);
                 //db.IPDeviceInfo.Remove(cameraDevice);
                 var deleteStatusId = Guid.Parse("a0002016-e009-b019-e001-abcd13800005");
                 cameraDevice.StatusId = deleteStatusId;
                 //Remove AlarmSetting
                 List <Guid> alarmSourceIds = new List <Guid>();
                 alarmSourceIds.Add(cameraDevice.IPDeviceInfoId);
                 AlarmSettingUtility.RemoveAlarmSetting(db, alarmSourceIds);
                 db.SaveChanges();
                 transaction.Commit();
                 //推送到dcp,数据同步。。。。。。
                 return(new NoContentResult());
             }
             catch (DbUpdateException dbEx)
             {
                 transaction.Rollback();
                 _logger.LogError("删除监控点异常:Message:{0}\r\n,StackTrace:{1}", dbEx.Message, dbEx.StackTrace);
                 return(BadRequest(new ApplicationException {
                     ErrorCode = "DBUpdate", ErrorMessage = "数据保存异常:" + dbEx.Message
                 }));
             }
             catch (Exception ex)
             {
                 _logger.LogError("删除监控点异常:Message:{0}\r\n,StackTrace:{1}", ex.Message, ex.StackTrace);
                 return(BadRequest(new ApplicationException {
                     ErrorCode = "Unknown", ErrorMessage = ex.Message
                 }));
             }
         }
     }
 }
Пример #4
0
 /// <summary>
 /// 获取查勤点日志
 /// </summary>
 private static DutyCheckLog GetSiteLog(Guid organizationId, TimePeriod tp, MonitorySite monitorPoint, Guid dayPeriodId)
 {
     return(new DutyCheckLog
     {
         DutyCheckLogId = Guid.NewGuid(),
         TimePeriod = tp,
         //DutyCheckSiteSchedule = dss,
         //PlanDate = time,
         //DutyCheckStaffId = dss.CheckManId,
         OrganizationId = organizationId,
         StatusId = new Guid("361ADFE9-E58A-4C88-B191-B742CC212443"),     //未开始
         RecordTypeId = new Guid("359A58FA-0BAB-45A3-ACAF-98EB73228B95"), //网络查勤
         DutyCheckSiteSchedule = new DutyCheckSiteSchedule
         {
             CheckDutySiteId = monitorPoint.MonitorySiteId,
         },
         DayPeriodId = dayPeriodId
     });
 }
Пример #5
0
 public IActionResult Add([FromBody] MonitorySite ms)
 {
     if (ms == null)
     {
         return(BadRequest("MonitorySite object can not be null!"));
     }
     if (ExistsName(ms.MonitorySiteName, ms.OrganizationId, ms.MonitorySiteId))
     {
         return(BadRequest("MonitorySite name has been used!"));
     }
     using (var db = new AllInOneContext.AllInOneContext())
     {
         try
         {
             db.MonitorySite.Add(ms);
             //将encoder ip保存到camera
             var encoder = db.Encoder.Include(t => t.DeviceInfo).FirstOrDefault(t => t.EncoderId.Equals(ms.Camera.EncoderId));
             if (encoder != null)
             {
                 ms.Camera.IPDevice.EndPointsJson = encoder.DeviceInfo.EndPointsJson;
             }
             db.SaveChanges();
             //return CreatedAtRoute("GetById", new { id = ms.MonitorySiteId }, ms);
             //推送到dcp,数据同步
             return(CreatedAtAction("", ms));
         }
         catch (DbUpdateException dbEx)
         {
             _logger.LogError("添加监控点异常:Message:{0}\r\n,StackTrace:{1}", dbEx.Message, dbEx.StackTrace);
             return(BadRequest(new ApplicationException {
                 ErrorCode = "DBUpdate", ErrorMessage = "数据保存异常:" + dbEx.Message
             }));
         }
         catch (Exception ex)
         {
             _logger.LogError("添加监控点异常:Message:{0}\r\n,StackTrace:{1}", ex.Message, ex.StackTrace);
             return(BadRequest(new ApplicationException {
                 ErrorCode = "Unknown", ErrorMessage = ex.Message
             }));
         }
     }
 }
Пример #6
0
 public IActionResult Update([FromBody] MonitorySite ms)
 {
     if (ms == null)
     {
         return(BadRequest("MonitorySite object can not be null!"));
     }
     if (ExistsName(ms.MonitorySiteName, ms.OrganizationId, ms.MonitorySiteId))
     {
         return(BadRequest("MonitorySite name has been used!"));
     }
     using (var db = new AllInOneContext.AllInOneContext())
     {
         try
         {
             db.MonitorySite.Update(ms);
             IPDeviceInfo cameraDevice = db.IPDeviceInfo.FirstOrDefault(t => t.IPDeviceInfoId.Equals(ms.Camera.IPDeviceId));
             if (cameraDevice != null)
             {
                 cameraDevice.IPDeviceName = ms.MonitorySiteName;
                 db.IPDeviceInfo.Update(cameraDevice);
             }
             db.SaveChanges();
             // //推送到dcp,数据同步。。。。。
             return(NoContent());
         }
         catch (DbUpdateException dbEx)
         {
             _logger.LogError("更新监控点异常:Message:{0}\r\n,StackTrace:{1}", dbEx.Message, dbEx.StackTrace);
             return(BadRequest(new ApplicationException {
                 ErrorCode = "DBUpdate", ErrorMessage = "数据保存异常:" + dbEx.Message
             }));
         }
         catch (Exception ex)
         {
             _logger.LogError("更新监控点异常:Message:{0}\r\n,StackTrace:{1}", ex.Message, ex.StackTrace);
             return(BadRequest(new ApplicationException {
                 ErrorCode = "Unknown", ErrorMessage = ex.Message
             }));
         }
     }
 }
Пример #7
0
        public IActionResult GetMonitorySiteByCameraID(Guid cameraId)
        {
            try
            {
                using (var db = new AllInOneContext.AllInOneContext())
                {
                    List <MonitorySite> monitorysites = GetAllMonitorysite(db);

                    MonitorySite ms = monitorysites.FirstOrDefault(p => p.CameraId.Equals(cameraId));

                    return(new ObjectResult(ms));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("GetMonitorySiteByCameraID:Message:{0}\r\n,StackTrace:{1}", ex.Message, ex.StackTrace);
                return(BadRequest(new ApplicationException {
                    ErrorCode = "Unknown", ErrorMessage = ex.Message
                }));
            }
        }
Пример #8
0
        /// <summary>
        /// 自动匹配该组织节点下的摄像机数据
        /// </summary>
        /// <param name="model"></param>
        /// <param name="db"></param>
        private static bool CompletionData(DutyGroupSchedule model, AllInOneContext.AllInOneContext db)
        {
            bool isCompleted = false;

            foreach (DutyGroupScheduleDetail dgsd in model.DutyGroupScheduleDetails)
            {
                foreach (DutyCheckSiteSchedule dcss in dgsd.CheckDutySiteSchedule)
                {
                    MonitorySite ms = DutyGroupScheduleHelper.GetMonitorySiteByOrganizationId(dcss.SiteOrganizationId.Value, db);
                    if (ms != null)
                    {
                        dcss.CheckDutySiteId = ms.MonitorySiteId;
                    }
                    else
                    {
                        isCompleted = true;
                    }
                }
            }
            return(isCompleted);
        }
Пример #9
0
        /// <summary>
        ///随机获取该组织机构下的一个监控点
        /// </summary>
        /// <param name="organizationId"></param>
        /// <returns></returns>

        private CameraView GetCameraView(Guid?organizationId, AllInOneContext.AllInOneContext db, DutyCheckLog log)
        {
            CameraView monitorySite = null;

            if (organizationId == null)
            {
                return(monitorySite);
            }
            //获取组织机构下所有的监控点View
            Organization org = db.Organization
                               .Include(t => t.Center)
                               .FirstOrDefault(p => p.OrganizationId.Equals(organizationId));

            if (org == null || org.Center == null || org.Center.EndPoints == null || org.Center.EndPoints.Count == 0)
            {
                return(monitorySite);
            }
            //
            List <DutyCheckLog> allDutyCheckLogs = GetAllDutyCheckLog(db, org);

            //判断是否已绑定监控点数据
            if (log.DutycheckSiteId != null)
            {
                string       murl = string.Format("http://{0}:{1}/Resources/MonitorySite/cameraId/{2}", org.Center.EndPoints[0].IPAddress, org.Center.EndPoints[0].Port, log.DutycheckSiteId);
                MonitorySite ms   = HttpClientHelper.GetOne <MonitorySite>(murl);
                return(ms.ToCameraView());
            }
            string url = string.Format("http://{0}:{1}/Resources/MonitorySite", org.Center.EndPoints[0].IPAddress, org.Center.EndPoints[0].Port);
            IEnumerable <MonitorySite> monitorySiteT = HttpClientHelper.Get <MonitorySite>(url);

            //过滤出有效的监控点
            monitorySiteT = monitorySiteT.Where(p => p.IsDutycheckSite);
            //确保所有监控点能覆盖
            CameraView randomCameraView = null;

            if (monitorySiteT == null || monitorySiteT.Count() == 0)
            {
                return(randomCameraView);
            }
            foreach (MonitorySite cam in monitorySiteT)
            {
                var competeLog = allDutyCheckLogs.FirstOrDefault(p => p.DutycheckSiteId.Equals(cam.CameraId));
                if (competeLog != null)
                {
                    continue;
                }
                else
                {
                    randomCameraView = cam.ToCameraView();
                    break;
                }
            }
            //
            if (randomCameraView == null)
            {
                Random r = new Random(monitorySiteT.Count());

                randomCameraView = monitorySiteT.ToArray()[r.Next()].ToCameraView();
            }

            return(randomCameraView);
        }