public FsMessage GetDtuStatusMsg(DTUConnectionStatusChangedMsg msg) { try { string cs = ConfigurationManager.AppSettings["SecureCloud"]; ISqlHelper sqlHelper = SqlHelperFactory.Create(DbType.MSSQL, cs); DataSet ds = sqlHelper.Query(string.Format("(select ID from T_DIM_REMOTE_DTU where REMOTE_DTU_NUMBER ='{0}')", msg.DTUID)); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { this._log.InfoFormat("DTU {0} 不是一个有效的DTU", msg.DTUID); } else { string sqlstr = string.Format( "insert into T_DIM_DTU_STATUS (DtuId,Status,[Time]) values ({0},{1},'{2:yyyy-MM-dd HH:mm:ss.fff}')", (string.Format("(select ID from T_DIM_REMOTE_DTU where REMOTE_DTU_NUMBER ='{0}')", msg.DTUID)), msg.IsOnline ? 1 : 0, DateTime.Now); sqlHelper.ExecuteSql(sqlstr); } } catch (Exception ex) { this._log.ErrorFormat("Up dtu status error : {0}", ex.Message); } if (msg.IsOnline) { return(null); } var dtustateChangedMsg = new DTUStatusChangedMsg { Id = Guid.NewGuid(), WarningTypeId = ((int)Errors.ERR_NOT_CONNECTED).ToString(), DeviceTypeId = DTUDEVICETYPEID, DTUID = msg.DTUID, IsOnline = msg.IsOnline, TimeStatusChanged = msg.TimeStatusChanged, WarningContent = msg.IsOnline?"DTU上线":"DTU下线", DateTime = DateTime.Now }; var warningmsg = new FsMessage { Header = new FsMessageHeader { A = "PUT", R = "/warning/dtu", U = Guid.NewGuid(), T = Guid.NewGuid(), D = _warningAppName, M = "Warning" }, Body = JsonConvert.SerializeObject(dtustateChangedMsg) }; return(warningmsg); }
/// <summary> /// DTU状态变更告警 /// </summary> /// <param name="msg"></param> private void DTUConnectionStatusChangedHandler(DTUConnectionStatusChangedMsg msg) { try { FsMessage fsmsg = _warningHelper.GetDtuStatusMsg(msg); if (fsmsg != null) { Push(fsmsg); } if (!msg.IsOnline) { etDataStatus.ClearOffLineSensorStatus(msg.DTUID); } } catch (Exception ex) { Log.ErrorFormat("DTU状态变更告警推送失败 : {0}", ex.Message); } }