From 599251d91b884444a6b38cc3d3be3c25b54bf9d4 Mon Sep 17 00:00:00 2001 From: TianMaiCheng <746290578@qq.com> Date: Mon, 5 Jan 2026 11:11:53 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=99=E9=80=89=E4=BD=8F=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=20=E8=AE=BE=E5=A4=87=E5=8F=98=E5=8C=96=20=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CRICS_V3_1124.suo | Bin 12780544 -> 12780544 bytes Common/XuanZhuOperation.cs | 65 ++++++++++++++++++++ CommonEntity/CacheKey.cs | 1 + RCUHost/Implement/New_RoomStatusReceiver.cs | 33 ++++++++++ RCUHost/Implement/RoomStatusReceiver.cs | 35 +++++++++++ Service/Implement/HostManager.cs | 35 ++++++++--- WebSite/Controllers/IoTController.cs | 13 +++- 7 files changed, 174 insertions(+), 8 deletions(-) diff --git a/CRICS_V3_1124.suo b/CRICS_V3_1124.suo index 4725f480d06716093d108e3809370401c6c682d9..db114a0c42bbf75cc02bfd5f01664586c88c01f1 100644 GIT binary patch delta 13256 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 Cz%f+- delta 13025 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 + /// 酒店编码 + /// + public string code { get; set; } + /// + /// 房号 + /// + public string roomNumber { get; set; } + public string devicetype { get; set; } + /// + /// 回路地址 + /// + public string address { get; set; } + /// + /// 回路名称 + /// + public string name { get; set; } + /// + /// 状态 + /// + public int status { get; set; } + /// + /// 异常类型 + /// + public int faultType { get; set; } + /// + /// 异常值 + /// + public int faultData { get; set; } + /// + /// 亮度 + /// + public int brightness { get; set; } + /// + /// 当前温度 + /// + public int currentTemp { get; set; } + /// + /// 设定温度 + /// + public int settingTemp { get; set; } + /// + /// 风速 + /// + public int fanSpeed { get; set; } + /// + /// 模式 + /// + public int mode { get; set; } + /// + /// 阀门 + /// + public int valve { get; set; } + } public class XuanZhuResponse { /// diff --git a/CommonEntity/CacheKey.cs b/CommonEntity/CacheKey.cs index abc50dc..ba3bfee 100644 --- a/CommonEntity/CacheKey.cs +++ b/CommonEntity/CacheKey.cs @@ -123,6 +123,7 @@ namespace CommonEntity public static string WebChatDeviceFault = "WXFault"; public static string DuOSToken = "DuOSToken"; + public static string XuanZhuKafka = "XZ_DeviceStatusChange"; } public class ChangLiangValue { diff --git a/RCUHost/Implement/New_RoomStatusReceiver.cs b/RCUHost/Implement/New_RoomStatusReceiver.cs index 2b7c74a..1198635 100644 --- a/RCUHost/Implement/New_RoomStatusReceiver.cs +++ b/RCUHost/Implement/New_RoomStatusReceiver.cs @@ -1264,6 +1264,39 @@ namespace RCUHost.Implement } + #region kafka队列 + var codesss = host.SysHotel.Code; + if (XuanZhuHotelData.dataArray.Contains(int.Parse(codesss))) + { + XuanZhuRequest resp5 = new XuanZhuRequest(); + resp5.code = host.SysHotel.Code; + resp5.roomNumber = host.RoomNumber; + resp5.devicetype = hostModal.ModalType.ToString(); + resp5.address = hostModal.Modal.ModalAddress; + resp5.name = hostModal.Modal.Name; + resp5.status = hostModal.Status; + if (resp5.status == 1) + { + resp5.brightness = hostModal.Brightness; + resp5.currentTemp = hostModal.AirConditionData.CurrentTemp; + resp5.settingTemp = hostModal.AirConditionData.SettingTemp; + resp5.mode = hostModal.AirConditionData.Mode; + resp5.fanSpeed = hostModal.AirConditionData.FanSpeed; + resp5.valve = hostModal.AirConditionData.Valve; + } + else + { + resp5.brightness = 0; + resp5.currentTemp = 0; + resp5.settingTemp = 0; + resp5.mode = 0; + resp5.fanSpeed = 0; + resp5.valve = 0; + } + var str111 = Newtonsoft.Json.JsonConvert.SerializeObject(resp5); + CSRedisCacheHelper.Publish("Redis-XuanZhuKafka", str111); + } + #endregion #region 当设备或服务状态发生变化时,推送给指定的第三方接口 if (!string.IsNullOrEmpty(host.SysHotel.DeviceStatusPushURL)) diff --git a/RCUHost/Implement/RoomStatusReceiver.cs b/RCUHost/Implement/RoomStatusReceiver.cs index b73f0f7..7139d04 100644 --- a/RCUHost/Implement/RoomStatusReceiver.cs +++ b/RCUHost/Implement/RoomStatusReceiver.cs @@ -1899,6 +1899,41 @@ namespace RCUHost.Implement }, tup); } #endregion + + + var codesss = host.SysHotel.Code; + #region kafka队列 + if (XuanZhuHotelData.dataArray.Contains(int.Parse(codesss))) + { + XuanZhuRequest resp1 = new XuanZhuRequest(); + resp1.code = host.SysHotel.Code; + resp1.roomNumber = host.RoomNumber; + resp1.devicetype = hostModal.ModalType.ToString(); + resp1.address = hostModal.Modal.ModalAddress; + resp1.name = hostModal.Modal.Name; + resp1.status = hostModal.Status; + if (resp1.status == 1) + { + resp1.brightness = hostModal.Brightness; + resp1.currentTemp = hostModal.AirConditionData.CurrentTemp; + resp1.settingTemp = hostModal.AirConditionData.SettingTemp; + resp1.mode = hostModal.AirConditionData.Mode; + resp1.fanSpeed = hostModal.AirConditionData.FanSpeed; + resp1.valve = hostModal.AirConditionData.Valve; + } + else + { + resp1.brightness = 0; + resp1.currentTemp = 0; + resp1.settingTemp = 0; + resp1.mode = 0; + resp1.fanSpeed = 0; + resp1.valve = 0; + } + var str111 = Newtonsoft.Json.JsonConvert.SerializeObject(resp1); + CSRedisCacheHelper.Publish("Redis-XuanZhuKafka", str111); + } + #endregion } else { diff --git a/Service/Implement/HostManager.cs b/Service/Implement/HostManager.cs index 39a0f86..717f888 100644 --- a/Service/Implement/HostManager.cs +++ b/Service/Implement/HostManager.cs @@ -107,6 +107,7 @@ namespace Service.Implement return list; } + public IList LoadAll(string order, string sort, Group group, string roomNumber) { IList groups = GroupRepository.GetGroupList(group); @@ -575,7 +576,7 @@ namespace Service.Implement else { accessToken = SysOauth2Repository.GetXiaoDuToken(); - MemoryCacheHelper.Set(KKK,accessToken,DateTimeOffset.Now.AddMinutes(20)); + MemoryCacheHelper.Set(KKK, accessToken, DateTimeOffset.Now.AddMinutes(20)); } if (!string.IsNullOrEmpty(accessToken) && host.SysHotel.IsPowerOffResetXiaoDu) { @@ -769,7 +770,8 @@ namespace Service.Implement request1.AddParameter("jsonData", jsstr); - client1.ExecuteAsync(request1, (response) => { }); + //client1.ExecuteAsync(request1, (response) => { }); + client1.Execute(request1); } } @@ -1316,13 +1318,32 @@ namespace Service.Implement //1 为取电,2为没有取电 if (mm.Status != 1) { + List hostModals = new List(); //获取启用的空调回路 - List hostModals = HostModalRepository.LoadByHostID(host_id).Where(r => r.Modal.Type == DeviceType.AirConditioner && r.Modal.ActiveIndicator).ToList(); - - RoomNobodyHowTo nnn = RoomNoBodyMananger.LoadAll().FirstOrDefault(A => A.CurrentHotelID == hotel_id); - - + string Hkey = "HostManagerHostModal_" + host_id; + var ddd = MemoryCacheHelper.Get(Hkey); + if (ddd != null) + { + hostModals = ddd as List; + } + else + { + hostModals = HostModalRepository.LoadByHostID(host_id).Where(r => r.Modal.Type == DeviceType.AirConditioner && r.Modal.ActiveIndicator).ToList(); + MemoryCacheHelper.Set(Hkey, hostModals, DateTimeOffset.Now.AddMinutes(30)); + } + RoomNobodyHowTo nnn = null; + string RKey = "RNO_" + hotel_id; + var ooo = MemoryCacheHelper.Get(RKey); + if (ooo != null) + { + nnn = ooo as RoomNobodyHowTo; + } + else + { + nnn = RoomNoBodyMananger.LoadAll().FirstOrDefault(A => A.CurrentHotelID == hotel_id); + MemoryCacheHelper.Set(RKey, nnn, DateTimeOffset.Now.AddMinutes(30)); + } if (nnn != null) { foreach (HostModal hostModal in hostModals) diff --git a/WebSite/Controllers/IoTController.cs b/WebSite/Controllers/IoTController.cs index 7dbb2f5..16b09e8 100644 --- a/WebSite/Controllers/IoTController.cs +++ b/WebSite/Controllers/IoTController.cs @@ -6741,7 +6741,18 @@ namespace WebSite.Controllers i.CommandDescription = sss; SendMQTTData.Send(i); } - var hostModal = HostModalManager.GetByModalAddress(host.ID, modalAddress);//设备控制 + string MKey = "XiaoDuAddress_" + host.ID + "_" + modalAddress; + var ddd = HttpContext.Cache.Get(MKey); + HostModal hostModal = null; + if (ddd != null) + { + hostModal = ddd as HostModal; + } + else + { + hostModal = HostModalManager.GetByModalAddress(host.ID, modalAddress);//设备控制 + HttpContext.Cache.Insert(MKey,hostModal,null,DateTime.Now.AddMinutes(30),Cache.NoSlidingExpiration); + } if (hostModal == null) { logger.Error(string.Format("{3}(酒店:{0},房号:{1})未找到对应的回路,Address:{2}", host.SysHotel.Code + host.SysHotel.Name, host.RoomNumber, modalAddress, platformName));