From 182186e1fbb4f79716848893b34a3937790afa40 Mon Sep 17 00:00:00 2001 From: TianMaiCheng <746290578@qq.com> Date: Mon, 30 Mar 2026 17:55:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=B5=E9=87=8F=E6=8A=A5?= =?UTF-8?q?=E8=AD=A6=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 但是只是一部分功能 --- Common/CSRedisCacheHelper.cs | 2 +- Common/Tools.cs | 9 + CommonEntity/JWTData.cs | 2 +- ConsoleApplication1/Program.cs | 2 +- Domain/SysHotel.cs | 5 + Domain/SysHotel.hbm.xml | 1 + RCUHost/Config/Receiver.xml | 2 +- RCUHost/Implement/HostRegisterReceiver.cs | 5 +- RCUHost/Implement/HostServer.cs | 172 ++++++-------------- RCUHost/Implement/New_RoomStatusReceiver.cs | 6 +- RCUHost/Implement/RoomStatusReceiver.cs | 8 +- Service/Implement/HostModalManager.cs | 18 +- WebSite/Controllers/ApiController.cs | 12 +- WebSite/Controllers/IoTController.cs | 11 +- WebSite/Controllers/SysHotelController.cs | 2 + WebSite/Resource/en-US.Designer.cs | 9 + WebSite/Resource/en-US.resx | 3 + WebSite/Resource/zh-CN.Designer.cs | 9 + WebSite/Resource/zh-CN.resx | 3 + WebSite/Resource/zh-TW.Designer.cs | 9 + WebSite/Resource/zh-TW.resx | 3 + WebSite/Views/SysHotel/EditDockingInfo.ascx | 11 ++ 22 files changed, 147 insertions(+), 157 deletions(-) diff --git a/Common/CSRedisCacheHelper.cs b/Common/CSRedisCacheHelper.cs index 24d762a..e483f5a 100644 --- a/Common/CSRedisCacheHelper.cs +++ b/Common/CSRedisCacheHelper.cs @@ -336,7 +336,7 @@ namespace Common CSRedisClient client = WhitchRedisSlice(SliceNo); client.LPush(key, obj); } - public static long MaxLen = 1000000; + public static long MaxLen = 500000; public static void StreamAdd(int SliceNo, string key, string Value) { try diff --git a/Common/Tools.cs b/Common/Tools.cs index d63917a..c41d758 100644 --- a/Common/Tools.cs +++ b/Common/Tools.cs @@ -484,6 +484,15 @@ namespace Common } return result.ToString(); } + public static string ByteToString_NoWhiteSpace(byte[] bytesData) + { + StringBuilder result = new StringBuilder(); + foreach (byte r in bytesData) + { + result.Append(r.ToString("X2")); + } + return result.ToString(); + } /// /// 把int32类型的数据转存到2个字节的byte数组中 /// diff --git a/CommonEntity/JWTData.cs b/CommonEntity/JWTData.cs index fc679a6..aa2aba1 100644 --- a/CommonEntity/JWTData.cs +++ b/CommonEntity/JWTData.cs @@ -67,7 +67,7 @@ namespace CommonEntity public static ReturnInfo GetTokenData(string username) { - DateTime dt = DateTime.Now.AddMonths(6); + DateTime dt = DateTime.Now.AddYears(20); string ti = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); long l = Tools.GetCurrentTimeStamp(dt); CommonEntity.JWTData j = new CommonEntity.JWTData(); diff --git a/ConsoleApplication1/Program.cs b/ConsoleApplication1/Program.cs index a7fc5ea..9f3ea98 100644 --- a/ConsoleApplication1/Program.cs +++ b/ConsoleApplication1/Program.cs @@ -537,7 +537,7 @@ namespace ConsoleApplication1 UdpEndpoint u = new UdpEndpoint("127.0.0.1", 3350); } /// - /// 设置名单 + /// 设置黑名单 /// public static void SetBlockData() { diff --git a/Domain/SysHotel.cs b/Domain/SysHotel.cs index 9e863a0..b361ed6 100644 --- a/Domain/SysHotel.cs +++ b/Domain/SysHotel.cs @@ -383,6 +383,11 @@ namespace Domain public virtual string FCS_MenCi_Close { get; set; } public virtual string FCS_MenCi_Open { get; set; } + /// + /// 门锁电量 + /// + public virtual string FCS_MenSuo_DianLiang { get; set; } + public virtual bool IsUseSkyworthTV { diff --git a/Domain/SysHotel.hbm.xml b/Domain/SysHotel.hbm.xml index b5d0a4f..982f365 100644 --- a/Domain/SysHotel.hbm.xml +++ b/Domain/SysHotel.hbm.xml @@ -64,6 +64,7 @@ + diff --git a/RCUHost/Config/Receiver.xml b/RCUHost/Config/Receiver.xml index 24e5eb2..f6f0a7b 100644 --- a/RCUHost/Config/Receiver.xml +++ b/RCUHost/Config/Receiver.xml @@ -175,7 +175,7 @@ - + diff --git a/RCUHost/Implement/HostRegisterReceiver.cs b/RCUHost/Implement/HostRegisterReceiver.cs index cf073a3..27f16bd 100644 --- a/RCUHost/Implement/HostRegisterReceiver.cs +++ b/RCUHost/Implement/HostRegisterReceiver.cs @@ -308,8 +308,6 @@ namespace RCUHost.Implement } - string N1N = Newtonsoft.Json.JsonConvert.SerializeObject(rsg); - CSRedisCacheHelper.Publish("redis-0XB1", N1N); HostRepository.SetModelAndLauncher(host, hostRCU.ConfigVersion, software_version, lan_ip, lan_port, model, launcher_version, hostRCU.ExpireTime, hostRCU.SetExpireTime); @@ -317,6 +315,9 @@ namespace RCUHost.Implement //logger.Error(string.Format("酒店({0})客房({1})主机已同步信息,Model:{2},Launcher:{3}", host.SysHotel.Name + host.SysHotel.Code, host.RoomNumber, model, launcher_version)); + string N1N = Newtonsoft.Json.JsonConvert.SerializeObject(rsg); + CSRedisCacheHelper.Publish("redis-0XB1", N1N); + #region 寄存器读取(弃用) /*int count = reader.ReadByte();//个数 reader.ReadBytes(4); diff --git a/RCUHost/Implement/HostServer.cs b/RCUHost/Implement/HostServer.cs index 68dc907..c253a42 100644 --- a/RCUHost/Implement/HostServer.cs +++ b/RCUHost/Implement/HostServer.cs @@ -123,18 +123,7 @@ namespace RCUHost.Implement try { var redis = CSRedisCacheHelper.redis1; - - // 检查并创建消费者组 - try - { - // 尝试创建消费者组,如果已存在则忽略错误 - redis.XGroupCreate(UDPAllDataKey, group, "0", true); - } - catch (Exception) - { - // 消费者组可能已存在,忽略错误 - } - + var data = redis.XReadGroup(group, consumer, 500, 10, new ValueTuple(UDPAllDataKey, ">")); if (data != null) @@ -149,10 +138,11 @@ namespace RCUHost.Implement { var id1 = SerializeNo.Item1; var str = SerializeNo.Item2[1]; - var GGG = JsonConvert.DeserializeObject(str); redis.XAck(UDPAllDataKey, group, id1); redis.XDel(UDPAllDataKey, id1); - ProcessData(GGG); + + //var GGG = JsonConvert.DeserializeObject(str); + ProcessData(str); } } } @@ -166,19 +156,12 @@ namespace RCUHost.Implement public static CancellationTokenSource source = new CancellationTokenSource(); public static CancellationToken token = source.Token; // 存储长时间运行的Task - private static List _consumerTasks = new List(); + private static List _consumerTasks = new List(); /// /// 启动 HostServer /// public void Start() { - // 停止之前的Task - StopConsumerTasks(); - - // 创建新的取消令牌源 - source = new CancellationTokenSource(); - token = source.Token; - CSRedisCacheHelper.redis1.Del(UDPAllDataKey); CSRedisCacheHelper.redis1.XGroupCreate(UDPAllDataKey, "UDPData", "0", true); @@ -198,50 +181,31 @@ namespace RCUHost.Implement udpClient.BeginReceive(ReceiveCallback, new UdpState(udpClient)); logger.Error("Host Server启动成功,端口:3339"); - // 清空之前的Task列表 - _consumerTasks.Clear(); - // 创建15个消费者Task for (int i = 1; i <= 15; i++) { - int index = i; - var task = Task.Factory.StartNew(() => + var task = Task.Factory.StartNew((state) => { - string osos = index.ToString(); - while (!token.IsCancellationRequested) + string osos = state.ToString(); + while (true) { - try - { - StreamConsume("UDPData", "Crics" + osos, "task" + osos); - } - catch (OperationCanceledException) - { - // 任务被取消,正常退出 - break; - } - catch (Exception ex) - { - logger.Error("消费者Task错误:" + ex.Message); - } + StreamConsume("UDPData", "Crics" + osos, "task" + osos); } - }, token, TaskCreationOptions.LongRunning, TaskScheduler.Default); - - _consumerTasks.Add(task); + }, i, TaskCreationOptions.LongRunning); } } catch (Exception ex) { logger.Error("Host Server启动失败,端口:3339"); Close(); - StopConsumerTasks(); throw ex;//不能去掉,否则重启iis服务,通讯服务不会再次启动 } } - + /// /// 停止消费者Task /// - private static void StopConsumerTasks() + public static void StopConsumerTasks() { if (source != null) { @@ -250,7 +214,7 @@ namespace RCUHost.Implement // 取消所有Task source.Cancel(); // 等待Task完成 - Task.WaitAll(_consumerTasks.ToArray(), TimeSpan.FromSeconds(5)); + //Task.WaitAll(_consumerTasks.ToArray(), TimeSpan.FromSeconds(1)); } catch (Exception ex) { @@ -264,52 +228,6 @@ namespace RCUHost.Implement } } - - //public Random rs = new Random(); - ///// - ///// 定时上报 错误 - ///// - ///// - ///// - //void FaultReport_Elapsed(object sender, System.Timers.ElapsedEventArgs e) - //{ - // try - // { - - // //FaultReport.Stop(); - // string FaultKey = CacheKey.FaultKey_; - // //string FFFFFKey = HotelCode + "_" + host.RoomNumber + "_" + hostModal.Modal.ModalAddress; - // var data = CSRedisCacheHelper.HMGetAll(5, FaultKey); - // foreach (var item in data) - // { - // var key = item.Key; - // var val = item.Value; - // var v = JsonConvert.DeserializeObject(val); - // TimeSpan span = DateTime.Now - v.updatetime; - // if (span.TotalSeconds <= 20) - // { - // var fault_data = new Tuple(v.url, v.data); - // Task.Factory.StartNew((State) => - // { - // var DDD = State as Tuple; - // string Res_P = MyHttp.SendHttpData(DDD.Item1, DDD.Item1); - // //XuanZhuOperation.ReportService(DDD.Item1, DDD.Item2); - // logger.Error("Fault Return:" + ""); - // }, fault_data); - // } - // } - // } - // catch (Exception) - // { - - // } - // finally - // { - // var ts = rs.Next(10000, 15000); - // FaultReport.Interval = ts; - // FaultReport.Start(); - // } - //} /// /// 关闭 HostServer /// @@ -509,7 +427,6 @@ namespace RCUHost.Implement return _customer; } public IHostRepository HostRepository { get; set; } - public ISysHotelRepository SysHotelRepository { get; set; } /// /// 异步接收回调函数 @@ -522,7 +439,7 @@ namespace RCUHost.Implement { return; } - + try { IPEndPoint remoteEP111 = new IPEndPoint(IPAddress.Any, 0); @@ -532,11 +449,12 @@ namespace RCUHost.Implement if (receiveBuffer111 != null && receiveBuffer111.Length > 0) { // 使用线程池处理数据,避免阻塞接收线程 - ThreadPool.QueueUserWorkItem((stateObj) => - { - var dataState = (Tuple)stateObj; - ProcessUdpData(dataState.Item1, dataState.Item2); - }, Tuple.Create(receiveBuffer111, remoteEP111)); + //ThreadPool.QueueUserWorkItem((stateObj) => + //{ + // var dataState = (Tuple)stateObj; + //}, Tuple.Create(receiveBuffer111, remoteEP111)); + + ProcessUdpData(receiveBuffer111, remoteEP111); } } catch (ObjectDisposedException) @@ -645,6 +563,8 @@ namespace RCUHost.Implement //因为0E不会被拦截所以可以在这里写 bool nenver = false; + + #region 弃用,有新的日志平台,这里挺耗资源的 if (nenver) //if (VVV.CmdType == 0x0E || VVV.CmdType == 0X01) { @@ -706,6 +626,7 @@ namespace RCUHost.Implement Interlocked.Exchange(ref StepTongJi.LookDataCounter, 0); } } + #endregion if (VVV.CmdType == 0x08) { @@ -739,10 +660,13 @@ namespace RCUHost.Implement //如果不存在就处理 else { - GaiXie g = new GaiXie(); - g.Data = receiveBuffer111; - g.IPEndPoint = remoteEP111.ToString(); - var data = Newtonsoft.Json.JsonConvert.SerializeObject(g); + //GaiXie g = new GaiXie(); + //g.Data = receiveBuffer111; + //g.IPEndPoint = remoteEP111.ToString(); + //var data = Newtonsoft.Json.JsonConvert.SerializeObject(g); + + string s1 = Tools.ByteToString(receiveBuffer111); + string data = s1 + "#" + remoteEP111.ToString(); CSRedisCacheHelper.StreamAdd(1, "All_UDPPackage_Data", data); } } @@ -760,12 +684,14 @@ namespace RCUHost.Implement } else { - GaiXie g = new GaiXie(); - g.Data = receiveBuffer111; - g.IPEndPoint = remoteEP111.ToString(); - var data = Newtonsoft.Json.JsonConvert.SerializeObject(g); + //GaiXie g = new GaiXie(); + //g.Data = receiveBuffer111; + //g.IPEndPoint = remoteEP111.ToString(); + //var data = Newtonsoft.Json.JsonConvert.SerializeObject(g); + + string s1 = Tools.ByteToString_NoWhiteSpace(receiveBuffer111); + string data = s1 + "#" + remoteEP111.ToString(); CSRedisCacheHelper.StreamAdd(1, "All_UDPPackage_Data", data); - var ts1 = new Tuple(context, hotelCode); } } #endregion @@ -1302,21 +1228,24 @@ namespace RCUHost.Implement /// /// //private void ProcessData(ReceiverContext context111, string hotelCode) - private void ProcessData(GaiXie gga) + //private void ProcessData(GaiXie gga) + private void ProcessData(string gga) { //GaiXie gga = new GaiXie(); - string[] III = gga.IPEndPoint.Split(':'); + string[] ggA = gga.Split('#'); + byte[] s1 = Tools.GetBytesFromString(ggA[0]); + string s2 = ggA[1]; + + string[] III = s2.Split(':'); int PPP = int.Parse(III[1]); + //string[] III = gga.IPEndPoint.Split(':'); + //int PPP = int.Parse(III[1]); IPEndPoint ip = new IPEndPoint(IPAddress.Parse(III[0]), PPP); - ReceiverContext context111 = new ReceiverContext(gga.Data, ip, GetNextCustomer()); + ReceiverContext context111 = new ReceiverContext(s1, ip, GetNextCustomer()); context111.SystemHeader = DecodeSystemHeader(context111.Data); byte cmdType = context111.SystemHeader.Value.CmdType; - if (cmdType == 0x68) - { - //logger.Error("收到升级返回:" + Tools.ByteToString(gga.Data)); - } ushort MyFrameNO = context111.SystemHeader.Value.FrameNo; byte[] framenolist = BitConverter.GetBytes(MyFrameNO); @@ -1342,10 +1271,8 @@ namespace RCUHost.Implement CSRedisCacheHelper.Publish("redis-heartbeat", Newtonsoft.Json.JsonConvert.SerializeObject(k)); } } - if (cmdType != 0x01 && cmdType != 0xb1) - //if (!(cmdType==0x01||cmdType==0xb1) ) //在线状态 不排队 注册0x01 - //if (true) + if (cmdType != 0x01 && cmdType != 0xb1) { #region 只要有数据包,就是心跳 string EndPointStr = context111.RemoteEndPoint.ToString(); @@ -1362,7 +1289,7 @@ namespace RCUHost.Implement o.CurrentTime = DateTime.Now; o.EndPoint = EndPointStr; o.UnixTime = Tools.GetUnixTime(); - o.MAC = BitConverter.ToString(gga.Data.Skip(9).Take(2).ToArray()); + o.MAC = BitConverter.ToString(s1.Skip(9).Take(2).ToArray()); //新来的数据 var n = Newtonsoft.Json.JsonConvert.SerializeObject(o); @@ -1416,7 +1343,6 @@ namespace RCUHost.Implement #region 如果是0E 01就直接回复 //36 就是新版本的0E - //if (cmdType == 0x0E || cmdType == 0x01) if (cmdType == 0x0E || cmdType == 0x01 || cmdType == 0x36) { StepTongJi.SendInfo(1.1, "0E 01指令回复开始", context111.MessageID, context111.IsMonitor); diff --git a/RCUHost/Implement/New_RoomStatusReceiver.cs b/RCUHost/Implement/New_RoomStatusReceiver.cs index 6345b9b..03e4292 100644 --- a/RCUHost/Implement/New_RoomStatusReceiver.cs +++ b/RCUHost/Implement/New_RoomStatusReceiver.cs @@ -1226,9 +1226,9 @@ namespace RCUHost.Implement } CSRedisCacheHelper.Set_Partition(KKey, hostModal); - bool isonly_serviceinfo = true; - //if (hostModal.ModalType == DeviceType.ServiceInfo) - if (isonly_serviceinfo) + //bool isonly_serviceinfo = true; + if (hostModal.ModalType == DeviceType.ServiceInfo) + //if (isonly_serviceinfo) { int StatusFlag = hostModal.Status; HostModal FinallyData = new HostModal(); diff --git a/RCUHost/Implement/RoomStatusReceiver.cs b/RCUHost/Implement/RoomStatusReceiver.cs index 660d95d..c7491b2 100644 --- a/RCUHost/Implement/RoomStatusReceiver.cs +++ b/RCUHost/Implement/RoomStatusReceiver.cs @@ -1721,9 +1721,9 @@ namespace RCUHost.Implement CSRedisCacheHelper.Set_Partition(KKey, hostModal); //只有服务信息才会入库 - bool isonly_serviceinfo = true; - //if (hostModal.ModalType == DeviceType.ServiceInfo) - if (isonly_serviceinfo) + //bool isonly_serviceinfo = true; + if (hostModal.ModalType == DeviceType.ServiceInfo) + //if (isonly_serviceinfo) { HostModal FinallyData = new HostModal(); @@ -1973,9 +1973,7 @@ namespace RCUHost.Implement else { string NoKey = CacheKey.HostModalStatus_BoolFilterPrefix + "_" + host.ID + "_" + device.Value.Address; - //var expiredata = new Random().Next(10, 50); CSRedisCacheHelper.Set_PartitionWithTime(NoKey, 1, 30); - //logger.Error("内存和数据库都不见这条数据:" + KKey); } #endregion } diff --git a/Service/Implement/HostModalManager.cs b/Service/Implement/HostModalManager.cs index 07d86aa..c15e630 100644 --- a/Service/Implement/HostModalManager.cs +++ b/Service/Implement/HostModalManager.cs @@ -126,15 +126,15 @@ namespace Service.Implement device.MusicExecMode = status + (brightness << 12) + (mode << 8);//背景音乐执行方式和内容 //device.ColorTempExecMode = status + (brightness << 12) + (temperature << 8);//色温执行方式和内容 - DeviceControlReceiver.Send(host, device);//发送命令 - //var t = new Tuple(host, device); - //System.Threading.Tasks.Task.Factory.StartNew((state) => - //{ - // var t1 = state as Tuple; - // var host1 = t1.Item1; - // var device1 = t1.Item2; - // DeviceControlReceiver.Send(host1, device1);//发送命令 - //}, t, System.Threading.CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default); + //DeviceControlReceiver.Send(host, device);//发送命令 + var t = new Tuple(host, device); + System.Threading.Tasks.Task.Factory.StartNew((state) => + { + var t1 = state as Tuple; + var host1 = t1.Item1; + var device1 = t1.Item2; + DeviceControlReceiver.Send(host1, device1);//发送命令 + }, t, System.Threading.CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default); } diff --git a/WebSite/Controllers/ApiController.cs b/WebSite/Controllers/ApiController.cs index 26e011c..d74bbee 100644 --- a/WebSite/Controllers/ApiController.cs +++ b/WebSite/Controllers/ApiController.cs @@ -4421,7 +4421,7 @@ namespace WebSite.Controllers Request.InputStream.Read(byts, 0, byts.Length); string jsonData = System.Text.Encoding.UTF8.GetString(byts); JWTData JJJ = null; - int code = 0; + int code = 401; string msg = ""; var dic = JsonConvert.DeserializeObject>(jsonData); if (dic != null) @@ -5329,10 +5329,10 @@ namespace WebSite.Controllers long jishu_error = Interlocked.Read(ref MvcApplication.UDPServerErrorCount); if (jishu_error >= 3) { - //logger.Error("重启了UDP服务器"); - //Interlocked.Exchange(ref MvcApplication.UDPServerErrorCount, 0); - //var hostServer = (IHostServer)MvcApplication.cxt.GetObject("RCUHost.HostServer"); - //hostServer.Start(); + logger.Error("重启了UDP服务器"); + Interlocked.Exchange(ref MvcApplication.UDPServerErrorCount, 0); + var hostServer = (IHostServer)MvcApplication.cxt.GetObject("RCUHost.HostServer"); + hostServer.Start(); } var TotalKey = "UDPPackage_TotalRecvPackage"; UDPPackageCount LLL_T = null; @@ -6081,7 +6081,6 @@ namespace WebSite.Controllers } - #region 宝易系统接口 /// @@ -6816,6 +6815,7 @@ namespace WebSite.Controllers { try { + HostServer.StopConsumerTasks(); if (key.Equals("blw^_^wlb")) { var hostServer = (IHostServer)MvcApplication.cxt.GetObject("RCUHost.HostServer"); diff --git a/WebSite/Controllers/IoTController.cs b/WebSite/Controllers/IoTController.cs index 48d806d..ed987e8 100644 --- a/WebSite/Controllers/IoTController.cs +++ b/WebSite/Controllers/IoTController.cs @@ -5365,7 +5365,7 @@ namespace WebSite.Controllers } else { - r.code = code; + r.code = 401; r.msg = msg; } } @@ -5413,7 +5413,7 @@ namespace WebSite.Controllers } else { - r.code = code; + r.code = 401; r.msg = msg; } r.data = list; @@ -5637,9 +5637,10 @@ namespace WebSite.Controllers var TuT = SignKeyCommon.TokenValidate(Token, out JJJ, out code, out msg); if (!TuT) { - code = 0; + code = 401; result.code = code; result.msg = "Token验证不通过"; + logger.Error("chuangwei Token验证失败 " + AuthData); return Json(result, JsonRequestBehavior.AllowGet); } } @@ -6208,7 +6209,7 @@ namespace WebSite.Controllers var TuT = SignKeyCommon.TokenValidate(Token, out JJJ, out code, out msg); if (!TuT) { - code = 0; + code = 401; result.code = code; result.msg = "Token验证不通过"; return Json(result, JsonRequestBehavior.AllowGet); @@ -7460,7 +7461,7 @@ namespace WebSite.Controllers var name = item.applianceName; var area = item.area; List q1 = new List(); - if (name.Equals("灯")||name.Equals("所有灯")) + if (name.Equals("灯") || name.Equals("所有灯")) { q1 = hostModals.Where(A => A.Modal.Name.Contains("灯")).ToList(); } diff --git a/WebSite/Controllers/SysHotelController.cs b/WebSite/Controllers/SysHotelController.cs index 69b8d6d..9e09d3a 100644 --- a/WebSite/Controllers/SysHotelController.cs +++ b/WebSite/Controllers/SysHotelController.cs @@ -296,6 +296,7 @@ namespace WebSite.Controllers sysHotel.FCS_RCU_Online = entity.FCS_RCU_Online; sysHotel.FCS_MenCi_Close = entity.FCS_MenCi_Close; sysHotel.FCS_MenCi_Open = entity.FCS_MenCi_Open; + sysHotel.FCS_MenSuo_DianLiang = entity.FCS_MenSuo_DianLiang; sysHotel.IsUseSkyworthTV = entity.IsUseSkyworthTV; @@ -387,6 +388,7 @@ namespace WebSite.Controllers TakeOut.SysHotel.FCS_RCU_Online = entity.FCS_RCU_Online; TakeOut.SysHotel.FCS_MenCi_Close = entity.FCS_MenCi_Close; TakeOut.SysHotel.FCS_MenCi_Open = entity.FCS_MenCi_Open; + TakeOut.SysHotel.FCS_MenSuo_DianLiang = entity.FCS_MenSuo_DianLiang; TakeOut.SysHotel.IsUseSkyworthTV = entity.IsUseSkyworthTV;//断电重置小度 TakeOut.SysHotel.IsUseTCLTV = entity.IsUseTCLTV;//断电重置小度 diff --git a/WebSite/Resource/en-US.Designer.cs b/WebSite/Resource/en-US.Designer.cs index 49ac721..58a489e 100644 --- a/WebSite/Resource/en-US.Designer.cs +++ b/WebSite/Resource/en-US.Designer.cs @@ -2725,6 +2725,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 Doorlockbattery 的本地化字符串。 + /// + internal static string FCS_MenSuo_DianLiang { + get { + return ResourceManager.GetString("FCS_MenSuo_DianLiang", resourceCulture); + } + } + /// /// 查找类似 FCS_RCU_Device_Offline 的本地化字符串。 /// diff --git a/WebSite/Resource/en-US.resx b/WebSite/Resource/en-US.resx index 2867527..0f3cca2 100644 --- a/WebSite/Resource/en-US.resx +++ b/WebSite/Resource/en-US.resx @@ -2911,4 +2911,7 @@ Single circuit status Switch RoomStatus To Power Off + + Doorlockbattery + \ No newline at end of file diff --git a/WebSite/Resource/zh-CN.Designer.cs b/WebSite/Resource/zh-CN.Designer.cs index f774087..562d796 100644 --- a/WebSite/Resource/zh-CN.Designer.cs +++ b/WebSite/Resource/zh-CN.Designer.cs @@ -2724,6 +2724,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 门锁电量 的本地化字符串。 + /// + internal static string FCS_MenSuo_DianLiang { + get { + return ResourceManager.GetString("FCS_MenSuo_DianLiang", resourceCulture); + } + } + /// /// 查找类似 RCU 设备断线 的本地化字符串。 /// diff --git a/WebSite/Resource/zh-CN.resx b/WebSite/Resource/zh-CN.resx index e3a4562..5e191eb 100644 --- a/WebSite/Resource/zh-CN.resx +++ b/WebSite/Resource/zh-CN.resx @@ -2913,4 +2913,7 @@ 退房 + + 门锁电量 + \ No newline at end of file diff --git a/WebSite/Resource/zh-TW.Designer.cs b/WebSite/Resource/zh-TW.Designer.cs index ef792db..f5f01f3 100644 --- a/WebSite/Resource/zh-TW.Designer.cs +++ b/WebSite/Resource/zh-TW.Designer.cs @@ -2724,6 +2724,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 門鎖電量 的本地化字符串。 + /// + internal static string FCS_MenSuo_DianLiang { + get { + return ResourceManager.GetString("FCS_MenSuo_DianLiang", resourceCulture); + } + } + /// /// 查找类似 RCU 設備 OffLine 的本地化字符串。 /// diff --git a/WebSite/Resource/zh-TW.resx b/WebSite/Resource/zh-TW.resx index a20781a..55dc893 100644 --- a/WebSite/Resource/zh-TW.resx +++ b/WebSite/Resource/zh-TW.resx @@ -2915,4 +2915,7 @@ 退房 + + 門鎖電量 + \ No newline at end of file diff --git a/WebSite/Views/SysHotel/EditDockingInfo.ascx b/WebSite/Views/SysHotel/EditDockingInfo.ascx index d3dc814..4fbbac8 100644 --- a/WebSite/Views/SysHotel/EditDockingInfo.ascx +++ b/WebSite/Views/SysHotel/EditDockingInfo.ascx @@ -299,6 +299,17 @@ + + + + + + + + + +