///// <summary> ///// 新增设备告警(含有位置信息,区域信息) ///// </summary> ///// <param name="eventType"></param> ///// <param name="device_code"></param> ///// <param name="alarm_location"></param> ///// <param name="area_id"></param> ///// <param name="alarm_level"></param> ///// <param name="report_time"></param> ///// <param name="content"></param> ///// <returns></returns> //public bool AddInformAlarm(int eventType, string device_code, string alarm_location, int area_id, int alarm_level, string content) //{ // try // { // ServInformAlarmModel model = new ServInformAlarmModel(); // model.alarm_level = alarm_level; // model.alarm_location = alarm_location; // model.area_id = area_id; // model.content = content; // model.device_code = device_code; // model.event_type = eventType; // model.report_time = DateTime.Now; // model.status = (int)EnumClass.InformAlarmStatus.未处理; // int res = servInformAlarmDal.AddEntity(model); // if (res > 0) // { // return true; // } // else // { // return false; // } // } // catch (Exception ex) // { // throw ex; // } //} /// <summary> /// 页面发送模拟报警至转发层 /// </summary> /// <param name="alarmLevel"></param> /// <param name="deviceCode"></param> /// <param name="content"></param> /// <param name="eventCode"></param> /// <returns></returns> public bool AddDeviceAlarm(string alarmName, int alarmLevel, string deviceCode, string content, string eventCode) { try { sendAlarmPageDele = new SendAlarmPageDele(CSM.Utils.HttpHelper.PostJsonData); string url = System.Configuration.ConfigurationManager.AppSettings["InterfaceUrl"] + "/api/Interface/Forward"; ServDeviceInfoDAL deviceDal = new ServDeviceInfoDAL(); AlarmInfoModel alarmModel = new AlarmInfoModel(); InterfaceData data = new InterfaceData(); ServDeviceInfoModel deviceModel = deviceDal.GetDeviceByDeviceCode(deviceCode); alarmModel.alarm_cache_status = 0; alarmModel.alarm_event = eventCode; alarmModel.alarm_level = alarmLevel; alarmModel.alarm_location = ""; alarmModel.alarm_name = alarmName; alarmModel.alarm_subsystem = deviceModel.subsystem_id; alarmModel.alarm_text = content; alarmModel.alarm_time = DateTime.Now; alarmModel.alarm_type = (int)EnumClass.AlarmType.设备报警; alarmModel.code = deviceCode; data.data = alarmModel; data.dataType = 1; data.subSysType = deviceModel.subsystem_id; data.mark = "pageMoniter"; string param = CSM.Utils.JsonHelper.ObjectToString(data); sendAlarmPageDele.BeginInvoke(url, param, Encoding.UTF8, null, null); return(true); } catch (Exception ex) { throw ex; } }
/// <summary> /// 获取报警前几条数据 /// </summary> /// <param name="num"></param> /// <returns></returns> public List <AlarmRecordModel> GetFirstFewAlarm(int num) { try { ServDeviceInfoDAL servDeviceInfoDal = new ServDeviceInfoDAL(); List <ServAlarmRecordModel> list = _servAlarmRecordDal.GetFirstFewAlarm(num); List <AlarmRecordModel> alarmRecordInfo = new List <AlarmRecordModel>(); AlarmRecordModel alarmRecordModel; foreach (ServAlarmRecordModel item in list) { alarmRecordModel = new AlarmRecordModel(); alarmRecordModel.id = item.id; alarmRecordModel.alarmName = item.alarm_name; alarmRecordModel.confirmState = Enum.GetName(typeof(EnumClass.ConfirmAlarmState), item.confirm_state); alarmRecordModel.alarmLocation = item.alarm_location; alarmRecordModel.alarmTime = item.alarm_time; alarmRecordModel.deviceName = servDeviceInfoDal.GetEntity(item.alarm_code) == null ? "未知:" + item.alarm_code : servDeviceInfoDal.GetEntity(item.alarm_code).device_name;//查询设备名称 alarmRecordInfo.Add(alarmRecordModel); } return(alarmRecordInfo); } catch (Exception ex) { throw ex; } }
/// <summary> /// 根据设备code查找设备 /// </summary> /// <param name="code"></param> /// <returns></returns> private ServDeviceInfoModel GetDeviceInfo(string code) { try { ServDeviceInfoDAL deviceInfoDal = new ServDeviceInfoDAL(); return(deviceInfoDal.GetEntity(code)); } catch (Exception ex) { Log4NetHelp.Error("根据设备Code获取设备失败:" + code + " 错误信息:" + ex.Message); return(null); } }
/// <summary> /// 页面发送模拟报警至转发层 /// </summary> /// <param name="alarmLevel"></param> /// <param name="deviceCode"></param> /// <param name="content"></param> /// <param name="eventCode"></param> /// <returns></returns> public RetMsgModel AddMapDeviceAlarm(string alarmName, int alarmLevel, string deviceCode, string content, string eventCode) { try { RetMsgModel retModel = new RetMsgModel(); sendAlarmPageDele = new SendAlarmPageDele(CSM.Utils.HttpHelper.PostJsonData); string url = System.Configuration.ConfigurationManager.AppSettings["InterfaceUrl"] + "/api/Interface/Forward"; ServDeviceInfoDAL deviceDal = new ServDeviceInfoDAL(); AlarmInfoModel alarmModel = new AlarmInfoModel(); InterfaceData data = new InterfaceData(); ServDeviceInfoModel deviceModel = deviceDal.GetDeviceByDeviceCode(deviceCode); alarmModel.alarm_cache_status = 0; alarmModel.alarm_event = eventCode; alarmModel.alarm_level = alarmLevel; alarmModel.alarm_location = ""; alarmModel.alarm_name = alarmName; alarmModel.alarm_subsystem = deviceModel.subsystem_id; alarmModel.alarm_text = content; alarmModel.alarm_time = DateTime.Now; alarmModel.alarm_type = (int)EnumClass.AlarmType.设备报警; alarmModel.code = deviceCode; data.data = alarmModel; data.dataType = 1; data.subSysType = deviceModel.subsystem_id; data.mark = "pageMoniter"; string param = CSM.Utils.JsonHelper.ObjectToString(data); //sendAlarmPageDele.BeginInvoke(url, param, Encoding.UTF8, null, null); string ret = Utils.HttpHelper.PostWebRequestBandError(url, param, "application/json;charset=utf-8", Encoding.UTF8); if (string.IsNullOrEmpty(ret)) { retModel.status = 1; retModel.message = "调用转发层返回值为空!"; } else { retModel = Utils.JsonHelper.StringToObject <RetMsgModel>(ret); } return(retModel); } catch (Exception ex) { throw ex; } }
/// <summary> /// 获取监视器 /// </summary> /// <returns></returns> public List <GalleryInfo> GetGalleryList(int regionId) { try { ServDeviceInfoDAL deviceInfoDal = new ServDeviceInfoDAL(); List <GalleryInfo> retGalleryList = new List <GalleryInfo>(); GalleryInfo gallery = null; List <ServDeviceInfoModel> galleryList = deviceInfoDal.GetAllDevice(5, regionId);//5代表监视器 for (int i = 0; i < galleryList.Count; i++) { gallery = new GalleryInfo(); gallery.galleryCode = galleryList[i].device_code; gallery.galleryName = galleryList[i].device_name; gallery.galleryStatus = galleryList[i].device_status; gallery.id = galleryList[i].id; retGalleryList.Add(gallery); } return(retGalleryList); } catch (Exception ex) { throw ex; } }
/// <summary> /// 报警数据拼装 /// </summary> /// <param name="sourceModel"></param> /// <param name="eventList"></param> /// <returns></returns> private AlarmRecordModel TranAlarmRecord(AlarmRecordCustom sourceModel, List <BaseEventTypeModel> eventList) { AlarmRecordModel retModel = new AlarmRecordModel(); ServDeviceInfoDAL servDeviceInfoDal = new ServDeviceInfoDAL(); BaseRegionConfigDAL baseRegionConfigDal = new BaseRegionConfigDAL(); ServPersonInfoDAL personInfoDal = new ServPersonInfoDAL(); List <BaseRegionConfigModel> regionList = baseRegionConfigDal.GetAllRegionConfig();//获取全部园区 #region 查找事件 旧版 //if (alarmEvent == null) //判断当前事件是否存在 //{ // retModel.alarmEvent = ""; // retModel.rootEventId = -1; //} //else //{ // if (alarmEvent.pid == -1) //判断是否是父级事件 // { // retModel.alarmEvent = alarmEvent.event_name; // retModel.rootEventId = alarmEvent.id; // } // else // { // var rootEvent = eventList.FirstOrDefault(n => n.id == alarmEvent.pid);//查询父级事件,目前事件只保留两级 // if (rootEvent != null) //找到父级事件 // { // retModel.alarmEvent = alarmEvent.event_name + "[" + rootEvent.event_name + "]"; // retModel.rootEventId = rootEvent.id; // } // else //未找到父级事件 // { // retModel.alarmEvent = "[" + rootEvent.event_name + "]"; // retModel.rootEventId = -1; // } // } //} #endregion #region 查找事件 //var alarmEvent = eventList.FirstOrDefault(n => n.id == sourceModel.alarm_event); //查询当前事件 //if (alarmEvent == null) //判断当前事件是否存在 //{ // retModel.alarmEvent = "--"; // retModel.rootEventId = -1; //} //else //{ // if (alarmEvent.pid == -1) //判断是否是父级事件 // { // retModel.alarmEvent = alarmEvent.event_name; // retModel.rootEventId = alarmEvent.id; // } // else // { // var rootEvent = eventList.FirstOrDefault(n => n.id == alarmEvent.pid);//查询父级事件,目前事件只保留两级 // if (rootEvent != null) //找到父级事件 // { // retModel.alarmEvent = rootEvent.event_name; // retModel.rootEventId = rootEvent.id; // } // else //未找到父级事件 // { // retModel.alarmEvent = "--"; // retModel.rootEventId = -1; // } // } //} #endregion #region 查找事件 新版 if (!string.IsNullOrEmpty(sourceModel.alarm_event) && sourceModel.alarm_event != "") { var alarmEvent = eventList.FirstOrDefault(n => n.event_code == sourceModel.alarm_event);//查找事件 if (alarmEvent != null) { if (alarmEvent.pid == -1) { retModel.alarmEvent = alarmEvent.event_name; retModel.rootEventId = alarmEvent.id; } else { var rootEvent = eventList.FirstOrDefault(n => n.id == alarmEvent.pid); if (rootEvent != null) //找到父级事件 { retModel.alarmEvent = rootEvent.event_name; retModel.rootEventId = rootEvent.id; } else //未找到父级事件 { retModel.alarmEvent = "--"; retModel.rootEventId = -1; } } } else { retModel.alarmEvent = "--"; retModel.rootEventId = -1; } } else { retModel.alarmEvent = "--"; retModel.rootEventId = -1; } #endregion // retModel.alarmEvent = eventList.Find(n => n.id == sourceModel.alarm_event) == null ? "" : eventList.Find(n => n.id == sourceModel.alarm_event).event_name;//将事件类型ID转换为事件名称 retModel.alarmLevel = Enum.IsDefined(typeof(EnumClass.AlarmLevel), sourceModel.alarm_level) ? Enum.ToObject(typeof(EnumClass.AlarmLevel), sourceModel.alarm_level).ToString() : "";//转换报警等级 retModel.alarmLocation = sourceModel.alarm_location; // retModel.alarmName = sourceModel.alarm_name; retModel.alarmName = sourceModel.alarm_code;//报警名称不显示,显示设备code retModel.alarmText = sourceModel.alarm_text; retModel.alarmTime = sourceModel.alarm_time; retModel.alarmCacheStatus = sourceModel.alarm_cache_status; retModel.alarmType = sourceModel.alarm_type; //设备报警 // retModel.confirmPersonName = "";//根据ssoid查找人员 需调用sso接口 retModel.confirmPersonName = personInfoDal.GetPersonInfoBySSOId(sourceModel.confirm_person_id) == null ? "" : personInfoDal.GetPersonInfoBySSOId(sourceModel.confirm_person_id).alias; retModel.confirmAlarmTime = sourceModel.confirm_alarm_time; retModel.confirmAlarmText = sourceModel.confirm_alarm_text; retModel.confirmResult = Enum.IsDefined(typeof(EnumClass.ConfirmAlarmResult), sourceModel.confirm_result) ? Enum.ToObject(typeof(EnumClass.ConfirmAlarmResult), sourceModel.confirm_result).ToString() : ""; retModel.confirmState = Enum.IsDefined(typeof(EnumClass.ConfirmAlarmState), sourceModel.confirm_state) ? Enum.ToObject(typeof(EnumClass.ConfirmAlarmState), sourceModel.confirm_state).ToString() : ""; // retModel.deviceName = servDeviceInfoDal.GetEntity(sourceModel.alarm_code) == null ? "未知:" + sourceModel.alarm_code : servDeviceInfoDal.GetEntity(sourceModel.alarm_code).device_name;//查询设备名称 retModel.deviceName = sourceModel.device_name == null ? "未知" : sourceModel.device_name; retModel.regionName = regionList.Where(n => n.id == sourceModel.region_id).FirstOrDefault() == null ? "" : regionList.Where(n => n.id == sourceModel.region_id).FirstOrDefault().region_name; retModel.ext1 = sourceModel.ext1; retModel.ext2 = sourceModel.ext2; retModel.ext3 = sourceModel.ext3; retModel.ext4 = sourceModel.ext4; retModel.ext5 = sourceModel.ext5; retModel.id = sourceModel.id; retModel.subSystem = Enum.IsDefined(typeof(EnumClass.SubSystem), sourceModel.alarm_subsystem) ? Enum.ToObject(typeof(EnumClass.SubSystem), sourceModel.alarm_subsystem).ToString() : "";//转换为子系统名称 return(retModel); }
/// <summary> /// 处理丛文设备数据 /// </summary> /// <returns></returns> private bool HandleCowinDeviceData(object message, string mark) { try { List <DeviceModel> deviceList = JsonHelper.StringToObject <List <DeviceModel> >(message.ToString()); ServTempDeviceDAL tempDeviceDal = new ServTempDeviceDAL(); ServDeviceInfoDAL deviceInfoDal = new ServDeviceInfoDAL(); ConvertChinese convert = new ConvertChinese(); List <BaseDeviceTypeModel> typeList = null; try { typeList = baseMapConfigBLL.GetAllBaseDeviceTypeModel(); } catch (Exception ex) { Log4NetHelp.Error("获取基本设备类型失败!" + ex.Message); } for (int i = 0; i < deviceList.Count; i++) { //int tempNum = tempDeviceDal.GetTempDeviceByCode(deviceList[i].deviceCode); ServTempDeviceModel tempDevice = tempDeviceDal.GetTempDeviceByDeviceCode(deviceList[i].deviceCode); ServDeviceInfoModel deviceInfo = deviceInfoDal.GetDeviceByDeviceCode(deviceList[i].deviceCode); if (tempDevice == null && deviceInfo == null) { ServTempDeviceModel model = new ServTempDeviceModel(); var type = typeList.Where(n => n.type_name == deviceList[i].typeName).FirstOrDefault(); model.device_type = type == null ? 0 : type.id; model.create_time = DateTime.Now; model.device_code = deviceList[i].deviceCode; model.device_name = deviceList[i].deviceName; model.search_code = convert.GetHeadOfChs(deviceList[i].deviceName); model.subsystem_id = deviceList[i].subsystemId; model.ext1 = deviceList[i].serverIp; try { int res = tempDeviceDal.AddEntity(model); if (res == 0) { Log4NetHelp.Error("设备code:" + deviceList[i].deviceCode + " 设备名称:" + deviceList[i].deviceName + " 插入临时表失败!"); } else { Log4NetHelp.Info("设备code:" + deviceList[i].deviceCode + " 设备名称:" + deviceList[i].deviceName + " 插入临时表成功!"); } } catch (Exception ex) { Log4NetHelp.Error("设备code:" + deviceList[i].deviceCode + " 设备名称:" + deviceList[i].deviceName + " 插入临时表失败!" + ex.Message); } } else if (tempDevice != null) { Log4NetHelp.Error("设备code:" + deviceList[i].deviceCode + " 设备名称:" + deviceList[i].deviceName + " 在临时设备表已存在!"); } else if (deviceInfo != null) { Log4NetHelp.Error("设备code:" + deviceList[i].deviceCode + " 设备名称:" + deviceList[i].deviceName + " 在设备表已存在!"); } } return(true); } catch (Exception ex) { Log4NetHelp.Error("标识为:" + mark + "驱动同步丛文设备数据失败!" + ex.Message); return(false); } }