Exemplo n.º 1
0
 /// <summary>
 /// 处理LED报警信息
 /// </summary>
 /// <param name="deviceInfo"></param>
 /// <param name="alarmRecord"></param>
 public bool HandleLedItem(string message, string regionCode)
 {
     try
     {
         // message = GetAlarmText();
         if (!string.IsNullOrEmpty(message))
         {
             LEDMsgModel ledMsg = new LEDMsgModel();
             ledMsg.message    = message;
             ledMsg.type       = (int)EnumClass.PlanHandleTime.确警前;
             ledMsg.regionCode = regionCode;
             string msg = JsonHelper.ObjectToString(ledMsg);
             string url = SubSystemRouteBLL.GetLedControlRoute();
             // HttpHelper.PostJsonData(url, msg, Encoding.UTF8);
             sendLedCmdDele.BeginInvoke(url, msg, Encoding.UTF8, null, null);
             Log4NetHelp.Info("调用LED接口成功!信息:" + msg);
             return(true);
         }
         else
         {
             Log4NetHelp.Info("待发送至LED信息为空!");
             return(false);
         }
     }
     catch (Exception ex)
     {
         message = "";
         Log4NetHelp.Info("调用LED接口失败!" + ex.Message);
         return(false);
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// 处理四色灯
 /// </summary>
 /// <param name="relayId"></param>
 /// <returns></returns>
 public bool HandleRelay(string relayId, string regionCode)
 {
     try
     {
         int id = int.Parse(relayId);
         //查找四色灯信息
         BaseRelayConfigModel baseRelayConfigModel = GetRelayConfigById(id);
         RelayMsgModel        relayMsg             = new RelayMsgModel();
         relayMsg.regionCode = regionCode;
         relayMsg.controlId  = baseRelayConfigModel.control_id;
         relayMsg.op         = (int)EnumClass.Operation.打开;
         string message = JsonHelper.ObjectToString(relayMsg);
         // HttpHelper.PostJsonData(SubSystemRouteBLL.GetRelayControlRoute(), message, Encoding.UTF8);
         sendRelayCmdDele.BeginInvoke(SubSystemRouteBLL.GetRelayControlRoute(), message, Encoding.UTF8, null, null);
         Log4NetHelp.Info("调用四色灯接口成功!信息:" + message);
         return(true);
     }
     catch (Exception ex)
     {
         Log4NetHelp.Info("调用四色灯接口失败!控制编号:" + relayId + ex.Message);
         return(false);
     }
 }
Exemplo n.º 3
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.º 4
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);
            }
        }