陈嘉乐
2020-07-10 48ba446936b51fffafa7c3600c0dadc6ac0e8c20
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs
@@ -45,26 +45,6 @@
        /// </summary>
        private string oldDeviceAlarmFile = string.Empty;
        #endregion
        #region ■ 报警信息上报事件___________________
        /// <summary>
        /// 添加报警信息上报事件(不需要再执行任何操作,并且永久存在)
        /// </summary>
        public void AddAlarmInfoEvent()
        {
            //安防设备上报
            HdlDeviceAttributeLogic.Current.AddAttributeEvent("SaveSafetyAlarmInfo", "IASInfoReport", (device)=>
            {
                if (HdlGatewayLogic.Current.IsGatewayExist(device.CurrentGateWayId) == true)
                {
                    //保存安防报警信息到本地
                    this.SaveSafeguardAlarmInfo(device);
                }
            });
        }
        #endregion
        #region ■ 重新刷新报警信息___________________
@@ -145,7 +125,7 @@
                data.DeviceEpoint = device.DeviceEpoint;
                data.DeviceName = device.DeviceName;
                data.Time = DateTime.Now.ToString("HH:mm:ss");
                data.RoomName = Common.Room.CurrentRoom.GetRoomNameByDevice(device);
                data.RoomName = HdlRoomLogic.Current.GetRoomNameByDevice(device);
                //报警结束
                data.AlarmMsg = msgInfo.AlarmMsg != string.Empty ? msgInfo.AlarmMsg : Language.StringByID(R.MyInternationalizationString.uAlarmFinish);
                //电池报警
@@ -155,7 +135,7 @@
                //限制它的长度
                this.listSafetyAlarmInfo.Insert(0, data);
                if (this.listSafetyAlarmInfo.Count > UserCenterResourse.Option.SafetyOnedayMaxAlarmMsgCount)
                if (this.listSafetyAlarmInfo.Count > UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount)
                {
                    this.listSafetyAlarmInfo.RemoveAt(this.listSafetyAlarmInfo.Count - 1);
                }
@@ -165,6 +145,12 @@
                var byteData = System.Text.Encoding.UTF8.GetBytes(saveData);
                string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory);
                Global.WriteFileToDirectoryByBytes(dir, fileName, byteData);
                if (UserCenterResourse.DicActionForm.ContainsKey("SafetyManagementMainForm") == true)
                {
                    var form = (Phone.UserCenter.Safety.SafetyManagementMainForm)UserCenterResourse.DicActionForm["SafetyManagementMainForm"];
                    form?.AddSafeguardLogPushRow(device);
                }
                return true;
            }
        }
@@ -174,8 +160,7 @@
        /// </summary>
        /// <param name="garrison">布防模式</param>
        /// <param name="appendText">附加文本</param>
        /// <param name="push">是否推送到安防主界面</param>
        public void SaveSafeguardAlarmInfo(GarrisonMode garrison, string appendText = "", bool push = false)
        public void SaveSafeguardAlarmInfo(GarrisonMode garrison, string appendText = "")
        {
            if (garrison == GarrisonMode.None)
            {
@@ -226,7 +211,7 @@
                //限制它的长度
                this.listSafetyAlarmInfo.Insert(0, data);
                if (this.listSafetyAlarmInfo.Count > UserCenterResourse.Option.SafetyOnedayMaxAlarmMsgCount)
                if (this.listSafetyAlarmInfo.Count > UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount)
                {
                    this.listSafetyAlarmInfo.RemoveAt(this.listSafetyAlarmInfo.Count - 1);
                }
@@ -236,16 +221,6 @@
                var byteData = System.Text.Encoding.UTF8.GetBytes(saveData);
                string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory);
                Global.WriteFileToDirectoryByBytes(dir, fileName, byteData);
                //推送
                if (push == true)
                {
                    if (UserCenterResourse.DicActionForm.ContainsKey("SafetyManagementMainForm") == true)
                    {
                        var form = (Phone.UserCenter.Safety.SafetyManagementMainForm)UserCenterResourse.DicActionForm["SafetyManagementMainForm"];
                        form?.AddSafeguardLogPushRow(null);
                    }
                }
            }
        }
@@ -291,7 +266,7 @@
                    var listInfo = new List<SafeguardAlarmInfo>();
                    for (int j = 0; j < info.Count; j++)
                    {
                        if (j == UserCenterResourse.Option.SafetyOnedayMaxAlarmMsgCount)
                        if (j == UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount)
                        {
                            //每天最多三十条数据
                            break;
@@ -300,7 +275,7 @@
                    }
                    dic[listFile[i]] = listInfo;
                    if (dic.Count == UserCenterResourse.Option.SafetyMaxAlarmMsgDay)
                    if (dic.Count == UserCenterResourse.ResidenceOption.SafetyMaxAlarmMsgDay)
                    {
                        //只要三天的量
                        break;
@@ -428,7 +403,37 @@
            return alarmInfo;
        }
        /// <summary>
        /// 获取单个Json数据里面,包含的全部报警信息条数
        /// </summary>
        /// <param name="alarmInfo"></param>
        /// <returns></returns>
        public List<string> GetSensorListAlarmMsg(SafeguardAlarmInfo alarmInfo)
        {
            var listMsg = new List<string>();
            //一条信息里面,它可能包含多个报警
            if (string.IsNullOrEmpty(alarmInfo.AlarmMsg) == false)
            {
                //报警信息
                listMsg.Add(alarmInfo.AlarmMsg);
            }
            if (alarmInfo.BatteryMsg != null)
            {
                //电池电量
                listMsg.Add(alarmInfo.BatteryMsg);
            }
            if (alarmInfo.DemolishmentMsg != null)
            {
                //被拆报警
                listMsg.Add(alarmInfo.DemolishmentMsg);
            }
            return listMsg;
        }
        #endregion
        #region ■ 门锁报警保存_______________________
@@ -460,11 +465,11 @@
                msgInfo.DeviceEpoint = device.DeviceEpoint;
                msgInfo.DeviceName = device.DeviceName;
                msgInfo.Time = DateTime.Now.ToString("HH:mm:ss");
                msgInfo.RoomName = Common.Room.CurrentRoom.GetRoomNameByDevice(device);
                msgInfo.RoomName = HdlRoomLogic.Current.GetRoomNameByDevice(device);
                //限制它的长度
                this.listDoorLockAlarmInfo.Insert(0, msgInfo);
                if (this.listDoorLockAlarmInfo.Count > UserCenterResourse.Option.DoorLockOnedayMaxAlarmMsgCount)
                if (this.listDoorLockAlarmInfo.Count > UserCenterResourse.ResidenceOption.DoorLockOnedayMaxAlarmMsgCount)
                {
                    this.listDoorLockAlarmInfo.RemoveAt(this.listDoorLockAlarmInfo.Count - 1);
                }
@@ -504,7 +509,7 @@
                    var listInfo = new List<DeviceAlarmInfo>();
                    for (int j = 0; j < info.Count; j++)
                    {
                        if (j == UserCenterResourse.Option.DoorLockOnedayMaxAlarmMsgCount)
                        if (j == UserCenterResourse.ResidenceOption.DoorLockOnedayMaxAlarmMsgCount)
                        {
                            //每天最多三十条数据
                            break;
@@ -513,7 +518,7 @@
                    }
                    dic[listFile[i]] = listInfo;
                    if (dic.Count == UserCenterResourse.Option.DoorLockMaxAlarmMsgDay)
                    if (dic.Count == UserCenterResourse.ResidenceOption.DoorLockMaxAlarmMsgDay)
                    {
                        //只要三天的量
                        break;
@@ -532,9 +537,9 @@
        /// </summary>
        /// <param name="jobject"></param>
        /// <returns></returns>
        private DeviceAlarmInfo GetDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject)
        public DeviceAlarmInfo GetDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject)
        {
            var info = (DoorLockAlarmsResult)JsonConvert.DeserializeObject<DoorLockAlarmsResult>(jobject["Data"].ToString());
            var info = JsonConvert.DeserializeObject<DoorLockAlarmsResult>(jobject["Data"].ToString());
            var alarmInfo = new DeviceAlarmInfo();
            if (info.Clusterid == 1)
@@ -572,19 +577,33 @@
                    //暴力开门
                    alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg5);
                }
                else if (info.AlarmCode == 16)
                else if (info.AlarmCode == 216)
                {
                    //常开模式开启
                    //常开模式开启(门锁触发)
                    alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg6);
                    alarmInfo.MsgDiv = 9000;
                }
                else if (info.AlarmCode == 17)
                else if (info.AlarmCode == 217)
                {
                    //常开模式结束
                    alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg7);
                    //常开模式结束(门锁触发)
                    alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg7);
                    alarmInfo.MsgDiv = 9000;
                }
                else if (info.AlarmCode == 218)
                {
                    //常开模式开启(网关触发)
                    alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg9);
                    alarmInfo.MsgDiv = 9000;
                }
                else if (info.AlarmCode == 219)
                {
                    //常开模式结束(网关触发)
                    alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg10);
                    alarmInfo.MsgDiv = 9000;
                }
                else if (info.AlarmCode == 32)
                else if (info.AlarmCode == 232)
                {
                    //门铃触发
                    //有人访问
                    alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg8);
                }
            }
@@ -609,25 +628,6 @@
            }
            oldDeviceAlarmFile = fileName;
            return fileName;
        }
        #endregion
        #region ■ 结构体_____________________________
        /// <summary>
        /// 门锁的报警结果
        /// </summary>
        private class DoorLockAlarmsResult
        {
            /// <summary>
            /// 报警类型
            /// </summary>
            public int AlarmCode = -1;
            /// <summary>
            /// Clusterid
            /// </summary>
            public int Clusterid = -1;
        }
        #endregion