Exemple #1
0
        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);
        }
Exemple #2
0
 /// <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);
     }
 }