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
|
{
|
/// <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 = 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;
|
}
|
}
|
}
|
|
#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 = HdlUserCenterResourse.ResidenceOption.AuthorityNo == 1 || HdlUserCenterResourse.ResidenceOption.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 = 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.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 (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 1 || HdlUserCenterResourse.ResidenceOption.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 += (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)
|
{
|
return HdlMessageLogic.Current.SetTickIsRead(strId);
|
}
|
|
/// <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 result = HdlMessageLogic.Current.SetAllTickIsRead();
|
|
//关闭进度条
|
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 result = HdlMessageLogic.Current.DeleteCloundMessage(strId);
|
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 result = HdlMessageLogic.Current.DeleteAllCloundMessage();
|
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 listData = new List<MessageRecordInfo>();
|
var listMsg = HdlMessageLogic.Current.GetListMessageFromDb();
|
if (listMsg == null)
|
{
|
return new Dictionary<string, List<List<MessageRecordInfo>>>();
|
}
|
|
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(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.CreateTime) == false)
|
{
|
dicTemp[data.CreateTime] = new List<MessageRecordInfo>();
|
listSortKeys.Add(data.CreateTime);
|
}
|
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)
|
{
|
try
|
{
|
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);
|
}
|
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
|
}
|
}
|