using Newtonsoft.Json; using System; using System.Linq; using System.ServiceProcess; using System.Text; using HslCommunication.MQTT; using HslCommunication; using DataServer.api; using System.Collections.Generic; using System.Runtime.Remoting.Channels; namespace Security { partial class ServiceSecurity : ServiceBase { static log4net.ILog log; //static DataService.BLL.vis_fire_ip bll_ip=new DataService.BLL.vis_fire_ip(); static MqttClient mqtt_client; static MqttClient mqtt_client2; //static DataServer.BLL.device_data bll = new DataServer.BLL.device_data(); static DataServer.BLL.electricity_data bll = new DataServer.BLL.electricity_data(); public ServiceSecurity() { InitializeComponent(); } public void DebugOnStart(string[] args) { OnStart(args); } protected override void OnStart(string[] args) { // TODO: 在此处添加代码以启动服务。 log4net.Config.XmlConfigurator.Configure(); log = log4net.LogManager.GetLogger("loginfo"); log.Info("服务开始"); // 授权示例 调用一次即可 call only once if (!HslCommunication.Authorization.SetAuthorizationCode("4772a1a2-72cf-4fcb-9a8e-9cbdd5984253")) { return; } MqttConnectionOptions options = new MqttConnectionOptions() { //IpAddress = "192.168.9.20", IpAddress = "111.229.30.246", Port = 1883, ClientId = "Service-" + Guid.NewGuid().ToString("N"), }; options.Credentials = new MqttCredential("dev", "12345"); mqtt_client = new MqttClient(options); log.Info("开始"); // 接收到数据的时候进行触发 mqtt_client.OnMqttMessageReceived += Client_OnMqttMessageReceived; // 订阅服务器的主题,在连接成功后就去订阅 mqtt_client.OnClientConnected += m => { Console.WriteLine("连接成功"); //m.SubscribeMessage("/sys/iot/#"); m.SubscribeMessage("data"); }; mqtt_client.OnNetworkError += MqttClient_OnNetworkError; // 自己来控制异常及重连的操作 OperateResult result3 = mqtt_client.ConnectServer(); if (result3.IsSuccess) { log.Info("连接成功"); } else { log.Info("连接失败"); } // TODO: 在此处添加代码以启动服务。 log4net.Config.XmlConfigurator.Configure(); log = log4net.LogManager.GetLogger("loginfo"); log.Info("服务开始"); // 授权示例 调用一次即可 call only once if (!HslCommunication.Authorization.SetAuthorizationCode("4772a1a2-72cf-4fcb-9a8e-9cbdd5984253")) { return; } MqttConnectionOptions options2 = new MqttConnectionOptions() { IpAddress = "127.0.0.1", Port = 1883, ClientId = "Service-" + Guid.NewGuid().ToString("N"), }; options.Credentials = new MqttCredential("admin", "123456"); mqtt_client2 = new MqttClient(options2); // 接收到数据的时候进行触发 mqtt_client2.OnMqttMessageReceived += Client_OnMqttMessageReceived; // 订阅服务器的主题,在连接成功后就去订阅 mqtt_client2.OnClientConnected += m => { Console.WriteLine("连接成功"); m.SubscribeMessage("data"); }; mqtt_client2.OnNetworkError += MqttClient2_OnNetworkError; // 自己来控制异常及重连的操作 OperateResult result = mqtt_client2.ConnectServer(); if (result.IsSuccess) { log.Info("发布连接成功"); } else { log.Info("发布连接失败"); } } private static void MqttClient_OnNetworkError(object sender, EventArgs e) { try { // 当网络异常的时候触发,可以在此处重连服务器 if (sender is MqttClient client) { // 开始重连服务器,直到连接成功为止 log.Info("网络异常,准备10秒后重新连接。"); while (true) { // 每隔10秒重连 System.Threading.Thread.Sleep(10_000); log.Info("准备重新连接服务器..."); // 重连之前需要判断是否关闭了Client,自己重写的异常需要自己手动处理 OperateResult connect = client.ConnectServer(); if (connect.IsSuccess) { // 连接成功后,可以在下方break之前进行订阅,或是数据初始化操作 log.Info("连接服务器成功!"); client.SubscribeMessage("/sys/iot/#"); break; } log.Info("连接失败,准备10秒后重新连接。"); } } } catch (Exception ex) { log.Info("重连MQTT失败,失败原因:" + ex.Message); } } private static void MqttClient2_OnNetworkError(object sender, EventArgs e) { try { // 当网络异常的时候触发,可以在此处重连服务器 if (sender is MqttClient client) { // 开始重连服务器,直到连接成功为止 log.Info("网络异常,准备10秒后重新连接。"); while (true) { // 每隔10秒重连 System.Threading.Thread.Sleep(10_000); log.Info("准备重新连接服务器..."); // 重连之前需要判断是否关闭了Client,自己重写的异常需要自己手动处理 OperateResult connect = client.ConnectServer(); if (connect.IsSuccess) { // 连接成功后,可以在下方break之前进行订阅,或是数据初始化操作 log.Info("连接服务器成功!"); break; } log.Info("连接失败,准备10秒后重新连接。"); } } } catch (Exception ex) { log.Info("重连MQTT失败,失败原因:" + ex.Message); } } private static void Client_OnMqttMessageReceived(MqttClient client, string topic, byte[] payload) { log.Info("进入方法"); var msg = Encoding.UTF8.GetString(payload); try { if (topic.Contains("data")) { var date = DateTime.Now.ToString("yyyyMM"); var a = bll.IsExistsTable("dongying", "electricity_data_"+date); if (a == false) { bll.CreateTable(date); } var data = JsonConvert.DeserializeObject(msg); log.Info("数据1data" + msg); if (data.devs != null) { var model = new DataServer.Model.electricity_data(); foreach (var item in data.devs) { model.ElectricityId=Guid.NewGuid().ToString("N"); model.DeviceId =item.dev; //var name=GetDeviceName(item.dev); //var name1=GetFloorName(item.dev); //model.DeviceName = name; //model.FloorName = name1; foreach (var aitem in item.d) { #region 数据添加 if (aitem.m == "01040005") { model.EH = aitem.v; } if (aitem.m == "01010001") { model.Ua = aitem.v; } if (aitem.m == "01010002") { model.Ub = aitem.v; } if (aitem.m == "01010003") { model.Uc = aitem.v; } if (aitem.m == "01020001") { model.Ia = aitem.v; } if (aitem.m == "01020002") { model.Ib = aitem.v; } if (aitem.m == "01020003") { model.Ic = aitem.v; } if (aitem.m == "01030004") { model.P = aitem.v; } if (aitem.m == "01030012") { model.Kvar = aitem.v; } #endregion } model.CreateTime= DateTime.Now; model.EntireTime =Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:00:00")); bll.AddDate(model,date); } } } else if (topic.Contains("/a16cf30SpyL/device_VyCe/user/update/cmd/set")) { var data = JsonConvert.DeserializeObject(msg); log.Info("数据2data" + msg); } } catch (Exception ex) { log.Info("处理失败,数据:" + msg + ",原因:" + ex.Message); } } protected override void OnStop() { // TODO: 在此处添加代码以执行停止服务所需的关闭操作。 } /// /// 时间戳转换为DATETIME格式 /// /// 时间戳字符串 /// public static DateTime GetDateTime(string timeStamp) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); string ts = timeStamp + "0000000"; if (timeStamp.Length == 13) { ts = timeStamp + "0000"; } long lTime = long.Parse(ts); TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow); } /// /// 获取设备名称 /// /// /// public static string GetDeviceName(string code) { var list = new Dictionary(); list.Add("370510043001", "3#总进线"); list.Add("370510043002", "B1照明"); list.Add("370510043003", "A-(1-4)AL1 科技馆一楼北配电照明"); list.Add("370510043004", "A-(1-4)AL2 科技馆一楼南配电照明"); list.Add("370510043005", "A-1/4AL1-LM 科技馆一楼1#北楼顶莲花"); list.Add("370510043006", "A-1/4AL2-LM 科技馆一楼楼顶莲花"); list.Add("370510043007", "A-2AL1-Z2"); list.Add("370510043008", "A-2AL1-Z1"); list.Add("370510043009", "A-4AL1-Z1"); list.Add("370510043010", "A-3AL1-Z2"); list.Add("370510043011", "A-3AL1-Z1"); list.Add("370510043012", "2#临展厅预留电源1F"); list.Add("370510043013", "B区1F照明"); list.Add("370510043014", "A-1AP1-1 特效"); list.Add("370510043015", "A-B1AC2 负一楼风机"); list.Add("370510043016", "4F-1#展厅 禁毒展厅"); list.Add("370510043017", "A-4AP1-1"); list.Add("370510043018", "A-1APE1-1 变电所"); list.Add("370510043019", "A-B1ALE2"); list.Add("370510043020", "A-B1ALE1-1"); list.Add("370510043021", "A-(1-4)ALE1 应急照明"); list.Add("370510043022", "A-3AL1-Z2"); list.Add("370510043023", "A-1APE5"); list.Add("370510043024", "A-1APE3"); list.Add("370510043025", "A-1APE1 风机"); list.Add("370510043026", "A-1APE4"); list.Add("370510043027", "A-1APE2"); list.Add("370510043028", "A-1APE2、A-2APE2、A-3APE2"); list.Add("370510043029", "A单体LM(巨)"); list.Add("370510043030", "A-5DT1"); list.Add("370510043031", "A-5DT2"); list.Add("370510043032", "中水电源"); list.Add("370510043033", "S-B1APE1、S-B1APE2 A区"); list.Add("370510043034", "S-(XF)B1APE1"); list.Add("370510043035", "A区1F2#电房"); list.Add("370510043036", "A-(1F-4F) 科技馆热水器1-4"); list.Add("370510043037", "A-N(XF)-5APE3 备用"); list.Add("370510043038", "A-S(XF)-BAPE1"); list.Add("370510043039", "应急照明"); list.Add("370510043040", "A-1ALE3-2 巨幕"); list.Add("370510043041", "A-N(XF)-2APE3、A-N(XF)-1APE3 巨幕"); list.Add("370510043042", "A-N(XF)B1APE 1、2、3"); list.Add("370510043043", "B-(XF)-AP 儿童剧场消防备电"); list.Add("370510043044", "A-S(XF)-5APE1 常用"); list.Add("370510043045", "B-N(XF)-6APE2"); list.Add("370510043046", "A-N(XF)-5APE1 常用"); list.Add("370510043047", "B-N(XF)6APE1 "); list.Add("370510043048", "B-S(XF)1APE1 5*10"); list.Add("370510043049", "货梯6F"); list.Add("370510043050", "A-(1-4)ALE2 2号大厅"); list.Add("370510043051", "A-(1-4)ALE1"); list.Add("370510043052", "A-B1ALE2"); list.Add("370510043053", "A-B1ALE2"); list.Add("370510043054", "A-1APE-1变电柜"); list.Add("370510043055", "A-1APE2"); list.Add("370510043056", "手机覆盖机有线电视机房预留电源B1"); list.Add("370510043057", "A-1APE1"); list.Add("370510043058", "A-1APE3"); list.Add("370510043059", "电话机房预留电源B1"); list.Add("370510043060", "1#5F货梯"); list.Add("370510043061", "A-5DT2"); list.Add("370510043062", "A-ZS中水电源"); list.Add("370510043063", "S-B1APE1 S-B1APE2 A区污电源"); list.Add("370510043064", "2#排水泵房(消防)"); list.Add("370510043065", "A-N(XF)-5APE3常用(楼顶东南角)"); list.Add("370510043066", "A-S(XF)-BAPE1"); list.Add("370510043067", "1##排烟及加压风机5F"); list.Add("370510043068", "A-N(XF)-B1APE (1.2.3)"); list.Add("370510043069", "A-N(XF)-5APE2 常用"); list.Add("370510043070", "A-N(XF)-5APE4 常用"); list.Add("370510043071", "B-1AL2-1"); list.Add("370510043072", "B-1AL2-2 儿童剧场"); list.Add("370510043073", "B-1AL2-3"); list.Add("370510043074", "B-1AL2-5"); list.Add("370510043075", "B-2AL2-1 B-2AL2-2 儿童剧场舞台设备灯"); list.Add("370510043076", "A-1AL-ZS"); list.Add("370510043077", "B-1AL2"); list.Add("370510043078", "B-1AC2"); list.Add("370510043079", "B-1ALE2 常用"); list.Add("370510043080", "B-N(XF)-6APE2"); list.Add("370510043081", "B-N(XF)-AL 儿童剧场落地箱"); list.Add("370510043082", "立面照明"); list.Add("370510043083", "B-5DT1"); list.Add("370510043084", "B-6AT1"); list.Add("370510043085", "B-S(XF)1APE1"); list.Add("370510043086", "B-N(XF)6APE1"); list.Add("370510043087", "B-1AT1-1"); list.Add("370510043088", "B-(1-6)AC1-1 少年宫2F风机"); list.Add("370510043089", "B-1/5AL1-LM 少年宫"); list.Add("370510043090", "B-(1-5)AL1 B2层"); list.Add("370510043091", "B-(1-5)ALE1"); list.Add("370510043092", "A-1AC3 巨幕影院"); list.Add("370510043093", "A-1AL3 A-2AL3 巨幕"); list.Add("370510043094", "A-1ALE3-LM巨幕"); list.Add("370510043095", "A-1ALE3-2 巨幕"); list.Add("370510043096", "区域报警控制器 预留电源"); list.Add("370510043097", "A-N(XF)1APE3 巨幕"); list.Add("370510043098", "A-1AL3-1 巨幕"); list.Add("370510043099", "A-(1-5)AC1 1号井科一北 空调及通风机(北)"); list.Add("370510043100", "空调及通风机(南)"); list.Add("370510043101", "AH1-14 及应急屏显"); list.Add("370510043102", "4#总进线"); list.Add("370510043103", "1#变配电所电源2至1#变电室进线柜AH4"); list.Add("370510043104", "2#总变配电所电源2科技馆一层4#变压器"); list.Add("370510043105", "3#变配电所电源2至3#变电室进线柜AH4"); list.Add("370510043106", "3#变配电所电源1至3#变电室进线柜AH1"); list.Add("370510043107", "2#总变配电所电源1科技馆一层3#变压器"); list.Add("370510043108", "1#变配电所电源1至1#变电室进线柜AH1"); list.Add("370510043109", "一号主机控制柜"); list.Add("370510043110", "二号主机控制柜"); list.Add("370510043111", "b1-地源侧循环泵1"); list.Add("370510043112", "b1-地源侧循环泵2"); list.Add("370510043113", "b1-地源侧循环泵3"); list.Add("370510043114", "b1-地源侧循环泵4"); list.Add("370510043115", "B1一次循环3号泵"); list.Add("370510043116", "B1一次循环1号泵"); list.Add("370510043117", "B1一次循环4号泵"); list.Add("370510043118", "B1一次循环2号泵"); list.Add("370510043119", "B5二次循环9号泵"); list.Add("370510043120", "B5二次循环10号泵"); list.Add("370510043121", "B5二次循环5号泵"); list.Add("370510043122", "B5二次循环8号泵"); list.Add("370510043123", "B5二次循环7号泵"); list.Add("370510043124", "B5二次循环6号泵"); list.Add("370510043125", "四号主机控制柜"); list.Add("370510043126", "三号主机控制柜"); list.Add("370510043127", "5#总进线"); list.Add("370510043128", "正常照明及其他2F-5F"); list.Add("370510043129", "1#1AL.1-2AL.正常照明及其他1F-2F"); list.Add("370510043130", "正常照明及其他3F-5F"); list.Add("370510043131", "2#正常照明及其他1F-2F"); list.Add("370510043132", "1#立面照明1F-5F"); list.Add("370510043133", "变配电所照明"); list.Add("370510043134", "应急照明1F-5楼下"); list.Add("370510043135", "2#应急照明1F5F"); list.Add("370510043136", "排烟机及加压风机6F"); list.Add("370510043137", "1#排烟机6F"); list.Add("370510043138", "1#排烟机及加压风机6F"); list.Add("370510043139", "排烟机及加压风机6F"); list.Add("370510043140", "2#补风机"); list.Add("370510043141", "2#事故排风机1F"); list.Add("370510043142", "C-N(XF)-2APE1单体二层备用"); list.Add("370510043143", "应急照明1F"); list.Add("370510043144", "2#应急照明1F"); list.Add("370510043145", "1#电梯(消防)6F"); list.Add("370510043146", "网络机房预留电源"); list.Add("370510043147", "消防控制中心1F"); list.Add("370510043148", "手机覆盖机有线电视预留电源1F"); list.Add("370510043149", "安装预留电源"); list.Add("370510043150", "1号货梯6F"); list.Add("370510043151", "电话机房预留电源1F"); list.Add("370510043152", "1#排水泵(消防)1F"); list.Add("370510043153", "6#总进线"); list.Add("370510043154", "1#空调及通风机"); list.Add("370510043155", "2#空调及通风机B1 5F"); list.Add("370510043156", "变配电所通风机"); list.Add("370510043157", "电话机房预留电源1F"); list.Add("370510043158", "网络机房预留电源1F"); list.Add("370510043159", "消防控制中心1F"); list.Add("370510043160", "手机覆盖机有线电视预留电源1F"); list.Add("370510043161", "安防预留电源1F"); list.Add("370510043162", "1#货梯 6F"); list.Add("370510043163", "1#电梯(兼消防) 6F"); list.Add("370510043164", "1#排水泵(消防) 1F"); list.Add("370510043165", "2#排烟风机及加压风机6F"); list.Add("370510043166", "2#排烟风机及加压风机6F"); list.Add("370510043167", "2#补风机1F"); list.Add("370510043168", "2#事故排风机1F"); list.Add("370510043169", "学术报告厅电源"); list.Add("370510043170", "应急照明"); list.Add("370510043171", "外围高杆灯亭"); list.Add("370510043172", "2#正常照明及其他"); list.Add("370510043173", "2#正常照明及其他"); list.Add("370510043174", "D-1AC1 1#空调及通风机1F"); list.Add("370510043175", "2#井空调及通风机1F"); list.Add("370510043176", "学术报告厅2楼空调风机房"); list.Add("370510043177", "青少年宫118消防"); list.Add("370510043178", "D-1ALE2 2#应急照明1F"); list.Add("370510043179", "变电所应急照明1F"); list.Add("370510043180", "1#应急照明1F-5F"); list.Add("370510043181", "2#应急照明1F-5F"); list.Add("370510043182", "1#排烟机及加压风机6F"); list.Add("370510043183", "C-N(XF)-6APE2 1#排烟机6F"); if (!list.ContainsKey(code)) { return "未知"; } return list[code]; } /// /// 获取设备名称 /// /// /// public static string GetFloorName(string code) { Dictionary list = new Dictionary(); list.Add("370510043001", "科技馆一楼"); list.Add("370510043002", "科技馆一楼"); list.Add("370510043003", "科技馆一楼"); list.Add("370510043004", "科技馆一楼"); list.Add("370510043005", "科技馆一楼"); list.Add("370510043006", "科技馆一楼"); list.Add("370510043007", "科技馆一楼"); list.Add("370510043008", "科技馆一楼"); list.Add("370510043009", "科技馆一楼"); list.Add("370510043010", "科技馆一楼"); list.Add("370510043011", "科技馆一楼"); list.Add("370510043012", "科技馆一楼"); list.Add("370510043013", "科技馆一楼"); list.Add("370510043014", "科技馆一楼"); list.Add("370510043015", "科技馆一楼"); list.Add("370510043016", "科技馆一楼"); list.Add("370510043017", "科技馆一楼"); list.Add("370510043018", "科技馆一楼"); list.Add("370510043019", "科技馆一楼"); list.Add("370510043020", "科技馆一楼"); list.Add("370510043021", "科技馆一楼"); list.Add("370510043022", "科技馆一楼"); list.Add("370510043023", "科技馆一楼"); list.Add("370510043024", "科技馆一楼"); list.Add("370510043025", "科技馆一楼"); list.Add("370510043026", "科技馆一楼"); list.Add("370510043027", "科技馆一楼"); list.Add("370510043028", "科技馆一楼"); list.Add("370510043029", "科技馆一楼"); list.Add("370510043030", "科技馆一楼"); list.Add("370510043031", "科技馆一楼"); list.Add("370510043032", "科技馆一楼"); list.Add("370510043033", "科技馆一楼"); list.Add("370510043034", "科技馆一楼"); list.Add("370510043035", "科技馆一楼"); list.Add("370510043036", "科技馆一楼"); list.Add("370510043037", "科技馆一楼"); list.Add("370510043038", "科技馆一楼"); list.Add("370510043039", "科技馆一楼"); list.Add("370510043040", "科技馆一楼"); list.Add("370510043041", "科技馆一楼"); list.Add("370510043042", "科技馆一楼"); list.Add("370510043043", "科技馆一楼"); list.Add("370510043044", "科技馆一楼"); list.Add("370510043045", "科技馆一楼"); list.Add("370510043046", "科技馆一楼"); list.Add("370510043047", "科技馆一楼"); list.Add("370510043048", "科技馆一楼"); list.Add("370510043049", "科技馆一楼"); list.Add("370510043050", "科技馆一楼"); list.Add("370510043051", "科技馆一楼"); list.Add("370510043052", "科技馆一楼"); list.Add("370510043053", "科技馆一楼"); list.Add("370510043054", "科技馆一楼"); list.Add("370510043055", "科技馆一楼"); list.Add("370510043056", "科技馆一楼"); list.Add("370510043057", "科技馆一楼"); list.Add("370510043058", "科技馆一楼"); list.Add("370510043059", "科技馆一楼"); list.Add("370510043060", "科技馆一楼"); list.Add("370510043061", "科技馆一楼"); list.Add("370510043062", "科技馆一楼"); list.Add("370510043063", "科技馆一楼"); list.Add("370510043064", "科技馆一楼"); list.Add("370510043065", "科技馆一楼"); list.Add("370510043066", "科技馆一楼"); list.Add("370510043067", "科技馆一楼"); list.Add("370510043068", "科技馆一楼"); list.Add("370510043069", "科技馆一楼"); list.Add("370510043070", "科技馆一楼"); list.Add("370510043071", "科技馆一楼"); list.Add("370510043072", "科技馆一楼"); list.Add("370510043073", "科技馆一楼"); list.Add("370510043074", "科技馆一楼"); list.Add("370510043075", "科技馆一楼"); list.Add("370510043076", "科技馆一楼"); list.Add("370510043077", "科技馆一楼"); list.Add("370510043078", "科技馆一楼"); list.Add("370510043079", "科技馆一楼"); list.Add("370510043080", "科技馆一楼"); list.Add("370510043081", "科技馆一楼"); list.Add("370510043082", "科技馆一楼"); list.Add("370510043083", "科技馆一楼"); list.Add("370510043084", "科技馆一楼"); list.Add("370510043085", "科技馆一楼"); list.Add("370510043086", "科技馆一楼"); list.Add("370510043087", "科技馆一楼"); list.Add("370510043088", "科技馆一楼"); list.Add("370510043089", "科技馆一楼"); list.Add("370510043090", "科技馆一楼"); list.Add("370510043091", "科技馆一楼"); list.Add("370510043092", "科技馆一楼"); list.Add("370510043093", "科技馆一楼"); list.Add("370510043094", "科技馆一楼"); list.Add("370510043095", "科技馆一楼"); list.Add("370510043096", "科技馆一楼"); list.Add("370510043097", "科技馆一楼"); list.Add("370510043098", "科技馆一楼"); list.Add("370510043099", "科技馆一楼"); list.Add("370510043100", "科技馆一楼"); list.Add("370510043101", "科技馆一楼"); list.Add("370510043102", "科技馆一楼"); list.Add("370510043103", "科技馆一楼"); list.Add("370510043104", "科技馆一楼"); list.Add("370510043105", "科技馆一楼"); list.Add("370510043106", "科技馆一楼"); list.Add("370510043107", "科技馆一楼"); list.Add("370510043108", "科技馆一楼"); list.Add("370510043109", "科技馆负一楼地源热泵"); list.Add("370510043110", "科技馆负一楼地源热泵"); list.Add("370510043111", "科技馆负一楼地源热泵"); list.Add("370510043112", "科技馆负一楼地源热泵"); list.Add("370510043113", "科技馆负一楼地源热泵"); list.Add("370510043114", "科技馆负一楼地源热泵"); list.Add("370510043115", "科技馆负一楼地源热泵"); list.Add("370510043116", "科技馆负一楼地源热泵"); list.Add("370510043117", "科技馆负一楼地源热泵"); list.Add("370510043118", "科技馆负一楼地源热泵"); list.Add("370510043119", "科技馆负一楼地源热泵"); list.Add("370510043120", "科技馆负一楼地源热泵"); list.Add("370510043121", "科技馆负一楼地源热泵"); list.Add("370510043122", "科技馆负一楼地源热泵"); list.Add("370510043123", "科技馆负一楼地源热泵"); list.Add("370510043124", "科技馆负一楼地源热泵"); list.Add("370510043125", "科技馆负一楼地源热泵"); list.Add("370510043126", "科技馆负一楼地源热泵"); list.Add("370510043127", "图书馆一楼"); list.Add("370510043128", "图书馆一楼"); list.Add("370510043129", "图书馆一楼"); list.Add("370510043130", "图书馆一楼"); list.Add("370510043131", "图书馆一楼"); list.Add("370510043132", "图书馆一楼"); list.Add("370510043133", "图书馆一楼"); list.Add("370510043134", "图书馆一楼"); list.Add("370510043135", "图书馆一楼"); list.Add("370510043136", "图书馆一楼"); list.Add("370510043137", "图书馆一楼"); list.Add("370510043138", "图书馆一楼"); list.Add("370510043139", "图书馆一楼"); list.Add("370510043140", "图书馆一楼"); list.Add("370510043141", "图书馆一楼"); list.Add("370510043142", "图书馆一楼"); list.Add("370510043143", "图书馆一楼"); list.Add("370510043144", "图书馆一楼"); list.Add("370510043145", "图书馆一楼"); list.Add("370510043146", "图书馆一楼"); list.Add("370510043147", "图书馆一楼"); list.Add("370510043148", "图书馆一楼"); list.Add("370510043149", "图书馆一楼"); list.Add("370510043150", "图书馆一楼"); list.Add("370510043151", "图书馆一楼"); list.Add("370510043152", "图书馆一楼"); list.Add("370510043153", "图书馆一楼"); list.Add("370510043154", "图书馆一楼"); list.Add("370510043155", "图书馆一楼"); list.Add("370510043156", "图书馆一楼"); list.Add("370510043157", "图书馆一楼"); list.Add("370510043158", "图书馆一楼"); list.Add("370510043159", "图书馆一楼"); list.Add("370510043160", "图书馆一楼"); list.Add("370510043161", "图书馆一楼"); list.Add("370510043162", "图书馆一楼"); list.Add("370510043163", "图书馆一楼"); list.Add("370510043164", "图书馆一楼"); list.Add("370510043165", "图书馆一楼"); list.Add("370510043166", "图书馆一楼"); list.Add("370510043167", "图书馆一楼"); list.Add("370510043168", "图书馆一楼"); list.Add("370510043169", "图书馆一楼"); list.Add("370510043170", "图书馆一楼"); list.Add("370510043171", "图书馆一楼"); list.Add("370510043172", "图书馆一楼"); list.Add("370510043173", "图书馆一楼"); list.Add("370510043174", "图书馆一楼"); list.Add("370510043175", "图书馆一楼"); list.Add("370510043176", "图书馆一楼"); list.Add("370510043177", "图书馆一楼"); list.Add("370510043178", "图书馆一楼"); list.Add("370510043179", "图书馆一楼"); list.Add("370510043180", "图书馆一楼"); list.Add("370510043181", "图书馆一楼"); list.Add("370510043182", "图书馆一楼"); list.Add("370510043183", "图书馆一楼"); if (!list.ContainsKey(code)) { return "未知"; } return list[code]; } } public class IdName { public string Id { get; set; } public string Name { get; set; } } }