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 | 175 +++++++++++++++++++++++++++++++--------------------------- 1 files changed, 94 insertions(+), 81 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs index ead7ba5..5eeab9e 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs @@ -58,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>(); } } } @@ -125,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); //鐢垫睜鎶ヨ @@ -135,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) { @@ -211,16 +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); + string fullName = System.IO.Path.Combine(DirNameResourse.SafeguardAlarmDirectory, fileName); + HdlFileLogic.Current.SaveFileContent(fullName, this.listSafetyAlarmInfo); } } @@ -248,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) { @@ -266,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; @@ -275,7 +263,7 @@ } dic[listFile[i]] = listInfo; - if (dic.Count == UserCenterResourse.Option.SafetyMaxAlarmMsgDay) + if (dic.Count == UserCenterResourse.ResidenceOption.SafetyMaxAlarmMsgDay) { //鍙涓夊ぉ鐨勯噺 break; @@ -309,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) @@ -323,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); } } @@ -403,6 +395,34 @@ 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 @@ -437,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; } } @@ -463,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) { @@ -481,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; @@ -490,7 +508,7 @@ } dic[listFile[i]] = listInfo; - if (dic.Count == UserCenterResourse.Option.DoorLockMaxAlarmMsgDay) + if (dic.Count == UserCenterResourse.ResidenceOption.DoorLockMaxAlarmMsgDay) { //鍙涓夊ぉ鐨勯噺 break; @@ -511,7 +529,7 @@ /// <returns></returns> 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) @@ -549,19 +567,33 @@ //鏆村姏寮�闂� alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg5); } - else if (info.AlarmCode == 116) + else if (info.AlarmCode == 216) { - //甯稿紑妯″紡寮�鍚� + //甯稿紑妯″紡寮�鍚�(闂ㄩ攣瑙﹀彂) alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg6); + alarmInfo.MsgDiv = 9000; } - else if (info.AlarmCode == 117) + 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 == 132) + else if (info.AlarmCode == 232) { - //闂ㄩ搩瑙﹀彂 + //鏈変汉璁块棶 alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg8); } } @@ -586,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