Exemplo n.º 1
0
        /// <summary>
        /// 获取未确警信息
        /// </summary>
        /// <returns></returns>
        public List <ServAlarmRecordModel> GetNotPoliceNum()
        {
            ServAlarmRecordModel servAlarmRecordModel = new ServAlarmRecordModel();

            servAlarmRecordModel.confirm_state = (int)EnumClass.ConfirmAlarmState.未确警;
            return(_servAlarmRecordDal.GetNotPoliceNum(servAlarmRecordModel));
        }
Exemplo n.º 2
0
 /// <summary>
 /// 处理预案关联人
 /// </summary>
 /// <param name="handleItemId"></param>
 /// <param name="planRecordId"></param>
 /// <param name="planType"></param>
 /// <param name="confirmType"></param>
 /// <returns></returns>
 public bool HandlePlanPerson(int handleItemId, ServAlarmRecordModel alarmRecord, int handleRecordId)
 {
     try
     {
         List <ServPlanPersonModel> personList = GetPlanPersonList(handleItemId);
         if (personList != null)
         {
             for (int i = 0; i < personList.Count; i++)
             {
                 if (personList[i].is_message == 1)//判断是否发短信
                 {
                     //TODO调用发短信接口,并记录到数据库
                     //1:获取短信模板和短信内容(模板应该固定)
                     //2:调用发送短信接口
                     //3:将短信记录数据库(短信记录及关联记录)
                 }
             }
         }
         return(true);
     }
     catch (Exception ex)
     {
         Log4NetHelp.Error("处理预案关联人失败!预案处置项ID:" + handleItemId + "预案处置项记录ID:" + handleRecordId + "错误信息:" + ex.Message);
         return(false);
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// 查找预案处置项执行结果记录
        /// 先根据报警ID查找预案执行记录planRecordId,再通过planRecordId查找Serv_Plan_ItemResult
        /// </summary>
        /// <param name="alarmId"></param>
        /// <returns></returns>
        private PlanItemHandledInfo PlanItemResultList(ServAlarmRecordModel alarmRecord)
        {
            PlanItemHandledInfo handleInfoModel = new PlanItemHandledInfo();

            try
            {
                ServPlanRecordDAL           planRecordDal           = new ServPlanRecordDAL();
                ServPlanItemResultDAL       planItemResultDal       = new ServPlanItemResultDAL();
                ServPlanHandleItemDAL       planHandleItemDal       = new ServPlanHandleItemDAL();
                ServPlanHandleItemCameraDAL planHandleItemCameraDal = new ServPlanHandleItemCameraDAL();
                // ServAlarmRecordModel alarmRecord = _servAlarmRecordDal.GetEntity(alarmId);
                //查找预案执行记录
                ServPlanRecordModel planRecord = planRecordDal.GetEntityByAlarmId(alarmRecord.id);

                if (planRecord != null)
                {
                    //查找预案处置项记录
                    List <ServPlanItemResultModel> planItemRecordList = planItemResultDal.GetEntitiesByPlanRecordId(planRecord.id);
                    if (planItemRecordList != null)
                    {
                        handleInfoModel = TranPlanItemRecord(planRecord.plan_type, planItemRecordList, alarmRecord.alarm_event, alarmRecord.alarm_time);
                    }
                    else
                    {
                        //log 根据预案执行记录ID未找到预案处置项记录
                    }

                    //查找关联摄像头信息(事件预案无关联摄像头)
                    //if (planRecord.plan_type == (int)EnumClass.PlanType.事件预案)
                    //{
                    //    ServPlanHandleItemModel planHandleItemModel = planHandleItemDal.GetPlanHandleItemByTypeAndId(planRecord.plan_id, planRecord.plan_type, (int)EnumClass.EventPlanDefaultOptions.关联摄像头);
                    //    if (planHandleItemModel != null)
                    //    {
                    //        handleInfoModel.cameraList = planHandleItemCameraDal.GetHandledCameras(planHandleItemModel.id);
                    //    }
                    //}
                    if (planRecord.plan_type == (int)EnumClass.PlanType.设备预案)
                    {
                        ServPlanHandleItemModel planHandleItemModel = planHandleItemDal.GetPlanHandleItemByTypeAndId(planRecord.plan_id, planRecord.plan_type, (int)EnumClass.DevicePlanDefaultOptions.关联摄像头);
                        if (planHandleItemModel != null)
                        {
                            handleInfoModel.cameraList = planHandleItemCameraDal.GetHandledCameras(planHandleItemModel.id);
                        }
                    }
                }
                else
                {
                    //log 根据alarmId查找预案执行记录为null
                }
                handleInfoModel.alarmRecord = alarmRecord;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(handleInfoModel);
        }
Exemplo n.º 4
0
 /// <summary>
 /// 获取指定报警预案执行结果
 /// </summary>
 /// <param name="alarmId"></param>
 /// <returns></returns>
 public PlanItemHandledInfo GetPlanItemResultList(int alarmId)
 {
     try
     {
         ServAlarmRecordModel model = _servAlarmRecordDal.GetEntity(alarmId);
         return(PlanItemResultList(model));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 5
0
 /// <summary>
 /// 获取最新报警预案执行结果
 /// </summary>
 /// <returns></returns>
 public PlanItemHandledInfo GetLastPlanItemResultList()
 {
     try
     {
         ServAlarmRecordModel model = _servAlarmRecordDal.GetLastAlarmRecord();
         return(PlanItemResultList(model));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 6
0
 /// <summary>
 /// 获取未确警条数
 /// </summary>
 /// <param name="newentity"></param>
 /// <returns></returns>
 public List <ServAlarmRecordModel> GetNotPoliceNum(ServAlarmRecordModel newentity)
 {
     try
     {
         List <ServAlarmRecordModel> list = mapContext.QueryForList <ServAlarmRecordModel>("GetNotPoliceNum", newentity).ToList();
         return(list);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 7
0
 /// <summary>
 /// 获取今日报警数
 /// </summary>
 /// <returns></returns>
 public List <ServAlarmRecordModel> GetAlarmNumToday()
 {
     try
     {
         ServAlarmRecordModel        model = new ServAlarmRecordModel();
         List <ServAlarmRecordModel> list  = mapContext.QueryForList <ServAlarmRecordModel>("GetAlarmNumToday", model).ToList();
         return(list);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 8
0
 /// <summary>
 /// 获取前几条报警
 /// </summary>
 /// <param name="num"></param>
 /// <returns></returns>
 public List <ServAlarmRecordModel> GetFirstFewAlarm(int num)
 {
     try
     {
         ServAlarmRecordModel model = new ServAlarmRecordModel();
         model.alarm_level = num;
         List <ServAlarmRecordModel> list = mapContext.QueryForList <ServAlarmRecordModel>("GetFirstFewAlarm", model).ToList();
         return(list);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 9
0
 //根据告警ID获取一条确警信息
 public AlarmRecordModel GetEntity(int id)
 {
     try
     {
         ServAlarmRecordModel alarm = _servAlarmRecordDal.GetEntity(id);
         AlarmRecordModel     model = new AlarmRecordModel();
         model.confirmAlarmText = alarm.confirm_alarm_text;
         //创建人
         var a = servPersonInfoDAL.GetPersonInfoBySSOId(alarm.confirm_person_id);
         model.confirmPersonName = a == null ? "未知" : a.alias;
         model.confirmResult     = Enum.GetName(typeof(EnumClass.ConfirmAlarmResult), alarm.confirm_result);
         model.alarmLocation     = alarm.alarm_location;
         return(model);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 10
0
 /// <summary>
 /// 更新一条数据
 /// </summary>
 /// <param name="model"></param>
 public bool UpdateAlarmRecordById(ServAlarmRecordModel model)
 {
     try
     {
         int res = mapContext.Update("UpdateAlarmRecord", model);
         if (res > 0)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 11
0
        /// <summary>
        /// 将报警记录转入卷宗
        /// </summary>
        /// <param name="alarmId"></param>
        private void GotoArchive(int alarmId, int ssoId, ServAlarmRecordModel alarmRecord, int handleItemId, int itemType)
        {
            try
            {
                ServVideoInfoDAL          videoDal          = new ServVideoInfoDAL();
                ServPlanRecordDAL         planRecordDal     = new ServPlanRecordDAL();
                ServArchiveInfoBLL        archiveInfoBll    = new ServArchiveInfoBLL();
                ServPlanItemResultDAL     planItemResultDal = new ServPlanItemResultDAL();
                List <ServVideoInfoModel> videoList         = videoDal.GetVideoInfoByAlarmId(alarmId);//获取下载的视频
                List <ServFileInfoModel>  fileInfoList      = new List <ServFileInfoModel>();
                ServFileInfoModel         fileInfo          = null;
                for (int i = 0; i < videoList.Count; i++)
                {
                    fileInfo               = new ServFileInfoModel();
                    fileInfo.content       = "确警后转入";
                    fileInfo.create_time   = DateTime.Now;
                    fileInfo.file_address  = videoList[i].video_path;
                    fileInfo.file_ext_name = Path.GetExtension(videoList[i].video_path);
                    fileInfo.file_name     = videoList[i].video_name;
                    fileInfo.file_type     = (int)EnumClass.FileType.视频;
                    fileInfo.person_id     = ssoId;
                    fileInfoList.Add(fileInfo);
                }


                bool bl = archiveInfoBll.AddservArchiveInfo(alarmRecord.alarm_name, 7, ssoId, alarmRecord.alarm_code, "", alarmRecord.id.ToString(), fileInfoList, (int)EnumClass.ArchiveStatus.新建);
                //插入数据库
                ServPlanRecordModel     planRecord = planRecordDal.GetEntityByAlarmId(alarmId);
                ServPlanItemResultModel result     = new ServPlanItemResultModel();
                result.confirm_type   = (int)EnumClass.PlanHandleTime.确警后;
                result.content        = "";
                result.execute_time   = DateTime.Now;
                result.handleitem_id  = handleItemId;
                result.item_result    = bl == true ? (int)EnumClass.PlanItemResult.成功 : (int)EnumClass.PlanItemResult.失败;
                result.item_type      = itemType;
                result.plan_record_id = planRecord == null ? -1 : planRecord.id;
                planItemResultDal.AddEntity(result);  //插入处置项处理记录
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 12
0
 /// <summary>
 /// 处理预案
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public bool HandleBusiness(InterfaceData info)
 {
     try
     {
         //  InterfaceData interfaceData = JsonHelper.StringToObject<InterfaceData>(info);
         if (info != null)
         {
             if (info.dataType == 1)  //报警数据(默认类型1)
             {
                 ServAlarmRecordModel alarmRecord = JsonHelper.StringToObject <ServAlarmRecordModel>(info.data.ToString());
                 if (alarmRecord != null)
                 {
                     //Log4NetHelp.Info("业务层开始处理预案!");
                     HandlePlan(alarmRecord);
                     // Log4NetHelp.Info("业务层预案处理完成!");
                 }
                 else
                 {
                     //log:报警数据转换失败
                     Log4NetHelp.Info("数据类型转换失败!数据:" + info.data.ToString());
                 }
             }
             else
             {
                 //log:非报警数据
                 Log4NetHelp.Info("非报警数据");
             }
         }
         else
         {
             //log:HandleBusiness转换子系统数据失败
             Log4NetHelp.Info("业务层接收数据为空");
         }
         return(true);
     }
     catch (Exception ex)
     {
         //log  数据处理失败+ex.message
         Log4NetHelp.Error("预案处理出现异常!" + ex.Message);
         return(false);
     }
 }
Exemplo n.º 13
0
        /// <summary>
        /// 确警
        /// </summary>
        /// <param name="alarmId"></param>
        /// <param name="ssoid"></param>
        /// <param name="confirmResult"></param>
        /// <param name="location"></param>
        /// <param name="content"></param>
        /// <returns></returns>
        public bool ConfirmAlarm(int alarmId, int ssoid, int confirmResult, string location, string content)
        {
            try
            {
                ServAlarmRecordModel alarmRecord = _servAlarmRecordDal.GetEntity(alarmId);
                ServPlanRecordModel  planRecord  = _servPlanRecordDal.GetEntityByAlarmId(alarmId);
                if (alarmRecord != null)
                {
                    alarmRecord.alarm_location     = location;
                    alarmRecord.confirm_alarm_text = content;
                    alarmRecord.confirm_alarm_time = DateTime.Now;
                    alarmRecord.confirm_person_id  = ssoid;
                    if (confirmResult == (int)EnumClass.ConfirmAlarmResult.真警执行预案)
                    {
                        //执行确警后预案处置项
                        //ServAlarmRecordModel model = _servAlarmRecordDal.GetEntity(alarmId);
                        //string deviceCode = model.alarm_code;
                        //DateTime alarmTime = model.alarm_time;
                        //查找预案(获取确警后的处置项)

                        #region  确警后操作
                        HandleConfirmAlarm(alarmId, ssoid, alarmRecord, planRecord);
                        #endregion
                    }
                    alarmRecord.confirm_result = confirmResult;
                    alarmRecord.confirm_state  = (int)EnumClass.ConfirmAlarmState.确警;
                    return(_servAlarmRecordDal.UpdateAlarmRecordById(alarmRecord));
                }
                else
                {
                    //log未找到报警记录,确警失败!+"alarmId"=alarmId+"ssoid"=ssoid
                    return(false);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 14
0
 /// <summary>
 /// 修改报警记录
 /// </summary>
 /// <param name="alarmId"></param>
 /// <param name="location"></param>
 /// <param name="content"></param>
 /// <returns></returns>
 public bool UpdateAlarm(int alarmId, string location, string content)
 {
     try
     {
         ServAlarmRecordModel alarmRecord = _servAlarmRecordDal.GetEntity(alarmId);
         if (alarmRecord != null)
         {
             alarmRecord.alarm_location     = location;
             alarmRecord.confirm_alarm_text = content;
             return(_servAlarmRecordDal.UpdateAlarmRecordById(alarmRecord));
         }
         else
         {
             //log未找到报警记录,确警失败!+"alarmId"=alarmId+"ssoid"=ssoid
             return(false);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 15
0
 public bool UpdateEntity(int id, ServAlarmRecordModel newentity)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 16
0
        /// <summary>
        /// 增加一条数据
        /// </summary>
        /// <param name="entity"></param>
        public int AddEntity(ServAlarmRecordModel entity)
        {
            int id = (int)mapContext.Insert("InsertAlarmRecord", entity);

            return(id);
        }
Exemplo n.º 17
0
        /// <summary>
        /// 处理报警数据
        /// </summary>
        /// <param name="alarmRecord"></param>
        public void HandlePlan(ServAlarmRecordModel alarmRecord)
        {
            try
            {
                ServExecutionTimeDAL executeTimeDal      = new ServExecutionTimeDAL();
                ServDeviceInfoModel  deviceInfo          = GetDeviceInfo(alarmRecord.alarm_code);
                BaseRegionConfigDAL  baseRegionConfigDal = new BaseRegionConfigDAL();
                if (deviceInfo != null)
                {
                    BaseRegionConfigModel regionModel = baseRegionConfigDal.GetEntity(deviceInfo.region_id); //获取设备所在园区
                    int parentEventId = GetParentEvent(alarmRecord.alarm_event);                             //获取父级事件ID
                    //查找设备预案
                    string alarmTime   = alarmRecord.alarm_time.ToLocalTime().ToString("HH:mm:ss");
                    var    devicePlans = CheckDevicePlanIsExist(deviceInfo.id, (int)EnumClass.PlanStatus.启用, alarmTime);
                    DevicePlanAndTimeConfig devicePlan = devicePlans == null ? null : devicePlans.FirstOrDefault(); //目前取第一条设备预案
                    if (devicePlan != null)
                    {
                        #region  检验时间表达式
                        //if (TimeExpression.TimePointIsExistSpan(alarmRecord.alarm_time.ToLocalTime(), devicePlan.update_time, timeModel.execution_cycle))
                        //{

                        //}
                        //else
                        //{
                        //    Log4NetHelp.Info("报警时间未在设置周期内,报警时间:" + alarmRecord.alarm_time.ToLocalTime().ToString() + " 开始时间:" + devicePlan.update_time + " 时间表达式:" + timeModel.execution_cycle);
                        //}

                        #endregion
                        List <ServPlanHandleItemModel> planHandleItemList = GetPlanHandleItem(devicePlan.id, (int)EnumClass.PlanType.设备预案, (int)EnumClass.PlanHandleTime.确警前);
                        if (planHandleItemList != null && planHandleItemList.Count != 0)
                        {
                            //执行设备预案,写入预案执行记录
                            PlanBLL planBll      = new PlanBLL();
                            int     planRecordId = planBll.AddPlanRecord(alarmRecord.id, devicePlan.id, (int)EnumClass.PlanType.设备预案);
                            if (planRecordId > 0)
                            {
                                List <ServDeviceInfoModel> camerasList = null;
                                string ledMessage = "";
                                HandleDevicePlanItem(planRecordId, parentEventId, regionModel, planHandleItemList, deviceInfo, alarmRecord, out camerasList, out ledMessage);
                                // Hashtable hash = HandleDevicePlanItem(planRecordId, planHandleItemList, deviceInfo, alarmRecord,out camerasList,out ledMessage);
                                if (hash != null && hash.Count != 0)
                                {
                                    WebSocketMsgModel  webMsg        = new WebSocketMsgModel();
                                    DevicePlanMsgModel devicePlanMsg = new DevicePlanMsgModel();
                                    devicePlanMsg.hash       = hash;
                                    devicePlanMsg.alarm      = alarmRecord;
                                    devicePlanMsg.deviceInfo = deviceInfo;
                                    // devicePlanMsg.videoTime = GetAlarmVideoTime(alarmRecord.alarm_event);
                                    devicePlanMsg.videoTime   = GetAlarmVideoTime(parentEventId);
                                    devicePlanMsg.camerasList = camerasList;
                                    devicePlanMsg.ledMessage  = ledMessage;       //用于页面显示滚动条信息
                                                                                  // string devicePlanMsgStr = JsonHelper.ObjectToString(devicePlanMsg);
                                    webMsg.info = devicePlanMsg;
                                    webMsg.type = (int)EnumClass.WebSocketMsgType.设备预案;
                                    string param = JsonHelper.ObjectToString(webMsg);
                                    HttpHelper.PostJsonData(SubSystemRouteBLL.GetToWebsocketRoute(), param, Encoding.UTF8);
                                }
                            }
                        }
                        else
                        {
                            //log:未找到相应设备预案处置项
                            Log4NetHelp.Info("未找到对应设备预案处置项:" + alarmRecord.alarm_code);
                        }
                    }
                    else
                    {
                        //log 未找到设备预案或者设备预案未启用
                        //TODO 查找事件预案
                        Log4NetHelp.Info("未找到当前时间段内配置的设备预案或者设备预案未启用,继续查找事件预案");
                        //int parentEventId = GetParentEvent(alarmRecord.alarm_event);  //获取父级事件ID
                        if (parentEventId != -1)
                        {
                            var eventPlans = CheckEventPlanIsExist(alarmTime, parentEventId, (int)EnumClass.PlanStatus.启用, regionModel.id);
                            EventPlanAndTimeConfig eventPlan = eventPlans == null ? null : eventPlans.FirstOrDefault();//目前取第一条设备预案
                            if (eventPlan != null)
                            {
                                List <ServPlanHandleItemModel> planHandleItemList = GetPlanHandleItem(eventPlan.id, (int)EnumClass.PlanType.事件预案, (int)EnumClass.PlanHandleTime.确警前);//获取事件预案处置项
                                if (planHandleItemList != null && planHandleItemList.Count != 0)
                                {
                                    //执行事件预案,写入预案执行记录
                                    PlanBLL planBll      = new PlanBLL();
                                    int     planRecordId = planBll.AddPlanRecord(alarmRecord.id, eventPlan.id, (int)EnumClass.PlanType.事件预案);
                                    if (planRecordId > 0)
                                    {
                                        List <ServDeviceInfoModel> camerasList = null;
                                        string ledMessage = "";
                                        HandleEventPlanItem(planRecordId, parentEventId, regionModel, planHandleItemList, deviceInfo, alarmRecord, out camerasList, out ledMessage);
                                        // Hashtable hash = HandleDevicePlanItem(planRecordId, planHandleItemList, deviceInfo, alarmRecord,out camerasList,out ledMessage);
                                        if (hash != null && hash.Count != 0)
                                        {
                                            WebSocketMsgModel  webMsg        = new WebSocketMsgModel();
                                            DevicePlanMsgModel devicePlanMsg = new DevicePlanMsgModel();
                                            devicePlanMsg.hash       = hash;
                                            devicePlanMsg.alarm      = alarmRecord;
                                            devicePlanMsg.deviceInfo = deviceInfo;
                                            //  devicePlanMsg.videoTime = GetAlarmVideoTime(alarmRecord.alarm_event);
                                            devicePlanMsg.videoTime   = GetAlarmVideoTime(parentEventId);
                                            devicePlanMsg.camerasList = camerasList;
                                            devicePlanMsg.ledMessage  = ledMessage;       //用于页面显示滚动条信息
                                                                                          // string devicePlanMsgStr = JsonHelper.ObjectToString(devicePlanMsg);
                                            webMsg.info = devicePlanMsg;
                                            webMsg.type = (int)EnumClass.WebSocketMsgType.事件预案;
                                            string param = JsonHelper.ObjectToString(webMsg);
                                            HttpHelper.PostJsonData(SubSystemRouteBLL.GetToWebsocketRoute(), param, Encoding.UTF8);
                                        }
                                    }
                                }
                                else
                                {
                                    Log4NetHelp.Info("未找到对应事件预案处置项,事件ID:" + alarmRecord.alarm_event + " 园区ID:" + regionModel.id + " 报警时间:" + alarmTime);
                                }
                            }
                            else
                            {
                                Log4NetHelp.Info("未找到对应事件预案,事件ID:" + alarmRecord.alarm_event + " 园区ID:" + regionModel.id + " 报警时间:" + alarmTime);
                            }
                        }
                        else
                        {
                            Log4NetHelp.Info("未找到对应事件,事件ID:" + alarmRecord.alarm_event);
                        }
                    }
                }
                else
                {
                    //log:未找到设备alarmRecord.alarm_code
                    Log4NetHelp.Info("未找到设备:" + alarmRecord.alarm_code);
                }
            }
            catch (Exception ex)
            {
                // Log4NetHelp.Error("业务层处理报警数据失败!" + ex.Message);
                Log4NetHelp.Error("业务层处理报警数据失败!" + ex.Message);
            }
        }
Exemplo n.º 18
0
        /// <summary>
        /// 执行设备预案处置项
        /// </summary>
        /// <param name="itemList"></param>
        /// <returns></returns>
        public void HandleDevicePlanItem(int planRecordId, int eventId, BaseRegionConfigModel regionModel, List <ServPlanHandleItemModel> itemList, ServDeviceInfoModel deviceInfo, ServAlarmRecordModel alarmRecord, out List <ServDeviceInfoModel> camerasList, out string ledMessage)
        {
            try
            {
                PlanItemBLL             planItemBll     = new PlanItemBLL();
                ServPlanHandleItemModel handleItemModel = itemList.FirstOrDefault(n => n.item_type == (int)EnumClass.DevicePlanDefaultOptions.关联摄像头);
                if (handleItemModel != null)
                {
                    HandleCamerasBLL camerasbll = new HandleCamerasBLL();
                    camerasList = camerasbll.GetCameras(handleItemModel.id);
                }
                else
                {
                    camerasList = null;
                }
                LEDHandle ledHandle = new LEDHandle(deviceInfo, alarmRecord);
                ledMessage = ledHandle.GetAlarmText();

                foreach (ServPlanHandleItemModel item in itemList)
                {
                    switch (item.item_type)
                    {
                    case (int)EnumClass.DevicePlanDefaultOptions.中控室LED信息显示:
                        // string content = "";
                        // LEDHandle ledHandle = new LEDHandle(deviceInfo, alarmRecord);
                        bool ledResult = ledHandle.HandleLedItem(ledMessage, regionModel.region_code);      //处理LED
                        planItemBll.AddItemRecord((int)EnumClass.PlanHandleTime.确警前, item.id, (int)EnumClass.PlanItemResult.成功, item.item_type, planRecordId, ledMessage);
                        //if (!ht.ContainsKey(item.item_type))
                        //{
                        //    ht.Add(item.item_type, new { status = 1, info = "" });//已执行
                        //}
                        //else
                        //{
                        //    Log4NetHelp.Info("处置项重复:" + Enum.Parse(typeof(EnumClass.DevicePlanDefaultOptions), item.item_type.ToString()).ToString());
                        //}
                        AddHashTable(item.item_type, new { status = 1, info = "" });
                        break;

                    case (int)EnumClass.DevicePlanDefaultOptions.关联摄像头:

                        // ht.Add(item.item_type, new { status = 0, itemid = item.id, itemType = item.item_type, planRecordId = planRecordId });//未执行
                        AddHashTable(item.item_type, new { status = 0, itemid = item.id, itemType = item.item_type, planRecordId = planRecordId });
                        break;

                    case (int)EnumClass.DevicePlanDefaultOptions.告警视频下载:
                        int handleDownloadRecordId = planItemBll.AddItemRecord((int)EnumClass.PlanHandleTime.确警前, item.id, (int)EnumClass.PlanItemResult.成功, item.item_type, planRecordId, "");
                        if (handleDownloadRecordId > 0)     //插入处置项记录成功,开始执行处置项
                        {
                            VideoDownloadBLL videoDownloadBll = new VideoDownloadBLL();
                            bool             bl = videoDownloadBll.VideoDownload(handleDownloadRecordId, eventId, alarmRecord.alarm_time.ToLocalTime(), camerasList);
                        }
                        //  ht.Add(item.item_type, new { status = 1, info = "" });//已执行
                        AddHashTable(item.item_type, new { status = 1, info = "" });
                        break;

                    case (int)EnumClass.DevicePlanDefaultOptions.打开告警设备附近视频:
                        // ht.Add(item.item_type, new { status = 0, itemid = item.id, itemType = item.item_type, planRecordId = planRecordId, info = "" });//未执行
                        AddHashTable(item.item_type, new { status = 0, itemid = item.id, itemType = item.item_type, planRecordId = planRecordId, info = "" });
                        break;

                    case (int)EnumClass.DevicePlanDefaultOptions.控制中心声光蜂鸣器开启:
                        HandleRelayBLL handleRelayBll = new HandleRelayBLL();
                        handleRelayBll.HandleRelay(item.ext1, regionModel.region_code);
                        planItemBll.AddItemRecord((int)EnumClass.PlanHandleTime.确警前, item.id, (int)EnumClass.PlanItemResult.成功, item.item_type, planRecordId, "");
                        //  ht.Add(item.item_type, new { status = 1, info = "" });//已执行
                        AddHashTable(item.item_type, new { status = 1, info = "" });
                        break;

                    case (int)EnumClass.DevicePlanDefaultOptions.相关摄像头上大屏:
                        // ht.Add(item.item_type, new { status = 0, itemid = item.id, itemType = item.item_type, planRecordId = planRecordId, info = "" });//未执行
                        AddHashTable(item.item_type, new { status = 0, itemid = item.id, itemType = item.item_type, planRecordId = planRecordId, info = "" });
                        break;

                    case (int)EnumClass.DevicePlanDefaultOptions.通知其他负责人:
                        PlanPersonBLL planPersonBll        = new PlanPersonBLL();
                        int           handlePersonRecordId = planItemBll.AddItemRecord((int)EnumClass.PlanHandleTime.确警前, item.id, (int)EnumClass.PlanItemResult.失败, item.item_type, planRecordId, "暂未设置短信平台");
                        if (handlePersonRecordId > 0)      //插入处置项记录成功,开始执行处置项
                        {
                            bool bl = planPersonBll.HandlePlanPerson(item.id, alarmRecord, handlePersonRecordId);
                        }
                        // ht.Add(item.item_type, new { status = 1, info = "" });
                        AddHashTable(item.item_type, new { status = 1, info = "" });
                        break;

                    case (int)EnumClass.DevicePlanDefaultOptions.通知设备网格第一负责人:
                        //查找第一负责人,发送短信,记录短信记录与执行结果
                        // planItemBll.AddItemRecord((int)EnumClass.PlanHandleTime.确警前, item.id, item.item_type, planRecordId, "");
                        // ht.Add(item.item_type, new { status = 1, info = "" });
                        int dutyPersonRecordId = planItemBll.AddItemRecord((int)EnumClass.PlanHandleTime.确警前, item.id, (int)EnumClass.PlanItemResult.失败, item.item_type, planRecordId, "暂未设置短信平台");
                        AddHashTable(item.item_type, new { status = 1, info = "" });
                        break;

                    default: break;
                    }
                }
            }
            catch (Exception ex)
            {
                camerasList = null;
                ledMessage  = "";
                Log4NetHelp.Info("处理设备预案失败!报警记录ID:" + planRecordId + " " + ex.Message);
            }
            // return ht;
        }
Exemplo n.º 19
0
        /// <summary>
        /// 查找事件预案并处理
        /// </summary>
        public void HandleEventPlanItem(int planRecordId, int eventId, BaseRegionConfigModel regionModel, List <ServPlanHandleItemModel> planHandleItemList, ServDeviceInfoModel deviceInfo, ServAlarmRecordModel alarmRecord, out List <ServDeviceInfoModel> camerasList, out string ledMessage)
        {
            try
            {
                PlanItemBLL planItemBll = new PlanItemBLL();
                //ServPlanHandleItemModel handleItemModel = planHandleItemList.FirstOrDefault(n => n.item_type == (int)EnumClass.EventPlanDefaultOptions.打开周围摄像头);
                //if (handleItemModel != null)
                //{
                //    HandleCamerasBLL camerasbll = new HandleCamerasBLL();
                //    camerasList = camerasbll.GetEventPlanCameras(deviceInfo.id, int.Parse(handleItemModel.ext2), int.Parse(handleItemModel.ext3), int.Parse(handleItemModel.ext4));
                //}
                //else
                //{
                //    camerasList = null;
                //}
                camerasList = null;
                LEDHandle ledHandle = new LEDHandle(deviceInfo, alarmRecord);
                ledMessage = ledHandle.GetAlarmText();
                //单独处理打开周围摄像头
                var cameraEventList = planHandleItemList.Where(n => n.item_type == (int)EnumClass.EventPlanDefaultOptions.打开周围摄像头);
                if (cameraEventList != null && cameraEventList.Count() > 0)
                {
                    AddEventHashTable((int)EnumClass.EventPlanDefaultOptions.打开周围摄像头, new { status = 0, planRecordId = planRecordId, model = cameraEventList.ToList() });
                }
                foreach (ServPlanHandleItemModel item in planHandleItemList)
                {
                    switch (item.item_type)
                    {
                    case (int)EnumClass.EventPlanDefaultOptions.中控室LED信息显示:
                        bool ledResult = ledHandle.HandleLedItem(ledMessage, regionModel.region_code);      //处理LED
                        planItemBll.AddItemRecord((int)EnumClass.PlanHandleTime.确警前, item.id, (int)EnumClass.PlanItemResult.成功, item.item_type, planRecordId, ledMessage);
                        AddHashTable(item.item_type, new { status = 1, info = "" });
                        break;

                    case (int)EnumClass.EventPlanDefaultOptions.告警视频下载:
                        //int handleDownloadRecordId = planItemBll.AddItemRecord((int)EnumClass.PlanHandleTime.确警前, item.id, item.item_type, planRecordId, "");
                        //if (handleDownloadRecordId > 0) //插入处置项记录成功,开始执行处置项
                        //{
                        //    VideoDownloadBLL videoDownloadBll = new VideoDownloadBLL();
                        //    bool bl = videoDownloadBll.VideoDownload(handleDownloadRecordId, eventId, alarmRecord.alarm_time.ToLocalTime(), camerasList);
                        //}
                        //AddHashTable(item.item_type, new { status = 1, info = "" });
                        AddHashTable(item.item_type, new { status = 0, itemid = item.id, itemType = item.item_type, planRecordId = planRecordId });
                        break;

                    //case (int)EnumClass.EventPlanDefaultOptions.打开周围摄像头:
                    //    AddEventHashTable(item.item_type, new { status = 0, itemid = item.id, itemType = item.item_type, planRecordId = planRecordId, model = item });
                    //    break;
                    case (int)EnumClass.EventPlanDefaultOptions.控制中心声光蜂鸣器开启:
                        HandleRelayBLL handleRelayBll = new HandleRelayBLL();
                        handleRelayBll.HandleRelay(item.ext1, regionModel.region_code);
                        planItemBll.AddItemRecord((int)EnumClass.PlanHandleTime.确警前, item.id, (int)EnumClass.PlanItemResult.成功, item.item_type, planRecordId, "");
                        //  ht.Add(item.item_type, new { status = 1, info = "" });//已执行
                        AddHashTable(item.item_type, new { status = 1, info = "" });
                        break;

                    case (int)EnumClass.EventPlanDefaultOptions.相关摄像头上大屏:
                        AddHashTable(item.item_type, new { status = 0, itemid = item.id, itemType = item.item_type, planRecordId = planRecordId, info = "" });
                        break;

                    case (int)EnumClass.EventPlanDefaultOptions.通知其他负责人:
                        PlanPersonBLL planPersonBll        = new PlanPersonBLL();
                        int           handlePersonRecordId = planItemBll.AddItemRecord((int)EnumClass.PlanHandleTime.确警前, item.id, (int)EnumClass.PlanItemResult.失败, item.item_type, planRecordId, "暂未设置短信平台");
                        if (handlePersonRecordId > 0)      //插入处置项记录成功,开始执行处置项
                        {
                            bool bl = planPersonBll.HandlePlanPerson(item.id, alarmRecord, handlePersonRecordId);
                        }
                        // ht.Add(item.item_type, new { status = 1, info = "" });
                        AddHashTable(item.item_type, new { status = 1, info = "" });
                        break;

                    case (int)EnumClass.EventPlanDefaultOptions.通知设备网格第一负责人:
                        int firstDutyRecordId = planItemBll.AddItemRecord((int)EnumClass.PlanHandleTime.确警前, item.id, (int)EnumClass.PlanItemResult.失败, item.item_type, planRecordId, "暂未设置短信平台");
                        AddHashTable(item.item_type, new { status = 1, info = "" });
                        break;

                    default: break;
                    }
                }
            }
            catch (Exception ex)
            {
                camerasList = null;
                ledMessage  = "";
                Log4NetHelp.Info("处理事件预案失败!预案执行记录ID:" + planRecordId + " " + ex.Message);
            }
        }
Exemplo n.º 20
0
 public LEDHandle(ServDeviceInfoModel deviceInfo, ServAlarmRecordModel alarmRecord)
 {
     _deviceInfo  = deviceInfo;
     _alarmRecord = alarmRecord;
 }
Exemplo n.º 21
0
        /// <summary>
        /// 处理确警后预案处置项
        /// </summary>
        /// <param name="alarmId"></param>
        public void HandleConfirmAlarm(int alarmId, int ssoId, ServAlarmRecordModel alarmRecord, ServPlanRecordModel planRecord)
        {
            try
            {
                ServPlanHandleItemDAL          planHandleDal = new ServPlanHandleItemDAL();
                List <ServPlanHandleItemModel> handleList    = planHandleDal.GetConfirmPlanHandleItemByAlarmId(alarmId);//根据报警ID获取确警后处置项
                if (handleList != null)
                {
                    for (int i = 0; i < handleList.Count; i++)
                    {
                        switch (handleList[i].plan_type)
                        {
                        case (int)EnumClass.PlanType.设备预案:
                            switch (handleList[i].item_type)
                            {
                            case (int)EnumClass.DevicePlanConfirmOptions.启动户外LED信息提示系统:
                                AddPlanItemRecord(planRecord, handleList[i].item_type, (int)EnumClass.PlanItemResult.失败, DateTime.Now, "暂无设备", handleList[i].confirm_type, handleList[i].id);
                                break;

                            case (int)EnumClass.DevicePlanConfirmOptions.是否转到卷宗:
                                GotoArchive(alarmId, ssoId, alarmRecord, handleList[i].id, handleList[i].item_type);
                                break;

                            case (int)EnumClass.DevicePlanConfirmOptions.通知其他负责人:
                                AddPlanItemRecord(planRecord, handleList[i].item_type, (int)EnumClass.PlanItemResult.失败, DateTime.Now, "暂无设备", handleList[i].confirm_type, handleList[i].id);
                                break;

                            case (int)EnumClass.DevicePlanConfirmOptions.通知设备网格第一负责人:
                                AddPlanItemRecord(planRecord, handleList[i].item_type, (int)EnumClass.PlanItemResult.失败, DateTime.Now, "暂无设备", handleList[i].confirm_type, handleList[i].id);
                                break;

                            default: break;
                            }
                            break;

                        case (int)EnumClass.PlanType.事件预案:
                            switch (handleList[i].item_type)
                            {
                            case (int)EnumClass.EventPlanConfirmOptions.启动户外LED信息提示系统:
                                AddPlanItemRecord(planRecord, handleList[i].item_type, (int)EnumClass.PlanItemResult.失败, DateTime.Now, "暂无设备", handleList[i].confirm_type, handleList[i].id);
                                break;

                            case (int)EnumClass.EventPlanConfirmOptions.是否转到卷宗:
                                GotoArchive(alarmId, ssoId, alarmRecord, handleList[i].id, handleList[i].item_type);
                                break;

                            case (int)EnumClass.EventPlanConfirmOptions.通知其他负责人:
                                AddPlanItemRecord(planRecord, handleList[i].item_type, (int)EnumClass.PlanItemResult.失败, DateTime.Now, "暂无设备", handleList[i].confirm_type, handleList[i].id);
                                break;

                            case (int)EnumClass.EventPlanConfirmOptions.通知设备网格第一负责人:
                                AddPlanItemRecord(planRecord, handleList[i].item_type, (int)EnumClass.PlanItemResult.失败, DateTime.Now, "暂无设备", handleList[i].confirm_type, handleList[i].id);
                                break;

                            default: break;
                            }
                            break;

                        default: break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 22
0
 /// <summary>
 /// 获取卷宗信息
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public ArchiveInfoList GetDossierInfo(int id)
 {
     try
     {
         //根据id 获取卷宗信息
         ServArchiveInfoModel    ArchiveInfo        = servArchiveInfoDAL.GetEntity(id);
         List <AlarmRecordModel> AlarmRecorInfoList = new List <AlarmRecordModel>();
         //获取报警信息
         if (ArchiveInfo != null)
         {
             ServAlarmRecordModel AlarmRecorInfo = new ServAlarmRecordModel();
             if (!string.IsNullOrEmpty(ArchiveInfo.alarm_id))
             {
                 string[] alarmArray = ArchiveInfo.alarm_id.Split(',');
                 for (int i = 0; i < alarmArray.Length; i++)
                 {
                     AlarmRecordModel AlarmRecordModel = new AlarmRecordModel();
                     AlarmRecorInfo      = servAlarmRecordDAL.GetEntity(Convert.ToInt32(alarmArray[i]));
                     AlarmRecordModel.id = AlarmRecorInfo.id;
                     // var e= baseEventTypeDAL.GetEntity(AlarmRecorInfo.alarm_event);
                     if (AlarmRecorInfo.alarm_event != "" && !string.IsNullOrEmpty(AlarmRecorInfo.alarm_event))
                     {
                         var e = baseEventTypeDAL.GetEntityByCode(AlarmRecorInfo.alarm_event);
                         AlarmRecordModel.alarmEvent = e == null ? "未知" : e.event_name;
                     }
                     else
                     {
                         AlarmRecordModel.alarmEvent = "未知";
                     }
                     AlarmRecordModel.alarmLocation = AlarmRecorInfo.alarm_location;
                     AlarmRecordModel.subSystem     = Enum.GetName(typeof(EnumClass.SubSystem), AlarmRecorInfo.alarm_subsystem);
                     AlarmRecordModel.alarmTime     = AlarmRecorInfo.alarm_time;
                     AlarmRecorInfoList.Add(AlarmRecordModel);
                 }
             }
         }
         //获取关联文件
         List <ServArchiveFileModel> archiveFile = servArchiveFileDAL.GetArchiveFile(id);
         //获取文件信息
         List <ServFileInfoModel> FileInfoList = new List <ServFileInfoModel>();
         for (var i = 0; i < archiveFile.Count; i++)
         {
             ServFileInfoModel fileInfo = servFileInfoDAL.GetEntity(archiveFile[i].relate_id);
             FileInfoList.Add(fileInfo);
         }
         //获取更改日志
         List <ServArhiveUpdateLogModel> ServArhiveUpdateLogList = servArhiveUpdateLogDAL.GetArhiveUpdateLogInfo(id);
         ArchiveInfoList archiveInfoList = new ArchiveInfoList();
         ArchiveInfo     archiveInfo     = new Model.CustomModel.ArchiveInfo();
         archiveInfo.id                 = ArchiveInfo.id;
         archiveInfo.archive_num        = ArchiveInfo.archive_num;
         archiveInfo.archive_name       = ArchiveInfo.archive_name;
         archiveInfo.create_time        = ArchiveInfo.create_time;
         archiveInfo.update_time        = ArchiveInfo.update_time;
         archiveInfo.archive_decription = ArchiveInfo.archive_decription;
         archiveInfo.report_person      = ArchiveInfo.report_person;
         archiveInfo.archive_status     = ArchiveInfo.archive_status;
         archiveInfo.report_type        = ArchiveInfo.report_type;
         archiveInfo.create_persson_id  = ArchiveInfo.create_persson_id;
         //获取卷宗类别类型
         var u = baseReportTypeDAL.GetEntity(ArchiveInfo.report_type);
         archiveInfo.report_name = u == null ? "未知" : u.type_name;
         //创建人
         var a = servPersonInfoDAL.GetPersonInfoBySSOId(ArchiveInfo.create_persson_id);
         archiveInfo.create_name         = a == null ? "未知" : a.alias;
         archiveInfo.status_name         = Enum.GetName(typeof(EnumClass.ArchiveStatus), ArchiveInfo.archive_status);
         archiveInfo.alarm_id            = ArchiveInfo.alarm_id;
         archiveInfoList.archiveInfo     = archiveInfo;
         archiveInfoList.alarmRecord     = AlarmRecorInfoList;
         archiveInfoList.fileInfo        = FileInfoList;
         archiveInfoList.arhiveUpdateLog = ServArhiveUpdateLogList;
         return(archiveInfoList);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 23
0
        /// <summary>
        /// 处理报警数据
        /// </summary>
        /// <param name="message">报警数据</param>
        /// <param name="mark">驱动标识</param>
        /// <param name="dataType">数据类型</param>
        /// <param name="subsystem">子系统类型</param>
        /// <returns></returns>
        protected virtual bool HandleAlarmData(object message, string mark, int dataType, int subsystem)
        {
            try
            {
                AlarmInfoModel alarmInfo = JsonHelper.StringToObject <AlarmInfoModel>(message.ToString());
                if (alarmInfo != null)
                {
                    ServAlarmRecordModel alarmRecord    = new ServAlarmRecordModel();
                    ServAlarmRecordDAL   alarmRecordDal = new ServAlarmRecordDAL();
                    InterfaceData        data           = new InterfaceData();
                    alarmRecord.alarm_cache_status = alarmInfo.alarm_cache_status;
                    alarmRecord.alarm_code         = alarmInfo.code;

                    #region  旧版
                    //if (string.IsNullOrEmpty(alarmInfo.alarm_event) || alarmInfo.alarm_event == "")
                    //{
                    //    alarmRecord.alarm_event = -1;
                    //}
                    //else
                    //{
                    //    alarmRecord.alarm_event = GetBaseEventType(alarmInfo.alarm_event);
                    //}

                    #endregion

                    #region  新版
                    alarmRecord.alarm_event = alarmInfo.alarm_event;
                    #endregion
                    alarmRecord.alarm_level        = alarmInfo.alarm_level;
                    alarmRecord.alarm_location     = alarmInfo.alarm_location;
                    alarmRecord.alarm_name         = alarmInfo.alarm_name;
                    alarmRecord.alarm_subsystem    = alarmInfo.alarm_subsystem;
                    alarmRecord.alarm_text         = alarmInfo.alarm_text;
                    alarmRecord.alarm_time         = alarmInfo.alarm_time.ToLocalTime();
                    alarmRecord.alarm_type         = alarmInfo.alarm_type;
                    alarmRecord.confirm_alarm_text = "";
                    alarmRecord.confirm_alarm_time = alarmInfo.alarm_time.ToLocalTime();//确警时间为报警时间(表示未确警)
                    alarmRecord.confirm_person_id  = -1;
                    alarmRecord.confirm_result     = -1;
                    alarmRecord.confirm_state      = (int)EnumClass.ConfirmAlarmState.未确警;
                    int id = alarmRecordDal.AddEntity(alarmRecord);
                    if (id > 0)
                    {
                        alarmRecord.id = id;
                        // string paramData = JsonHelper.ObjectToString(alarmRecord);
                        data.data       = alarmRecord;
                        data.dataType   = dataType;
                        data.mark       = mark;
                        data.subSysType = subsystem;
                        string jsonStr = JsonHelper.ObjectToString(data);
                        HttpHelper.PostJsonData(SubSystemRouteBLL.GetToLogicAlarmRoute(), jsonStr, Encoding.UTF8);
                        return(true);
                    }
                    else
                    {
                        //log:报警数据插入数据库失败+message+mark+dataType+subsystem

                        Log4NetHelp.Info("插入报警数据失败!" + "内容:" + message.ToString() + "驱动标识:" + mark + "数据类型:" + dataType + "子系统类型:" + subsystem);
                        return(false);
                    }
                }
                else
                {
                    Log4NetHelp.Info("数据体格式不正确" + message.ToString());
                    return(false);
                }
            }
            catch (Exception ex)
            {
                //log:处理报警数据失败+message+mark+dataType+subsystem+ex.message
                string msgStr = JsonHelper.ObjectToString(message);
                Log4NetHelp.Error("处理报警数据失败!" + "内容:" + msgStr + "驱动标识:" + mark + "数据类型:" + dataType + "子系统类型:" + subsystem + "错误信息:" + ex.Message);
                return(false);
            }
        }