From c7df85937f73fb347ee0b19e9c052d2d00a6df6c Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 18 九月 2020 13:58:19 +0800
Subject: [PATCH] 新版本

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs |  212 ++++++++++++++++++++++++----------------------------
 1 files changed, 98 insertions(+), 114 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs
index 516c345..5eeab9e 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs
+++ b/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 鈻� 閲嶆柊鍒锋柊鎶ヨ淇℃伅___________________
@@ -78,34 +58,27 @@
             this.listDoorLockAlarmInfo.Clear();
             string fileName = DateTime.Now.ToString("yyyyMMdd");
 
-            //鍒ゆ柇鏈夋病鏈夎繖涓枃浠�
-            string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory, fileName);
-            if (System.IO.File.Exists(fullName) == true)
+            //瀹夐槻鎶ヨ
+            string fullName = System.IO.Path.Combine(DirNameResourse.SafeguardAlarmDirectory, fileName);
+            var data1 = HdlFileLogic.Current.ReadFileByteContent(fullName);
+            if (data1 != null)
             {
-                lock (listSafetyAlarmInfo)
+                this.listSafetyAlarmInfo = JsonConvert.DeserializeObject<List<SafeguardAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data1));
+                if (this.listSafetyAlarmInfo == null)
                 {
-                    string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory);
-                    var data = Global.ReadFileByDirectory(dir, fileName);
-                    this.listSafetyAlarmInfo = JsonConvert.DeserializeObject<List<SafeguardAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data));
-                    if (this.listSafetyAlarmInfo == null)
-                    {
-                        this.listSafetyAlarmInfo = new List<SafeguardAlarmInfo>();
-                    }
+                    this.listSafetyAlarmInfo = new List<SafeguardAlarmInfo>();
                 }
             }
+
             //闂ㄩ攣璁板綍
-            fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory, fileName);
-            if (System.IO.File.Exists(fullName) == true)
+            fullName = System.IO.Path.Combine(DirNameResourse.DoorLockAlarmDirectory, fileName);
+            var data2 = HdlFileLogic.Current.ReadFileByteContent(fullName);
+            if (data2 != null)
             {
-                lock (listDoorLockAlarmInfo)
+                this.listDoorLockAlarmInfo = JsonConvert.DeserializeObject<List<DeviceAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data2));
+                if (this.listDoorLockAlarmInfo == null)
                 {
-                    string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory);
-                    var data = Global.ReadFileByDirectory(dir, fileName);
-                    this.listDoorLockAlarmInfo = JsonConvert.DeserializeObject<List<DeviceAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data));
-                    if (this.listDoorLockAlarmInfo == null)
-                    {
-                        this.listDoorLockAlarmInfo = new List<DeviceAlarmInfo>();
-                    }
+                    this.listDoorLockAlarmInfo = new List<DeviceAlarmInfo>();
                 }
             }
         }
@@ -145,7 +118,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,16 +128,14 @@
 
                 //闄愬埗瀹冪殑闀垮害
                 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);
                 }
 
                 //淇濆瓨鍒版湰鍦�
-                var saveData = JsonConvert.SerializeObject(this.listSafetyAlarmInfo);
-                var byteData = System.Text.Encoding.UTF8.GetBytes(saveData);
-                string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory);
-                Global.WriteFileToDirectoryByBytes(dir, fileName, byteData);
+                string fullName = System.IO.Path.Combine(DirNameResourse.SafeguardAlarmDirectory, fileName);
+                HdlFileLogic.Current.SaveFileContent(fullName, this.listSafetyAlarmInfo);
 
                 if (UserCenterResourse.DicActionForm.ContainsKey("SafetyManagementMainForm") == true)
                 {
@@ -180,8 +151,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)
             {
@@ -232,26 +202,14 @@
 
                 //闄愬埗瀹冪殑闀垮害
                 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);
                 }
 
                 //淇濆瓨鍒版湰鍦�
-                var saveData = JsonConvert.SerializeObject(this.listSafetyAlarmInfo);
-                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);
-                    }
-                }
+                string fullName = System.IO.Path.Combine(DirNameResourse.SafeguardAlarmDirectory, fileName);
+                HdlFileLogic.Current.SaveFileContent(fullName, this.listSafetyAlarmInfo);
             }
         }
 
@@ -279,16 +237,15 @@
         {
             lock (listSafetyAlarmInfo)
             {
-                string fullPath = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory);
-                //鍊熺敤涓�涓嬭嚜鍔ㄥ浠借幏鍙栨寚瀹氱洰褰曚笅闈㈢殑鏂囦欢鐨勫嚱鏁�
-                List<string> listFile = HdlAutoBackupLogic.GetFileFromDirectory(fullPath);
+                string fullPath = DirNameResourse.SafeguardAlarmDirectory;
+                //鑾峰彇鎸囧畾鐩綍涓嬮潰鐨勬枃浠�
+                List<string> listFile = HdlFileLogic.Current.GetFileFromDirectory(fullPath);
                 //鍗囧簭
                 listFile.Sort();
                 var dic = new Dictionary<string, List<SafeguardAlarmInfo>>();
-                string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory);
                 for (int i = listFile.Count - 1; i >= 0; i--)
                 {
-                    var data = Global.ReadFileByDirectory(dir, listFile[i]);
+                    var data = HdlFileLogic.Current.ReadFileByteContent(System.IO.Path.Combine(fullPath, listFile[i]));
                     var info = JsonConvert.DeserializeObject<List<SafeguardAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data));
                     if (info == null)
                     {
@@ -297,7 +254,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;
@@ -306,7 +263,7 @@
                     }
                     dic[listFile[i]] = listInfo;
 
-                    if (dic.Count == UserCenterResourse.Option.SafetyMaxAlarmMsgDay)
+                    if (dic.Count == UserCenterResourse.ResidenceOption.SafetyMaxAlarmMsgDay)
                     {
                         //鍙涓夊ぉ鐨勯噺
                         break;
@@ -340,6 +297,10 @@
                 return null;
             }
             IASZone iASZone = (IASZone)i_device;
+            if (iASZone.iASInfo == null)
+            {
+                return null;
+            }
 
             var alarmInfo = new IASZoneReportInfo();
             if (iASZone.iASInfo.Battery == 1)
@@ -354,11 +315,11 @@
             }
 
             //杩愬姩浼犳劅鍣�
-            if (device.IasDeviceType == 13)
+            if (device.IasDeviceType == 13 || device.IasDeviceType == 541)
             {
                 if (iASZone.iASInfo.Alarm1 == 1)
                 {
-                    //鏈変笉鏄庣墿浣撶粡杩�
+                    //鏈変汉缁忚繃
                     alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uHadUnKnowObjectPassed);
                 }
             }
@@ -434,7 +395,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 鈻� 闂ㄩ攣鎶ヨ淇濆瓨_______________________
 
@@ -466,20 +457,19 @@
                 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);
                 }
 
                 //淇濆瓨鍒版湰鍦�
-                var saveData = JsonConvert.SerializeObject(this.listDoorLockAlarmInfo);
-                var byteData = System.Text.Encoding.UTF8.GetBytes(saveData);
-                string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory);
-                Global.WriteFileToDirectoryByBytes(dir, fileName, byteData);
+                string fullName = System.IO.Path.Combine(DirNameResourse.DoorLockAlarmDirectory, fileName);
+                HdlFileLogic.Current.SaveFileContent(fullName, this.listDoorLockAlarmInfo);
+
                 return true;
             }
         }
@@ -492,16 +482,15 @@
         {
             lock (listDoorLockAlarmInfo)
             {
-                string fullPath = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory);
-                //鍊熺敤涓�涓嬭嚜鍔ㄥ浠借幏鍙栨寚瀹氱洰褰曚笅闈㈢殑鏂囦欢鐨勫嚱鏁�
-                List<string> listFile = HdlAutoBackupLogic.GetFileFromDirectory(fullPath);
+                string fullPath = DirNameResourse.DoorLockAlarmDirectory;
+                //鑾峰彇鎸囧畾鐩綍涓嬮潰鐨勬枃浠�
+                List<string> listFile = HdlFileLogic.Current.GetFileFromDirectory(fullPath);
                 //鍗囧簭
                 listFile.Sort();
                 var dic = new Dictionary<string, List<DeviceAlarmInfo>>();
-                string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory);
                 for (int i = listFile.Count - 1; i >= 0; i--)
                 {
-                    var data = Global.ReadFileByDirectory(dir, listFile[i]);
+                    var data = HdlFileLogic.Current.ReadFileByteContent(System.IO.Path.Combine(fullPath, listFile[i]));
                     var info = JsonConvert.DeserializeObject<List<DeviceAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data));
                     if (info == null)
                     {
@@ -510,7 +499,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;
@@ -519,7 +508,7 @@
                     }
                     dic[listFile[i]] = listInfo;
 
-                    if (dic.Count == UserCenterResourse.Option.DoorLockMaxAlarmMsgDay)
+                    if (dic.Count == UserCenterResourse.ResidenceOption.DoorLockMaxAlarmMsgDay)
                     {
                         //鍙涓夊ぉ鐨勯噺
                         break;
@@ -538,9 +527,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)
@@ -578,19 +567,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);
                 }
             }
@@ -615,25 +618,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

--
Gitblit v1.8.0