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> /// <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); }