| | |
| | | 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>();
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | 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);
|
| | | //电池报警
|
| | |
| | |
|
| | | //限制它的长度
|
| | | 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)
|
| | | {
|
| | |
| | |
|
| | | //限制它的长度
|
| | | 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);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | {
|
| | | 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)
|
| | | {
|
| | |
| | | var listInfo = new List<SafeguardAlarmInfo>();
|
| | | for (int j = 0; j < info.Count; j++)
|
| | | {
|
| | | if (j == UserCenterResourse.Option.SafetyOnedayMaxAlarmMsgCount)
|
| | | if (j == UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | //每天最多三十条数据
|
| | | break;
|
| | |
| | | }
|
| | | dic[listFile[i]] = listInfo;
|
| | |
|
| | | if (dic.Count == UserCenterResourse.Option.SafetyMaxAlarmMsgDay)
|
| | | if (dic.Count == UserCenterResourse.ResidenceOption.SafetyMaxAlarmMsgDay)
|
| | | {
|
| | | //只要三天的量
|
| | | break;
|
| | |
| | | return null;
|
| | | }
|
| | | IASZone iASZone = (IASZone)i_device;
|
| | | if (iASZone.iASInfo == null)
|
| | | {
|
| | | return null;
|
| | | }
|
| | |
|
| | | var alarmInfo = new IASZoneReportInfo();
|
| | | if (iASZone.iASInfo.Battery == 1)
|
| | |
| | | }
|
| | |
|
| | | //运动传感器
|
| | | if (device.IasDeviceType == 13)
|
| | | if (device.IasDeviceType == 13 || device.IasDeviceType == 541)
|
| | | {
|
| | | if (iASZone.iASInfo.Alarm1 == 1)
|
| | | {
|
| | | //有不明物体经过
|
| | | //有人经过
|
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uHadUnKnowObjectPassed);
|
| | | }
|
| | | }
|
| | |
| | | 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 |
| | | |
| | | |
| | |
| | | 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;
|
| | | }
|
| | | }
|
| | |
| | | {
|
| | | 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)
|
| | | {
|
| | |
| | | var listInfo = new List<DeviceAlarmInfo>();
|
| | | for (int j = 0; j < info.Count; j++)
|
| | | {
|
| | | if (j == UserCenterResourse.Option.DoorLockOnedayMaxAlarmMsgCount)
|
| | | if (j == UserCenterResourse.ResidenceOption.DoorLockOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | //每天最多三十条数据
|
| | | break;
|
| | |
| | | }
|
| | | dic[listFile[i]] = listInfo;
|
| | |
|
| | | if (dic.Count == UserCenterResourse.Option.DoorLockMaxAlarmMsgDay)
|
| | | if (dic.Count == UserCenterResourse.ResidenceOption.DoorLockMaxAlarmMsgDay)
|
| | | {
|
| | | //只要三天的量
|
| | | break;
|
| | |
| | | /// </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) |
| | |
| | | //暴力开门 |
| | | 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); |
| | | } |
| | | } |
| | |
| | | }
|
| | | 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 |