From dc0309e64f02227d8e1468b7326c07955f804612 Mon Sep 17 00:00:00 2001 From: chenqiyang <1406175257@qq.com> Date: 星期三, 22 六月 2022 11:22:18 +0800 Subject: [PATCH] 修改引用路径 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs | 1070 +++++++++++++++++++++++++++++------------------------------ 1 files changed, 530 insertions(+), 540 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs old mode 100755 new mode 100644 index 2c9951a..f2a48fa --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs @@ -11,531 +11,526 @@ /// </summary> public class HdlAlarmsLogic { - #region 鈻� 鍙橀噺澹版槑___________________________ + #region 鈻� 鍙橀噺澹版槑___________________________ - /// <summary> - /// 鏈湴瀹夐槻鏁版嵁 - /// </summary> - private static HdlAlarmsLogic m_Current = null; - /// <summary> - /// 鏈湴瀹夐槻鏁版嵁 - /// </summary> - public static HdlAlarmsLogic Current - { - get - { - if (m_Current == null) - { - m_Current = new HdlAlarmsLogic(); - } - return m_Current; - } - } - - /// <summary> - /// 瀹夐槻涓婃姤淇℃伅 - /// </summary> - public List<SafeguardAlarmInfo> listSafetyAlarmInfo = new List<SafeguardAlarmInfo>(); - /// <summary> - /// 闂ㄩ攣涓婃姤淇℃伅 - /// </summary> - public List<DeviceAlarmInfo> listDoorLockAlarmInfo = new List<DeviceAlarmInfo>(); - /// <summary> - /// 涓婁竴娆″畨闃蹭笂鎶ヤ俊鎭繚瀛樼殑鏂囦欢鍚嶅瓧(鑰冭檻鍒扮敤鎴锋湁鍙兘24鐐圭殑鏃跺�欙紝涓嶉��鍑篈PP) - /// </summary> + /// <summary> + /// 鏈湴瀹夐槻鏁版嵁 + /// </summary> + private static HdlAlarmsLogic m_Current = null; + /// <summary> + /// 鏈湴瀹夐槻鏁版嵁 + /// </summary> + public static HdlAlarmsLogic Current + { + get + { + if (m_Current == null) + { + m_Current = new HdlAlarmsLogic(); + } + return m_Current; + } + } + + /// <summary> + /// 瀹夐槻涓婃姤淇℃伅 + /// </summary> + public List<SafeguardAlarmInfo> listSafetyAlarmInfo = new List<SafeguardAlarmInfo>(); + /// <summary> + /// 闂ㄩ攣涓婃姤淇℃伅 + /// </summary> + public List<DeviceAlarmInfo> listDoorLockAlarmInfo = new List<DeviceAlarmInfo>(); + /// <summary> + /// 涓婁竴娆″畨闃蹭笂鎶ヤ俊鎭繚瀛樼殑鏂囦欢鍚嶅瓧(鑰冭檻鍒扮敤鎴锋湁鍙兘24鐐圭殑鏃跺�欙紝涓嶉��鍑篈PP) + /// </summary> private string oldDeviceAlarmFile = string.Empty; #endregion - - #region 鈻� 鎶ヨ淇℃伅涓婃姤浜嬩欢___________________ - - /// <summary> - /// 娣诲姞鎶ヨ淇℃伅涓婃姤浜嬩欢(涓嶉渶瑕佸啀鎵ц浠讳綍鎿嶄綔,骞朵笖姘镐箙瀛樺湪) - /// </summary> - public void AddAlarmInfoEvent() - { - //瀹夐槻璁惧涓婃姤 - HdlDeviceAttributeLogic.Current.AddAttributeEvent("SaveSafetyAlarmInfo", "IASInfoReport", (device)=> + + #region 鈻� 閲嶆柊鍒锋柊鎶ヨ淇℃伅___________________ + + /// <summary> + /// 閲嶆柊鍒锋柊鎶ヨ淇℃伅 + /// </summary> + public void RefreshAlarmInfo() + { + this.listSafetyAlarmInfo.Clear(); + this.listDoorLockAlarmInfo.Clear(); + string fileName = DateTime.Now.ToString("yyyyMMdd"); + + //瀹夐槻鎶ヨ + string fullName = System.IO.Path.Combine(DirNameResourse.SafeguardAlarmDirectory, fileName); + var data1 = HdlFileLogic.Current.ReadFileByteContent(fullName); + if (data1 != null) { - if (HdlGatewayLogic.Current.IsGatewayExist(device.CurrentGateWayId) == true) + this.listSafetyAlarmInfo = JsonConvert.DeserializeObject<List<SafeguardAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data1)); + if (this.listSafetyAlarmInfo == null) { - //淇濆瓨瀹夐槻鎶ヨ淇℃伅鍒版湰鍦� - this.SaveSafeguardAlarmInfo(device); + this.listSafetyAlarmInfo = new List<SafeguardAlarmInfo>(); } - }); - } + } - #endregion - - #region 鈻� 閲嶆柊鍒锋柊鎶ヨ淇℃伅___________________ - - /// <summary> - /// 閲嶆柊鍒锋柊鎶ヨ淇℃伅 - /// </summary> - public void RefreshAlarmInfo() - { - this.listSafetyAlarmInfo.Clear(); - 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) - { - lock (listSafetyAlarmInfo) - { - 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>(); - } - } - } - //闂ㄩ攣璁板綍 - fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory, fileName); - if (System.IO.File.Exists(fullName) == true) - { - lock (listDoorLockAlarmInfo) - { - 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>(); - } - } - } - } - - #endregion - - #region 鈻� 瀹夐槻鎶ヨ淇濆瓨_______________________ - - /// <summary> - /// 淇濆瓨瀹夐槻鎶ヨ淇℃伅鍒版湰鍦� - /// </summary> - /// <param name="device"></param> - public bool SaveSafeguardAlarmInfo(CommonDevice device) - { - int ZoneId = HdlSafeguardLogic.Current.GetZoneIdByIASZone(device); - if (ZoneId == -1) - { - //杩欎釜浼犳劅鍣ㄤ笉瀛樺湪浜庝换浣曢槻鍖� - return false; - } - var msgInfo = this.GetSensorAlarmInfo(device); - if (msgInfo == null) - { - //寮傚父锛燂紵 - return false; - } - - lock (listSafetyAlarmInfo) - { - //鑾峰彇淇濆瓨瀹夐槻淇℃伅鐨勬枃浠跺悕瀛� - string fileName = this.GetSafeguardAlarmFileName(); - - var data = new SafeguardAlarmInfo(); - data.AlarmType = SafeguardAlarmType.Sensor; - data.ZoneId = ZoneId; - data.DeviceAddr = device.DeviceAddr; - data.DeviceEpoint = device.DeviceEpoint; - data.DeviceName = device.DeviceName; - data.Time = DateTime.Now.ToString("HH:mm:ss"); - data.RoomName = Common.Room.CurrentRoom.GetRoomNameByDevice(device); - //鎶ヨ缁撴潫 - data.AlarmMsg = msgInfo.AlarmMsg != string.Empty ? msgInfo.AlarmMsg : Language.StringByID(R.MyInternationalizationString.uAlarmFinish); - //鐢垫睜鎶ヨ - data.BatteryMsg = msgInfo.BatteryMsg; - //琚媶鎶ヨ - data.DemolishmentMsg = msgInfo.DemolishmenMsg; - - //闄愬埗瀹冪殑闀垮害 - this.listSafetyAlarmInfo.Insert(0, data); - if (this.listSafetyAlarmInfo.Count > UserCenterResourse.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); - return true; - } - } - - /// <summary> - /// 淇濆瓨甯冮槻鎿嶄綔淇℃伅鍒版湰鍦� - /// </summary> - /// <param name="garrison">甯冮槻妯″紡</param> - /// <param name="appendText">闄勫姞鏂囨湰</param> - /// <param name="push">鏄惁鎺ㄩ�佸埌瀹夐槻涓荤晫闈�</param> - public void SaveSafeguardAlarmInfo(GarrisonMode garrison, string appendText = "", bool push = false) - { - if (garrison == GarrisonMode.None) - { - return; - } - - lock (listSafetyAlarmInfo) - { - //鑾峰彇淇濆瓨瀹夐槻淇℃伅鐨勬枃浠跺悕瀛� - string fileName = this.GetSafeguardAlarmFileName(); - - var data = new SafeguardAlarmInfo(); - data.Time = DateTime.Now.ToString("HH:mm:ss"); - data.AlarmType = SafeguardAlarmType.None; - if (garrison == GarrisonMode.AtHome) - { - data.AlarmType = SafeguardAlarmType.AtHome; - //娌℃湁鍐呴儴闃插尯 - if (HdlSafeguardLogic.Current.IsHadInternalDefenseArea() == false) - { - //甯冮槻宸叉墽琛� - data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteGarrison); - } - else - { - //鍦ㄥ甯冮槻宸叉墽琛� - data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteAtHomeGarrison); - } - } - else if (garrison == GarrisonMode.RemoveHome) - { - //绂诲甯冮槻宸叉墽琛� - data.AlarmType = SafeguardAlarmType.RemoveHome; - data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteRemoveHomeGarrison); - } - else if (garrison == GarrisonMode.RemoveGarrison) - { - //鎾ら槻宸叉墽琛� - data.AlarmType = SafeguardAlarmType.RemoveGarrison; - data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteWithdrawGarrison); - } - else - { - return; - } - //娣诲姞闄勫姞鏂囨湰 - data.AlarmMsg = data.AlarmMsg + appendText; - - //闄愬埗瀹冪殑闀垮害 - this.listSafetyAlarmInfo.Insert(0, data); - if (this.listSafetyAlarmInfo.Count > UserCenterResourse.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); - } - } - } - } - - /// <summary> - /// 鑾峰彇淇濆瓨瀹夐槻淇℃伅鐨勬枃浠跺悕瀛� - /// </summary> - /// <returns></returns> - private string GetSafeguardAlarmFileName() - { - string fileName = DateTime.Now.ToString("yyyyMMdd"); - if (fileName != oldDeviceAlarmFile) - { - //鑰冭檻鍒扮敤鎴锋湁鍙兘24鐐圭殑鏃跺�欎笉閫�鍑篈PP,杩欎釜鏃跺�欑洿鎺ュ埛鏂� - this.RefreshAlarmInfo(); - } - oldDeviceAlarmFile = fileName; - return fileName; - } - - /// <summary> - /// 鑾峰彇鏈湴璁板綍鐨勫畨闃叉姤璀︿俊鎭� - /// </summary> - /// <returns></returns> - public Dictionary<string, List<SafeguardAlarmInfo>> GetSafeguardAlarmInfo() - { - lock (listSafetyAlarmInfo) - { - string fullPath = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory); - //鍊熺敤涓�涓嬭嚜鍔ㄥ浠借幏鍙栨寚瀹氱洰褰曚笅闈㈢殑鏂囦欢鐨勫嚱鏁� - List<string> listFile = HdlAutoBackupLogic.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 info = JsonConvert.DeserializeObject<List<SafeguardAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data)); - if (info == null) - { - continue; - } - var listInfo = new List<SafeguardAlarmInfo>(); - for (int j = 0; j < info.Count; j++) - { - if (j == UserCenterResourse.SafetyOnedayMaxAlarmMsgCount) - { - //姣忓ぉ鏈�澶氫笁鍗佹潯鏁版嵁 - break; - } - listInfo.Add(info[j]); - } - dic[listFile[i]] = listInfo; - - if (dic.Count == UserCenterResourse.SafetyMaxAlarmMsgDay) - { - //鍙涓夊ぉ鐨勯噺 - break; - } - } - return dic; - } - } - - #endregion - - #region 鈻� 浼犳劅鍣ㄦ姤璀︾殑淇℃伅缈昏瘧鏂囨湰___________ - - /// <summary> - /// 鑾峰彇浼犳劅鍣ㄦ姤璀︾殑淇℃伅缈昏瘧鏂囨湰(杩斿洖null鍒欒〃绀烘病鏈夎揪鎴愭姤璀︽潯浠�,鍋滄鎶ヨ鍒欒繑鍥炵┖瀛楃涓�) - /// </summary> - /// <param name="i_device"></param> - /// <returns></returns> - public IASZoneReportInfo GetSensorAlarmInfo(CommonDevice i_device) - { - //IAS瀹夐槻淇℃伅涓婃姤 - if ((i_device is IASZone) == false) - { - return null; - } - string mainkey = Common.LocalDevice.Current.GetDeviceMainKeys(i_device); - //鍥犱负鎺ㄩ�佺殑鏄櫄鎷熺殑璁惧锛屾墍浠ュ幓鑾峰彇鐪熷疄鐗╃悊璁惧 - CommonDevice device = Common.LocalDevice.Current.GetDevice(mainkey); - if (device == null) - { - return null; - } - IASZone iASZone = (IASZone)i_device; - - var alarmInfo = new IASZoneReportInfo(); - if (iASZone.iASInfo.Battery == 1) - { - //鐢垫睜鐢甸噺浣� - alarmInfo.BatteryMsg = Language.StringByID(R.MyInternationalizationString.uLowElectricityConsumption); - } - if (iASZone.iASInfo.Tamper == 1) - { - //璁惧琚媶闄� - alarmInfo.DemolishmenMsg = Language.StringByID(R.MyInternationalizationString.uDeviceWasDismantled); - } - - //杩愬姩浼犳劅鍣� - if (device.IasDeviceType == 13) - { - if (iASZone.iASInfo.Alarm1 == 1) - { - //鏈変笉鏄庣墿浣撶粡杩� - alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uHadUnKnowObjectPassed); - } - } - //鐑熼浘浼犳劅鍣� - else if (device.IasDeviceType == 40) - { - if (iASZone.iASInfo.Alarm1 == 1) - { - //鐑熼浘鎶ヨ - alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uSmogAlarm); - } - } - //姘翠镜浼犳劅鍣� - else if (device.IasDeviceType == 42) - { - if (iASZone.iASInfo.Alarm1 == 1) - { - //妫�娴嬪埌婕忔按 - alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uWaterLeakageDetection); - } - } - //鐕冩皵浼犳劅鍣� - else if (device.IasDeviceType == 43) - { - if (iASZone.iASInfo.Alarm1 == 1) - { - //鐕冩皵娉勬紡 - alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uCarbonMonoxideRevealed); - } - } - //绱ф�ユ寜閽� - else if (device.IasDeviceType == 44) - { - //绱ф�ユ寜閽� - if (iASZone.iASInfo.Alarm1 == 1) - { - //绱ф�ユ寜閽鎸変笅 - alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uEmergencyButtonPressdown); - } - } - //閽ュ寵鎵� - else if (device.IasDeviceType == 277) - { - if (iASZone.iASInfo.Alarm1 == 1) - { - //閽ュ寵鎵hЕ鍙戞姤璀� - alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uKeyFobAlarm); - } - } - //闂ㄧ獥浼犳劅鍣� - else if (device.IasDeviceType == 21 || device.IasDeviceType == 22) - { - if (iASZone.iASInfo.Alarm1 == 1) - { - //闂ㄧ獥琚墦寮� - alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorOrWindowHadBeenOpen); - } - else - { - //闂ㄧ獥宸插叧闂� - alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorOrWindowHadClosed); - } - } - else - { - //浼犳劅鍣� - if (iASZone.iASInfo.Alarm1 == 1) - { - //瑙﹀彂浼犳劅鍣ㄦ姤璀� - alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uSensorAlarmHadTriggered); - } - } - return alarmInfo; + //闂ㄩ攣璁板綍 + fullName = System.IO.Path.Combine(DirNameResourse.DoorLockAlarmDirectory, fileName); + var data2 = HdlFileLogic.Current.ReadFileByteContent(fullName); + if (data2 != null) + { + this.listDoorLockAlarmInfo = JsonConvert.DeserializeObject<List<DeviceAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data2)); + if (this.listDoorLockAlarmInfo == null) + { + this.listDoorLockAlarmInfo = new List<DeviceAlarmInfo>(); + } + } } #endregion - #region 鈻� 闂ㄩ攣鎶ヨ淇濆瓨_______________________ + #region 鈻� 瀹夐槻鎶ヨ淇濆瓨_______________________ - /// <summary> - /// 淇濆瓨闂ㄩ攣鎶ヨ淇℃伅鍒版湰鍦� - /// </summary> - /// <param name="jobject"></param> - public bool SaveDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject) + /// <summary> + /// 淇濆瓨瀹夐槻鎶ヨ淇℃伅鍒版湰鍦� + /// </summary> + /// <param name="device"></param> + public bool SaveSafeguardAlarmInfo(CommonDevice device) { - var device = Common.LocalDevice.Current.GetDevice(jobject.Value<string>("DeviceAddr"), jobject.Value<int>("Epoint")); + int ZoneId = HdlSafeguardLogic.Current.GetZoneIdByIASZone(device); + if (ZoneId == -1) + { + //杩欎釜浼犳劅鍣ㄤ笉瀛樺湪浜庝换浣曢槻鍖� + return false; + } + var msgInfo = this.GetSensorAlarmInfo(device); + if (msgInfo == null) + { + //寮傚父锛燂紵 + return false; + } + + lock (listSafetyAlarmInfo) + { + //鑾峰彇淇濆瓨瀹夐槻淇℃伅鐨勬枃浠跺悕瀛� + string fileName = this.GetSafeguardAlarmFileName(); + + var data = new SafeguardAlarmInfo(); + data.AlarmType = SafeguardAlarmType.Sensor; + data.ZoneId = ZoneId; + data.DeviceAddr = device.DeviceAddr; + data.DeviceEpoint = device.DeviceEpoint; + data.DeviceName = device.DeviceName; + data.Time = DateTime.Now.ToString("HH:mm:ss"); + data.RoomName = HdlRoomLogic.Current.GetRoomNameByDevice(device); + //鎶ヨ缁撴潫 + data.AlarmMsg = msgInfo.AlarmMsg != string.Empty ? msgInfo.AlarmMsg : Language.StringByID(R.MyInternationalizationString.uAlarmFinish); + //鐢垫睜鎶ヨ + data.BatteryMsg = msgInfo.BatteryMsg; + //琚媶鎶ヨ + data.DemolishmentMsg = msgInfo.DemolishmenMsg; + + //闄愬埗瀹冪殑闀垮害 + this.listSafetyAlarmInfo.Insert(0, data); + if (this.listSafetyAlarmInfo.Count > UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount) + { + this.listSafetyAlarmInfo.RemoveAt(this.listSafetyAlarmInfo.Count - 1); + } + + //淇濆瓨鍒版湰鍦� + string fullName = System.IO.Path.Combine(DirNameResourse.SafeguardAlarmDirectory, fileName); + HdlFileLogic.Current.SaveFileContent(fullName, this.listSafetyAlarmInfo); + + if (UserCenterResourse.DicActionForm.ContainsKey("SafetyManagementMainForm") == true) + { + var form = (Phone.UserCenter.Safety.SafetyManagementMainForm)UserCenterResourse.DicActionForm["SafetyManagementMainForm"]; + form?.AddSafeguardLogPushRow(device); + } + return true; + } + } + + /// <summary> + /// 淇濆瓨甯冮槻鎿嶄綔淇℃伅鍒版湰鍦� + /// </summary> + /// <param name="garrison">甯冮槻妯″紡</param> + /// <param name="appendText">闄勫姞鏂囨湰</param> + public void SaveSafeguardAlarmInfo(GarrisonMode garrison, string appendText = "") + { + if (garrison == GarrisonMode.None) + { + return; + } + + lock (listSafetyAlarmInfo) + { + //鑾峰彇淇濆瓨瀹夐槻淇℃伅鐨勬枃浠跺悕瀛� + string fileName = this.GetSafeguardAlarmFileName(); + + var data = new SafeguardAlarmInfo(); + data.Time = DateTime.Now.ToString("HH:mm:ss"); + data.AlarmType = SafeguardAlarmType.None; + if (garrison == GarrisonMode.AtHome) + { + data.AlarmType = SafeguardAlarmType.AtHome; + //娌℃湁鍐呴儴闃插尯 + if (HdlSafeguardLogic.Current.IsHadInternalDefenseArea() == false) + { + //甯冮槻宸叉墽琛� + data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteGarrison); + } + else + { + //鍦ㄥ甯冮槻宸叉墽琛� + data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteAtHomeGarrison); + } + } + else if (garrison == GarrisonMode.RemoveHome) + { + //绂诲甯冮槻宸叉墽琛� + data.AlarmType = SafeguardAlarmType.RemoveHome; + data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteRemoveHomeGarrison); + } + else if (garrison == GarrisonMode.RemoveGarrison) + { + //鎾ら槻宸叉墽琛� + data.AlarmType = SafeguardAlarmType.RemoveGarrison; + data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteWithdrawGarrison); + } + else + { + return; + } + //娣诲姞闄勫姞鏂囨湰 + data.AlarmMsg = data.AlarmMsg + appendText; + + //闄愬埗瀹冪殑闀垮害 + this.listSafetyAlarmInfo.Insert(0, data); + if (this.listSafetyAlarmInfo.Count > UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount) + { + this.listSafetyAlarmInfo.RemoveAt(this.listSafetyAlarmInfo.Count - 1); + } + + //淇濆瓨鍒版湰鍦� + string fullName = System.IO.Path.Combine(DirNameResourse.SafeguardAlarmDirectory, fileName); + HdlFileLogic.Current.SaveFileContent(fullName, this.listSafetyAlarmInfo); + } + } + + /// <summary> + /// 鑾峰彇淇濆瓨瀹夐槻淇℃伅鐨勬枃浠跺悕瀛� + /// </summary> + /// <returns></returns> + private string GetSafeguardAlarmFileName() + { + string fileName = DateTime.Now.ToString("yyyyMMdd"); + if (fileName != oldDeviceAlarmFile) + { + //鑰冭檻鍒扮敤鎴锋湁鍙兘24鐐圭殑鏃跺�欎笉閫�鍑篈PP,杩欎釜鏃跺�欑洿鎺ュ埛鏂� + this.RefreshAlarmInfo(); + } + oldDeviceAlarmFile = fileName; + return fileName; + } + + /// <summary> + /// 鑾峰彇鏈湴璁板綍鐨勫畨闃叉姤璀︿俊鎭� + /// </summary> + /// <returns></returns> + public Dictionary<string, List<SafeguardAlarmInfo>> GetSafeguardAlarmInfo() + { + lock (listSafetyAlarmInfo) + { + string fullPath = DirNameResourse.SafeguardAlarmDirectory; + //鑾峰彇鎸囧畾鐩綍涓嬮潰鐨勬枃浠� + List<string> listFile = HdlFileLogic.Current.GetFileFromDirectory(fullPath); + //鍗囧簭 + listFile.Sort(); + var dic = new Dictionary<string, List<SafeguardAlarmInfo>>(); + for (int i = listFile.Count - 1; i >= 0; 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) + { + continue; + } + var listInfo = new List<SafeguardAlarmInfo>(); + for (int j = 0; j < info.Count; j++) + { + if (j == UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount) + { + //姣忓ぉ鏈�澶氫笁鍗佹潯鏁版嵁 + break; + } + listInfo.Add(info[j]); + } + dic[listFile[i]] = listInfo; + + if (dic.Count == UserCenterResourse.ResidenceOption.SafetyMaxAlarmMsgDay) + { + //鍙涓夊ぉ鐨勯噺 + break; + } + } + return dic; + } + } + + #endregion + + #region 鈻� 浼犳劅鍣ㄦ姤璀︾殑淇℃伅缈昏瘧鏂囨湰___________ + + /// <summary> + /// 鑾峰彇浼犳劅鍣ㄦ姤璀︾殑淇℃伅缈昏瘧鏂囨湰(杩斿洖null鍒欒〃绀烘病鏈夎揪鎴愭姤璀︽潯浠�,鍋滄鎶ヨ鍒欒繑鍥炵┖瀛楃涓�) + /// </summary> + /// <param name="i_device"></param> + /// <returns></returns> + public IASZoneReportInfo GetSensorAlarmInfo(CommonDevice i_device) + { + //IAS瀹夐槻淇℃伅涓婃姤 + if ((i_device is IASZone) == false) + { + return null; + } + string mainkey = Common.LocalDevice.Current.GetDeviceMainKeys(i_device); + //鍥犱负鎺ㄩ�佺殑鏄櫄鎷熺殑璁惧锛屾墍浠ュ幓鑾峰彇鐪熷疄鐗╃悊璁惧 + CommonDevice device = Common.LocalDevice.Current.GetDevice(mainkey); + if (device == null) + { + return null; + } + IASZone iASZone = (IASZone)i_device; + if (iASZone.iASInfo == null) + { + return null; + } + + var alarmInfo = new IASZoneReportInfo(); + if (iASZone.iASInfo.Battery == 1) + { + //鐢垫睜鐢甸噺浣� + alarmInfo.BatteryMsg = Language.StringByID(R.MyInternationalizationString.uLowElectricityConsumption); + } + if (iASZone.iASInfo.Tamper == 1) + { + //璁惧琚媶闄� + alarmInfo.DemolishmenMsg = Language.StringByID(R.MyInternationalizationString.uDeviceWasDismantled); + } + + //杩愬姩浼犳劅鍣� + if (device.IasDeviceType == 13 || device.IasDeviceType == 541) + { + if (iASZone.iASInfo.Alarm1 == 1) + { + //鏈変汉缁忚繃 + alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uHadUnKnowObjectPassed); + } + } + //鐑熼浘浼犳劅鍣� + else if (device.IasDeviceType == 40) + { + if (iASZone.iASInfo.Alarm1 == 1) + { + //鐑熼浘鎶ヨ + alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uSmogAlarm); + } + } + //姘翠镜浼犳劅鍣� + else if (device.IasDeviceType == 42) + { + if (iASZone.iASInfo.Alarm1 == 1) + { + //妫�娴嬪埌婕忔按 + alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uWaterLeakageDetection); + } + } + //鐕冩皵浼犳劅鍣� + else if (device.IasDeviceType == 43) + { + if (iASZone.iASInfo.Alarm1 == 1) + { + //鐕冩皵娉勬紡 + alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uCarbonMonoxideRevealed); + } + } + //绱ф�ユ寜閽� + else if (device.IasDeviceType == 44) + { + //绱ф�ユ寜閽� + if (iASZone.iASInfo.Alarm1 == 1) + { + //绱ф�ユ寜閽鎸変笅 + alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uEmergencyButtonPressdown); + } + } + //閽ュ寵鎵� + else if (device.IasDeviceType == 277) + { + if (iASZone.iASInfo.Alarm1 == 1) + { + //閽ュ寵鎵hЕ鍙戞姤璀� + alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uKeyFobAlarm); + } + } + //闂ㄧ獥浼犳劅鍣� + else if (device.IasDeviceType == 21 || device.IasDeviceType == 22) + { + if (iASZone.iASInfo.Alarm1 == 1) + { + //闂ㄧ獥琚墦寮� + alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorOrWindowHadBeenOpen); + } + else + { + //闂ㄧ獥宸插叧闂� + alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorOrWindowHadClosed); + } + } + else + { + //浼犳劅鍣� + if (iASZone.iASInfo.Alarm1 == 1) + { + //瑙﹀彂浼犳劅鍣ㄦ姤璀� + alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uSensorAlarmHadTriggered); + } + } + 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 鈻� 闂ㄩ攣鎶ヨ淇濆瓨_______________________ + + /// <summary> + /// 淇濆瓨闂ㄩ攣鎶ヨ淇℃伅鍒版湰鍦� + /// </summary> + /// <param name="jobject"></param> + public bool SaveDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject) + { + var device = Common.LocalDevice.Current.GetDevice(jobject.Value<string>("DeviceAddr"), jobject.Value<int>("Epoint")); if ((device is ZigBee.Device.DoorLock) == false) { //瀹冧笉鏄棬閿� return false; - } - var msgInfo = this.GetDoorLockAlarmInfo(jobject); - if (msgInfo == null) - { - //寮傚父锛燂紵 - return false; - } - - lock (listDoorLockAlarmInfo) - { - //鑾峰彇淇濆瓨瀹夐槻淇℃伅鐨勬枃浠跺悕瀛� - string fileName = this.GetSafeguardAlarmFileName(); - - msgInfo.DeviceAddr = device.DeviceAddr; - msgInfo.DeviceEpoint = device.DeviceEpoint; - msgInfo.DeviceName = device.DeviceName; - msgInfo.Time = DateTime.Now.ToString("HH:mm:ss"); - msgInfo.RoomName = Common.Room.CurrentRoom.GetRoomNameByDevice(device); - - //闄愬埗瀹冪殑闀垮害 - this.listDoorLockAlarmInfo.Insert(0, msgInfo); - if (this.listDoorLockAlarmInfo.Count > UserCenterResourse.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); - return true; - } - } - - /// <summary> - /// 鑾峰彇鏈湴璁板綍鐨勯棬閿佹姤璀︿俊鎭� - /// </summary> - /// <returns></returns> - public Dictionary<string, List<DeviceAlarmInfo>> GetAllDoorLockAlarmInfo() - { - lock (listDoorLockAlarmInfo) - { - string fullPath = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory); - //鍊熺敤涓�涓嬭嚜鍔ㄥ浠借幏鍙栨寚瀹氱洰褰曚笅闈㈢殑鏂囦欢鐨勫嚱鏁� - List<string> listFile = HdlAutoBackupLogic.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 info = JsonConvert.DeserializeObject<List<DeviceAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data)); - if (info == null) - { - continue; - } - var listInfo = new List<DeviceAlarmInfo>(); - for (int j = 0; j < info.Count; j++) - { - if (j == UserCenterResourse.DoorLockOnedayMaxAlarmMsgCount) - { - //姣忓ぉ鏈�澶氫笁鍗佹潯鏁版嵁 - break; - } - listInfo.Add(info[j]); - } - dic[listFile[i]] = listInfo; - - if (dic.Count == UserCenterResourse.DoorLockMaxAlarmMsgDay) - { - //鍙涓夊ぉ鐨勯噺 - break; - } - } - return dic; - } + } + var msgInfo = this.GetDoorLockAlarmInfo(jobject); + if (msgInfo == null) + { + //寮傚父锛燂紵 + return false; + } + + lock (listDoorLockAlarmInfo) + { + //鑾峰彇淇濆瓨瀹夐槻淇℃伅鐨勬枃浠跺悕瀛� + string fileName = this.GetSafeguardAlarmFileName(); + + msgInfo.DeviceAddr = device.DeviceAddr; + msgInfo.DeviceEpoint = device.DeviceEpoint; + msgInfo.DeviceName = device.DeviceName; + msgInfo.Time = DateTime.Now.ToString("HH:mm:ss"); + msgInfo.RoomName = HdlRoomLogic.Current.GetRoomNameByDevice(device); + + //闄愬埗瀹冪殑闀垮害 + this.listDoorLockAlarmInfo.Insert(0, msgInfo); + if (this.listDoorLockAlarmInfo.Count > UserCenterResourse.ResidenceOption.DoorLockOnedayMaxAlarmMsgCount) + { + this.listDoorLockAlarmInfo.RemoveAt(this.listDoorLockAlarmInfo.Count - 1); + } + + //淇濆瓨鍒版湰鍦� + string fullName = System.IO.Path.Combine(DirNameResourse.DoorLockAlarmDirectory, fileName); + HdlFileLogic.Current.SaveFileContent(fullName, this.listDoorLockAlarmInfo); + + return true; + } } - #endregion + /// <summary> + /// 鑾峰彇鏈湴璁板綍鐨勯棬閿佹姤璀︿俊鎭� + /// </summary> + /// <returns></returns> + public Dictionary<string, List<DeviceAlarmInfo>> GetAllDoorLockAlarmInfo() + { + lock (listDoorLockAlarmInfo) + { + string fullPath = DirNameResourse.DoorLockAlarmDirectory; + //鑾峰彇鎸囧畾鐩綍涓嬮潰鐨勬枃浠� + List<string> listFile = HdlFileLogic.Current.GetFileFromDirectory(fullPath); + //鍗囧簭 + listFile.Sort(); + var dic = new Dictionary<string, List<DeviceAlarmInfo>>(); + for (int i = listFile.Count - 1; i >= 0; 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) + { + continue; + } + var listInfo = new List<DeviceAlarmInfo>(); + for (int j = 0; j < info.Count; j++) + { + if (j == UserCenterResourse.ResidenceOption.DoorLockOnedayMaxAlarmMsgCount) + { + //姣忓ぉ鏈�澶氫笁鍗佹潯鏁版嵁 + break; + } + listInfo.Add(info[j]); + } + dic[listFile[i]] = listInfo; - #region 鈻� 闂ㄩ攣鎶ヨ鐨勪俊鎭炕璇戞枃鏈琠____________ + if (dic.Count == UserCenterResourse.ResidenceOption.DoorLockMaxAlarmMsgDay) + { + //鍙涓夊ぉ鐨勯噺 + break; + } + } + return dic; + } + } - /// <summary> - /// 鑾峰彇闂ㄩ攣鎶ヨ鐨勪俊鎭炕璇戞枃鏈�(杩斿洖null鍒欒〃绀烘潯浠舵湭杈炬垚) - /// </summary> - /// <param name="jobject"></param> - /// <returns></returns> - private DeviceAlarmInfo GetDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject) - { - var info = (DoorLockAlarmsResult)JsonConvert.DeserializeObject<DoorLockAlarmsResult>(jobject["Data"].ToString()); - var alarmInfo = new DeviceAlarmInfo(); + #endregion + + #region 鈻� 闂ㄩ攣鎶ヨ鐨勪俊鎭炕璇戞枃鏈琠____________ + + /// <summary> + /// 鑾峰彇闂ㄩ攣鎶ヨ鐨勪俊鎭炕璇戞枃鏈�(杩斿洖null鍒欒〃绀烘潯浠舵湭杈炬垚) + /// </summary> + /// <param name="jobject"></param> + /// <returns></returns> + public DeviceAlarmInfo GetDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject) + { + var info = JsonConvert.DeserializeObject<DoorLockAlarmsResult>(jobject["Data"].ToString()); + var alarmInfo = new DeviceAlarmInfo(); if (info.Clusterid == 1) { @@ -572,62 +567,57 @@ //鏆村姏寮�闂� 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.MsgDiv = 9000; } - else if (info.AlarmCode == 32) + 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 == 232) + { + //鏈変汉璁块棶 alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg8); } } - return alarmInfo.AlarmMsg == string.Empty ? null : alarmInfo; + return alarmInfo.AlarmMsg == string.Empty ? null : alarmInfo; } #endregion #region 鈻� 涓�鑸柟娉昣__________________________ - /// <summary> - /// 鑾峰彇鎶ヨ淇℃伅鐨勬枃浠跺悕瀛� - /// </summary> - /// <returns></returns> - private string GetAlarmFileName() - { - string fileName = DateTime.Now.ToString("yyyyMMdd"); - if (fileName != oldDeviceAlarmFile) - { - //鑰冭檻鍒扮敤鎴锋湁鍙兘24鐐圭殑鏃跺�欎笉閫�鍑篈PP,杩欎釜鏃跺�欑洿鎺ュ埛鏂� - this.RefreshAlarmInfo(); - } - oldDeviceAlarmFile = fileName; - return fileName; - } - - #endregion - - #region 鈻� 缁撴瀯浣揰____________________________ - /// <summary> - /// 闂ㄩ攣鐨勬姤璀︾粨鏋� + /// 鑾峰彇鎶ヨ淇℃伅鐨勬枃浠跺悕瀛� /// </summary> - private class DoorLockAlarmsResult + /// <returns></returns> + private string GetAlarmFileName() { - /// <summary> - /// 鎶ヨ绫诲瀷 - /// </summary> - public int AlarmCode = -1; - /// <summary> - /// Clusterid - /// </summary> - public int Clusterid = -1; + string fileName = DateTime.Now.ToString("yyyyMMdd"); + if (fileName != oldDeviceAlarmFile) + { + //鑰冭檻鍒扮敤鎴锋湁鍙兘24鐐圭殑鏃跺�欎笉閫�鍑篈PP,杩欎釜鏃跺�欑洿鎺ュ埛鏂� + this.RefreshAlarmInfo(); + } + oldDeviceAlarmFile = fileName; + return fileName; } #endregion -- Gitblit v1.8.0