Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// dtu状态
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static int UpdateDtuState(DTUStatusChangedMsg msg)
        {
            if (!dtus.ContainsKey(msg.DTUID))
            {
                string  sql = string.Format(@"SELECT [T_DIM_REMOTE_DTU].[ID],[T_DIM_REMOTE_DTU].[REMOTE_DTU_NUMBER],[T_DIM_STRUCT_DTU].StructureId FROM [dbo].[T_DIM_REMOTE_DTU] inner join [T_DIM_STRUCT_DTU] on [T_DIM_STRUCT_DTU].DtuId=[T_DIM_REMOTE_DTU].[ID] and [T_DIM_REMOTE_DTU].[REMOTE_DTU_NUMBER]={0}", msg.DTUID);
                DataSet ds  = DbHelperSQL.Query(sql);
                if (ds == null || ds.Tables[0] == null || ds.Tables[0].Rows.Count == 0)
                {
                    return(0);
                }
                var structIds = new StringBuilder();
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    structIds.Append(row["StructureId"]).Append(",");
                }
                int dtuid = Convert.ToInt32(ds.Tables[0].Rows[0]["ID"]);
                var dtu   = new DtuInfos
                {
                    DtuNum    = msg.DTUID,
                    Dtuid     = dtuid,
                    StructIds = structIds.ToString()
                };
                dtus.TryAdd(msg.DTUID, dtu);
            }

            if (!msg.IsOnline)
            {
                string[] structids = dtus[msg.DTUID].StructIds.Split(new[] { ' ', ',', ',' },
                                                                     StringSplitOptions.RemoveEmptyEntries);
                var sqlstrs = new List <string>();
                foreach (string structid in structids)
                {
                    sqlstrs.Add(
                        string.Format(
                            "insert into T_WARNING_SENSOR (WarningTypeId, StructId, DeviceTypeId, DeviceId, Content, Time) values ('{0}',{1},{2},{3},'{4}','{5}')",
                            msg.WarningTypeId, Convert.ToInt32(structid), msg.DeviceTypeId, msg.DTUID,
                            msg.WarningContent,
                            msg.TimeStatusChanged.ToString("yyyy-MM-dd HH:mm:ss.fff")));
                }

                return(DbHelperSQL.ExecuteSqlTran(sqlstrs));
            }
            return(0);
        }