黄学彪
2020-12-17 9f326f4000847e6167d8166fa2f6a66f53cb3734
ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
@@ -1,6 +1,9 @@
using System;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.UserMain
{
@@ -16,7 +19,7 @@
        /// </summary>
        private VerticalFrameRefreshControl listView = null;
        /// <summary>
        /// 全部的行
        /// 全部的行,主键是自动递增的东西
        /// </summary>
        private Dictionary<string, RowLayoutControl> dicAllRow = null;
@@ -29,6 +32,11 @@
        /// </summary>
        public void ShowForm()
        {
            //左滑使能
            this.ScrollEnabled = false;
            Common.CommonPage.Instance.IsDrawerLockMode = true;
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uMessageCenter));
@@ -60,74 +68,138 @@
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private async void InitMiddleData(bool showReload)
        private void InitMiddleData(bool showReload)
        {
            //获取数据
            var dicData = await this.GetMessageData();
            //关闭进度条
            this.CloseProgressBar(dicData == null && showReload == true ? ShowReLoadMode.YES : ShowReLoadMode.NO);
            HdlThreadLogic.Current.RunMain(() =>
            {
                //关闭刷新特效
                listView?.EndHeaderRefreshing();
            });
            var dicData = this.GetMessageData();
            if (dicData == null)
            {
                if (showReload == true)
                {
                    //关闭进度条
                    this.CloseProgressBar(ShowReLoadMode.YES);
                }
                else
                {
                    //关闭进度条
                    this.CloseProgressBar();
                }
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //关闭刷新特效
                    listView?.EndHeaderRefreshing();
                    //清空
                    listView.RemoveAll();
                });
                //数据异常
                return;
            }
            if (this.Parent == null)
            {
                return;
            }
            HdlThreadLogic.Current.RunMain(() =>
            {
                //初始化中部控件
                this.InitMiddleFrame(dicData);
                //清空
                listView.RemoveAll();
            });
            if (dicData.Count == 0)
            {
                //关闭进度条
                this.CloseProgressBar();
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //关闭刷新特效
                    listView.EndHeaderRefreshing();
                    listView.frameTable.Height = listView.Height;
                });
                return;
            }
            //初始化中部控件
            this.InitMiddleFrame(dicData);
        }
        /// <summary>
        /// 初始化中部控件
        /// 初始化中部控件(要使用线程调用)
        /// </summary>
        /// <param name="dicData"></param>
        private void InitMiddleFrame(Dictionary<string, List<MessageRecordInfo>> dicData)
        private void InitMiddleFrame(Dictionary<string, List<List<MessageRecordInfo>>> dicData)
        {
            //清空
            listView.RemoveAll();
            int dateIndex = 0;
            FrameListControl framBack = null;
            string oldKeys = string.Empty;
            int index = 0;
            int maxCount = 0;
            int countIndex = 0;
            foreach (var data in dicData.Values)
            {
                //获取循环的总次数
                maxCount += data.Count;
            }
            int waiTime = 500;
            foreach (var keys in dicData.Keys)
            {
                var listData = dicData[keys];
                index++;
                //容器
                var framBack = new FrameListControl(23);
                framBack.Name = index.ToString();
                framBack.Height = Application.GetRealHeight(100);
                framBack.BackgroundColor = UserCenterColor.Current.White;
                listView.AddChidrenFrame(framBack);
                //日期
                string strMonth = Language.StringByID(R.MyInternationalizationString.Month);
                string strDate = Language.StringByID(R.MyInternationalizationString.Day);
                var frameDate = new FrameLayout();
                frameDate.Height = Application.GetRealHeight(118);
                framBack.AddChidren(frameDate);
                var btnDate = new NormalViewControl(500, 60, true);
                btnDate.TextSize = 15;
                btnDate.X = ControlCommonResourse.XXLeft;
                btnDate.Y = Application.GetRealHeight(35);
                btnDate.Text = Convert.ToDateTime(listData[0].MsgTime).ToString("MM" + strMonth + "dd" + strDate);
                frameDate.AddChidren(btnDate);
                for (int i = 0; i < listData.Count; i++)
                var listGroup = dicData[keys];
                foreach (var listData in listGroup)
                {
                    //添加信息行
                    this.AddMsgRowControl(framBack, listData[i], i != listData.Count - 1);
                }
                //调整高度
                listView.AdjustChidrenFrameHeight(framBack, Application.GetRealHeight(23));
                if (index == dicData.Count)
                {
                    listView.AdjustTableHeight();
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        countIndex++;
                        //当日期不一样时,重新建立桌布
                        if (oldKeys != keys)
                        {
                            oldKeys = keys;
                            dateIndex++;
                            //容器
                            framBack = new FrameListControl(23);
                            framBack.Name = dateIndex.ToString();
                            framBack.Height = Application.GetRealHeight(100);
                            framBack.BackgroundColor = UserCenterColor.Current.White;
                            listView.AddChidren(framBack);
                            //日期
                            string strMonth = Language.StringByID(R.MyInternationalizationString.Month);
                            string strDate = Language.StringByID(R.MyInternationalizationString.Day);
                            var frameDate = new FrameLayout();
                            frameDate.Height = Application.GetRealHeight(118);
                            framBack.AddChidren(frameDate);
                            var btnDate = new NormalViewControl(500, 60, true);
                            btnDate.TextSize = 15;
                            btnDate.X = HdlControlResourse.XXLeft;
                            btnDate.Y = Application.GetRealHeight(35);
                            btnDate.Text = HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(listGroup[0][0].CreateTime).ToString("MM" + strMonth + "dd" + strDate);
                            frameDate.AddChidren(btnDate);
                        }
                        for (int i = 0; i < listData.Count; i++)
                        {
                            //一条信息里面,它可能包含多个报警
                            for (int j = 0; j < listData[i].listMsg.Count; j++)
                            {
                                //设置已读的初始值
                                listData[i].ListReading.Add(listData[i].IsRead);
                                //添加信息行
                                bool addLine = i != listData.Count - 1 || j != listData[i].listMsg.Count - 1;
                                this.AddMsgRowControl(framBack, listData[i], j, addLine);
                            }
                        }
                        //调整高度
                        listView.AdjustChidrenFrameHeight(framBack, Application.GetRealHeight(23));
                        if (countIndex == maxCount)
                        {
                            //调整桌布
                            listView.AdjustTableHeight();
                            //关闭刷新特效
                            listView.EndHeaderRefreshing();
                            //关闭进度条
                            this.CloseProgressBar();
                        }
                    });
                    //第一次的时候,等待的时候久一点
                    System.Threading.Thread.Sleep(waiTime);
                    waiTime = 300;
                }
            }
        }
@@ -157,20 +229,25 @@
        /// </summary>
        private void ShowBottomMenu()
        {
            bool authority = HdlUserCenterResourse.ResidenceOption.AuthorityNo == 1 || HdlUserCenterResourse.ResidenceOption.AuthorityNo == 2;
            var menuContr = new BottomMenuSelectForm();
            menuContr.AddForm(2);
            menuContr.AddForm(authority == true ? 2 : 1);
            //全部已读
            menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.uAllRead), () =>
            {
                //设置全部为已读
                this.SetAllTickIsRead();
            });
            //全部删除
            menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.uAllDelete), () =>
            if (authority == true)
            {
                //删除全部的消息
                this.DeleteAllMsg();
            });
                //全部删除
                menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.uAllDelete), () =>
                {
                    //删除全部的消息
                    this.DeleteAllMsg();
                });
            }
        }
        #endregion
@@ -182,49 +259,41 @@
        /// </summary>
        /// <param name="frameList"></param>
        /// <param name="recordInfo"></param>
        /// <param name="msgIndex">报警消息的下标</param>
        /// <param name="addLine"></param>
        private void AddMsgRowControl(FrameListControl frameList, MessageRecordInfo recordInfo, bool addLine)
        private void AddMsgRowControl(FrameListControl frameList, MessageRecordInfo recordInfo, int msgIndex, bool addLine)
        {
            var rowControl = new RowLayoutControl(frameList.rowSpace / 2);
            frameList.AddChidren(rowControl);
            rowControl.Name = frameList.ChildrenCount.ToString();
            rowControl.MainKeys = recordInfo.RegId;
            rowControl.MainKeys = recordInfo.Id;
            this.dicAllRow[frameList.Name + "-" + rowControl.Name] = rowControl;
            //图标(现在测试)
            //图标
            var btnIcon = rowControl.frameTable.AddLeftIcon(81);
            btnIcon.UnSelectedImagePath = "Item/Safety.png";
            btnIcon.UnSelectedImagePath = recordInfo.IconPath;
            //消息类型
            var btnMsgObject = rowControl.frameTable.AddLeftCaption("报警消息", 600);
            PicViewControl btnNewTip = null;
            if (recordInfo.IsRead == 0)
            {
                btnNewTip = new PicViewControl(78, 55);
                btnNewTip.UnSelectedImagePath = "Item/NewVersion.png";
                btnNewTip.Y = Application.GetRealHeight(9) + rowControl.frameTable.chidrenYaxis;
                btnNewTip.X = btnMsgObject.X + btnMsgObject.GetRealWidthByText(14);
                rowControl.frameTable.AddChidren(btnNewTip, ChidrenBindMode.BindEventOnly);
            }
            var btnMsgObject = rowControl.frameTable.AddLeftCaption(recordInfo.MsgObjectText, 600);
            //消息
            var btnMsg = rowControl.frameTable.AddMostRightView(recordInfo.MsgContent, 600, 60);
            var btnMsg = rowControl.frameTable.AddMostRightView(recordInfo.listMsg[msgIndex], 600, 60);
            btnMsg.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnMsg.Y = Application.GetRealHeight(5) + rowControl.frameTable.chidrenYaxis;
            rowControl.frameTable.AddChidren(btnMsg, ChidrenBindMode.BindEventOnly);
            rowControl.frameTable.AddChidren(btnMsg, ChidrenBindMode.BindEvent);
            //时间
            var btnTime = rowControl.frameTable.AddMostRightView(recordInfo.MsgContent, 200, 50);
            var btnTime = rowControl.frameTable.AddMostRightView("", 200, 50);
            btnTime.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnTime.Y = btnMsg.Bottom + Application.GetRealHeight(12);
            btnTime.Text = Convert.ToDateTime(recordInfo.MsgTime).ToString("HH:mm");
            rowControl.frameTable.AddChidren(btnTime, ChidrenBindMode.BindEventOnly);
            var convertTime = HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(recordInfo.CreateTime);
            btnTime.Text = convertTime.ToString("HH:mm");
            rowControl.frameTable.AddChidren(btnTime, ChidrenBindMode.BindEvent);
            //底线
            if (addLine == true)
            {
                rowControl.frameTable.AddBottomLine();
            }
            //已读
            if (recordInfo.IsRead == 1)
            if (recordInfo.ListReading[msgIndex] == true)
            {
                rowControl.frameTable.UseClickStatu = false;
                //消息类型
@@ -232,26 +301,44 @@
                //消息
                btnMsg.TextColor = UserCenterColor.Current.TextGrayColor1;
            }
            //删除
            var btnDelete = rowControl.AddDeleteControl();
            btnDelete.ButtonClickEvent += (sender, e) =>
            //调整宽度
            btnMsgObject.Width = btnMsgObject.GetRealWidthByText();
            //新消息
            PicViewControl btnNewTip = null;
            if (recordInfo.ListReading[msgIndex] == false)
            {
                //确认删除消息?
                string msg = Language.StringByID(R.MyInternationalizationString.uDeleteMessageMsg);
                this.ShowMassage(ShowMsgType.Confirm, msg, async () =>
                btnNewTip = new PicViewControl(78, 55);
                btnNewTip.UnSelectedImagePath = "Item/NewVersion.png";
                btnNewTip.Y = Application.GetRealHeight(9) + rowControl.frameTable.chidrenYaxis;
                btnNewTip.X = btnMsgObject.Right + Application.GetRealWidth(10);
                rowControl.frameTable.AddChidren(btnNewTip, ChidrenBindMode.BindEvent);
            }
            //主要主人和管理员能够删除
            if (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 1 || HdlUserCenterResourse.ResidenceOption.AuthorityNo == 2)
            {
                //删除
                var btnDelete = rowControl.AddDeleteControl();
                btnDelete.ButtonClickEvent += (sender, e) =>
                {
                    await this.DeleteMsg(recordInfo.RegId, frameList, rowControl);
                });
            };
                    //确认删除消息?
                    string msg = Language.StringByID(R.MyInternationalizationString.uDeleteMessageMsg);
                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                    {
                        this.DeleteMsg(recordInfo.Id, frameList, rowControl);
                    });
                };
            }
            //点击
            rowControl.frameTable.ButtonClickEvent += async (sender, e) =>
            rowControl.frameTable.ButtonClickEvent += (sender, e) =>
            {
                if (recordInfo.IsRead == 1)
                if (recordInfo.ListReading[msgIndex] == true)
                {
                    return;
                }
                recordInfo.IsRead = 1;
                recordInfo.ListReading[msgIndex] = true;
                rowControl.frameTable.UseClickStatu = false;
                //消息类型
                btnMsgObject.TextColor = UserCenterColor.Current.TextGrayColor1;
@@ -261,7 +348,7 @@
                if (sender != null)
                {
                    //标记已读(不管它成功不成功)
                    await this.SetTickIsRead(recordInfo.RegId);
                    this.SetTickIsRead(recordInfo.Id);
                }
            };
        }
@@ -274,11 +361,9 @@
        /// 标记已读
        /// </summary>
        /// <param name="strId"></param>
        private async System.Threading.Tasks.Task<bool> SetTickIsRead(string strId)
        private bool SetTickIsRead(string strId)
        {
            var pra = new { Id = strId };
            await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/TickIsRead", true, pra);
            return true;
            return HdlMessageLogic.Current.SetTickIsRead(strId);
        }
        /// <summary>
@@ -293,23 +378,19 @@
            //确认标记全部消息为已读?
            this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uUnTipAllMessageMsg), () =>
            {
                HdlThreadLogic.Current.RunThread(async () =>
                HdlThreadLogic.Current.RunThread(() =>
                {
                    //打开进度条
                    this.ShowProgressBar();
                    foreach (var contr in this.dicAllRow.Values)
                    {
                        //标识全部为已读
                        var result = await this.SetTickIsRead(contr.MainKeys);
                        if (result == false)
                        {
                            //关闭进度条
                            this.CloseProgressBar();
                            return;
                        }
                    }
                    var result = HdlMessageLogic.Current.SetAllTickIsRead();
                    //关闭进度条
                    this.CloseProgressBar();
                    if (result == false)
                    {
                        return;
                    }
                    HdlThreadLogic.Current.RunMain(() =>
                    {
@@ -333,11 +414,16 @@
        /// <param name="strId"></param>
        /// <param name="frameList"></param>
        /// <param name="rowContr"></param>
        private async System.Threading.Tasks.Task<bool> DeleteMsg(string strId, FrameListControl frameList, RowLayoutControl rowContr)
        private bool DeleteMsg(string strId, FrameListControl frameList, RowLayoutControl rowContr)
        {
            var pra = new { Id = strId };
            var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/DeletePushMessage", true, pra);
            if (result == true && frameList != null)
            var result = HdlMessageLogic.Current.DeleteCloundMessage(strId);
            if (result == false)
            {
                return false;
            }
            //云端是不会返回东西的
            if (frameList != null)
            {
                HdlThreadLogic.Current.RunMain(() =>
                {
@@ -347,7 +433,7 @@
                    this.AdjustControlLocation(frameList, rowContr);
                });
            }
            return result;
            return true;
        }
        /// <summary>
@@ -362,20 +448,17 @@
            //确认删除全部消息?
            this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteAllMessageMsg), () =>
            {
                HdlThreadLogic.Current.RunThread(async () =>
                HdlThreadLogic.Current.RunThread(() =>
                {
                    //打开进度条
                    this.ShowProgressBar();
                    foreach (var contr in this.dicAllRow.Values)
                    var result = HdlMessageLogic.Current.DeleteAllCloundMessage();
                    if (result == false)
                    {
                        //删除全部消息
                        var result = await this.DeleteMsg(contr.MainKeys, null, null);
                        if (result == false)
                        {
                            //关闭进度条
                            this.CloseProgressBar();
                            return;
                        }
                        //关闭进度条
                        this.CloseProgressBar();
                        return;
                    }
                    //初始化中部信息
                    this.InitMiddleData(true);
@@ -457,62 +540,371 @@
        /// 获取消息记录
        /// </summary>
        /// <returns></returns>
        private async System.Threading.Tasks.Task<Dictionary<string, List<MessageRecordInfo>>> GetMessageData()
        private Dictionary<string, List<List<MessageRecordInfo>>> GetMessageData()
        {
            this.dicAllRow = new Dictionary<string, RowLayoutControl>();
            var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetPushMessageRecord", false, "");
            if (result == null)
            var listData = new List<MessageRecordInfo>();
            var listMsg = HdlMessageLogic.Current.GetListMessageFromDb();
            if (listMsg == null)
            {
                return null;
                return new Dictionary<string, List<List<MessageRecordInfo>>>();
            }
            var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MessageRecordInfo>>(result);
            for (int i = 0; i < listMsg.Count; i++)
            {
                try
                {
                    var data = listMsg[i];
                    //处理消息类型
                    if (this.AdjustMsgContent(ref data) == true)
                    {
                        listData.Add(data);
                    }
                }
                catch { continue; }
            }
            //合并数据
            return this.MergeMessageRecordData(dataInfo);
            return this.MergeMessageRecordData(listData);
        }
        /// <summary>
        /// 合并数据
        /// 合并数据(同一天之内,会分组)
        /// </summary>
        /// <param name="dataInfo"></param>
        /// <returns></returns>
        private Dictionary<string, List<MessageRecordInfo>> MergeMessageRecordData(List<MessageRecordInfo> dataInfo)
        private Dictionary<string, List<List<MessageRecordInfo>>> MergeMessageRecordData(List<MessageRecordInfo> dataInfo)
        {
            var dicData = new Dictionary<string, List<MessageRecordInfo>>();
            var dicData = new Dictionary<string, List<List<MessageRecordInfo>>>();
            //首先先排序一下,时间大的放在前面
            var dicTemp = new Dictionary<string, List<MessageRecordInfo>>();
            var listSortKeys = new List<string>();
            foreach (var data in dataInfo)
            {
                if (dicTemp.ContainsKey(data.MsgTime) == false)
                if (dicTemp.ContainsKey(data.CreateTime) == false)
                {
                    dicTemp[data.MsgTime] = new List<MessageRecordInfo>();
                    listSortKeys.Add(data.MsgTime);
                    dicTemp[data.CreateTime] = new List<MessageRecordInfo>();
                    listSortKeys.Add(data.CreateTime);
                }
                dicTemp[data.MsgTime].Add(data);
                dicTemp[data.CreateTime].Add(data);
            }
            listSortKeys.Sort();
            var listGroup = new List<MessageRecordInfo>();
            for (int i = listSortKeys.Count - 1; i >= 0; i--)
            {
                var listData = dicTemp[listSortKeys[i]];
                foreach (var data2 in listData)
                {
                    string[] myArry = data2.MsgTime.Split(new string[] { "T" }, StringSplitOptions.RemoveEmptyEntries);
                    if (myArry.Length != 2)
                    try
                    {
                        continue;
                        if (data2.MessageTitle == "/DoorLock/DoorLockOperatingEventNotificationCommand")
                        {
                            //暂时不处理这个主题
                            continue;
                        }
                        string strDay = HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(data2.CreateTime).ToString("yyyy/MM/dd");
                        //按每天分组
                        if (dicData.ContainsKey(strDay) == false)
                        {
                            listGroup = new List<MessageRecordInfo>();
                            dicData[strDay] = new List<List<MessageRecordInfo>>();
                            dicData[strDay].Add(listGroup);
                        }
                        if (listGroup.Count > 20)
                        {
                            //每20个一组
                            listGroup = new List<MessageRecordInfo>();
                            dicData[strDay].Add(listGroup);
                        }
                        listGroup.Add(data2);
                    }
                    if (dicData.ContainsKey(myArry[0]) == false)
                    {
                        dicData[myArry[0]] = new List<MessageRecordInfo>();
                    }
                    dicData[myArry[0]].Add(data2);
                    catch { }
                }
            }
            return dicData;
        }
        #endregion
        #region ■ 处理消息类型_______________________
        /// <summary>
        /// 处理消息类型
        /// </summary>
        /// <param name="recordInfo">消息数据</param>
        private bool AdjustMsgContent(ref MessageRecordInfo recordInfo)
        {
            //传感器上报
            if (recordInfo.MessageTitle == "/IASInfoReport")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.SensorDeviceReportPush(jobject, ref recordInfo);
            }
            //门锁上报
            else if (recordInfo.MessageTitle == "/Alarms/SendAlarmInform")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.DoorLockDeviceReportPush(jobject, ref recordInfo);
            }
            //撤防
            else if (recordInfo.MessageTitle == "/Security/WithdrawMode_Respon")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.RemoveSafetyGarrisonPush(jobject, ref recordInfo);
            }
            //布防
            else if (recordInfo.MessageTitle == "/Security/EnableMode_Respon")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.SetSafetyGarrisonPush(jobject, ref recordInfo);
            }
            //逻辑触发上报
            else if (recordInfo.MessageTitle == "/Logic/Execute_Respon")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.LogicExecutePush(jobject, ref recordInfo);
            }
            //场景触发上报
            else if (recordInfo.MessageTitle == "/Scene/Exec_Respon")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.SceneExecPush(jobject, ref recordInfo);
            }
            else
            {
                //不处理的主题
                return false;
            }
            return true;
        }
        #endregion
        #region ■ 传感器上报_________________________
        /// <summary>
        /// 传感器设备上报
        /// </summary>
        /// <param name="receiveData"></param>
        private bool SensorDeviceReportPush(JObject receiveData, ref MessageRecordInfo recordInfo)
        {
            var ias = new IASZone() { DeviceAddr = receiveData.Value<string>("DeviceAddr"), DeviceEpoint = receiveData.Value<int>("Epoint") };
            ias.iASInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<IASZone.IASInfoData>(receiveData["Data"].ToString());
            //图标
            var localDevice = HdlDeviceCommonLogic.Current.GetDevice(ias.DeviceAddr, ias.DeviceEpoint);
            if (localDevice == null)
            {
                recordInfo.IconPath = "Device/Sensor.png";
                //消息类型:传感器
                var infoContent = HdlDeviceCommonLogic.Current.GetDeviceModelIdNameInfo("A402");
                recordInfo.MsgObjectText = infoContent != null ? infoContent.A官方名字 : string.Empty;
            }
            else
            {
                string selectPath = string.Empty;
                string unselecPath = string.Empty;
                HdlDeviceCommonLogic.Current.GetDeviceIcon(localDevice, ref unselecPath, ref selectPath);
                recordInfo.IconPath = unselecPath;
                //消息类型
                recordInfo.MsgObjectText = HdlDeviceCommonLogic.Current.GetDeviceEpointName(localDevice);
            }
            //消息
            var info = HdlAlarmsLogic.Current.GetSensorAlarmInfo(ias);
            if (info == null)
            {
                //非在册的消息记录
                recordInfo.listMsg.Add(Language.StringByID(R.MyInternationalizationString.uSensorAlarmHadTriggered));
                return true;
            }
            if (string.IsNullOrEmpty(info.AlarmMsg) == false)
            {
                recordInfo.listMsg.Add(info.AlarmMsg);
            }
            if (info.BatteryMsg != null)
            {
                recordInfo.listMsg.Add(info.BatteryMsg);
            }
            if (info.DemolishmenMsg != null)
            {
                recordInfo.listMsg.Add(info.DemolishmenMsg);
            }
            //触发传感器报警
            if (recordInfo.listMsg.Count == 0)
            {
                recordInfo.listMsg.Add(Language.StringByID(R.MyInternationalizationString.uSensorAlarmHadTriggered));
            }
            return true;
        }
        #endregion
        #region ■ 门锁上报___________________________
        /// <summary>
        /// 门锁上报
        /// </summary>
        /// <param name="receiveData"></param>
        private void DoorLockDeviceReportPush(JObject receiveData, ref MessageRecordInfo recordInfo)
        {
            //图标
            var device = HdlDeviceCommonLogic.Current.GetDevice(receiveData.Value<string>("DeviceAddr"), receiveData.Value<int>("Epoint"));
            if (device == null)
            {
                recordInfo.IconPath = "Device/IntelligentLocks.png";
                //消息类型:智能门锁
                var infoContent = HdlDeviceCommonLogic.Current.GetDeviceModelIdNameInfo("A405");
                recordInfo.MsgObjectText = infoContent != null ? infoContent.A官方名字 : string.Empty;
            }
            else
            {
                string selectPath = string.Empty;
                string unselecPath = string.Empty;
                HdlDeviceCommonLogic.Current.GetDeviceIcon(device, ref unselecPath, ref selectPath);
                recordInfo.IconPath = unselecPath;
                //消息类型
                recordInfo.MsgObjectText = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device);
            }
            //消息
            var msgInfo = HdlAlarmsLogic.Current.GetDoorLockAlarmInfo(receiveData);
            string MsgText = msgInfo != null ? msgInfo.AlarmMsg : Language.StringByID(R.MyInternationalizationString.uDoorLocksAlarmHadTriggered);
            recordInfo.listMsg.Add(MsgText);
        }
        #endregion
        #region ■ 布防_______________________________
        /// <summary>
        /// 布防推送
        /// </summary>
        /// <param name="receiveData"></param>
        private void SetSafetyGarrisonPush(JObject receiveData, ref MessageRecordInfo recordInfo)
        {
            //图标
            recordInfo.IconPath = "Item/Safety.png";
            var data = Newtonsoft.Json.JsonConvert.DeserializeObject<Safeguard.EnableModeResponseData>(receiveData["Data"].ToString());
            if (data.Result == 0)
            {
                //离家布防
                if (data.ModeId == 2)
                {
                    //离家布防
                    recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uRemoveHomeGarrison);
                    //已执行
                    recordInfo.listMsg.Add(Language.StringByID(R.MyInternationalizationString.uExecuted));
                }
                else
                {
                    //已执行
                    recordInfo.listMsg.Add(Language.StringByID(R.MyInternationalizationString.uExecuted));
                    //没有内部防区
                    if (HdlSafeguardLogic.Current.IsHadInternalDefenseArea() == false)
                    {
                        //布防
                        recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uGarrison);
                    }
                    else
                    {
                        //在家布防
                        recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uAtHomeGarrison);
                    }
                }
            }
            else
            {
                //布防设置失败
                recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uSetGarrisonFail);
            }
        }
        #endregion
        #region ■ 撤防_______________________________
        /// <summary>
        /// 撤防推送
        /// </summary>
        /// <param name="receiveData"></param>
        private void RemoveSafetyGarrisonPush(JObject receiveData, ref MessageRecordInfo recordInfo)
        {
            //图标
            recordInfo.IconPath = "Item/Safety.png";
            var data = Newtonsoft.Json.JsonConvert.DeserializeObject<Safeguard.WithdrawModeResponseData>(receiveData["Data"].ToString());
            if (data.Result == 0)
            {
                //已执行
                recordInfo.listMsg.Add(Language.StringByID(R.MyInternationalizationString.uExecuted));
                //撤防
                recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uWithdrawGarrison);
            }
            else
            {
                //撤防失败
                recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uRemoveGarrisonFail);
            }
        }
        #endregion
        #region ■ 逻辑触发上报_______________________
        /// <summary>
        /// 逻辑触发上报
        /// </summary>
        /// <param name="receiveData"></param>
        private void LogicExecutePush(JObject receiveData, ref MessageRecordInfo recordInfo)
        {
            //图标
            recordInfo.IconPath = "Item/LogicMsgIcon.png";
            //类型:逻辑名字
            recordInfo.MsgObjectText = receiveData["Data"]["LogicName"].ToString();
            //已执行
            recordInfo.listMsg.Add(Language.StringByID(R.MyInternationalizationString.uExecuted));
        }
        #endregion
        #region ■ 场景触发上报_______________________
        /// <summary>
        /// 场景触发上报
        /// </summary>
        /// <param name="receiveData"></param>
        private void SceneExecPush(JObject receiveData, ref MessageRecordInfo recordInfo)
        {
            //图标
            recordInfo.IconPath = "Item/SceneMsgIcon.png";
            //类型:场景名字
            recordInfo.MsgObjectText = receiveData["Data"]["ScenesName"].ToString();
            //已执行
            recordInfo.listMsg.Add(Language.StringByID(R.MyInternationalizationString.uExecuted));
        }
        #endregion
        #region ■ 界面关闭___________________________
        /// <summary>
        /// 界面关闭
        /// </summary>
        public override void CloseFormBefore()
        {
            var userPageForm = UserView.UserPage.Instance.GetNowActionForm();
            if (userPageForm != null && userPageForm.FormID == "UserMainForm")
            {
                Common.CommonPage.Instance.IsDrawerLockMode = false;
            }
            base.CloseFormBefore();
        }
        #endregion
    }
}