HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-06-01 0bf9e65bc3ba98391e7835c922b15baab3c77876
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
@@ -2216,7 +2216,7 @@
            {
                int waitCount = 0;
                //如果住宅ID变更了,则不再处理
                while (frameLayout.Parent != null)
                while (frameLayout.Parent != null && Config.Instance.HomeId != string.Empty)
                {
                    System.Threading.Thread.Sleep(1000);
                    if (this.hadGatewayUpdate == true)
@@ -2276,18 +2276,34 @@
            //等个2秒
            System.Threading.Thread.Sleep(2000);
            //2020.05.25追加:此住宅是否拥有网关在线
            var hadGwOnline = false;
            foreach (var way in list)
            {
                string gwId = this.GetGatewayId(way);
                if (dicOldOnline.ContainsKey(gwId) == true)
                {
                    if (way.GatewayOnlineFlage == true)
                    {
                        //有一个网关在线,即在线
                        hadGwOnline = true;
                        break;
                    }
                }
            }
            foreach (var way in list)
            {
                string gwId = this.GetGatewayId(way);
                if (dicOldOnline.ContainsKey(gwId) == true)
                {
                    //网关也不多,直接推送吧
                    this.PushGatewayOnlineStatuToForm(gwId, way.GatewayOnlineFlage);
                    this.PushGatewayOnlineStatuToForm(gwId, way.GatewayOnlineFlage, hadGwOnline);
                }
                else
                {
                    //没有包含,默认为false
                    this.PushGatewayOnlineStatuToForm(gwId, false);
                    this.PushGatewayOnlineStatuToForm(gwId, false, hadGwOnline);
                }
            }
        }
@@ -2305,22 +2321,34 @@
                dicDbGateway = new Dictionary<string, GatewayResult>();
            }
            //2020.05.25追加:此住宅是否拥有网关在线
            var hadGwOnline = false;
            foreach (var gwId in dicOldOnline.Keys)
            {
                //如果云端上面有这个网关
                if (dicDbGateway.ContainsKey(gwId) == true
                    && dicDbGateway[gwId].MqttOnlineStatus == true)
                {
                    //有一个网关在线,即在线
                    hadGwOnline = true;
                    break;
                }
            }
            foreach (var gwId in dicOldOnline.Keys)
            {
                //如果云端上面有这个网关
                if (dicDbGateway.ContainsKey(gwId) == true)
                {
                    //网关也不多,直接推送
                    this.PushGatewayOnlineStatuToForm(gwId, dicDbGateway[gwId].MqttOnlineStatus);
                    this.PushGatewayOnlineStatuToForm(gwId, dicDbGateway[gwId].MqttOnlineStatus, hadGwOnline);
                }
                else
                {
                    //云端不包含的,当不在线处理
                    this.PushGatewayOnlineStatuToForm(gwId, false);
                    this.PushGatewayOnlineStatuToForm(gwId, false, hadGwOnline);
                }
            }
        }
        /// <summary>
@@ -2355,7 +2383,8 @@
        /// </summary>
        /// <param name="gwId"></param>
        /// <param name="online"></param>
        private void PushGatewayOnlineStatuToForm(string gwId, bool online)
        /// <param name="hadGwOnline">2020.05.25追加:此住宅是否拥有网关在线</param>
        private void PushGatewayOnlineStatuToForm(string gwId, bool online, bool hadGwOnline)
        {
            try
            {
@@ -2370,7 +2399,7 @@
                    var zbway = this.GetLocalGateway(gwId);
                    zbway.GatewayOnlineFlage = online;
                    UserCenterResourse.DicActionForm[formId]?.GatewayOnlinePush(zbway, online);
                    UserCenterResourse.DicActionForm[formId]?.GatewayOnlinePush(zbway, online, hadGwOnline);
                }
            }
            catch { }