| | |
| | | /// </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 ■ 重新刷新报警信息___________________
|
| | |
| | | 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.SafetyOnedayMaxAlarmMsgCount)
|
| | | if (this.listSafetyAlarmInfo.Count > UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | this.listSafetyAlarmInfo.RemoveAt(this.listSafetyAlarmInfo.Count - 1);
|
| | | }
|
| | |
| | | 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;
|
| | | }
|
| | | }
|
| | |
| | | /// </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)
|
| | | {
|
| | |
| | |
|
| | | //限制它的长度
|
| | | this.listSafetyAlarmInfo.Insert(0, data);
|
| | | if (this.listSafetyAlarmInfo.Count > UserCenterResourse.SafetyOnedayMaxAlarmMsgCount)
|
| | | if (this.listSafetyAlarmInfo.Count > UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | this.listSafetyAlarmInfo.RemoveAt(this.listSafetyAlarmInfo.Count - 1);
|
| | | }
|
| | |
| | | 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);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | var listInfo = new List<SafeguardAlarmInfo>();
|
| | | for (int j = 0; j < info.Count; j++)
|
| | | {
|
| | | if (j == UserCenterResourse.SafetyOnedayMaxAlarmMsgCount)
|
| | | if (j == UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | //每天最多三十条数据
|
| | | break;
|
| | |
| | | }
|
| | | dic[listFile[i]] = listInfo;
|
| | |
|
| | | if (dic.Count == UserCenterResourse.SafetyMaxAlarmMsgDay)
|
| | | if (dic.Count == UserCenterResourse.ResidenceOption.SafetyMaxAlarmMsgDay)
|
| | | {
|
| | | //只要三天的量
|
| | | break;
|
| | |
| | | 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 ■ 门锁报警保存_______________________
|
| | | |
| | |
| | | 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.DoorLockOnedayMaxAlarmMsgCount)
|
| | | if (this.listDoorLockAlarmInfo.Count > UserCenterResourse.ResidenceOption.DoorLockOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | this.listDoorLockAlarmInfo.RemoveAt(this.listDoorLockAlarmInfo.Count - 1);
|
| | | }
|
| | |
| | | var listInfo = new List<DeviceAlarmInfo>();
|
| | | for (int j = 0; j < info.Count; j++)
|
| | | {
|
| | | if (j == UserCenterResourse.DoorLockOnedayMaxAlarmMsgCount)
|
| | | if (j == UserCenterResourse.ResidenceOption.DoorLockOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | //每天最多三十条数据
|
| | | break;
|
| | |
| | | }
|
| | | dic[listFile[i]] = listInfo;
|
| | |
|
| | | if (dic.Count == UserCenterResourse.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 |