public IHttpActionResult AddAlarmMessageInside(GetMessageInfoParameter parm) { MessageBLL msg = new MessageBLL(); var get = msg.AddAlarmMessageInside(parm); return(InspurJson <string>(get, true)); }
/// <summary> /// 新增报警信息(内部调用) /// </summary> public ReturnItem <string> AddAlarmMessageInside(GetMessageInfoParameter parameter) { ReturnItem <string> r = new ReturnItem <string>(); using (UserEntities user = new UserEntities()) { try { //新增报警信息 U_Message message = new U_Message() { Type = parameter.Type, Tittle = parameter.Tittle, Text = parameter.Text, CreateTime = DateTime.Now }; user.U_Message.Add(message); user.SaveChanges(); //查询当前组织下用户id int OrgID = Convert.ToInt32(parameter.OrgID); var getuserinfo = user.U_UserOrganizationRel.Where(m => m.OrgID == OrgID).ToList(); List <string> userinfo = new List <string>(); foreach (var info in getuserinfo) { userinfo.Add(info.UserID.ToString()); } //新增用户消息关联表 var getinfo = user.U_Message.OrderByDescending(m => m.CreateTime).FirstOrDefault(); foreach (var item in userinfo) { U_UserMessageRel newrel = new U_UserMessageRel() { UserID = Convert.ToInt32(item), MessageID = getinfo.ID, Status = "0", CreateTime = DateTime.Now }; user.U_UserMessageRel.Add(newrel); } user.SaveChanges(); r.Msg = "消息新增成功"; r.Code = 0; } catch (Exception e) { r.Msg = "内部错误请重试"; r.Code = -1; r.Data = e.Message; log.ErrorFormat("内部错误:{0},{1}", e.Message, e.StackTrace); } } return(r); }
/// <summary> /// 添加报警信息 /// </summary> /// <returns></returns> public ReturnItem <string> AddAlarmMessage(GetMessageInfoParameter parameter) { WebApiPostParameter wparameter = new WebApiPostParameter() { Url = CustomConfigParam.UserApiUrl + "Api/Message/AddAlarmMessageInside" }; wparameter.Content.Add("Type", parameter.Type); wparameter.Content.Add("Tittle", parameter.Tittle); wparameter.Content.Add("Text", parameter.Text); wparameter.Content.Add("OrgID", parameter.OrgID); return(new WebApiHelper().GetEntity <string>(wparameter)); }
/// <summary> /// 处理报警逻辑(汉王数据接入使用) /// 1.是否命中报警策略 /// 2.记录流水 /// 3.发送消息 /// </summary> /// <param name="deviceInfo"></param> /// <param name="itemInfo"></param> /// <param name="curValue"></param> /// <param name="now"></param> /// <returns></returns> private Task <int> HandleAlarmPolicies1(RetDeviceInfo deviceInfo, RetDeviceItemInfo itemInfo, string curValue, DateTime now) { int result = -1; using (AlertPoliciesEntities alert = new AlertPoliciesEntities()) { var alertInfo = alert.A_AlarmStrategy.Where(s => (s.DeviceID == deviceInfo.ID) && (s.DeviceItemId == itemInfo.ID) && (s.Active == true)).FirstOrDefault(); if (null != alertInfo) { if (isHitPolicies(curValue, alertInfo.Compare, alertInfo.Threshold)) { log.InfoFormat("[MQTT]Hit Policies,topic:{0}/{1},curValue:{2},compare:{3},theshold:{4}.", deviceInfo.DeviceLabel, itemInfo.PropertyLabel, curValue, alertInfo.Compare, alertInfo.Threshold); HistoryAlertPoliciesBLL historyBLL = new HistoryAlertPoliciesBLL(); HistoryAlertPoliciesModel model = new HistoryAlertPoliciesModel() { DeviceID = deviceInfo.ID.ToString(), DeviceItemID = itemInfo.ID.ToString(), StrategyID = alertInfo.ID.ToString(), Value = curValue, AlarmTime = now, EndTime = now.AddSeconds(1), OrgID = alertInfo.OrgID.ToString(), }; historyBLL.AddHistoryAlertPolicies(model); // 发送消息通知 UserApi api = new UserApi(); GetMessageInfoParameter messageModel = new GetMessageInfoParameter() { Type = "2", // 报警预警 Tittle = "【设备报警通知】" + deviceInfo.Name + itemInfo.Name + "报警!", Text = "<p>您好:</p><p class='ql-indent-1'>" + deviceInfo.Name + "(设备)" + itemInfo.Name + "(属性)当前数值为" + curValue + ",已触发预设报警策略,请及时处理异常!</p><p><br></p><p class='ql-align-right'>设备在线监测平台</p>", OrgID = alertInfo.OrgID.ToString() }; var userApi = api.AddAlarmMessage(messageModel); if (userApi.Code != 0) { log.ErrorFormat(userApi.Data); } } } } return(new Task <int>(() => result)); }