From d6fb0646531172f23648441c224cdcccd721b894 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期一, 14 十二月 2020 09:59:01 +0800
Subject: [PATCH] 请合并代码,完成晾衣架最终功能。
---
ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs | 979 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 979 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
new file mode 100755
index 0000000..b071030
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
@@ -0,0 +1,979 @@
+锘縰sing Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using ZigBee.Device;
+
+namespace Shared.Phone.UserCenter.UserMain
+{
+ /// <summary>
+ /// 娑堟伅涓績
+ /// </summary>
+ public class MessageManagementForm : EditorCommonForm
+ {
+ #region 鈻� 鍙橀噺澹版槑___________________________
+
+ /// <summary>
+ /// 鍒楄〃鎺т欢
+ /// </summary>
+ private VerticalFrameRefreshControl listView = null;
+ /// <summary>
+ /// 鍏ㄩ儴鐨勮,涓婚敭鏄嚜鍔ㄩ�掑鐨勪笢瑗�
+ /// </summary>
+ private Dictionary<string, RowLayoutControl> dicAllRow = null;
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖朹____________________________
+
+ /// <summary>
+ /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+ /// </summary>
+ public void ShowForm()
+ {
+ //宸︽粦浣胯兘
+ this.ScrollEnabled = false;
+
+ Common.CommonPage.Instance.IsDrawerLockMode = true;
+
+ //璁剧疆澶撮儴淇℃伅
+ base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uMessageCenter));
+
+ //鍒濆鍖栧彸涓婅鑿滃崟
+ this.InitTopRightMenu();
+
+ listView = new VerticalFrameRefreshControl(35);
+ listView.Height = bodyFrameLayout.Height;
+ bodyFrameLayout.AddChidren(listView);
+ listView.BeginHeaderRefreshingAction += () =>
+ {
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleData(false);
+ });
+ };
+
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ //鎵撳紑杩涘害鏉�
+ this.ShowProgressBar();
+
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleData(true);
+ });
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+ /// </summary>
+ private void InitMiddleData(bool showReload)
+ {
+ //鑾峰彇鏁版嵁
+ 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(() =>
+ {
+ //娓呯┖
+ 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<List<MessageRecordInfo>>> dicData)
+ {
+ int dateIndex = 0;
+ FrameListControl framBack = null;
+ string oldKeys = string.Empty;
+
+ 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 listGroup = dicData[keys];
+ foreach (var listData in listGroup)
+ {
+ 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 = ControlCommonResourse.XXLeft;
+ btnDate.Y = Application.GetRealHeight(35);
+ btnDate.Text = Convert.ToDateTime(listGroup[0][0].CreatedOnUtc).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].IsReading);
+ //娣诲姞淇℃伅琛�
+ 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;
+ }
+ }
+ }
+
+ #endregion
+
+ #region 鈻� 鍙充笂瑙掕彍鍗昣________________________
+
+ /// <summary>
+ /// 鍒濆鍖栧彸涓婅鑿滃崟
+ /// </summary>
+ private void InitTopRightMenu()
+ {
+ var btnIcon = new MostRightIconControl(69, 69);
+ btnIcon.UnSelectedImagePath = "Item/More.png";
+ topFrameLayout.AddChidren(btnIcon);
+ btnIcon.InitControl();
+ btnIcon.ButtonClickEvent += ((sender, e) =>
+ {
+ //鏄剧ず搴曢儴鑿滃崟鐣岄潰
+ this.ShowBottomMenu();
+ });
+ }
+
+ /// <summary>
+ /// 鏄剧ず搴曢儴鑿滃崟鐣岄潰
+ /// </summary>
+ private void ShowBottomMenu()
+ {
+ bool authority = UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2;
+
+ var menuContr = new BottomMenuSelectForm();
+ menuContr.AddForm(authority == true ? 2 : 1);
+ //鍏ㄩ儴宸茶
+ menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.uAllRead), () =>
+ {
+ //璁剧疆鍏ㄩ儴涓哄凡璇�
+ this.SetAllTickIsRead();
+ });
+ if (authority == true)
+ {
+ //鍏ㄩ儴鍒犻櫎
+ menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.uAllDelete), () =>
+ {
+ //鍒犻櫎鍏ㄩ儴鐨勬秷鎭�
+ this.DeleteAllMsg();
+ });
+ }
+ }
+
+ #endregion
+
+ #region 鈻� 娣诲姞淇℃伅琛宊________________________
+
+ /// <summary>
+ /// 娣诲姞淇℃伅琛�
+ /// </summary>
+ /// <param name="frameList"></param>
+ /// <param name="recordInfo"></param>
+ /// <param name="msgIndex">鎶ヨ娑堟伅鐨勪笅鏍�</param>
+ /// <param name="addLine"></param>
+ 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.Id;
+ this.dicAllRow[frameList.Name + "-" + rowControl.Name] = rowControl;
+
+ //鍥炬爣
+ var btnIcon = rowControl.frameTable.AddLeftIcon(81);
+ btnIcon.UnSelectedImagePath = recordInfo.IconPath;
+ //娑堟伅绫诲瀷
+ var btnMsgObject = rowControl.frameTable.AddLeftCaption(recordInfo.MsgObjectText, 600);
+
+ //娑堟伅
+ 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.BindEvent);
+ //鏃堕棿
+ var btnTime = rowControl.frameTable.AddMostRightView("", 200, 50);
+ btnTime.TextColor = UserCenterColor.Current.TextGrayColor1;
+ btnTime.Y = btnMsg.Bottom + Application.GetRealHeight(12);
+ var convertTime = UserCenterLogic.ConvertUtcTimeToLocalTime(recordInfo.CreatedOnUtc);
+ btnTime.Text = convertTime.ToString("HH锛歮m");
+ rowControl.frameTable.AddChidren(btnTime, ChidrenBindMode.BindEvent);
+ //搴曠嚎
+ if (addLine == true)
+ {
+ rowControl.frameTable.AddBottomLine();
+ }
+ //宸茶
+ if (recordInfo.ListReading[msgIndex] == true)
+ {
+ rowControl.frameTable.UseClickStatu = false;
+ //娑堟伅绫诲瀷
+ btnMsgObject.TextColor = UserCenterColor.Current.TextGrayColor1;
+ //娑堟伅
+ btnMsg.TextColor = UserCenterColor.Current.TextGrayColor1;
+ }
+ //璋冩暣瀹藉害
+ btnMsgObject.Width = btnMsgObject.GetRealWidthByText();
+
+ //鏂版秷鎭�
+ PicViewControl btnNewTip = null;
+ if (recordInfo.ListReading[msgIndex] == false)
+ {
+ 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 (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
+ {
+ //鍒犻櫎
+ var btnDelete = rowControl.AddDeleteControl();
+ btnDelete.ButtonClickEvent += (sender, e) =>
+ {
+ //纭鍒犻櫎娑堟伅?
+ string msg = Language.StringByID(R.MyInternationalizationString.uDeleteMessageMsg);
+ this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+ {
+ this.DeleteMsg(recordInfo.Id, frameList, rowControl);
+ });
+ };
+ }
+
+ //鐐瑰嚮
+ rowControl.frameTable.ButtonClickEvent += async (sender, e) =>
+ {
+ if (recordInfo.ListReading[msgIndex] == true)
+ {
+ return;
+ }
+ recordInfo.ListReading[msgIndex] = true;
+ rowControl.frameTable.UseClickStatu = false;
+ //娑堟伅绫诲瀷
+ btnMsgObject.TextColor = UserCenterColor.Current.TextGrayColor1;
+ //娑堟伅
+ btnMsg.TextColor = UserCenterColor.Current.TextGrayColor1;
+ btnNewTip.RemoveFromParent();
+ if (sender != null)
+ {
+ //鏍囪宸茶(涓嶇瀹冩垚鍔熶笉鎴愬姛)
+ this.SetTickIsRead(recordInfo.Id);
+ }
+ };
+ }
+
+ #endregion
+
+ #region 鈻� 鏍囪宸茶___________________________
+
+ /// <summary>
+ /// 鏍囪宸茶
+ /// </summary>
+ /// <param name="strId"></param>
+ private bool SetTickIsRead(string strId)
+ {
+ var pra = new MessageReadStatuPra();
+ pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+ pra.Id = strId;
+ var result = UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/TagMessageMessageCenterItem", true, pra);
+ return result;
+ }
+
+ /// <summary>
+ /// 璁剧疆鍏ㄩ儴涓哄凡璇�
+ /// </summary>
+ private void SetAllTickIsRead()
+ {
+ if (dicAllRow.Count == 0)
+ {
+ return;
+ }
+ //纭鏍囪鍏ㄩ儴娑堟伅涓哄凡璇�?
+ this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uUnTipAllMessageMsg), () =>
+ {
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ //鎵撳紑杩涘害鏉�
+ this.ShowProgressBar();
+
+ var pra = new MessageReadStatuPra();
+ pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+ pra.TagAllOrClearType = 0;
+ var result = UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/TagAllOrClearMessageCenter", true, pra);
+ //鍏抽棴杩涘害鏉�
+ this.CloseProgressBar();
+ if (result == false)
+ {
+ return;
+ }
+
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //璁剧疆鍏ㄩ儴鐘舵��
+ foreach (var contr in this.dicAllRow.Values)
+ {
+ contr.frameTable.ButtonClickEvent?.Invoke(null, null);
+ }
+ });
+ });
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 鍒犻櫎淇℃伅___________________________
+
+ /// <summary>
+ /// 鍒犻櫎淇℃伅
+ /// </summary>
+ /// <param name="strId"></param>
+ /// <param name="frameList"></param>
+ /// <param name="rowContr"></param>
+ private bool DeleteMsg(string strId, FrameListControl frameList, RowLayoutControl rowContr)
+ {
+ var pra = new MessageReadStatuPra();
+ pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+ pra.Id = strId;
+ var result = UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/DelMessageCenterItem", true, pra);
+ if (result == false)
+ {
+ return false;
+ }
+
+ //浜戠鏄笉浼氳繑鍥炰笢瑗跨殑
+ if (frameList != null)
+ {
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //绉婚櫎缂撳瓨
+ this.dicAllRow.Remove(frameList.Name + "-" + rowContr.Name);
+ //璋冩暣鎺т欢浣嶇疆
+ this.AdjustControlLocation(frameList, rowContr);
+ });
+ }
+ return true;
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍏ㄩ儴鐨勬秷鎭�
+ /// </summary>
+ private void DeleteAllMsg()
+ {
+ if (dicAllRow.Count == 0)
+ {
+ return;
+ }
+ //纭鍒犻櫎鍏ㄩ儴娑堟伅?
+ this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteAllMessageMsg), () =>
+ {
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ //鎵撳紑杩涘害鏉�
+ this.ShowProgressBar();
+
+ var pra = new MessageReadStatuPra();
+ pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+ pra.TagAllOrClearType = 1;
+ var result = UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/TagAllOrClearMessageCenter", true, pra);
+ if (result == false)
+ {
+ //鍏抽棴杩涘害鏉�
+ this.CloseProgressBar();
+ return;
+ }
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleData(true);
+ });
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 璋冩暣鎺т欢浣嶇疆_______________________
+
+ /// <summary>
+ /// 璋冩暣鎺т欢浣嶇疆
+ /// </summary>
+ /// <param name="frameList"></param>
+ private void AdjustControlLocation(FrameListControl frameList, RowLayoutControl removeRow)
+ {
+ int changedHeight = frameList.GetChildren(frameList.ChildrenCount - 1).Height;
+ if (frameList.ChildrenCount <= 2)
+ {
+ //宸茬粡鍒犲畬浜�,鍙墿涓嬫爣棰樻棩鏈熶簡
+ changedHeight = frameList.Height;
+ }
+ //鍏堣皟鏁村悇鑷鍣ㄧ殑Y杞村潗鏍�
+ bool canChangedLoaction = false;
+ for (int i = 0; i < this.listView.frameTable.ChildrenCount; i++)
+ {
+ var myView = this.listView.frameTable.GetChildren(i);
+ if (myView.Name == frameList.Name)
+ {
+ //瀹冧箣鍚庣殑鎺т欢鍏ㄩ儴寰�涓婄Щ鍔�
+ canChangedLoaction = true;
+ continue;
+ }
+ if (canChangedLoaction == true)
+ {
+ myView.Y -= changedHeight;
+ }
+ }
+ //璋冩暣鐖跺鍣ㄥぇ灏�
+ this.listView.AdjustTableHeight();
+
+
+ if (frameList.ChildrenCount <= 2)
+ {
+ //宸茬粡鍒犲畬浜�,鍙墿涓嬫爣棰樻棩鏈熶簡
+ frameList.RemoveFromParent();
+ }
+ else
+ {
+ //杩欎釜瀹瑰櫒閲岄潰琚Щ闄ょ殑琛岀殑涓嬮潰鐨勫叏閮ㄨ,寰�涓婄Щ鍔�
+ bool changedFlage = false;
+ for (int i = 0; i < frameList.ChildrenCount; i++)
+ {
+ var myView = frameList.GetChildren(i);
+ if (myView.Name == removeRow.Name)
+ {
+ //瀹冧箣鍚庣殑鎺т欢鍏ㄩ儴寰�涓婄Щ鍔�
+ changedFlage = true;
+ continue;
+ }
+ if (changedFlage == true)
+ {
+ myView.Y -= changedHeight;
+ }
+ }
+ //绉婚櫎鎸囧畾鐨勮
+ removeRow.RemoveFromParent();
+ //瀹瑰櫒澶у皬鍑忓皯
+ frameList.Height -= changedHeight;
+ }
+ }
+
+ #endregion
+
+ #region 鈻� 鑾峰彇鏁版嵁___________________________
+
+ /// <summary>
+ /// 鑾峰彇娑堟伅璁板綍
+ /// </summary>
+ /// <returns></returns>
+ private Dictionary<string, List<List<MessageRecordInfo>>> GetMessageData()
+ {
+ this.dicAllRow = new Dictionary<string, RowLayoutControl>();
+ var allListData = new List<MessageRecordInfo>();
+
+ var pra = new MessageInfoPra();
+ pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+
+ //浼犳劅鍣ㄤ笂鎶�
+ pra.Topic = "/IASInfoReport";
+ var dataInfo = this.GetMessageDataFromDb(pra);
+ if (dataInfo == null)
+ {
+ return null;
+ }
+ allListData.AddRange(dataInfo);
+
+ //闂ㄩ攣涓婃姤
+ pra.Topic = "/Alarms/SendAlarmInform";
+ dataInfo = this.GetMessageDataFromDb(pra);
+ if (dataInfo == null)
+ {
+ return null;
+ }
+ allListData.AddRange(dataInfo);
+
+ //鎾ら槻
+ pra.Topic = "/Security/WithdrawMode_Respon";
+ dataInfo = this.GetMessageDataFromDb(pra);
+ if (dataInfo == null)
+ {
+ return null;
+ }
+ allListData.AddRange(dataInfo);
+
+ //甯冮槻
+ pra.Topic = "/Security/EnableMode_Respon";
+ dataInfo = this.GetMessageDataFromDb(pra);
+ if (dataInfo == null)
+ {
+ return null;
+ }
+ allListData.AddRange(dataInfo);
+
+ //閫昏緫瑙﹀彂涓婃姤
+ pra.Topic = "/Logic/Execute_Respon";
+ dataInfo = this.GetMessageDataFromDb(pra);
+ if (dataInfo == null)
+ {
+ return null;
+ }
+ allListData.AddRange(dataInfo);
+
+ //鍦烘櫙瑙﹀彂涓婃姤
+ pra.Topic = "/Scene/Exec_Respon";
+ dataInfo = this.GetMessageDataFromDb(pra);
+ if (dataInfo == null)
+ {
+ return null;
+ }
+ allListData.AddRange(dataInfo);
+
+ //鍚堝苟鏁版嵁
+ return this.MergeMessageRecordData(allListData);
+ }
+
+ /// <summary>
+ /// 浠庝簯绔幏鍙栨暟鎹�
+ /// </summary>
+ /// <param name="pra"></param>
+ /// <returns></returns>
+ private List<MessageRecordInfo> GetMessageDataFromDb(MessageInfoPra pra)
+ {
+ var result = UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", true, pra);
+ if (string.IsNullOrEmpty(result) == true)
+ {
+ return null;
+ }
+ var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<MessageCentetInfo>(result);
+
+ var listData = new List<MessageRecordInfo>();
+ for (int i = 0; i < dataInfo.PageData.Count; i++)
+ {
+ try
+ {
+ var data = dataInfo.PageData[i];
+ //澶勭悊娑堟伅绫诲瀷
+ this.AdjustMsgContent(ref data);
+
+ listData.Add(data);
+ }
+ catch { continue; }
+ }
+
+ return listData;
+ }
+
+ /// <summary>
+ /// 鍚堝苟鏁版嵁(鍚屼竴澶╀箣鍐�,浼氬垎缁�)
+ /// </summary>
+ /// <param name="dataInfo"></param>
+ /// <returns></returns>
+ private Dictionary<string, List<List<MessageRecordInfo>>> MergeMessageRecordData(List<MessageRecordInfo> dataInfo)
+ {
+ 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.CreatedOnUtc) == false)
+ {
+ dicTemp[data.CreatedOnUtc] = new List<MessageRecordInfo>();
+ listSortKeys.Add(data.CreatedOnUtc);
+ }
+ dicTemp[data.CreatedOnUtc].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)
+ {
+ if (data2.Topic == "/DoorLock/DoorLockOperatingEventNotificationCommand")
+ {
+ //鏆傛椂涓嶅鐞嗚繖涓富棰�
+ continue;
+ }
+ string[] myArry = data2.CreatedOnUtc.Split(new string[] { "T" }, StringSplitOptions.RemoveEmptyEntries);
+ if (myArry.Length != 2)
+ {
+ continue;
+ }
+ string dicKeys = myArry[0];//鏃ユ湡
+ if (dicData.ContainsKey(dicKeys) == false)
+ {
+ listGroup = new List<MessageRecordInfo>();
+ dicData[dicKeys] = new List<List<MessageRecordInfo>>();
+ dicData[dicKeys].Add(listGroup);
+ }
+ if (listGroup.Count > 20)
+ {
+ //姣�20涓竴缁�
+ listGroup = new List<MessageRecordInfo>();
+ dicData[dicKeys].Add(listGroup);
+ }
+ listGroup.Add(data2);
+ }
+ }
+ return dicData;
+ }
+
+ #endregion
+
+ #region 鈻� 澶勭悊娑堟伅绫诲瀷_______________________
+
+ /// <summary>
+ /// 澶勭悊娑堟伅绫诲瀷
+ /// </summary>
+ /// <param name="recordInfo">娑堟伅鏁版嵁</param>
+ private void AdjustMsgContent(ref MessageRecordInfo recordInfo)
+ {
+ var jobject = JObject.Parse(recordInfo.PayloadJson);
+ //浼犳劅鍣ㄤ笂鎶�
+ if (recordInfo.Topic == "/IASInfoReport")
+ {
+ this.SensorDeviceReportPush(jobject, ref recordInfo);
+ }
+ //闂ㄩ攣涓婃姤
+ else if (recordInfo.Topic == "/Alarms/SendAlarmInform")
+ {
+ this.DoorLockDeviceReportPush(jobject, ref recordInfo);
+ }
+ //鎾ら槻
+ else if (recordInfo.Topic == "/Security/WithdrawMode_Respon")
+ {
+ this.RemoveSafetyGarrisonPush(jobject, ref recordInfo);
+ }
+ //甯冮槻
+ else if (recordInfo.Topic == "/Security/EnableMode_Respon")
+ {
+ this.SetSafetyGarrisonPush(jobject, ref recordInfo);
+ }
+ //閫昏緫瑙﹀彂涓婃姤
+ else if (recordInfo.Topic == "/Logic/Execute_Respon")
+ {
+ this.LogicExecutePush(jobject, ref recordInfo);
+ }
+ //鍦烘櫙瑙﹀彂涓婃姤
+ else if (recordInfo.Topic == "/Scene/Exec_Respon")
+ {
+ this.SceneExecPush(jobject, ref recordInfo);
+ }
+ }
+
+ #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 = Common.LocalDevice.Current.GetDevice(ias.DeviceAddr, ias.DeviceEpoint);
+ if (localDevice == null)
+ {
+ recordInfo.IconPath = "Device/Sensor.png";
+ //娑堟伅绫诲瀷:浼犳劅鍣�
+ var infoContent = Common.LocalDevice.Current.GetDeviceModelIdNameInfo("A402");
+ recordInfo.MsgObjectText = infoContent != null ? infoContent.A瀹樻柟鍚嶅瓧 : string.Empty;
+ }
+ else
+ {
+ string selectPath = string.Empty;
+ string unselecPath = string.Empty;
+ Common.LocalDevice.Current.GetDeviceIcon(localDevice, ref unselecPath, ref selectPath);
+ recordInfo.IconPath = unselecPath;
+ //娑堟伅绫诲瀷
+ recordInfo.MsgObjectText = Common.LocalDevice.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 = Common.LocalDevice.Current.GetDevice(receiveData.Value<string>("DeviceAddr"), receiveData.Value<int>("Epoint"));
+ if (device == null)
+ {
+ recordInfo.IconPath = "Device/IntelligentLocks.png";
+ //娑堟伅绫诲瀷:鏅鸿兘闂ㄩ攣
+ var infoContent = Common.LocalDevice.Current.GetDeviceModelIdNameInfo("A405");
+ recordInfo.MsgObjectText = infoContent != null ? infoContent.A瀹樻柟鍚嶅瓧 : string.Empty;
+ }
+ else
+ {
+ string selectPath = string.Empty;
+ string unselecPath = string.Empty;
+ Common.LocalDevice.Current.GetDeviceIcon(device, ref unselecPath, ref selectPath);
+ recordInfo.IconPath = unselecPath;
+ //娑堟伅绫诲瀷
+ recordInfo.MsgObjectText = Common.LocalDevice.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
+ }
+}
--
Gitblit v1.8.0