From 431fa50555fca6730b1100bb9a2d9eacbbf74d21 Mon Sep 17 00:00:00 2001
From: chenqiyang <1406175257@qq.com>
Date: 星期五, 26 八月 2022 13:04:05 +0800
Subject: [PATCH] 1.更改build版本 2.替换全视通dll包
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSafeguardLogic.cs | 4772 ++++++++++++++++++++++++++++++-----------------------------
1 files changed, 2,406 insertions(+), 2,366 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSafeguardLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSafeguardLogic.cs
old mode 100755
new mode 100644
index 32f3a09..03bcd7a
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSafeguardLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSafeguardLogic.cs
@@ -1,2366 +1,2406 @@
-锘縰sing Newtonsoft.Json;
-using Shared.Common;
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
-using ZigBee.Device;
-
-namespace Shared.Phone.UserCenter
-{
- /// <summary>
- /// <para>瀹夐槻鏈湴缂撳瓨(浠g爜浣跨敤)</para>
- /// <para>闃插尯ID(ZoneId)锛�</para>
- /// <para>1锛�24灏忔椂闃插尯 2锛�24灏忔椂闈欓煶闃插尯 3锛氬嚭鍏ラ槻鍖� 4锛氬唴閮ㄩ槻鍖� 5锛氬懆鐣岄槻鍖�</para>
- /// <para>闃插尯妯″紡ID(ActionType -> 闃插尯ID鎹㈢畻:ZoneId=3,4,5閮藉綋鍋�3澶勭悊)锛�</para>
- /// <para>1锛�24灏忔椂闃插尯 2锛氶潤闊抽槻鍖� 3锛氬叾浠栭槻鍖猴紙鍑哄叆闃插尯銆佸唴閮ㄩ槻鍖恒�佸懆鐣岄槻鍖猴級</para>
- /// <para>甯冮槻妯″紡ID(GarrisonMode)锛�</para>
- /// <para>1锛氬湪瀹跺竷闃� 鎴栬�� 甯冮槻(鍐呴儴闃插尯娌℃湁璁剧疆鐨勬椂鍊�) 2锛氱瀹跺竷闃�</para>
- /// </summary>
- public class HdlSafeguardLogic
- {
- #region 鈻� 鍙橀噺澹版槑___________________________
-
- /// <summary>
- /// 鏈湴瀹夐槻鏁版嵁
- /// </summary>
- private static HdlSafeguardLogic m_Current = null;
- /// <summary>
- /// 鏈湴瀹夐槻鏁版嵁
- /// </summary>
- public static HdlSafeguardLogic Current
- {
- get
- {
- if (m_Current == null)
- {
- m_Current = new HdlSafeguardLogic();
- }
- return m_Current;
- }
- set
- {
- m_Current = value;
- }
- }
-
- /// <summary>
- /// 褰撳墠鐨勫竷闃叉ā寮�(娉ㄦ剰,杩欎釜涓滆タ鍙粰瀹夐槻涓荤晫闈㈠垵濮嬪寲鐨勬椂鍊欎娇鐢紒锛�)
- /// </summary>
- public GarrisonMode NowGarrisonMode = GarrisonMode.None;
- /// <summary>
- /// 鐢ㄦ埛瀵嗙爜鐨勭紦瀛�
- /// </summary>
- private string UserPassword = null;
- /// <summary>
- /// 瀹夐槻鏁版嵁缂撳瓨
- /// </summary>
- private Dictionary<int, SafeguardZoneInfo> dicAllZoneInfo = new Dictionary<int, SafeguardZoneInfo>();
-
- #endregion
-
- #region 鈻� 鍒锋柊瀹夐槻___________________________
-
- /// <summary>
- /// 浠庢柊浠庣綉鍏抽偅閲岃幏鍙栨暟鎹�(澶辫触鏃朵細寮瑰嚭淇℃伅妗�)
- /// </summary>
- /// <returns></returns>
- public async Task<bool> ReFreshByGateway()
- {
- //鍏堟竻绌�
- this.dicAllZoneInfo.Clear();
- var mainGateway = ZbGateway.MainGateWay;
- if (mainGateway == null)
- {
- //閿欒:缃戝叧瀵硅薄涓㈠け
- string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg);
- this.ShowTipMsg(msg);
- return false;
- }
- var mainWayId = mainGateway.GwId;
-
- //涓婚鏁板浐瀹�5+3+1
- int topicCount = 9;
- //閿欒
- bool error = false;
-
- //闃插尯璁惧淇℃伅
- var listDevice = new List<Safeguard.GetZoneDeviceListByIdResponData>();
- //鎶ヨ鐩爣
- var listAlarm = new List<Safeguard.CatZoneActionResponseData>();
- //瀹夐槻妯″紡
- var listMode = new List<Safeguard.GetModeUsingResponseData>();
-
- Action<string, string> action = (topic, message) =>
- {
- var gatewayID = topic.Split('/')[0];
- if (gatewayID != mainWayId)
- {
- return;
- }
-
- //妫�娴嬪叡閫氶敊璇�
- if (topic == gatewayID + "/" + "Error_Respon")
- {
- var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
-
- var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
- if (temp != null)
- {
- string msg = HdlCheckLogic.Current.CheckCommonErrorCode(temp.Error);
- if (msg != null)
- {
- this.ShowTipMsg(msg);
- }
- }
- error = true;
- }
- //闃插尯璁惧淇℃伅
- if (topic == gatewayID + "/Security/GetZoneDeviceList_Respon")
- {
- var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
- var result = JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
- if (result == 0)
- {
- var data = JsonConvert.DeserializeObject<Safeguard.GetZoneDeviceListByIdResponData>(jobject["Data"].ToString());
- if (data != null)
- {
- //灏嗛槻鍖轰紶鎰熷櫒璁惧鍒楄〃鍔犲叆缂撳瓨
- listDevice.Add(data);
- topicCount--;
- return;
- }
- }
- error = true;
- }
- //闃插尯鎶ヨ鐩爣
- if (topic == gatewayID + "/Security/GetZoneAction_Respon")
- {
- var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
- var result = JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
- if (result == 0)
- {
- var data = JsonConvert.DeserializeObject<Safeguard.CatZoneActionResponseData>(jobject["Data"].ToString());
- if (data != null)
- {
- //灏嗛槻鍖烘姤璀︾洰鏍囧姞鍏ョ紦瀛�
- listAlarm.Add(data);
- topicCount--;
- return;
- }
- }
- error = true;
- }
- //褰撳墠甯冮槻妯″紡
- if (topic == gatewayID + "/Security/GetCurrentMode_Respon")
- {
- var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
- var result = JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
- if (result != 0)
- {
- //褰撳墠娌℃湁妯′豢妯″紡
- this.NowGarrisonMode = GarrisonMode.None;
- }
- else
- {
- var data = JsonConvert.DeserializeObject<Safeguard.GetModeUsingResponseData>(jobject["Data"].ToString());
- if (data != null)
- {
- //璁剧疆褰撳墠妯′豢妯″紡
- this.NowGarrisonMode = (GarrisonMode)data.ModeId;
- }
- }
- topicCount--;
- }
- };
- mainGateway.Actions += action;
- try
- {
- var jObject = new Newtonsoft.Json.Linq.JObject() { { "Cluster_ID", 0 }, { "Command", 4036 } };
- mainGateway.Send("Security/GetSecurityInfo", jObject.ToString());
- }
- catch { }
-
- var dateTime = DateTime.Now;
- while ((DateTime.Now - dateTime).TotalMilliseconds < 3000)
- {
- if (topicCount <= 0 || error == true)
- {
- //9娆′富棰樺叏閮ㄦ帴鏀跺畬鎴�
- break;
- }
- await Task.Delay(50);
- }
- mainGateway.Actions -= action;
-
- if (topicCount > 0)
- {
- //鑾峰彇闃插尯淇℃伅澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uGetSafetyInfoFail);
- this.ShowTipMsg(msg);
- return false;
- }
-
- //灏嗛槻鍖轰紶鎰熷櫒璁惧鍒楄〃鍔犲叆缂撳瓨
- foreach (var data in listDevice)
- {
- this.SetZoneSensorDeviceToMemory(data);
- }
- //灏嗛槻鍖烘姤璀︾洰鏍囧姞鍏ョ紦瀛�
- foreach (var data in listAlarm)
- {
- this.SetAlarmTargetDeviceToMemory(data);
- }
-
- return true;
- }
-
- /// <summary>
- /// 灏嗛槻鍖鸿澶�(浼犳劅鍣�)鍒楄〃鍔犲叆缂撳瓨
- /// </summary>
- /// <param name="allData">闃插尯鏁版嵁</param>
- private void SetZoneSensorDeviceToMemory(Safeguard.GetZoneDeviceListByIdResponData allData)
- {
- if (this.dicAllZoneInfo.ContainsKey(allData.ZoneId) == false)
- {
- this.dicAllZoneInfo[allData.ZoneId] = new SafeguardZoneInfo();
- }
-
- //璁剧疆鍩烘湰淇℃伅
- SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[allData.ZoneId];
- zoneInfo.ZoneId = allData.ZoneId;
- zoneInfo.ZoneName = allData.ZoneName;
-
- //澶勭悊璁惧
- foreach (var data2 in allData.DeviceList)
- {
- string mainKey = LocalDevice.Current.GetDeviceMainKeys(data2.MacAddr, data2.Epoint);
- //浼犳劅鍣ㄨ澶囦俊鎭�
- var Deviceinfo = new Safeguard.ZoneDeviceListData();
- Deviceinfo.IsBypass = data2.IsBypass;
- Deviceinfo.MomentStatus = data2.MomentStatus;
- Deviceinfo.TriggerZoneStatus = data2.TriggerZoneStatus;
- Deviceinfo.MacAddr = data2.MacAddr;
- Deviceinfo.Epoint = data2.Epoint;
- zoneInfo.dicSensor[mainKey] = Deviceinfo;
-
- //鏈湴鏄惁鏈夎繖涓澶�
- CommonDevice device = LocalDevice.Current.GetDevice(mainKey);
- if (device != null)
- {
- //鍏ㄩ儴璁惧
- zoneInfo.dicAllDevice[mainKey] = device.FilePath;
- }
- else
- {
- //鍏ㄩ儴璁惧(缂哄け鐨勬湭鐭ヨ澶�)
- var tempDevice = new CommonDevice();
- tempDevice.DeviceAddr = data2.MacAddr;
- tempDevice.DeviceEpoint = data2.Epoint;
- zoneInfo.dicAllDevice[mainKey] = tempDevice.FilePath;
- }
- }
- }
-
- /// <summary>
- /// 灏嗘姤璀︾洰鏍囧垪琛ㄥ姞鍏ョ紦瀛�
- /// </summary>
- /// <param name="resData">
- /// <para>1锛�24灏忔椂闃插尯瑙﹀彂鍔ㄤ綔</para>
- /// <para>2锛�24灏忔椂闈欓煶闃插尯瑙﹀彂鍔ㄤ綔</para>
- /// <para>3锛氬叾浠栭槻鍖猴紙鍑哄叆闃插尯銆佸唴閮ㄩ槻鍖恒�佸懆鐣岄槻鍖猴級瑙﹀彂鍔ㄤ綔</para>
- /// </param>
- /// <param name="mode">鏄惁鏄剧ず閿欒</param>
- /// <returns></returns>
- private void SetAlarmTargetDeviceToMemory(Safeguard.CatZoneActionResponseData resData, ShowErrorMode mode = ShowErrorMode.NO)
- {
- int ActionType = resData.ActionType;
- if (this.dicAllZoneInfo.ContainsKey(ActionType) == false)
- {
- this.dicAllZoneInfo[ActionType] = new SafeguardZoneInfo();
- //璁剧疆鍩烘湰淇℃伅
- this.dicAllZoneInfo[ActionType].ZoneId = ActionType;
- }
- SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[ActionType];
-
- zoneInfo.dicAlarmDevice.Clear();
- zoneInfo.dicScenes.Clear();
-
- //淇℃伅鎺ㄩ��
- zoneInfo.InformationPush = resData.IsDisablePushMessage;
-
- foreach (var data in resData.Actions)
- {
- //璁惧
- if (data.Type == 0)
- {
- //鏈湴鏄惁鏈夎繖涓澶�
- string mainKey = LocalDevice.Current.GetDeviceMainKeys(data.DeviceAddr, data.Epoint);
- //鎶ヨ淇℃伅
- zoneInfo.dicAlarmDevice[mainKey] = data;
- CommonDevice device = LocalDevice.Current.GetDevice(mainKey);
- if (device != null)
- {
- //鍏ㄩ儴璁惧
- zoneInfo.dicAllDevice[mainKey] = device.FilePath;
- }
- else
- {
- //鍏ㄩ儴璁惧(缂哄け鐨勬湭鐭ヨ澶�)
- var tempDevice = new CommonDevice();
- tempDevice.DeviceAddr = data.DeviceAddr;
- tempDevice.DeviceEpoint = data.Epoint;
- zoneInfo.dicAllDevice[mainKey] = tempDevice.FilePath;
- }
- }
- //鍦烘櫙
- else if (data.Type == 1)
- {
- //鍦烘櫙
- zoneInfo.dicScenes[data.ScenesId] = data.ESName;
- }
- }
- }
- #endregion
-
- #region 鈻� 鑾峰彇璁惧___________________________
-
- /// <summary>
- /// 鑾峰彇鎸囧畾闃插尯鐨勬墍鏈変紶鎰熷櫒璁惧鐨勪俊鎭�
- /// </summary>
- /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
- /// <returns></returns>
- public List<Safeguard.ZoneDeviceListData> GetSensorDevicesInfoByZoonID(int zoonId)
- {
- var list = new List<Safeguard.ZoneDeviceListData>();
- if (this.dicAllZoneInfo.ContainsKey(zoonId) == false)
- {
- return list;
- }
- SafeguardZoneInfo info = this.dicAllZoneInfo[zoonId];
- foreach (var data in info.dicSensor.Values)
- {
- list.Add(data);
- }
-
- return list;
- }
-
- /// <summary>
- /// 鑾峰彇鍏ㄩ儴鐨勪紶鎰熷櫒璁惧鐨勪俊鎭�(鎸夐槻鍖哄垎缁�)
- /// </summary>
- /// <returns></returns>
- public Dictionary<int, List<Safeguard.ZoneDeviceListData>> GetAllSensorDeviceInfo()
- {
- var dic = new Dictionary<int, List<Safeguard.ZoneDeviceListData>>();
-
- foreach (int ZoonId in this.dicAllZoneInfo.Keys)
- {
- List<Safeguard.ZoneDeviceListData> list = this.GetSensorDevicesInfoByZoonID(ZoonId);
- if (list.Count > 0)
- {
- dic[ZoonId] = list;
- }
- }
- return dic;
- }
-
- /// <summary>
- /// 鏍规嵁闃插尯ID鑾峰彇鏈湴鎶ヨ鐩爣
- /// </summary>
- /// <param name="ZoneId">闃插尯ID</param>
- /// <returns></returns>
- public List<Safeguard.CatActionResponseObj> GetLocalAlarmTargetInfoByZoneId(int ZoneId)
- {
- if (ZoneId > 3)
- {
- ZoneId = 3;
- }
- if (this.dicAllZoneInfo.ContainsKey(ZoneId) == false)
- {
- return new List<Safeguard.CatActionResponseObj>();
- }
- SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[ZoneId];
-
- //浼樺厛鍦烘櫙鍚�
- var list = new List<Safeguard.CatActionResponseObj>();
- foreach (int sceneId in zoneInfo.dicScenes.Keys)
- {
- var objData = new Safeguard.CatActionResponseObj();
- objData.Type = 1;
- objData.ScenesId = sceneId;
- objData.ESName = zoneInfo.dicScenes[sceneId];
-
- list.Add(objData);
- }
- foreach (var data in zoneInfo.dicAlarmDevice.Values)
- {
- list.Add(data);
- }
- return list;
- }
-
- /// <summary>
- /// 鑾峰彇鎸囧畾浼犳劅鍣ㄦ墍澶勭殑闃插尯ID(涓嶅瓨鍦ㄥ垯杩斿洖-1)
- /// </summary>
- /// <param name="device">鎸囧畾浼犳劅鍣ㄨ澶�</param>
- /// <returns></returns>
- public int GetZoneIdByIASZone(CommonDevice device)
- {
- string mainkey = this.GetDeviceMainKeys(device);
- foreach (SafeguardZoneInfo info in this.dicAllZoneInfo.Values)
- {
- if (info.dicSensor.ContainsKey(mainkey) == true)
- {
- return info.ZoneId;
- }
- }
- return -1;
- }
-
- #endregion
-
- #region 鈻� 娣诲姞浼犳劅鍣╛________________________
-
- /// <summary>
- /// 娣诲姞浼犳劅鍣ㄨ澶囧埌闃插尯(澶辫触鏃朵細寮瑰嚭淇℃伅妗�)
- /// </summary>
- /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
- /// <param name="listdevice">璁惧鍒楄〃</param>
- public async Task<bool> AddSensorDevice(int zoonId, List<CommonDevice> listdevice)
- {
- //鐜拌幏鍙栧綋鍓嶇殑甯冮槻妯″紡
- var safetyMode = await this.GetSafetyMode();
- if (safetyMode != null)
- {
- //褰撳墠姝e浜庡竷闃叉ā寮�,鏃犳硶娣诲姞璁惧
- string msg = Language.StringByID(R.MyInternationalizationString.uCanNotAddDeviceInGarrisonMode);
- this.ShowErrorMsg(msg);
- return false;
- }
- //鏍¢獙瀵嗙爜
- bool result = await this.ShowSafetyAdminValidatedDialog();
- if (result == false)
- {
- return false;
- }
-
- if (listdevice.Count == 0)
- {
- return true;
- }
-
- List<int> listMomentStatus = new List<int>();
- List<int> listTriggerStatus = new List<int>();
- foreach (var device in listdevice)
- {
- int MomentStatus = 1;
- int TriggerZoneStatus = 1;
- //鑾峰彇瀹夐槻浼犳劅鍣ㄧ殑鐬棿鐘舵�佽瀹氬��
- this.GetSafeguardSensorMomentStatus(device, ref MomentStatus, ref TriggerZoneStatus);
-
- listMomentStatus.Add(MomentStatus);
- listTriggerStatus.Add(TriggerZoneStatus);
- }
-
- //娣诲姞璁惧鍒扮綉鍏�
- List<string> listSuccess = await this.AddSensorDeviceToGateway(zoonId, listdevice, listMomentStatus, listTriggerStatus);
- if (listSuccess == null)
- {
- return false;
- }
-
- //淇敼缂撳瓨
- if (this.dicAllZoneInfo.ContainsKey(zoonId) == false)
- {
- this.dicAllZoneInfo[zoonId] = new SafeguardZoneInfo();
- }
-
- SafeguardZoneInfo info = this.dicAllZoneInfo[zoonId];
- for (int i = 0; i < listdevice.Count; i++)
- {
- CommonDevice device = listdevice[i];
- string mainkey = this.GetDeviceMainKeys(device);
- if (listSuccess.Contains(mainkey) == false)
- {
- //娌℃湁娣诲姞鎴愬姛
- continue;
- }
-
- Safeguard.ZoneDeviceListData sensorInfo = null;
- if (info.dicSensor.ContainsKey(mainkey) == true)
- {
- sensorInfo = info.dicSensor[mainkey];
- }
- else
- {
- sensorInfo = new Safeguard.ZoneDeviceListData();
- info.dicSensor[mainkey] = sensorInfo;
- sensorInfo.Epoint = device.DeviceEpoint;
- sensorInfo.MacAddr = device.DeviceAddr;
- sensorInfo.IsBypass = 0;
- }
- info.dicAllDevice[mainkey] = device.FilePath;
- //璁惧淇℃伅
- sensorInfo.MomentStatus = listMomentStatus[0];
- sensorInfo.TriggerZoneStatus = listTriggerStatus[0];
- }
-
- return true;
- }
-
- /// <summary>
- /// 娣诲姞浼犳劅鍣ㄨ澶囧埌缃戝叧(澶辫触鏃朵細寮瑰嚭淇℃伅妗�)
- /// </summary>
- /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
- /// <param name="listdevice">璁惧鍒楄〃</param>
- /// <param name="listMomentStatus">璁惧涓婃姤鐨勭姸鎬佹槸鍚︿负鐬棿鐘舵��</param>
- /// <param name="listTriggerStatus">鎴戜篃涓嶇煡閬撹繖涓槸浠�涔堜笢瑗�</param>
- /// <returns></returns>
- private async Task<List<string>> AddSensorDeviceToGateway(int zoonId, List<CommonDevice> listdevice, List<int> listMomentStatus, List<int> listTriggerStatus)
- {
- var addData = new Safeguard.AddDeviceToZoneData();
- addData.ZoneId = zoonId;
- addData.LoginToken = this.GetLoginToken();
-
- for (int i = 0; i < listdevice.Count; i++)
- {
- CommonDevice device = listdevice[i];
- //鏁版嵁缁勮
- var deviceData = new Safeguard.DeviceListObj();
- deviceData.Epoint = device.DeviceEpoint;
- deviceData.MacAddr = device.DeviceAddr;
- deviceData.MomentStatus = listMomentStatus[i];
- deviceData.TriggerZoneStatus = listTriggerStatus[i];
- addData.DeviceList.Add(deviceData);
- }
-
- //娌℃湁鏁版嵁
- if (addData.DeviceList.Count == 0)
- {
- return new List<string>();
- }
- //娣诲姞鍒扮綉鍏�
- var returnData = await Safeguard.AddDeviceToZoneAsync(addData);
- if (returnData == null || returnData.addDeviceToPartResponseData == null || returnData.addDeviceToPartResponseData.Result == 1)
- {
- //鍚戦槻鍖烘坊鍔犺澶囧け璐�
- string msg = Language.StringByID(R.MyInternationalizationString.uAddDeviceToZoneFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, returnData);
-
- this.ShowErrorMsg(msg);
- return null;
- }
-
- List<string> listSuccess = new List<string>();
- foreach (var data in returnData.addDeviceToPartResponseData.DeviceList)
- {
- //涓�鎵硅澶囬噷闈紝鎴愬姛娣诲姞鐨�
- if (data.Status == 0)
- {
- listSuccess.Add(LocalDevice.Current.GetDeviceMainKeys(data.MacAddr, data.Epoint));
- }
- else if (data.Status == 1)
- {
- var device = Common.LocalDevice.Current.GetDevice(data.MacAddr, data.Epoint);
- string msg = Common.LocalDevice.Current.GetDeviceEpointName(device) + "\r\n";
- //鐩爣璁惧涓嶅瓨鍦�
- msg += Language.StringByID(R.MyInternationalizationString.uTargetDeviceIsNotExsit);
- this.ShowTipMsg(msg);
- }
- else if (data.Status == 2)
- {
- var device = Common.LocalDevice.Current.GetDevice(data.MacAddr, data.Epoint);
- string msg = Common.LocalDevice.Current.GetDeviceEpointName(device) + "\r\n";
- //璁惧宸插姞鍏ュ叾瀹冮槻鍖�
- msg += Language.StringByID(R.MyInternationalizationString.uDeviceHadAddToTheOtherGarrison);
- this.ShowTipMsg(msg);
- }
- }
-
- return listSuccess;
- }
-
- /// <summary>
- /// 鑾峰彇瀹夐槻浼犳劅鍣ㄧ殑鐬棿鐘舵�佽瀹氬��(娣诲姞浼犳劅鍣ㄥ埌瀹夐槻鏃讹紝闇�瑕佽皟鐢ㄦ鏂规硶鏉ュ垵濮嬪寲鍙傛暟)
- /// </summary>
- /// <param name="device">璁惧瀵硅薄</param>
- /// <param name="MomentStatus">璁惧涓婃姤鐨勭姸鎬佹槸鍚︿负鐬棿鐘舵��</param>
- /// <param name="TriggerZoneStatus">鎴戜篃涓嶇煡閬撹繖涓槸浠�涔堜笢瑗�</param>
- public void GetSafeguardSensorMomentStatus(CommonDevice device, ref int MomentStatus, ref int TriggerZoneStatus)
- {
- //杩愬姩浼犳劅鍣�
- if (device.IasDeviceType == 13)
- {
- MomentStatus = 1;
- TriggerZoneStatus = 1;
- }
- //鐑熼浘浼犳劅鍣�
- else if (device.IasDeviceType == 40)
- {
- MomentStatus = 1;
- TriggerZoneStatus = 1;
- }
- //姘翠镜浼犳劅鍣�
- else if (device.IasDeviceType == 42)
- {
- MomentStatus = 1;
- TriggerZoneStatus = 1;
- }
- //鐕冩皵浼犳劅鍣�
- else if (device.IasDeviceType == 43)
- {
- MomentStatus = 1;
- TriggerZoneStatus = 1;
- }
- //绱ф�ユ寜閽�
- else if (device.IasDeviceType == 44)
- {
- MomentStatus = 1;
- TriggerZoneStatus = 1;
- }
- //閽ュ寵鎵�
- else if (device.IasDeviceType == 277)
- {
- MomentStatus = 1;
- TriggerZoneStatus = 1;
- }
- //闂ㄧ獥浼犳劅鍣�
- else if (device.IasDeviceType == 21 || device.IasDeviceType == 22)
- {
- MomentStatus = 0;
- TriggerZoneStatus = 1;
- }
- //濡傛灉鏄櫄鎷熻澶囷紝鍒欒繖涓笢瑗挎案鎭掍负0
- if (device.DriveCode > 0)
- {
- MomentStatus = 0;
- }
- }
-
- #endregion
-
- #region 鈻� 鍒犻櫎璁惧___________________________
-
- /// <summary>
- /// 鍒犻櫎浼犳劅鍣ㄨ澶�
- /// </summary>
- /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
- /// <param name="listdevice">浼犳劅鍣ㄨ澶囧璞�</param>
- public async Task<bool> DeleteSensorDevice(int zoonId, List<CommonDevice> listdevice)
- {
- //鐜拌幏鍙栧綋鍓嶇殑甯冮槻妯″紡
- var safetyMode = await this.GetSafetyMode();
- if (safetyMode != null)
- {
- //褰撳墠姝e浜庡竷闃叉ā寮�,鏃犳硶鍒犻櫎璁惧
- string msg = Language.StringByID(R.MyInternationalizationString.uCanNotDeleteDeviceInGarrisonMode);
- this.ShowErrorMsg(msg);
- return false;
- }
-
- //鏍¢獙瀵嗙爜
- bool result = await this.ShowSafetyAdminValidatedDialog();
- if (result == false)
- {
- return false;
- }
-
- if (listdevice.Count == 0)
- {
- return true;
- }
-
- //浠庣綉鍏抽偅閲屽垹闄よ澶�
- List<string> listKeys = await this.DeleteSensorDeviceFromGateway(zoonId, listdevice);
- if (listKeys == null)
- {
- return false;
- }
-
- //淇敼缂撳瓨
- if (this.dicAllZoneInfo.ContainsKey(zoonId) == false)
- {
- return true;
- }
-
- SafeguardZoneInfo info = this.dicAllZoneInfo[zoonId];
- foreach (CommonDevice device in listdevice)
- {
- string mainkey = this.GetDeviceMainKeys(device);
- if (info.dicSensor.ContainsKey(mainkey) == true
- && listKeys.Contains(mainkey) == true)
- {
- info.dicSensor.Remove(mainkey);
- info.dicAllDevice.Remove(mainkey);
- }
- }
- return true;
- }
-
- /// <summary>
- /// 浠庣綉鍏抽偅閲屽垹闄や紶鎰熷櫒璁惧
- /// </summary>
- /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
- /// <param name="listdevice">璁惧瀵硅薄</param>
- /// <returns></returns>
- private async Task<List<string>> DeleteSensorDeviceFromGateway(int zoonId, List<CommonDevice> listdevice)
- {
- var deteleData = new Safeguard.RemoveEqToZoneData();
- deteleData.ZoneId = zoonId;
- deteleData.LoginToken = this.GetLoginToken();
-
- foreach (CommonDevice device in listdevice)
- {
- //缁勮鏁版嵁
- var removeData = new Safeguard.RemoveDeviceListObj();
- removeData.MacAddr = device.DeviceAddr;
- removeData.Epoint = device.DeviceEpoint;
- deteleData.RemoveDeviceList.Add(removeData);
- }
-
- //娌℃湁鏁版嵁
- if (deteleData.RemoveDeviceList.Count == 0)
- {
- return new List<string>();
- }
-
- //浠庣綉鍏充腑绉婚櫎
- var returnData = await Safeguard.RemoveDeviceToZoneAsync(deteleData);
- if (returnData == null || returnData.removeDeviceToZoneResponseData == null || returnData.removeDeviceToZoneResponseData.Result == 1)
- {
- //璁惧鍒犻櫎澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uDeviceDeleteFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, returnData);
-
- this.ShowErrorMsg(msg);
-
- return null;
- }
-
- List<string> listKeys = new List<string>();
- foreach (var data in returnData.removeDeviceToZoneResponseData.RemoveDeviceList)
- {
- if (data.Status == 0)
- {
- listKeys.Add(LocalDevice.Current.GetDeviceMainKeys(data.MacAddr, data.Epoint));
- }
- }
-
- return listKeys;
- }
-
- #endregion
-
- #region 鈻� 瀛樺湪妫�娴媉__________________________
-
- /// <summary>
- /// 鎸囧畾浼犳劅鍣ㄨ澶囨槸鍚﹀瓨鍦ㄤ簬瀹夐槻缃戝叧
- /// </summary>
- /// <param name="device"></param>
- /// <returns></returns>
- public bool IsSensorDeviceExist(CommonDevice device)
- {
- string mainkey = this.GetDeviceMainKeys(device);
- foreach (SafeguardZoneInfo info in this.dicAllZoneInfo.Values)
- {
- if (info.dicSensor.ContainsKey(mainkey) == true)
- {
- return true;
- }
- }
- return false;
- }
-
- /// <summary>
- /// 鎸囧畾浼犳劅鍣ㄨ澶囨槸鍚﹀瓨鍦ㄤ簬瀹夐槻缃戝叧
- /// </summary>
- /// <param name="ZoneId">闃插尯ID</param>
- /// <param name="device"></param>
- /// <returns></returns>
- public bool IsSensorDeviceExist(int ZoneId, CommonDevice device)
- {
- if (this.dicAllZoneInfo.ContainsKey(ZoneId) == false)
- {
- return false;
- }
- string mainkey = this.GetDeviceMainKeys(device);
- SafeguardZoneInfo info = this.dicAllZoneInfo[ZoneId];
-
- if (info.dicSensor.ContainsKey(mainkey) == true)
- {
- return true;
- }
-
- return false;
- }
-
- /// <summary>
- /// 鎸囧畾鎶ヨ璁惧鏄惁瀛樺湪浜庡畨闃茬綉鍏�
- /// </summary>
- /// <param name="ZoneId">闃插尯ID</param>
- /// <param name="device"></param>
- /// <returns></returns>
- public bool IsAlarmDeviceExist(int ZoneId, CommonDevice device)
- {
- if (ZoneId < 3)
- {
- if (this.dicAllZoneInfo.ContainsKey(ZoneId) == false)
- {
- return false;
- }
- string mainkey = this.GetDeviceMainKeys(device);
- SafeguardZoneInfo info = this.dicAllZoneInfo[ZoneId];
-
- if (info.dicAlarmDevice.ContainsKey(mainkey) == true)
- {
- return true;
- }
- }
- else
- {
- string mainkey = this.GetDeviceMainKeys(device);
-
- for (int i = 3; i <= 5; i++)
- {
- if (this.dicAllZoneInfo.ContainsKey(i) == false)
- {
- continue;
- }
- SafeguardZoneInfo info = this.dicAllZoneInfo[i];
-
- if (info.dicAlarmDevice.ContainsKey(mainkey) == true)
- {
- return true;
- }
- }
- }
-
- return false;
- }
-
- /// <summary>
- /// 鎸囧畾甯冮槻鏄惁瀛樺湪浜庡畨闃茬綉鍏�
- /// </summary>
- /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
- /// <returns></returns>
- public bool IsZoonExist(int zoonId)
- {
- return this.dicAllZoneInfo.ContainsKey(zoonId);
- }
-
- /// <summary>
- /// 鏄惁璁剧疆鏈夊唴閮ㄩ槻鍖�
- /// </summary>
- /// <returns></returns>
- public bool IsHadInternalDefenseArea()
- {
- foreach (SafeguardZoneInfo info in this.dicAllZoneInfo.Values)
- {
- //瀛樺湪绗洓闃插尯
- if (info.ZoneId == 4)
- {
- //閲岄潰鏈夋病鏈夎澶�
- if (info.dicSensor.Count > 0)
- {
- return true;
- }
- //涓嶅啀寰�涓嬪惊鐜�
- return false;
- }
- }
- return false;
- }
-
- #endregion
-
- #region 鈻� 瀹夐槻鐧婚檰___________________________
-
- /// <summary>
- /// 涓荤敤鎴风櫥闄� 0:瀵嗙爜閿欒 1:姝e父 -1:寮傚父
- /// </summary>
- /// <param name="password"></param>
- /// <param name="showMode"></param>
- public async Task<int> AdminLogin(string password, ShowErrorMode showMode = ShowErrorMode.YES)
- {
- //灏濊瘯鐧婚檰
- var resultData = await ZigBee.Device.Safeguard.AdminLoginResponAsync(password, this.GetLoginToken());
- if (resultData == null)
- {
- return -1;
- }
- if (resultData != null && resultData.Result != 0)
- {
- if (showMode == ShowErrorMode.YES)
- {
- //绠$悊鍛樺瘑鐮侀敊璇�
- string msg = Language.StringByID(R.MyInternationalizationString.uAdministratorPasswordIsError);
- this.ShowErrorMsg(msg);
- }
- return 0;
- }
-
- return 1;
- }
-
- /// <summary>
- /// 鑾峰彇鎸囧畾鐢ㄦ埛鐨勫瘑鐮�,濡傛灉鐢ㄦ埛涓嶅瓨鍦紝鍒欒繑鍥瀗ull(閿欒涓嶄細寮瑰嚭淇℃伅)
- /// </summary>
- /// <param name="userId"></param>
- /// <returns></returns>
- public async Task<string> GetUserPassword(int userId)
- {
- //鍏堣幏鍙栧瘑鐮�
- var nowPw = await Safeguard.CatUserPasswordAsync(this.GetLoginToken());
- if (nowPw == null || nowPw.catUserPasswordResponseData == null)
- {
- return null;
- }
-
- foreach (var pw in nowPw.catUserPasswordResponseData.UserPasswordList)
- {
- if (pw.UserId == userId)
- {
- return pw.Password;
- }
- }
- return null;
- }
-
- /// <summary>
- /// 鑾峰彇鍏ㄩ儴鐢ㄦ埛鐨勫瘑鐮�(閿欒浼氬脊鍑轰俊鎭�)
- /// </summary>
- /// <param name="mode">鏄惁鏄剧ず閿欒</param>
- /// <returns></returns>
- public async Task<List<Safeguard.UserPasswordListObj>> GetAllUserPassword(ShowErrorMode mode = ShowErrorMode.YES)
- {
- //鍏堣幏鍙栧瘑鐮�
- var nowPw = await Safeguard.CatUserPasswordAsync(this.GetLoginToken());
- if (nowPw == null || nowPw.catUserPasswordResponseData == null)
- {
- //鑾峰彇瀹夐槻瀵嗙爜澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uGetSafetyPasswordFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, nowPw);
-
- if (mode == ShowErrorMode.YES)
- {
- this.ShowErrorMsg(msg);
- }
-
- return null;
- }
- return nowPw.catUserPasswordResponseData.UserPasswordList;
- }
-
- /// <summary>
- /// 淇敼鐢ㄦ埛瀵嗙爜(涓嶅瓨鍦ㄦ椂锛屽垯鏂板缓)
- /// </summary>
- /// <param name="userId">鐢ㄦ埛ID</param>
- /// <param name="password">瀵嗙爜</param>
- /// <param name="passWordTips">瀵嗙爜鎻愮ず</param>
- /// <returns></returns>
- public async Task<bool> ChangedUserPassword(int userId, string password, string passWordTips)
- {
- //鍒涘缓鏂扮敤鎴�
- var result = await Safeguard.SetUserPasswordAsync(userId, password, passWordTips, this.GetLoginToken());
- if (result == null || result.setUserPasswordResponseData == null)
- {
- if (userId != 5)
- {
- //淇敼鐢ㄦ埛瀵嗙爜澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uChangedUserPasswordFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
- return false;
- }
- else
- {
- //淇敼鑳佽揩瀵嗙爜澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uChangedCoercePasswordFail);
- this.ShowErrorMsg(msg);
- return false;
- }
- }
- if (result.setUserPasswordResponseData.Result == 1)
- {
- //鐢ㄦ埛瀵嗙爜鏁板凡婊�(鏈�澶�4涓�)
- string msg = Language.StringByID(R.MyInternationalizationString.uUserPasswordCountIsMax);
- this.ShowErrorMsg(msg);
- return false;
- }
- if (result.setUserPasswordResponseData.Result == 2)
- {
- //瀵嗙爜闀垮害涓嶆纭�
- string msg = Language.StringByID(R.MyInternationalizationString.uPasswordLengthIsError);
- this.ShowErrorMsg(msg);
- return false;
- }
- if (result.setUserPasswordResponseData.Result == 3)
- {
- //鐢ㄦ埛瀵嗙爜閲嶅
- string msg = Language.StringByID(R.MyInternationalizationString.uUserPasswordIsRepeat);
- this.ShowErrorMsg(msg);
- return false;
- }
-
- return true;
- }
-
- /// <summary>
- /// 鏄剧ず鏍¢獙绠$悊鍛樺瘑鐮佺殑绐楀彛
- /// </summary>
- /// <returns></returns>
- public async Task<bool> ShowSafetyAdminValidatedDialog()
- {
- //寮忔牱鍙樻洿,涓嶅啀寮瑰嚭杈撳叆绠$悊鍛樺瘑鐮佹,鐩存帴鍙栭粯璁ゅ瘑鐮乤dmin
- //0:瀵嗙爜閿欒 1:姝e父 - 1:寮傚父
- var result = await this.AdminLogin("admin", ShowErrorMode.NO);
- if (result != 1)
- {
- //鑾峰彇鎵ц鏉冮檺澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uGetActionAuthorityFail);
- this.ShowTipMsg(msg);
- if (result == 0)
- {
- //閲嶇疆瀵嗙爜
- await DoResetAdministratorPsw("admin");
- }
- }
- return result == 1;
- }
-
- /// <summary>
- /// 妫�娴嬫槸鍚﹀凡缁忛厤缃湁鐢ㄦ埛瀵嗙爜(鍐呴儴浼氬脊鍑洪敊璇俊鎭�,-1:寮傚父 0:娌℃湁閰嶇疆 1:宸茬粡閰嶇疆)
- /// </summary>
- /// <returns></returns>
- public async Task<int> CheckHadConfigureUserPsw()
- {
- var pswInfo = await this.GetAllUserPassword(ShowErrorMode.NO);
- if (pswInfo == null)
- {
- //鍑虹幇鏈煡閿欒,璇风◢鍚庡啀璇�
- string msg = Language.StringByID(R.MyInternationalizationString.uUnKnowErrorAndResetAgain);
- this.ShowTipMsg(msg);
- return -1;
- }
- foreach (var data in pswInfo)
- {
- //4涓敤鎴峰瘑鐮�
- if (data.UserId >= 1 && data.UserId <= 4)
- {
- return 1;
- }
- }
- return 0;
- }
-
- /// <summary>
- /// 娣诲姞瀵嗙爜鐨勫娉�
- /// </summary>
- /// <param name="userId">鐢ㄦ埛ID</param>
- /// <param name="password">缃戝叧璇撮渶瑕佸師鏉ョ殑瀵嗙爜,涔熶笉鐭ラ亾涓轰粈涔�</param>
- /// <param name="passWordTips">瀵嗙爜澶囨敞</param>
- /// <returns></returns>
- public async Task<bool> AddPassWordTips(int userId, string password, string passWordTips)
- {
- var result = await Safeguard.SetPassWordTipsAsync(userId, password, passWordTips, this.GetLoginToken());
- if (result == null || result.setUserPasswordResponseData == null)
- {
- //淇敼澶囨敞淇℃伅澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
- return false;
- }
- if (result.setUserPasswordResponseData.Result != 0)
- {
- //淇敼澶囨敞淇℃伅澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
-
- this.ShowErrorMsg(msg);
- return false;
- }
- return true;
- }
-
- #endregion
-
- #region 鈻� 鎶ヨ鐩爣___________________________
-
- /// <summary>
- /// 娣诲姞鎶ヨ鐩爣鍒板畨闃�
- /// </summary>
- /// <param name="ZoneId">闃插尯ID</param>
- /// <param name="listAction">娣诲姞鐨勭洰鏍�</param>
- /// <returns></returns>
- public async Task<bool> AddAlarmTagetToSafety(int ZoneId, List<Safeguard.AlarmActionObj> listAction)
- {
- //鐜拌幏鍙栧綋鍓嶇殑甯冮槻妯″紡
- var safetyMode = await this.GetSafetyMode();
- if (safetyMode != null)
- {
- //褰撳墠姝e浜庡竷闃叉ā寮�,鏃犳硶娣诲姞璁惧
- string msg = Language.StringByID(R.MyInternationalizationString.uCanNotAddDeviceInGarrisonMode);
- this.ShowErrorMsg(msg);
- return false;
- }
- //楠岃瘉韬唤
- bool login = await this.ShowSafetyAdminValidatedDialog();
- if (login == false)
- {
- return false;
- }
-
- if (ZoneId > 3)
- {
- ZoneId = 3;
- }
- var saveData = new Safeguard.AddZoneActionData();
- saveData.ActionType = ZoneId;
- saveData.Actions = listAction;
- saveData.LoginToken = this.GetLoginToken();
-
- //娣诲姞鎶ヨ鐩爣鍒板畨闃�
- var result = await Safeguard.AddZoneActionAsync(saveData);
- if (result == null || result.addZoneActionResponseData == null || result.addZoneActionResponseData.Result == 1)
- {
- //娣诲姞鎶ヨ鐩爣澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uAddAlarmTargetFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
-
- return false;
- }
- foreach (var data in result.addZoneActionResponseData.Actions)
- {
- if (data.Status == "1")
- {
- if (data.Type == "0")
- {
- var device = Common.LocalDevice.Current.GetDevice(data.DeviceAddr, data.Epoint);
- string msg = Common.LocalDevice.Current.GetDeviceEpointName(device) + "\r\n";
- //鐩爣璁惧涓嶅瓨鍦�
- msg += Language.StringByID(R.MyInternationalizationString.uTargetDeviceIsNotExsit);
- this.ShowTipMsg(msg);
- }
- else if (data.Type == "1")
- {
- var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(data.ScenesId);
- if (scene != null)
- {
- string msg = scene.Name + "\r\n";
- //鐩爣鍦烘櫙涓嶅瓨鍦�
- msg += Language.StringByID(R.MyInternationalizationString.uTargetSceneIsNotExsit);
- this.ShowTipMsg(msg);
- }
- }
- }
- }
-
- //灏嗘姤璀︾洰鏍囧垪琛ㄥ姞鍏ョ紦瀛�(浠庢柊浠庣綉鍏抽偅閲岃幏鍙栨柊杩藉姞鐨勮澶�)
- var resultData = await Safeguard.CatZoneActionAsync(ZoneId);
- if (resultData == null
- || resultData.catZoneActionResponseData == null
- || resultData.catZoneActionResponseData.Result == 1)
- {
- //鑾峰彇鎶ヨ鐩爣鍒楄〃澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uGetAlarmTargetListFail);
- this.ShowTipMsg(msg);
- return false;
- }
- this.SetAlarmTargetDeviceToMemory(resultData.catZoneActionResponseData, ShowErrorMode.YES);
-
- return true;
- }
-
- /// <summary>
- /// 鍒犻櫎鎶ヨ鐩爣
- /// </summary>
- /// <param name="ZoneId">闃插尯ID</param>
- /// <param name="listActions">鍒犻櫎鐨勭洰鏍�</param>
- /// <returns></returns>
- public async Task<bool> DeleteAlarmTaget(int ZoneId, List<Safeguard.DelAlarmActionObj> listActions)
- {
- //鐜拌幏鍙栧綋鍓嶇殑甯冮槻妯″紡
- var safetyMode = await this.GetSafetyMode();
- if (safetyMode != null)
- {
- //褰撳墠姝e浜庡竷闃叉ā寮�,鏃犳硶鍒犻櫎璁惧
- string msg = Language.StringByID(R.MyInternationalizationString.uCanNotDeleteDeviceInGarrisonMode);
- this.ShowErrorMsg(msg);
- return false;
- }
- //楠岃瘉韬唤
- bool login = await this.ShowSafetyAdminValidatedDialog();
- if (login == false)
- {
- return false;
- }
- if (ZoneId > 3)
- {
- ZoneId = 3;
- }
- //鍙傛暟
- var Pra = new Safeguard.DelZoneActionData();
- Pra.ActionType = ZoneId;
- Pra.Actions = listActions;
- Pra.LoginToken = this.GetLoginToken();
- //鎵ц鍒犻櫎
- var result = await Safeguard.DelZoneActionAsync(Pra);
- if (result == null || result.delZoneActionResponseData == null || result.delZoneActionResponseData.Result == 1)
- {
- //鍒犻櫎鎶ヨ鐩爣澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uDeleteAlarmTargetFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
-
- return false;
- }
-
- //鑾峰彇鏈湴缂撳瓨
- if (this.dicAllZoneInfo.ContainsKey(ZoneId) == false)
- {
- return true;
- }
- SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[ZoneId];
-
- //淇敼缂撳瓨
- foreach (var device in result.delZoneActionResponseData.Actions)
- {
- //鍒犻櫎澶辫触
- if (device.Status == "1")
- {
- continue;
- }
- //璁惧
- if (device.Type == "0")
- {
- //鍒犻櫎鎶ヨ璁惧
- string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device.DeviceAddr, device.Epoint);
- if (zoneInfo.dicAlarmDevice.ContainsKey(mainkeys) == false)
- {
- continue;
- }
- zoneInfo.dicAlarmDevice.Remove(mainkeys);
- zoneInfo.dicAllDevice.Remove(mainkeys);
- }
- //鍦烘櫙
- else if (device.Type == "1")
- {
- //鍒犻櫎鍦烘櫙
- if (zoneInfo.dicScenes.ContainsKey(device.ScenesId) == true)
- {
- zoneInfo.dicScenes.Remove(device.ScenesId);
- }
- }
- }
- return true;
- }
-
- #endregion
-
- #region 鈻� 鑾峰彇鍦烘櫙___________________________
-
- /// <summary>
- /// 鏍规嵁闃插尯ID鑾峰彇鏈湴鐨勫満鏅�
- /// </summary>
- /// <param name="ZoneId">闃插尯ID</param>
- /// <returns></returns>
- public Dictionary<int, string> GetLocalSceneByZoneID(int ZoneId)
- {
- if (ZoneId > 3)
- {
- ZoneId = 3;
- }
- if (this.dicAllZoneInfo.ContainsKey(ZoneId) == false)
- {
- return new Dictionary<int, string>();
- }
- var infoData = this.dicAllZoneInfo[ZoneId];
- return infoData.dicScenes;
- }
-
- #endregion
-
- #region 鈻� 鏃佽矾璁剧疆___________________________
-
- /// <summary>
- /// 鏃佽矾鐘舵�佽缃�
- /// </summary>
- /// <param name="zoneId">闃插尯ID</param>
- /// <param name="device">浼犳劅鍣ㄨ澶�</param>
- /// <param name="statu">鏃佽矾鐘舵�� -> 0:涓嶆梺璺� 1:鏃佽矾</param>
- /// <returns></returns>
- public async Task<bool> SetByPassStatuToSafety(int zoneId, CommonDevice device, int statu)
- {
- //楠岃瘉
- bool flage = await this.ShowSafetyAdminValidatedDialog();
- if (flage == false)
- {
- return false;
- }
-
- //鍙傛暟
- var Pra = new Safeguard.EqByPassData();
- Pra.ZoneId = zoneId;
- Pra.MacAddr = device.DeviceAddr;
- Pra.Epoint = device.DeviceEpoint;
- Pra.IsByPass = statu;
- Pra.LoginToken = this.GetLoginToken();
-
- var result = await Safeguard.EqByPassAllDataAsync(Pra);
- if (result == null || result.eqByPassResponseData != null && result.eqByPassResponseData.Result == 3)
- {
- //璁剧疆澶辫触,绯荤粺褰撳墠澶勪簬鎾ら槻鐘舵��
- string msg2 = Language.StringByID(R.MyInternationalizationString.uByPassFailAndSystemInWithdrawGarrisonStatu);
- this.ShowErrorMsg(msg2);
- return false;
- }
-
- //鍏朵粬閿欒
- if (result.eqByPassResponseData == null || result.eqByPassResponseData.Result != 0)
- {
- //鏃佽矾鐘舵�佽缃け璐�
- string msg = Language.StringByID(R.MyInternationalizationString.uSetByPassStatuFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
-
- return false;
- }
-
- return true;
- }
-
- #endregion
-
- #region 鈻� 甯冮槻鎾ら槻___________________________
-
- /// <summary>
- /// 璁剧疆瀹夐槻鐨勫竷闃叉ā寮�,鎴愬姛鏃�,鍐呴儴涓嶄細鎻愮ず淇℃伅(涓嶈璋冪敤姝ゆ柟娉曟潵瀹炵幇銆愭挙闃层��)
- /// </summary>
- /// <param name="garrison">甯冮槻妯″紡</param>
- /// <returns>缃戝叧鐜板湪瀹炶鐨勫竷闃叉ā寮�</returns>
- public async Task<GarrisonMode> SetSafetyGarrisonByModel(GarrisonMode garrison)
- {
- //妫�娴嬪叾浠栭槻鍖洪噷闈㈡湁娌℃湁閰嶇疆鏈変紶鎰熷櫒
- if (this.CheckHadInteriorSectorsSensor() == false)
- {
- //鍏朵粬闃插尯閲屾病鏈夐厤缃紶鎰熷櫒璁惧
- string msg = Language.StringByID(R.MyInternationalizationString.uNotSensorInOtherSectors);
- this.ShowErrorMsg(msg);
- return GarrisonMode.None;
- }
-
- if (this.UserPassword == null)
- {
- var data = HdlFileLogic.Current.ReadFileByteContent(DirNameResourse.SafeguardUserPassword);
- if (data != null)
- {
- this.UserPassword = System.Text.Encoding.UTF8.GetString(data);
- }
- }
- if (string.IsNullOrEmpty(this.UserPassword) == true)
- {
- //杈撳叆瀵嗙爜
- string password = await this.ShowInputUserPasswordForm();
- if (string.IsNullOrEmpty(password) == true)
- {
- return GarrisonMode.None;
- }
- var result = await this.SetSafetyGarrisonByModel(garrison, false);
- if (result != GarrisonMode.None && result != GarrisonMode.RemoveGarrison)
- {
- //淇濆瓨鍔犲瘑鐨勫瘑鐮佸埌鏈湴
- HdlFileLogic.Current.SaveTextToFile(DirNameResourse.SafeguardUserPassword, this.UserPassword);
- }
- return result;
- }
- else
- {
- return await this.SetSafetyGarrisonByModel(garrison, true);
- }
- }
-
- /// <summary>
- /// 璁剧疆瀹夐槻鐨勫竷闃叉ā寮�,鎴愬姛鏃�,鍐呴儴涓嶄細鎻愮ず淇℃伅(涓嶈璋冪敤姝ゆ柟娉曟潵瀹炵幇銆愭挙闃层��)
- /// </summary>
- /// <param name="garrison">甯冮槻妯″紡</param>
- /// <param name="showPswForm">鐢ㄦ埛瀵嗙爜閿欒鏃讹紝鏄惁鍏佽寮瑰嚭杈撳叆鐢ㄦ埛瀵嗙爜鐨勭獥鍙�</param>
- /// <returns>缃戝叧鐜板湪瀹炶鐨勫竷闃叉ā寮�</returns>
- private async Task<GarrisonMode> SetSafetyGarrisonByModel(GarrisonMode garrison, bool showPswForm)
- {
- //鍏堟妸褰撳墠鐨勬ā寮忕粰绉婚櫎鎺�
- var flage = await this.RemoveSafetyGarrison(garrison, showPswForm);
- if (flage == -1)
- {
- return GarrisonMode.None;
- }
- //鍒ゆ柇鏈夋病鏈夊叾浠栭�昏緫鍘讳慨鏀逛簡甯冮槻妯″紡
- //鎵�浠ュ啀娆¤幏鍙栨ā寮�
- var safetyMode = await this.GetSafetyMode();
- if (safetyMode != null)
- {
- return GarrisonMode.None;
- }
-
- //鍙傛暟
- var Pra = new Safeguard.EnableModeData();
- //妯″紡ID
- Pra.ModeId = (int)garrison;
- //妫�鏌ラ槻鍖鸿澶囨渶杩戜笂鎶ョ殑瀹夐槻淇℃伅鐘舵�佽繘琛屽竷闃�
- Pra.CheckIASStatus = 1;
- //姘镐箙甯冮槻锛岀洿鍒版挙闃�
- Pra.Setting = 1;
- //鐢ㄦ埛瀵嗙爜
- Pra.UserPassword = this.UserPassword;
-
- //鎵ц甯冮槻
- var result = await Safeguard.EnableModeAsync(Pra);
- if (result == null || result.enableModeResponseData == null)
- {
- //甯冮槻璁剧疆澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uSetGarrisonFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
- return GarrisonMode.RemoveGarrison;
- }
-
- //閿欒妫�娴�
- if (result.enableModeResponseData.Result == 1)
- {
- //甯冮槻妯″紡涓嶅瓨鍦�
- string msg = Language.StringByID(R.MyInternationalizationString.uGarrisonModeIsNotEsixt);
- this.ShowErrorMsg(msg);
- return GarrisonMode.RemoveGarrison;
- }
- else if (result.enableModeResponseData.Result == 2)
- {
- //娓呯┖瀵嗙爜缂撳瓨
- this.UserPassword = null;
-
- if (showPswForm == false)
- {
- //鐢ㄦ埛瀵嗙爜閿欒鎴栨湭璁剧疆鐢ㄦ埛瀵嗙爜
- string msg = Language.StringByID(R.MyInternationalizationString.uUserPasswordIsError);
- this.ShowErrorMsg(msg);
- return GarrisonMode.RemoveGarrison;
- }
- else
- {
- //閲嶆柊鏄剧ず杈撳叆鐢ㄦ埛瀵嗙爜鐨勭獥鍙�
- string password = await this.ShowInputUserPasswordForm();
- if (string.IsNullOrEmpty(password) == true)
- {
- return GarrisonMode.RemoveGarrison;
- }
-
- var result2 = await this.SetSafetyGarrisonByModel(garrison, false);
- if (result2 != GarrisonMode.None && result2 != GarrisonMode.RemoveGarrison)
- {
- //淇濆瓨鍔犲瘑瀵嗙爜鍒版湰鍦�
- HdlFileLogic.Current.SaveTextToFile(DirNameResourse.SafeguardUserPassword, this.UserPassword);
- }
- return result2;
- }
- }
- else if (result.enableModeResponseData.Result == 3)
- {
- //瀹夐槻璁惧鏈氨缁�
- string msg = Language.StringByID(R.MyInternationalizationString.uSafetyDeviceDoNotReady);
- msg += "(" + result.enableModeResponseData.IASName + ")";
- this.ShowErrorMsg(msg);
- return GarrisonMode.RemoveGarrison;
- }
- else if (result.enableModeResponseData.Result == 4)
- {
- //鍏朵粬甯冮槻妯″紡姝e湪鍚敤涓�
- string msg = Language.StringByID(R.MyInternationalizationString.uOtherGarrisonIsActtion);
- this.ShowErrorMsg(msg);
- return (GarrisonMode)result.enableModeResponseData.ModeIdBeUsing;
- }
- else if (result.enableModeResponseData.Result == 5)
- {
- //妯″紡灞炴�т笉鍏佽澶辫兘
- string msg = Language.StringByID(R.MyInternationalizationString.uGarrisonModeElementCanNotLostFunction);
- this.ShowErrorMsg(msg);
- return GarrisonMode.RemoveGarrison;
- }
- return garrison;
- }
-
- /// <summary>
- /// 绉婚櫎褰撳墠姝e湪杩愯鐨勫竷闃叉ā寮�(鎴愬姛鏃讹紝鍐呴儴涓嶄細鎻愮ず淇℃伅)
- /// </summary>
- /// <param name="garrison">甯冮槻妯″紡(杩欎釜鍙橀噺鍙槸涓轰簡鍙樻洿鎻愮ず閿欒淇℃伅锛屽綋涓嶆槸鎾ら槻鏃讹紝閿欒鎻愮ず淇℃伅浼氭敼鍙�)</param>
- /// <param name="showPswForm">鐢ㄦ埛瀵嗙爜閿欒鏃讹紝鏄惁鍏佽寮瑰嚭杈撳叆鐢ㄦ埛瀵嗙爜鐨勭獥鍙�</param>
- /// <returns></returns>
- public async Task<int> RemoveSafetyGarrison(GarrisonMode garrison, bool showPswForm)
- {
- //鐜拌幏鍙栧綋鍓嶇殑甯冮槻妯″紡
- var safetyMode = await this.GetSafetyMode();
- if (safetyMode == null)
- {
- //濡傛灉鏄挙闃茬殑璇�
- if (garrison == GarrisonMode.RemoveGarrison)
- {
- //褰撳墠涓嶅瓨鍦ㄥ竷闃�
- string msg = Language.StringByID(R.MyInternationalizationString.uNowDoNotHadGarrison);
- this.ShowErrorMsg(msg);
- return -1;
- }
- //骞舵病鏈夎缃竷闃�,涔熷氨涓嶈皥浠�涔堟挙闃蹭簡
- return 0;
- }
-
- //鎾ら槻鐨勬椂鍊欙紝鏃犳潯浠跺脊鍑鸿緭鍏ュ瘑鐮佹
- if (garrison == GarrisonMode.RemoveGarrison)
- {
- string psw = await this.ShowInputUserPasswordForm();
- if (string.IsNullOrEmpty(psw) == true)
- {
- return -1;
- }
- }
-
- //鎾ら槻
- var result = await Safeguard.WithdrawModeAsync(this.UserPassword);
- if (result == null || result.withdrawModeResponseData == null)
- {
- //鎵ц鎾ら槻鎿嶄綔鐨勬椂鍊�
- if (garrison == GarrisonMode.RemoveGarrison)
- {
- //鎾ら槻澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uRemoveGarrisonFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
- }
- else
- {
- //甯冮槻妯″紡鍙樻洿澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uChangedGarrisonModeFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
- }
-
- return -1;
- }
-
- if (result.withdrawModeResponseData.Result == 2)
- {
- //娓呯┖瀵嗙爜缂撳瓨
- this.UserPassword = null;
- if (showPswForm == false || garrison == GarrisonMode.RemoveGarrison)
- {
- //鐢ㄦ埛瀵嗙爜閿欒鎴栨湭璁剧疆鐢ㄦ埛瀵嗙爜
- string msg = Language.StringByID(R.MyInternationalizationString.uUserPasswordIsError);
- this.ShowErrorMsg(msg);
- return -1;
- }
- else
- {
- //閲嶆柊鏄剧ず杈撳叆鐢ㄦ埛瀵嗙爜鐨勭獥鍙�
- string password = await this.ShowInputUserPasswordForm();
- if (string.IsNullOrEmpty(password) == true)
- {
- return -1;
- }
-
- var result2 = await this.RemoveSafetyGarrison(garrison, false);
- if (result2 != -1)
- {
- //淇濆瓨鍒板姞瀵嗗瘑鐮佹湰鍦�
- HdlFileLogic.Current.SaveTextToFile(DirNameResourse.SafeguardUserPassword, this.UserPassword);
- }
- return result2;
- }
- }
- else if (result.withdrawModeResponseData.Result == 3 && garrison == GarrisonMode.RemoveGarrison)
- {
- //褰撳墠妯″紡涓嶅彲鎾ら槻
- string msg = Language.StringByID(R.MyInternationalizationString.uNowGarrisonCanNotRemove);
- this.ShowErrorMsg(msg);
- return -1;
- }
- return 1;
- }
-
- /// <summary>
- /// 鑾峰彇褰撳墠瀹夐槻鐨勬ā寮�(鍦ㄥ锛岀瀹剁瓑绛�),濡傛灉娌℃湁甯冮槻锛屽垯杩斿洖null
- /// </summary>
- public async Task<Safeguard.GetModeUsingResponseData> GetSafetyMode()
- {
- var result = await Safeguard.GetModeUsingAsync();
- if (result == null || result.getModeUsingResponseData == null)
- {
- return null;
- }
- if (result.getModeUsingResponseData.Result == 1)
- {
- return null;
- }
- return result.getModeUsingResponseData;
- }
-
- /// <summary>
- /// 鏄剧ず杈撳叆鐢ㄦ埛瀵嗙爜鐨勭晫闈�(杩斿洖null鏃朵唬琛ㄥ嚭閿欐垨鑰呭彇娑�)
- /// </summary>
- public async Task<string> ShowInputUserPasswordForm()
- {
- NumberPswInputDialogForm Dialogform = null;
-
- bool isShowingProgressBar = false;
- string ProgressBarText = string.Empty;
-
- string pasword = null;
- HdlThreadLogic.Current.RunMain(() =>
- {
- isShowingProgressBar = CommonPage.Loading.Visible;
- ProgressBarText = CommonPage.Loading.Text;
- if (isShowingProgressBar == true)
- {
- //濡傛灉鍦ㄥ脊鍑烘牎楠屽瘑鐮佹鐨勬椂鍊欙紝鏄剧ず鐫�杩涘害鏉$殑璇濓紝鍏堟殏鏃跺叧闂繘搴︽潯
- CommonPage.Loading.Hide();
- }
-
- Dialogform = new NumberPswInputDialogForm();
- Dialogform.AddForm(Language.StringByID(R.MyInternationalizationString.uPleaseInputUserPassword), 4);
- //纭鎸夐挳
- Dialogform.FinishInputEvent += ((textValue) =>
- {
- Dialogform.CloseForm();
- //鐢ㄦ埛瀵嗙爜
- pasword = textValue;
- //鍔犲瘑瀵嗙爜
- this.UserPassword = pasword;
- });
- });
- while (pasword == null)
- {
- if (Dialogform != null && Dialogform.Parent == null)
- {
- break;
- }
- await Task.Delay(500);
- }
-
- //鎭㈠杩涘害鏉�
- if (isShowingProgressBar == true)
- {
- Application.RunOnMainThread(() =>
- {
- CommonPage.Loading.Start(ProgressBarText);
- });
- }
- return pasword;
- }
-
- /// <summary>
- /// 妫�娴嬪叾浠栭槻鍖洪噷闈㈡湁娌℃湁閰嶇疆鏈変紶鎰熷櫒(甯冮槻浣跨敤)
- /// </summary>
- /// <returns></returns>
- private bool CheckHadInteriorSectorsSensor()
- {
- for (int i = 3; i <= 5; i++)
- {
- if (dicAllZoneInfo.ContainsKey(i) == true
- && dicAllZoneInfo[i].dicSensor.Count > 0)
- {
- return true;
- }
- }
- return false;
- }
-
- #endregion
-
- #region 鈻� 淇℃伅鎺ㄩ�乢__________________________
-
- /// <summary>
- /// 璁剧疆鎸囧畾闃插尯鐨勪俊鎭帹閫佺姸鎬�
- /// </summary>
- /// <param name="zoneId">闃插尯ID</param>
- /// <param name="statu">鐘舵�� 0:鎺ㄩ�� 1:涓嶆帹閫�</param>
- /// <returns></returns>
- public async Task<bool> SetGarrisonInformationPushStatu(int zoneId, int statu)
- {
- //鏍¢獙瀵嗙爜
- bool flage = await this.ShowSafetyAdminValidatedDialog();
- if (flage == false)
- {
- return false;
- }
-
- if (zoneId > 3)
- {
- zoneId = 3;
- }
- //鐘舵�佸彉鏇�
- var result = await Safeguard.DisablePushMessageAsync(zoneId, statu);
- if (result == null || result.disablePushMessageResponseData == null || result.disablePushMessageResponseData.Result == 1)
- {
- //璁剧疆淇℃伅鎺ㄩ�佸け璐�
- string msg = Language.StringByID(R.MyInternationalizationString.uSetInformationPushFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
- return false;
- }
- if (this.dicAllZoneInfo.ContainsKey(zoneId) == false)
- {
- return true;
- }
- SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[zoneId];
- zoneInfo.InformationPush = statu;
-
- return true;
- }
-
- /// <summary>
- /// 鑾峰彇褰撳墠闃插尯鐨勪俊鎭帹閫佺姸鎬�
- /// </summary>
- /// <param name="zoneId">闃插尯ID</param>
- /// <returns>0:鎺ㄩ�� 1:涓嶆帹閫�</returns>
- public int GetGarrisonInformationPushStatu(int zoneId)
- {
- if (zoneId > 3)
- {
- zoneId = 3;
- }
- if (this.dicAllZoneInfo.ContainsKey(zoneId) == false)
- {
- return 1;
- }
- SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[zoneId];
- return zoneInfo.InformationPush;
- }
-
- #endregion
-
- #region 鈻� 寤惰繜璁剧疆___________________________
-
- /// <summary>
- /// 鑾峰彇闃插尯鐨勫欢杩熸椂闂�(浠呴檺鍑哄叆闃插尯),鍑洪敊鏃惰繑鍥瀗ull
- /// </summary>
- /// <returns></returns>
- public async Task<Safeguard.CatDelayTimeResponseData> GetGarrisonDelayTime()
- {
- //鑾峰彇
- var result = await Safeguard.CatDelayTimeAsync();
- if (result == null || result.catDelayTimeResponseData == null)
- {
- //鑾峰彇寤舵椂鏃堕棿澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uGetDelayTimeFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
- return null;
- }
- return result.catDelayTimeResponseData;
- }
-
- /// <summary>
- /// 璁剧疆闃插尯鐨勮繘鍑哄欢杩熸椂闂� (浠呴檺鍑哄叆闃插尯),鐜版帴鍙d笉鏀寔鍗曚釜淇敼
- /// </summary>
- /// <param name="enterDelayTime">杩涘叆寤舵椂(绉�)</param>
- /// <param name="goOutDelayTime">澶栧嚭寤舵椂(绉�)</param>
- /// <returns></returns>
- public async Task<bool> SetGarrisonDelayTime(int enterDelayTime, int goOutDelayTime)
- {
- //鏍¢獙瀵嗙爜
- bool flage = await this.ShowSafetyAdminValidatedDialog();
- if (flage == false)
- {
- return false;
- }
- //鏇存敼鏃堕棿
- var result = await Safeguard.SetDelayTimeAsync(enterDelayTime, goOutDelayTime, this.GetLoginToken());
- if (result == null || result.setDelayTimeResponseData == null)
- {
- //璁剧疆寤舵椂鏃堕棿澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uSetDelayTimeFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
- return false;
- }
- return true;
- }
-
- #endregion
-
- #region 鈻� 鑳佽揩璁剧疆___________________________
-
- /// <summary>
- /// 鑾峰彇鑳佽揩鐨勭數璇濊仈绯绘柟寮�(鑾峰彇澶辫触鏃朵細杩斿洖null)
- /// </summary>
- /// <returns></returns>
- public async Task<Safeguard.CheckCoercePhoneNumberResponseData> GetCoercePhoneNumber()
- {
- //鑾峰彇
- var result = await Safeguard.CheckCoercePhoneNumberAsync();
- if (result == null || result.checkCoercePhoneNumberResponseData == null)
- {
- //鑾峰彇鑳佽揩鑱旂郴鏂瑰紡淇℃伅澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uGetCoercePhoneNumberFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
- return null;
- }
- //娌℃湁鏁版嵁
- if (result.checkCoercePhoneNumberResponseData.Result == 1)
- {
- return null;
- }
- return result.checkCoercePhoneNumberResponseData;
- }
-
- /// <summary>
- /// 璁剧疆鑳佽揩鐨勮仈绯讳汉鏂瑰紡
- /// </summary>
- /// <param name="listPhone">鍦板尯鐮�-鑱旂郴鏂瑰紡</param>
- /// <param name="listNote">鑱旂郴浜哄娉�</param>
- /// <param name="addPhone">鏄惁鏄柊寤鸿仈绯讳汉,false鐨勬椂鍊�,鍙敼澶囨敞</param>
- /// <returns></returns>
- public async Task<bool> SetCoercePhoneNumber(List<string> listPhone, List<string> listNote, bool addPhone = true)
- {
- if (addPhone == true)
- {
- var Pra = new Safeguard.SetCoercePhoneNumberData();
- var Actonobj = new Safeguard.PushTargetActionObj();
- Actonobj.Type = 2;
- Pra.Actions.Add(Actonobj);
- Pra.LoginToken = this.GetLoginToken();
-
- for (int i = 0; i < listPhone.Count; i++)
- {
- var phoneInfo = new Safeguard.PushTargetInfo();
- Actonobj.PushTarget.Add(phoneInfo);
- //鐢佃瘽鍙风爜
- phoneInfo.PushNumber = listPhone[i];
- }
- var result = await Safeguard.SetCoercePhoneNumberAsync(Pra);
- if (result == null || result.setCoercePhoneNumberResponseData == null || result.setCoercePhoneNumberResponseData.Result != 0)
- {
- //淇敼鑳佽揩鑱旂郴鏂瑰紡澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uChangedCoercePhoneNumberFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
- return false;
- }
- }
- for (int i = 0; i < listNote.Count; i++)
- {
- var result = await Safeguard.SetCoercePhoneNumberNoteAsync(listPhone[i], listNote[i]);
- if (result == null)
- {
- //淇敼澶囨敞淇℃伅澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂");
- this.ShowErrorMsg(msg);
- return false;
- }
- if (result.Result == -2)
- {
- //閿欒:缃戝叧瀵硅薄涓㈠け
- string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg);
- this.ShowErrorMsg(msg);
- return false;
- }
- if (result.Result != 0)
- {
- //淇敼澶囨敞淇℃伅澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
- this.ShowErrorMsg(msg);
- return false;
- }
- }
- return true;
- }
-
- /// <summary>
- /// 鍒犻櫎鑳佽揩鐨勮仈绯讳汉鏂瑰紡
- /// </summary>
- /// <param name="areaCode"></param>
- /// <param name="phoneNum"></param>
- /// <returns></returns>
- public async Task<bool> DeleteCoercePhoneNumber(string areaCode, string phoneNum)
- {
- var Pra = new Safeguard.DelCoercePhoneNumberData();
- var Actonobj = new Safeguard.PushTargetActionObj();
- Actonobj.Type = 2;
- Pra.Actions.Add(Actonobj);
- Pra.LoginToken = this.GetLoginToken();
-
- var phoneInfo = new Safeguard.PushTargetInfo();
- Actonobj.PushTarget.Add(phoneInfo);
- //鐢佃瘽鍙风爜
- phoneInfo.PushNumber = areaCode + "-" + phoneNum;
-
- var result = await Safeguard.DelCoercePhoneNumberAsync(Pra);
- if (result == null || result.delCoercePhoneNumberResponseData == null || result.delCoercePhoneNumberResponseData.Result != 0)
- {
- //鍒犻櫎鑳佽揩鑱旂郴鏂瑰紡澶辫触
- string msg = Language.StringByID(R.MyInternationalizationString.uDeleteCoercePhoneNumberFail);
- //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
- msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
- this.ShowErrorMsg(msg);
- return false;
- }
-
- return true;
- }
-
- /// <summary>
- /// 缁欒仈绯诲彿鐮佹坊鍔犲娉ㄧ殑淇℃伅
- /// </summary>
- private class AddPushNumberNoteInfo
- {
- /// <summary>
- /// 鍥哄畾253
- /// </summary>
- public int ActionType = 253;
- /// <summary>
- /// LoginToken
- /// </summary>
- public string LoginToken = string.Empty;
- /// <summary>
- /// 鍦板尯鐮�-鑱旂郴鏂瑰紡
- /// </summary>
- public string PushNumber = string.Empty;
- /// <summary>
- /// 鑱旂郴浜哄彿鐮佸娉紝鏈�澶�63byte
- /// </summary>
- public string PushNumberNote = string.Empty;
- }
-
- #endregion
-
- #region 鈻� 鎵ц鐩爣鐘舵�佺殑缈昏瘧鏂囨湰_____________
-
- /// <summary>
- /// 鑾峰彇鎵ц鐩爣鐨勭姸鎬佹枃鏈�
- /// </summary>
- /// <param name="listTaskInfo">鍔ㄤ綔瀵硅薄,鍙互涓虹┖</param>
- /// <returns></returns>
- public string GetAdjustTargetStatuText(List<Safeguard.TaskListInfo> listTaskInfo)
- {
- if (listTaskInfo == null || listTaskInfo.Count == 0)
- {
- //鏃犲姩浣�
- return Language.StringByID(R.MyInternationalizationString.uNotAction);
- }
- //瑕佽�冭檻瀹冪殑鎺掑垪椤哄簭(鍙互鎸夐渶姹傚彉鏇寸紪鍙�)
- Dictionary<int, string> dicSort = new Dictionary<int, string>();
- //鏈�澶х紪鍙�
- int MaxNo = 4;
- //寮�鍏崇殑浣嶇疆缂栧彿
- int ControlNo = 0;
- //鐧惧垎姣旂殑浣嶇疆缂栧彿
- int persentNo = 1;
- //绌鸿皟娓╁害鐨勪綅缃紪鍙�
- int temparetureNo = 2;
- //绌鸿皟妯″紡鐨勪綅缃紪鍙�
- int modelNo = 3;
- //绌鸿皟椋庨�熺殑浣嶇疆缂栧彿
- int windNo = 4;
-
- foreach (var info in listTaskInfo)
- {
- #region 鈻� 寮�鍏虫帶鍒禵___
- //寮�鍏虫帶鍒�
- if (info.TaskType == 1)
- {
- if (info.Data1 == 1)
- {
- //寮�
- dicSort[ControlNo] = Language.StringByID(R.MyInternationalizationString.uSimpleOpen);
- }
- else
- {
- //鍏�
- dicSort[ControlNo] = Language.StringByID(R.MyInternationalizationString.uSimpleClose);
- }
- }
- #endregion
-
- #region 鈻� 浜害璋冭妭____
- //浜害璋冭妭
- else if (info.TaskType == 3)
- {
- if (info.Data1 == 0)
- {
- //鍏�
- dicSort[persentNo] = Language.StringByID(R.MyInternationalizationString.uSimpleClose);
- }
- else
- {
- dicSort[persentNo] = $"{(int)(info.Data1 * 1.0 / 254 * 100)}%";
- }
- }
- #endregion
-
- #region 鈻� 绐楀笜璁惧____
- //绐楀笜璁惧(瀹冪殑寮�鍏冲拰寮�鍏虫帶鍒舵槸鍙嶈繃鏉ョ殑)
- else if (info.TaskType == 6)
- {
- if (info.Data1 == 0)
- {
- //寮�
- dicSort[ControlNo] = Language.StringByID(R.MyInternationalizationString.uSimpleOpen);
- }
- else if (info.Data1 == 1)
- {
- //鍏�
- dicSort[ControlNo] = Language.StringByID(R.MyInternationalizationString.uSimpleClose);
- }
- else if (info.Data1 == 5)
- {
- //绐楀笜鐧惧垎姣�
- dicSort[persentNo] = info.Data2 + "%";
- }
- }
- #endregion
-
- #region 鈻� 绌鸿皟璁惧____
- //绌鸿皟璁惧
- else if (info.TaskType == 5)
- {
- if (info.Data1 == 3)
- {
- if (info.Data2 == 0)
- {
- return Language.StringByID(R.MyInternationalizationString.uSimpleClose);
- }
- else if (info.Data2 == 1)
- {
- //鑷姩
- dicSort[modelNo] = Language.StringByID(R.MyInternationalizationString.Mode_Auto);
- }
- else if (info.Data2 == 3)
- {
- //鍒跺喎
- dicSort[modelNo] = Language.StringByID(R.MyInternationalizationString.Mode_Cool);
- }
- else if (info.Data2 == 4)
- {
- //鍒剁儹
- dicSort[modelNo] = Language.StringByID(R.MyInternationalizationString.Mode_Heat);
- }
- else if (info.Data2 == 7)
- {
- //閫侀
- dicSort[modelNo] = Language.StringByID(R.MyInternationalizationString.Mode_FanOnly);
- }
- else if (info.Data2 == 8)
- {
- //闄ゆ箍
- dicSort[modelNo] = Language.StringByID(R.MyInternationalizationString.Mode_Dry);
- }
- }
- else if (info.Data1 == 4 || info.Data1 == 5|| info.Data1 == 7)
- {
- //娓╁害
- dicSort[temparetureNo] = $"{ info.Data2 / 100}鈩�";
- }
- else if (info.Data1 == 6)
- {
- if (info.Data2 == 1)
- {
- //浣庨
- dicSort[windNo] = Language.StringByID(R.MyInternationalizationString.Fan_Low);
- }
- else if (info.Data2 == 2)
- {
- //涓
- dicSort[windNo] = Language.StringByID(R.MyInternationalizationString.Fan_Middle);
- }
- else if (info.Data2 == 3)
- {
- //楂橀
- dicSort[windNo] = Language.StringByID(R.MyInternationalizationString.Fan_Height);
- }
- }
- }
- #endregion
- }
- //濡傛灉寮�鍏冲拰鐧惧垎姣斾竴璧峰瓨鍦ㄧ殑璇�,鍒欎笉鏄剧ず寮�鍏虫枃瀛�
- if (dicSort.ContainsKey(ControlNo) == true && dicSort.ContainsKey(persentNo) == true)
- {
- dicSort.Remove(ControlNo);
- }
-
- //鎷兼帴鏂囨湰
- string txtvalue = string.Empty;
- for (int i = 0; i <= MaxNo; i++)
- {
- if (dicSort.ContainsKey(i) == true)
- {
- txtvalue += dicSort[i] + " ";
- }
- }
-
- return txtvalue.Trim();
- }
-
- #endregion
-
- #region 鈻� 閲嶇疆绠$悊鍛樺瘑鐮乢____________________
-
- /// <summary>
- /// 閲嶇疆绠$悊鍛樺瘑鐮�
- /// </summary>
- /// <param name="password">鏂板瘑鐮�</param>
- /// <returns></returns>
- private async Task<bool> DoResetAdministratorPsw(string password)
- {
- var realWay = ZigBee.Device.ZbGateway.MainGateWay;
- if (realWay == null)
- {
- //閿欒:缃戝叧瀵硅薄涓㈠け
- //string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg);
- //this.ShowTipMsg(msg);
- return false;
- }
- //鏄惁杈炬垚涓柇鐨勬椂鏈�
- bool canBreak = false;
- bool success = false;
- //瓒呮椂鏃堕棿
- int TimeOut = 0;
- string checkTopic = realWay.GwId + "/Security/AdminSetNewPassword_Respon";
- Action<string, string> getResultAction = (topic, message) =>
- {
- try
- {
- if (topic == checkTopic)
- {
- TimeOut = 0;
- var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
- var result = JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
- success = result == 0;
- canBreak = true;
- }
- }
- catch { }
- };
-
- realWay.Actions += getResultAction;
- try
- {
- var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 4033 } };
- var data = new Newtonsoft.Json.Linq.JObject { { "HomeId", Common.Config.Instance.HomeId }, { "Password", password } };
- jObject.Add("Data", data);
- realWay.Send("Security/AdminSetNewPassword", jObject.ToString());
- }
- catch
- {
- canBreak = true;
- //鍑虹幇鏈煡閿欒,璇风◢鍚庡啀璇�
- //string msg = Language.StringByID(R.MyInternationalizationString.uUnKnowErrorAndResetAgain);
- //this.ShowTipMsg(msg);
- }
-
- while (canBreak == false && TimeOut < 20)
- {
- await Task.Delay(100);
- TimeOut++;
- }
-
- realWay.Actions -= getResultAction;
- getResultAction = null;
-
- if (TimeOut >= 20)
- {
- //閲嶇疆绠$悊鍛樺瘑鐮佸け璐�(缃戝叧鍥炲瓒呮椂)
- //string msg = Language.StringByID(R.MyInternationalizationString.uResetAdministratorPswFail);
- //msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂");
- //this.ShowTipMsg(msg);
- return false;
- }
- return success;
- }
-
- #endregion
-
- #region 鈻� 涓�鑸柟娉昣__________________________
-
- /// <summary>
- /// 鑾峰彇鎵�鏈夐槻鍖虹殑ID(榛樿鏄�1锝�5)
- /// </summary>
- /// <returns></returns>
- private List<int> GetAllZoneId()
- {
- //闃插尯id
- //1锛�24灏忔椂闃插尯
- //2锛�24灏忔椂闈欓煶闃插尯
- //3锛氬嚭鍏ラ槻鍖�
- //4锛氬唴閮ㄩ槻鍖�
- //5锛氬懆鐣岄槻鍖�
- List<int> list = new List<int>() { 1, 2, 3, 4, 5 };
- return list;
- }
-
- /// <summary>
- /// 鑾峰彇闃插尯鐨勭炕璇戝悕瀛�
- /// </summary>
- /// <param name="ZoneID"></param>
- /// <returns></returns>
- public string GetGarrisonText(int ZoneID)
- {
- if (ZoneID == 1)
- {
- //24灏忔椂闃插尯
- return Language.StringByID(R.MyInternationalizationString.u24HourSectors);
- }
- else if (ZoneID == 2)
- {
- //闈欓煶闃插尯
- return Language.StringByID(R.MyInternationalizationString.uMuteSectors);
- }
- else if (ZoneID == 3)
- {
- //鍑哄叆闃插尯
- return Language.StringByID(R.MyInternationalizationString.uInAndOutSectors);
- }
- else if (ZoneID == 4)
- {
- //鍐呴儴闃插尯
- return Language.StringByID(R.MyInternationalizationString.uInteriorSectors);
- }
- else if (ZoneID == 5)
- {
- //鍛ㄧ晫闃插尯
- return Language.StringByID(R.MyInternationalizationString.uPerimeterSectors);
- }
- return string.Empty;
- }
-
- /// <summary>
- /// 鏄剧ず閿欒淇℃伅绐楀彛
- /// </summary>
- /// <param name="msg"></param>
- private void ShowErrorMsg(string msg)
- {
- Application.RunOnMainThread(() =>
- {
- var contr = new ShowMsgControl(ShowMsgType.Error, msg);
- contr.Show();
- });
- }
-
- /// <summary>
- /// 鏄剧ず姝e父淇℃伅绐楀彛
- /// </summary>
- /// <param name="msg"></param>
- private void ShowNormalMsg(string msg)
- {
- Application.RunOnMainThread(() =>
- {
- var contr = new ShowMsgControl(ShowMsgType.Normal, msg);
- contr.Show();
- });
- }
-
- /// <summary>
- /// 鏄剧ずTip绐楀彛
- /// </summary>
- /// <param name="msg"></param>
- private void ShowTipMsg(string msg)
- {
- Application.RunOnMainThread(() =>
- {
- var control = new ShowMsgControl(ShowMsgType.Tip, msg);
- control.Show();
- });
- }
-
- /// <summary>
- /// 鑾峰彇璁惧鐨勫敮涓�涓婚敭
- /// </summary>
- /// <param name="device"></param>
- /// <returns></returns>
- private string GetDeviceMainKeys(CommonDevice device)
- {
- return Common.LocalDevice.Current.GetDeviceMainKeys(device);
- }
-
- /// <summary>
- /// 鑾峰彇鐧婚檰鑰呯殑Token(濂藉儚绠$悊鍛樼櫥闄嗙殑鏃跺��,闇�瑕佸彉鏇碩oken,鎵�浠ユ殏涓斿畾涔変竴涓嚱鏁板嚭鏉�)
- /// </summary>
- /// <returns></returns>
- public string GetLoginToken()
- {
- //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken
- //return UserCenterLogic.GetConnectMainToken();
- return Config.Instance.Token;
- }
-
- #endregion
-
- #region 鈻� 缁撴瀯浣揰____________________________
-
- /// <summary>
- /// 鍐呴儴浣跨敤锛屽畨闃查槻鍖虹殑涓�浜涗俊鎭�
- /// </summary>
- private class SafeguardZoneInfo
- {
- /// <summary>
- /// 闃插尯id銆�
- /// </summary>
- public int ZoneId;
- /// <summary>
- /// 甯冮槻闃插尯鍚嶇О 锛屾渶澶�32涓瓧绗�
- /// </summary>
- public string ZoneName;
- /// <summary>
- /// 淇℃伅鎺ㄩ�� 0:鎺ㄩ�� 1:涓嶆帹閫� (鍙湁闃插尯ID:1,2,3鎵嶄細鏈夈��4,5鐨勯兘褰掍负3,鍥犱负瀹冩槸浠ラ槻鍖烘ā寮廔D(ActionType)涓哄崟浣嶇殑)
- /// </summary>
- public int InformationPush = 1;
- /// <summary>
- /// 浼犳劅鍣ㄨ澶囩殑淇℃伅(keys:璁惧涓婚敭)
- /// </summary>
- public Dictionary<string, Safeguard.ZoneDeviceListData> dicSensor = new Dictionary<string, Safeguard.ZoneDeviceListData>();
- /// <summary>
- /// 璇ラ槻鍖轰笅鍏ㄩ儴璁惧鏂囦欢璺緞(keys:璁惧涓婚敭,value:璁惧鏂囦欢璺緞)
- /// </summary>
- public Dictionary<string, string> dicAllDevice = new Dictionary<string, string>();
- /// <summary>
- /// 璇ラ槻鍖轰笅闈㈢殑鎶ヨ璁惧(keys:璁惧涓婚敭),锛滃彧鏈夐槻鍖篒D:1,2,3鎵嶄細鏈夈��4,5鐨勯兘褰掍负3,鍥犱负瀹冩槸浠ラ槻鍖烘ā寮廔D(ActionType)涓哄崟浣嶇殑锛�
- /// </summary>
- public Dictionary<string, Safeguard.CatActionResponseObj> dicAlarmDevice = new Dictionary<string, Safeguard.CatActionResponseObj>();
- /// <summary>
- /// 璇ラ槻鍖轰笅闈㈢殑鍦烘櫙(keys:鍦烘櫙No),锛滃彧鏈夐槻鍖篒D:1,2,3鎵嶄細鏈夈��4,5鐨勯兘褰掍负3,鍥犱负瀹冩槸浠ラ槻鍖烘ā寮廔D(ActionType)涓哄崟浣嶇殑锛�
- /// </summary>
- public Dictionary<int, string> dicScenes = new Dictionary<int, string>();
- }
-
- #endregion
- }
-}
+锘縰sing Newtonsoft.Json;
+using Shared.Common;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using ZigBee.Device;
+
+namespace Shared.Phone.UserCenter
+{
+ /// <summary>
+ /// <para>瀹夐槻鏈湴缂撳瓨(浠g爜浣跨敤)</para>
+ /// <para>闃插尯ID(ZoneId)锛�</para>
+ /// <para>1锛�24灏忔椂闃插尯 2锛�24灏忔椂闈欓煶闃插尯 3锛氬嚭鍏ラ槻鍖� 4锛氬唴閮ㄩ槻鍖� 5锛氬懆鐣岄槻鍖�</para>
+ /// <para>闃插尯妯″紡ID(ActionType -> 闃插尯ID鎹㈢畻:ZoneId=3,4,5閮藉綋鍋�3澶勭悊)锛�</para>
+ /// <para>1锛�24灏忔椂闃插尯 2锛氶潤闊抽槻鍖� 3锛氬叾浠栭槻鍖猴紙鍑哄叆闃插尯銆佸唴閮ㄩ槻鍖恒�佸懆鐣岄槻鍖猴級</para>
+ /// <para>甯冮槻妯″紡ID(GarrisonMode)锛�</para>
+ /// <para>1锛氬湪瀹跺竷闃� 鎴栬�� 甯冮槻(鍐呴儴闃插尯娌℃湁璁剧疆鐨勬椂鍊�) 2锛氱瀹跺竷闃�</para>
+ /// </summary>
+ public class HdlSafeguardLogic
+ {
+ #region 鈻� 鍙橀噺澹版槑___________________________
+
+ /// <summary>
+ /// 鏈湴瀹夐槻鏁版嵁
+ /// </summary>
+ private static HdlSafeguardLogic m_Current = null;
+ /// <summary>
+ /// 鏈湴瀹夐槻鏁版嵁
+ /// </summary>
+ public static HdlSafeguardLogic Current
+ {
+ get
+ {
+ if (m_Current == null)
+ {
+ m_Current = new HdlSafeguardLogic();
+ }
+ return m_Current;
+ }
+ set
+ {
+ m_Current = value;
+ }
+ }
+
+ /// <summary>
+ /// 褰撳墠鐨勫竷闃叉ā寮�(娉ㄦ剰,杩欎釜涓滆タ鍙粰瀹夐槻涓荤晫闈㈠垵濮嬪寲鐨勬椂鍊欎娇鐢紒锛�)
+ /// </summary>
+ public GarrisonMode NowGarrisonMode = GarrisonMode.None;
+ /// <summary>
+ /// 鐢ㄦ埛瀵嗙爜鐨勭紦瀛�
+ /// </summary>
+ private string UserPassword = null;
+ /// <summary>
+ /// 瀹夐槻鏁版嵁缂撳瓨
+ /// </summary>
+ private Dictionary<int, SafeguardZoneInfo> dicAllZoneInfo = new Dictionary<int, SafeguardZoneInfo>();
+
+ #endregion
+
+ #region 鈻� 鍒锋柊瀹夐槻___________________________
+
+ /// <summary>
+ /// 浠庢柊浠庣綉鍏抽偅閲岃幏鍙栨暟鎹�(澶辫触鏃朵細寮瑰嚭淇℃伅妗�)
+ /// </summary>
+ /// <returns></returns>
+ public async Task<bool> ReFreshByGateway()
+ {
+ //鍏堟竻绌�
+ this.dicAllZoneInfo.Clear();
+ var mainGateway = ZbGateway.MainGateWay;
+ if (mainGateway == null)
+ {
+ //閿欒:缃戝叧瀵硅薄涓㈠け
+ string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg);
+ this.ShowTipMsg(msg);
+ return false;
+ }
+ var mainWayId = mainGateway.GwId;
+
+ //涓婚鏁板浐瀹�5+3+1
+ int topicCount = 9;
+ //閿欒
+ bool error = false;
+
+ //闃插尯璁惧淇℃伅
+ var listDevice = new List<Safeguard.GetZoneDeviceListByIdResponData>();
+ //鎶ヨ鐩爣
+ var listAlarm = new List<Safeguard.CatZoneActionResponseData>();
+ //瀹夐槻妯″紡
+ var listMode = new List<Safeguard.GetModeUsingResponseData>();
+
+ Action<string, string> action = (topic, message) =>
+ {
+ var gatewayID = topic.Split('/')[0];
+ if (gatewayID != mainWayId)
+ {
+ return;
+ }
+
+ //妫�娴嬪叡閫氶敊璇�
+ if (topic == gatewayID + "/" + "Error_Respon")
+ {
+ var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+ var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+ if (temp != null)
+ {
+ string msg = HdlCheckLogic.Current.CheckCommonErrorCode(temp.Error);
+ if (msg != null)
+ {
+ this.ShowTipMsg(msg);
+ }
+ }
+ error = true;
+ }
+ //闃插尯璁惧淇℃伅
+ if (topic == gatewayID + "/Security/GetZoneDeviceList_Respon")
+ {
+ var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+ var result = JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
+ if (result == 0)
+ {
+ var data = JsonConvert.DeserializeObject<Safeguard.GetZoneDeviceListByIdResponData>(jobject["Data"].ToString());
+ if (data != null)
+ {
+ //灏嗛槻鍖轰紶鎰熷櫒璁惧鍒楄〃鍔犲叆缂撳瓨
+ listDevice.Add(data);
+ topicCount--;
+ return;
+ }
+ }
+ error = true;
+ }
+ //闃插尯鎶ヨ鐩爣
+ if (topic == gatewayID + "/Security/GetZoneAction_Respon")
+ {
+ var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+ var result = JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
+ if (result == 0)
+ {
+ var data = JsonConvert.DeserializeObject<Safeguard.CatZoneActionResponseData>(jobject["Data"].ToString());
+ if (data != null)
+ {
+ //灏嗛槻鍖烘姤璀︾洰鏍囧姞鍏ョ紦瀛�
+ listAlarm.Add(data);
+ topicCount--;
+ return;
+ }
+ }
+ error = true;
+ }
+ //褰撳墠甯冮槻妯″紡
+ if (topic == gatewayID + "/Security/GetCurrentMode_Respon")
+ {
+ var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+ var result = JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
+ if (result != 0)
+ {
+ //褰撳墠娌℃湁妯′豢妯″紡
+ this.NowGarrisonMode = GarrisonMode.None;
+ }
+ else
+ {
+ var data = JsonConvert.DeserializeObject<Safeguard.GetModeUsingResponseData>(jobject["Data"].ToString());
+ if (data != null)
+ {
+ //璁剧疆褰撳墠妯′豢妯″紡
+ this.NowGarrisonMode = (GarrisonMode)data.ModeId;
+ }
+ }
+ topicCount--;
+ }
+ };
+ mainGateway.Actions += action;
+ try
+ {
+ var jObject = new Newtonsoft.Json.Linq.JObject() { { "Cluster_ID", 0 }, { "Command", 4036 } };
+ mainGateway.Send("Security/GetSecurityInfo", jObject.ToString());
+ }
+ catch { }
+
+ var dateTime = DateTime.Now;
+ while ((DateTime.Now - dateTime).TotalMilliseconds < 3000)
+ {
+ //if (error == true) { break; }
+ if (topicCount <= 0)
+ {
+ //9娆′富棰樺叏閮ㄦ帴鏀跺畬鎴�
+ await Task.Delay(1000);
+ break;
+ }
+ await Task.Delay(50);
+ }
+ mainGateway.Actions -= action;
+
+ if (topicCount > 0)
+ {
+ //鑾峰彇闃插尯淇℃伅澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uGetSafetyInfoFail);
+ this.ShowTipMsg(msg);
+ return false;
+ }
+
+ //灏嗛槻鍖轰紶鎰熷櫒璁惧鍒楄〃鍔犲叆缂撳瓨
+ foreach (var data in listDevice)
+ {
+ this.SetZoneSensorDeviceToMemory(data);
+ }
+ //灏嗛槻鍖烘姤璀︾洰鏍囧姞鍏ョ紦瀛�
+ foreach (var data in listAlarm)
+ {
+ this.SetAlarmTargetDeviceToMemory(data);
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// 灏嗛槻鍖鸿澶�(浼犳劅鍣�)鍒楄〃鍔犲叆缂撳瓨
+ /// </summary>
+ /// <param name="allData">闃插尯鏁版嵁</param>
+ private void SetZoneSensorDeviceToMemory(Safeguard.GetZoneDeviceListByIdResponData allData)
+ {
+ if (this.dicAllZoneInfo.ContainsKey(allData.ZoneId) == false)
+ {
+ this.dicAllZoneInfo[allData.ZoneId] = new SafeguardZoneInfo();
+ }
+
+ //璁剧疆鍩烘湰淇℃伅
+ SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[allData.ZoneId];
+ zoneInfo.ZoneId = allData.ZoneId;
+ zoneInfo.ZoneName = allData.ZoneName;
+
+ //淇℃伅鎺ㄩ��
+ zoneInfo.InformationPush = allData.IsDisablePushMessage;
+
+ //澶勭悊璁惧
+ foreach (var data2 in allData.DeviceList)
+ {
+ string mainKey = LocalDevice.Current.GetDeviceMainKeys(data2.MacAddr, data2.Epoint);
+ //浼犳劅鍣ㄨ澶囦俊鎭�
+ var Deviceinfo = new Safeguard.ZoneDeviceListData();
+ Deviceinfo.IsBypass = data2.IsBypass;
+ Deviceinfo.MomentStatus = data2.MomentStatus;
+ Deviceinfo.TriggerZoneStatus = data2.TriggerZoneStatus;
+ Deviceinfo.MacAddr = data2.MacAddr;
+ Deviceinfo.Epoint = data2.Epoint;
+ zoneInfo.dicSensor[mainKey] = Deviceinfo;
+
+ //鏈湴鏄惁鏈夎繖涓澶�
+ CommonDevice device = LocalDevice.Current.GetDevice(mainKey);
+ if (device != null)
+ {
+ //鍏ㄩ儴璁惧
+ zoneInfo.dicAllDevice[mainKey] = device.FilePath;
+ }
+ else
+ {
+ //鍏ㄩ儴璁惧(缂哄け鐨勬湭鐭ヨ澶�)
+ var tempDevice = new CommonDevice();
+ tempDevice.DeviceAddr = data2.MacAddr;
+ tempDevice.DeviceEpoint = data2.Epoint;
+ zoneInfo.dicAllDevice[mainKey] = tempDevice.FilePath;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 灏嗘姤璀︾洰鏍囧垪琛ㄥ姞鍏ョ紦瀛�
+ /// </summary>
+ /// <param name="resData">
+ /// <para>1锛�24灏忔椂闃插尯瑙﹀彂鍔ㄤ綔</para>
+ /// <para>2锛�24灏忔椂闈欓煶闃插尯瑙﹀彂鍔ㄤ綔</para>
+ /// <para>3锛氬叾浠栭槻鍖猴紙鍑哄叆闃插尯銆佸唴閮ㄩ槻鍖恒�佸懆鐣岄槻鍖猴級瑙﹀彂鍔ㄤ綔</para>
+ /// </param>
+ /// <param name="mode">鏄惁鏄剧ず閿欒</param>
+ /// <returns></returns>
+ private void SetAlarmTargetDeviceToMemory(Safeguard.CatZoneActionResponseData resData, ShowErrorMode mode = ShowErrorMode.NO)
+ {
+ int ActionType = resData.ActionType;
+ if (this.dicAllZoneInfo.ContainsKey(ActionType) == false)
+ {
+ this.dicAllZoneInfo[ActionType] = new SafeguardZoneInfo();
+ //璁剧疆鍩烘湰淇℃伅
+ this.dicAllZoneInfo[ActionType].ZoneId = ActionType;
+ }
+ SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[ActionType];
+
+ zoneInfo.dicAlarmDevice.Clear();
+ zoneInfo.dicScenes.Clear();
+
+ foreach (var data in resData.Actions)
+ {
+ //璁惧
+ if (data.Type == 0)
+ {
+ //鏈湴鏄惁鏈夎繖涓澶�
+ string mainKey = LocalDevice.Current.GetDeviceMainKeys(data.DeviceAddr, data.Epoint);
+ //鎶ヨ淇℃伅
+ zoneInfo.dicAlarmDevice[mainKey] = data;
+ CommonDevice device = LocalDevice.Current.GetDevice(mainKey);
+ if (device != null)
+ {
+ //鍏ㄩ儴璁惧
+ zoneInfo.dicAllDevice[mainKey] = device.FilePath;
+ }
+ else
+ {
+ //鍏ㄩ儴璁惧(缂哄け鐨勬湭鐭ヨ澶�)
+ var tempDevice = new CommonDevice();
+ tempDevice.DeviceAddr = data.DeviceAddr;
+ tempDevice.DeviceEpoint = data.Epoint;
+ zoneInfo.dicAllDevice[mainKey] = tempDevice.FilePath;
+ }
+ }
+ //鍦烘櫙
+ else if (data.Type == 1)
+ {
+ //鍦烘櫙
+ zoneInfo.dicScenes[data.ScenesId] = data.ESName;
+ }
+ }
+ }
+ #endregion
+
+ #region 鈻� 鑾峰彇璁惧___________________________
+
+ /// <summary>
+ /// 鑾峰彇鎸囧畾闃插尯鐨勬墍鏈変紶鎰熷櫒璁惧鐨勪俊鎭�
+ /// </summary>
+ /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
+ /// <returns></returns>
+ public List<Safeguard.ZoneDeviceListData> GetSensorDevicesInfoByZoonID(int zoonId)
+ {
+ var list = new List<Safeguard.ZoneDeviceListData>();
+ if (this.dicAllZoneInfo.ContainsKey(zoonId) == false)
+ {
+ return list;
+ }
+ SafeguardZoneInfo info = this.dicAllZoneInfo[zoonId];
+ foreach (var data in info.dicSensor.Values)
+ {
+ list.Add(data);
+ }
+
+ return list;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍏ㄩ儴鐨勪紶鎰熷櫒璁惧鐨勪俊鎭�(鎸夐槻鍖哄垎缁�)
+ /// </summary>
+ /// <returns></returns>
+ public Dictionary<int, List<Safeguard.ZoneDeviceListData>> GetAllSensorDeviceInfo()
+ {
+ var dic = new Dictionary<int, List<Safeguard.ZoneDeviceListData>>();
+
+ foreach (int ZoonId in this.dicAllZoneInfo.Keys)
+ {
+ List<Safeguard.ZoneDeviceListData> list = this.GetSensorDevicesInfoByZoonID(ZoonId);
+ if (list.Count > 0)
+ {
+ dic[ZoonId] = list;
+ }
+ }
+ return dic;
+ }
+
+ /// <summary>
+ /// 鏍规嵁闃插尯ID鑾峰彇鏈湴鎶ヨ鐩爣
+ /// </summary>
+ /// <param name="ZoneId">闃插尯ID</param>
+ /// <returns></returns>
+ public List<Safeguard.CatActionResponseObj> GetLocalAlarmTargetInfoByZoneId(int ZoneId)
+ {
+ if (ZoneId > 3)
+ {
+ ZoneId = 3;
+ }
+ if (this.dicAllZoneInfo.ContainsKey(ZoneId) == false)
+ {
+ return new List<Safeguard.CatActionResponseObj>();
+ }
+ SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[ZoneId];
+
+ //浼樺厛鍦烘櫙鍚�
+ var list = new List<Safeguard.CatActionResponseObj>();
+ foreach (int sceneId in zoneInfo.dicScenes.Keys)
+ {
+ var objData = new Safeguard.CatActionResponseObj();
+ objData.Type = 1;
+ objData.ScenesId = sceneId;
+ objData.ESName = zoneInfo.dicScenes[sceneId];
+
+ list.Add(objData);
+ }
+ foreach (var data in zoneInfo.dicAlarmDevice.Values)
+ {
+ list.Add(data);
+ }
+ return list;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎸囧畾浼犳劅鍣ㄦ墍澶勭殑闃插尯ID(涓嶅瓨鍦ㄥ垯杩斿洖-1)
+ /// </summary>
+ /// <param name="device">鎸囧畾浼犳劅鍣ㄨ澶�</param>
+ /// <returns></returns>
+ public int GetZoneIdByIASZone(CommonDevice device)
+ {
+ string mainkey = this.GetDeviceMainKeys(device);
+ foreach (SafeguardZoneInfo info in this.dicAllZoneInfo.Values)
+ {
+ if (info.dicSensor.ContainsKey(mainkey) == true)
+ {
+ return info.ZoneId;
+ }
+ }
+ return -1;
+ }
+
+ #endregion
+
+ #region 鈻� 娣诲姞浼犳劅鍣╛________________________
+
+ /// <summary>
+ /// 娣诲姞浼犳劅鍣ㄨ澶囧埌闃插尯(澶辫触鏃朵細寮瑰嚭淇℃伅妗�)
+ /// </summary>
+ /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
+ /// <param name="listdevice">璁惧鍒楄〃</param>
+ public async Task<bool> AddSensorDevice(int zoonId, List<CommonDevice> listdevice)
+ {
+ //鐜拌幏鍙栧綋鍓嶇殑甯冮槻妯″紡
+ var safetyMode = await this.GetSafetyMode();
+ if (safetyMode != null)
+ {
+ //褰撳墠姝e浜庡竷闃叉ā寮�,鏃犳硶娣诲姞璁惧
+ string msg = Language.StringByID(R.MyInternationalizationString.uCanNotAddDeviceInGarrisonMode);
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ //鏍¢獙瀵嗙爜
+ bool result = await this.ShowSafetyAdminValidatedDialog();
+ if (result == false)
+ {
+ return false;
+ }
+
+ if (listdevice.Count == 0)
+ {
+ return true;
+ }
+
+ List<int> listMomentStatus = new List<int>();
+ List<int> listTriggerStatus = new List<int>();
+ foreach (var device in listdevice)
+ {
+ int MomentStatus = 1;
+ int TriggerZoneStatus = 3;
+ //鑾峰彇瀹夐槻浼犳劅鍣ㄧ殑鐬棿鐘舵�佽瀹氬��
+ this.GetSafeguardSensorMomentStatus(device, ref MomentStatus, ref TriggerZoneStatus);
+
+ listMomentStatus.Add(MomentStatus);
+ listTriggerStatus.Add(TriggerZoneStatus);
+ }
+
+ //娣诲姞璁惧鍒扮綉鍏�
+ List<string> listSuccess = await this.AddSensorDeviceToGateway(zoonId, listdevice, listMomentStatus, listTriggerStatus);
+ if (listSuccess == null)
+ {
+ return false;
+ }
+
+ //淇敼缂撳瓨
+ if (this.dicAllZoneInfo.ContainsKey(zoonId) == false)
+ {
+ this.dicAllZoneInfo[zoonId] = new SafeguardZoneInfo();
+ }
+
+ SafeguardZoneInfo info = this.dicAllZoneInfo[zoonId];
+ for (int i = 0; i < listdevice.Count; i++)
+ {
+ CommonDevice device = listdevice[i];
+ string mainkey = this.GetDeviceMainKeys(device);
+ if (listSuccess.Contains(mainkey) == false)
+ {
+ //娌℃湁娣诲姞鎴愬姛
+ continue;
+ }
+
+ Safeguard.ZoneDeviceListData sensorInfo = null;
+ if (info.dicSensor.ContainsKey(mainkey) == true)
+ {
+ sensorInfo = info.dicSensor[mainkey];
+ }
+ else
+ {
+ sensorInfo = new Safeguard.ZoneDeviceListData();
+ info.dicSensor[mainkey] = sensorInfo;
+ sensorInfo.Epoint = device.DeviceEpoint;
+ sensorInfo.MacAddr = device.DeviceAddr;
+ sensorInfo.IsBypass = 0;
+ }
+ info.dicAllDevice[mainkey] = device.FilePath;
+ //璁惧淇℃伅
+ sensorInfo.MomentStatus = listMomentStatus[0];
+ sensorInfo.TriggerZoneStatus = listTriggerStatus[0];
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// 娣诲姞浼犳劅鍣ㄨ澶囧埌缃戝叧(澶辫触鏃朵細寮瑰嚭淇℃伅妗�)
+ /// </summary>
+ /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
+ /// <param name="listdevice">璁惧鍒楄〃</param>
+ /// <param name="listMomentStatus">璁惧涓婃姤鐨勭姸鎬佹槸鍚︿负鐬棿鐘舵��</param>
+ /// <param name="listTriggerStatus">鎴戜篃涓嶇煡閬撹繖涓槸浠�涔堜笢瑗�</param>
+ /// <returns></returns>
+ private async Task<List<string>> AddSensorDeviceToGateway(int zoonId, List<CommonDevice> listdevice, List<int> listMomentStatus, List<int> listTriggerStatus)
+ {
+ var addData = new Safeguard.AddDeviceToZoneData();
+ addData.ZoneId = zoonId;
+ addData.LoginToken = this.GetLoginToken();
+
+ for (int i = 0; i < listdevice.Count; i++)
+ {
+ CommonDevice device = listdevice[i];
+ //鏁版嵁缁勮
+ var deviceData = new Safeguard.DeviceListObj();
+ deviceData.Epoint = device.DeviceEpoint;
+ deviceData.MacAddr = device.DeviceAddr;
+ deviceData.MomentStatus = listMomentStatus[i];
+ deviceData.TriggerZoneStatus = listTriggerStatus[i];
+ addData.DeviceList.Add(deviceData);
+ }
+
+ //娌℃湁鏁版嵁
+ if (addData.DeviceList.Count == 0)
+ {
+ return new List<string>();
+ }
+ //娣诲姞鍒扮綉鍏�
+ var returnData = await Safeguard.AddDeviceToZoneAsync(addData);
+ if (returnData == null || returnData.addDeviceToPartResponseData == null || returnData.addDeviceToPartResponseData.Result == 1)
+ {
+ //鍚戦槻鍖烘坊鍔犺澶囧け璐�
+ string msg = Language.StringByID(R.MyInternationalizationString.uAddDeviceToZoneFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, returnData);
+
+ this.ShowErrorMsg(msg);
+ return null;
+ }
+
+ List<string> listSuccess = new List<string>();
+ foreach (var data in returnData.addDeviceToPartResponseData.DeviceList)
+ {
+ //涓�鎵硅澶囬噷闈紝鎴愬姛娣诲姞鐨�
+ if (data.Status == 0)
+ {
+ listSuccess.Add(LocalDevice.Current.GetDeviceMainKeys(data.MacAddr, data.Epoint));
+ }
+ else if (data.Status == 1)
+ {
+ var device = Common.LocalDevice.Current.GetDevice(data.MacAddr, data.Epoint);
+ string msg = Common.LocalDevice.Current.GetDeviceEpointName(device) + "\r\n";
+ //鐩爣璁惧涓嶅瓨鍦�
+ msg += Language.StringByID(R.MyInternationalizationString.uTargetDeviceIsNotExsit);
+ this.ShowTipMsg(msg);
+ }
+ else if (data.Status == 2)
+ {
+ var device = Common.LocalDevice.Current.GetDevice(data.MacAddr, data.Epoint);
+ string msg = Common.LocalDevice.Current.GetDeviceEpointName(device) + "\r\n";
+ //璁惧宸插姞鍏ュ叾瀹冮槻鍖�
+ msg += Language.StringByID(R.MyInternationalizationString.uDeviceHadAddToTheOtherGarrison);
+ this.ShowTipMsg(msg);
+ }
+ }
+
+ return listSuccess;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀹夐槻浼犳劅鍣ㄧ殑鐬棿鐘舵�佽瀹氬��(娣诲姞浼犳劅鍣ㄥ埌瀹夐槻鏃讹紝闇�瑕佽皟鐢ㄦ鏂规硶鏉ュ垵濮嬪寲鍙傛暟)
+ /// </summary>
+ /// <param name="device">璁惧瀵硅薄</param>
+ /// <param name="MomentStatus">璁惧涓婃姤鐨勭姸鎬佹槸鍚︿负鐬棿鐘舵��</param>
+ /// <param name="TriggerZoneStatus">鎴戜篃涓嶇煡閬撹繖涓槸浠�涔堜笢瑗�</param>
+ public void GetSafeguardSensorMomentStatus(CommonDevice device, ref int MomentStatus, ref int TriggerZoneStatus)
+ {
+ //杩愬姩浼犳劅鍣�
+ if (device.IasDeviceType == 13)
+ {
+ MomentStatus = 1;
+ TriggerZoneStatus = 3;
+ }
+ //鐑熼浘浼犳劅鍣�
+ else if (device.IasDeviceType == 40)
+ {
+ MomentStatus = 1;
+ TriggerZoneStatus = 3;
+ }
+ //姘翠镜浼犳劅鍣�
+ else if (device.IasDeviceType == 42)
+ {
+ MomentStatus = 1;
+ TriggerZoneStatus = 3;
+ }
+ //鐕冩皵浼犳劅鍣�
+ else if (device.IasDeviceType == 43)
+ {
+ MomentStatus = 1;
+ TriggerZoneStatus = 3;
+ }
+ //绱ф�ユ寜閽�
+ else if (device.IasDeviceType == 44)
+ {
+ MomentStatus = 1;
+ TriggerZoneStatus = 3;
+ }
+ //閽ュ寵鎵�
+ else if (device.IasDeviceType == 277)
+ {
+ MomentStatus = 1;
+ TriggerZoneStatus = 3;
+ }
+ //闂ㄧ獥浼犳劅鍣�
+ else if (device.IasDeviceType == 21 || device.IasDeviceType == 22)
+ {
+ MomentStatus = 0;
+ TriggerZoneStatus = 3;
+ }
+ //濡傛灉鏄櫄鎷熻澶囷紝鍒欒繖涓笢瑗挎案鎭掍负0
+ if (device.DriveCode > 0)
+ {
+ MomentStatus = 0;
+ }
+ }
+
+ #endregion
+
+ #region 鈻� 鍒犻櫎璁惧___________________________
+
+ /// <summary>
+ /// 鍒犻櫎浼犳劅鍣ㄨ澶�
+ /// </summary>
+ /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
+ /// <param name="listdevice">浼犳劅鍣ㄨ澶囧璞�</param>
+ public async Task<bool> DeleteSensorDevice(int zoonId, List<CommonDevice> listdevice)
+ {
+ //鐜拌幏鍙栧綋鍓嶇殑甯冮槻妯″紡
+ var safetyMode = await this.GetSafetyMode();
+ if (safetyMode != null)
+ {
+ //褰撳墠姝e浜庡竷闃叉ā寮�,鏃犳硶鍒犻櫎璁惧
+ string msg = Language.StringByID(R.MyInternationalizationString.uCanNotDeleteDeviceInGarrisonMode);
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+
+ //鏍¢獙瀵嗙爜
+ bool result = await this.ShowSafetyAdminValidatedDialog();
+ if (result == false)
+ {
+ return false;
+ }
+
+ if (listdevice.Count == 0)
+ {
+ return true;
+ }
+
+ //浠庣綉鍏抽偅閲屽垹闄よ澶�
+ List<string> listKeys = await this.DeleteSensorDeviceFromGateway(zoonId, listdevice);
+ if (listKeys == null)
+ {
+ return false;
+ }
+
+ //淇敼缂撳瓨
+ if (this.dicAllZoneInfo.ContainsKey(zoonId) == false)
+ {
+ return true;
+ }
+
+ SafeguardZoneInfo info = this.dicAllZoneInfo[zoonId];
+ foreach (CommonDevice device in listdevice)
+ {
+ string mainkey = this.GetDeviceMainKeys(device);
+ if (info.dicSensor.ContainsKey(mainkey) == true
+ && listKeys.Contains(mainkey) == true)
+ {
+ info.dicSensor.Remove(mainkey);
+ info.dicAllDevice.Remove(mainkey);
+ }
+ }
+ return true;
+ }
+
+ /// <summary>
+ /// 浠庣綉鍏抽偅閲屽垹闄や紶鎰熷櫒璁惧
+ /// </summary>
+ /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
+ /// <param name="listdevice">璁惧瀵硅薄</param>
+ /// <returns></returns>
+ private async Task<List<string>> DeleteSensorDeviceFromGateway(int zoonId, List<CommonDevice> listdevice)
+ {
+ var deteleData = new Safeguard.RemoveEqToZoneData();
+ deteleData.ZoneId = zoonId;
+ deteleData.LoginToken = this.GetLoginToken();
+
+ foreach (CommonDevice device in listdevice)
+ {
+ //缁勮鏁版嵁
+ var removeData = new Safeguard.RemoveDeviceListObj();
+ removeData.MacAddr = device.DeviceAddr;
+ removeData.Epoint = device.DeviceEpoint;
+ deteleData.RemoveDeviceList.Add(removeData);
+ }
+
+ //娌℃湁鏁版嵁
+ if (deteleData.RemoveDeviceList.Count == 0)
+ {
+ return new List<string>();
+ }
+
+ //浠庣綉鍏充腑绉婚櫎
+ var returnData = await Safeguard.RemoveDeviceToZoneAsync(deteleData);
+ if (returnData == null || returnData.removeDeviceToZoneResponseData == null || returnData.removeDeviceToZoneResponseData.Result == 1)
+ {
+ //璁惧鍒犻櫎澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uDeviceDeleteFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, returnData);
+
+ this.ShowErrorMsg(msg);
+
+ return null;
+ }
+
+ List<string> listKeys = new List<string>();
+ foreach (var data in returnData.removeDeviceToZoneResponseData.RemoveDeviceList)
+ {
+ if (data.Status == 0)
+ {
+ listKeys.Add(LocalDevice.Current.GetDeviceMainKeys(data.MacAddr, data.Epoint));
+ }
+ }
+
+ return listKeys;
+ }
+
+ #endregion
+
+ #region 鈻� 瀛樺湪妫�娴媉__________________________
+
+ /// <summary>
+ /// 鎸囧畾浼犳劅鍣ㄨ澶囨槸鍚﹀瓨鍦ㄤ簬瀹夐槻缃戝叧
+ /// </summary>
+ /// <param name="device"></param>
+ /// <returns></returns>
+ public bool IsSensorDeviceExist(CommonDevice device)
+ {
+ string mainkey = this.GetDeviceMainKeys(device);
+ foreach (SafeguardZoneInfo info in this.dicAllZoneInfo.Values)
+ {
+ if (info.dicSensor.ContainsKey(mainkey) == true)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /// <summary>
+ /// 鎸囧畾浼犳劅鍣ㄨ澶囨槸鍚﹀瓨鍦ㄤ簬瀹夐槻缃戝叧
+ /// </summary>
+ /// <param name="ZoneId">闃插尯ID</param>
+ /// <param name="device"></param>
+ /// <returns></returns>
+ public bool IsSensorDeviceExist(int ZoneId, CommonDevice device)
+ {
+ if (this.dicAllZoneInfo.ContainsKey(ZoneId) == false)
+ {
+ return false;
+ }
+ string mainkey = this.GetDeviceMainKeys(device);
+ SafeguardZoneInfo info = this.dicAllZoneInfo[ZoneId];
+
+ if (info.dicSensor.ContainsKey(mainkey) == true)
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ /// <summary>
+ /// 鎸囧畾鎶ヨ璁惧鏄惁瀛樺湪浜庡畨闃茬綉鍏�
+ /// </summary>
+ /// <param name="ZoneId">闃插尯ID</param>
+ /// <param name="device"></param>
+ /// <returns></returns>
+ public bool IsAlarmDeviceExist(int ZoneId, CommonDevice device)
+ {
+ if (ZoneId < 3)
+ {
+ if (this.dicAllZoneInfo.ContainsKey(ZoneId) == false)
+ {
+ return false;
+ }
+ string mainkey = this.GetDeviceMainKeys(device);
+ SafeguardZoneInfo info = this.dicAllZoneInfo[ZoneId];
+
+ if (info.dicAlarmDevice.ContainsKey(mainkey) == true)
+ {
+ return true;
+ }
+ }
+ else
+ {
+ string mainkey = this.GetDeviceMainKeys(device);
+
+ for (int i = 3; i <= 5; i++)
+ {
+ if (this.dicAllZoneInfo.ContainsKey(i) == false)
+ {
+ continue;
+ }
+ SafeguardZoneInfo info = this.dicAllZoneInfo[i];
+
+ if (info.dicAlarmDevice.ContainsKey(mainkey) == true)
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /// <summary>
+ /// 鎸囧畾甯冮槻鏄惁瀛樺湪浜庡畨闃茬綉鍏�
+ /// </summary>
+ /// <param name="zoonId">闃插尯ID(瀹冧技涔庢槸鍞竴涓婚敭)</param>
+ /// <returns></returns>
+ public bool IsZoonExist(int zoonId)
+ {
+ return this.dicAllZoneInfo.ContainsKey(zoonId);
+ }
+
+ /// <summary>
+ /// 鏄惁璁剧疆鏈夊唴閮ㄩ槻鍖�
+ /// </summary>
+ /// <returns></returns>
+ public bool IsHadInternalDefenseArea()
+ {
+ foreach (SafeguardZoneInfo info in this.dicAllZoneInfo.Values)
+ {
+ //瀛樺湪绗洓闃插尯
+ if (info.ZoneId == 4)
+ {
+ //閲岄潰鏈夋病鏈夎澶�
+ if (info.dicSensor.Count > 0)
+ {
+ return true;
+ }
+ //涓嶅啀寰�涓嬪惊鐜�
+ return false;
+ }
+ }
+ return false;
+ }
+
+ #endregion
+
+ #region 鈻� 瀹夐槻鐧婚檰___________________________
+
+ /// <summary>
+ /// 涓荤敤鎴风櫥闄� 0:瀵嗙爜閿欒 1:姝e父 -1:寮傚父
+ /// </summary>
+ /// <param name="password"></param>
+ /// <param name="showMode"></param>
+ public async Task<int> AdminLogin(string password, ShowErrorMode showMode = ShowErrorMode.YES)
+ {
+ //灏濊瘯鐧婚檰
+ var resultData = await ZigBee.Device.Safeguard.AdminLoginResponAsync(password, this.GetLoginToken());
+ if (resultData == null)
+ {
+ return -1;
+ }
+ if (resultData != null && resultData.Result != 0)
+ {
+ if (showMode == ShowErrorMode.YES)
+ {
+ //绠$悊鍛樺瘑鐮侀敊璇�
+ string msg = Language.StringByID(R.MyInternationalizationString.uAdministratorPasswordIsError);
+ this.ShowErrorMsg(msg);
+ }
+ return 0;
+ }
+
+ return 1;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎸囧畾鐢ㄦ埛鐨勫瘑鐮�,濡傛灉鐢ㄦ埛涓嶅瓨鍦紝鍒欒繑鍥瀗ull(閿欒涓嶄細寮瑰嚭淇℃伅)
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ public async Task<string> GetUserPassword(int userId)
+ {
+ //鍏堣幏鍙栧瘑鐮�
+ var nowPw = await Safeguard.CatUserPasswordAsync(this.GetLoginToken());
+ if (nowPw == null || nowPw.catUserPasswordResponseData == null)
+ {
+ return null;
+ }
+
+ foreach (var pw in nowPw.catUserPasswordResponseData.UserPasswordList)
+ {
+ if (pw.UserId == userId)
+ {
+ return pw.Password;
+ }
+ }
+ return null;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍏ㄩ儴鐢ㄦ埛鐨勫瘑鐮�(閿欒浼氬脊鍑轰俊鎭�)
+ /// </summary>
+ /// <param name="mode">鏄惁鏄剧ず閿欒</param>
+ /// <returns></returns>
+ public async Task<List<Safeguard.UserPasswordListObj>> GetAllUserPassword(ShowErrorMode mode = ShowErrorMode.YES)
+ {
+ //鍏堣幏鍙栧瘑鐮�
+ var nowPw = await Safeguard.CatUserPasswordAsync(this.GetLoginToken());
+ if (nowPw == null || nowPw.catUserPasswordResponseData == null)
+ {
+ //鑾峰彇瀹夐槻瀵嗙爜澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uGetSafetyPasswordFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, nowPw);
+
+ if (mode == ShowErrorMode.YES)
+ {
+ this.ShowErrorMsg(msg);
+ }
+
+ return null;
+ }
+ return nowPw.catUserPasswordResponseData.UserPasswordList;
+ }
+
+ /// <summary>
+ /// 淇敼鐢ㄦ埛瀵嗙爜(涓嶅瓨鍦ㄦ椂锛屽垯鏂板缓)
+ /// </summary>
+ /// <param name="userId">鐢ㄦ埛ID</param>
+ /// <param name="password">瀵嗙爜</param>
+ /// <param name="passWordTips">瀵嗙爜鎻愮ず</param>
+ /// <returns></returns>
+ public async Task<bool> ChangedUserPassword(int userId, string password, string passWordTips)
+ {
+ //鍒涘缓鏂扮敤鎴�
+ var result = await Safeguard.SetUserPasswordAsync(userId, password, passWordTips, this.GetLoginToken());
+ if (result == null || result.setUserPasswordResponseData == null)
+ {
+ if (userId != 5)
+ {
+ //淇敼鐢ㄦ埛瀵嗙爜澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uChangedUserPasswordFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ else
+ {
+ //淇敼鑳佽揩瀵嗙爜澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uChangedCoercePasswordFail);
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ }
+ if (result.setUserPasswordResponseData.Result == 1)
+ {
+ //鐢ㄦ埛瀵嗙爜鏁板凡婊�(鏈�澶�4涓�)
+ string msg = Language.StringByID(R.MyInternationalizationString.uUserPasswordCountIsMax);
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ if (result.setUserPasswordResponseData.Result == 2)
+ {
+ //瀵嗙爜闀垮害涓嶆纭�
+ string msg = Language.StringByID(R.MyInternationalizationString.uPasswordLengthIsError);
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ if (result.setUserPasswordResponseData.Result == 3)
+ {
+ //鐢ㄦ埛瀵嗙爜閲嶅
+ string msg = Language.StringByID(R.MyInternationalizationString.uUserPasswordIsRepeat);
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// 鏄剧ず鏍¢獙绠$悊鍛樺瘑鐮佺殑绐楀彛
+ /// </summary>
+ /// <returns></returns>
+ public async Task<bool> ShowSafetyAdminValidatedDialog()
+ {
+ //寮忔牱鍙樻洿,涓嶅啀寮瑰嚭杈撳叆绠$悊鍛樺瘑鐮佹,鐩存帴鍙栭粯璁ゅ瘑鐮乤dmin
+ //0:瀵嗙爜閿欒 1:姝e父 - 1:寮傚父
+ var result = await this.AdminLogin("admin", ShowErrorMode.NO);
+ if (result != 1)
+ {
+ //鑾峰彇鎵ц鏉冮檺澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uGetActionAuthorityFail);
+ this.ShowTipMsg(msg);
+ if (result == 0)
+ {
+ //閲嶇疆瀵嗙爜
+ await DoResetAdministratorPsw("admin");
+ }
+ }
+ return result == 1;
+ }
+
+ /// <summary>
+ /// 妫�娴嬫槸鍚﹀凡缁忛厤缃湁鐢ㄦ埛瀵嗙爜(鍐呴儴浼氬脊鍑洪敊璇俊鎭�,-1:寮傚父 0:娌℃湁閰嶇疆 1:宸茬粡閰嶇疆)
+ /// </summary>
+ /// <returns></returns>
+ public async Task<int> CheckHadConfigureUserPsw()
+ {
+ var pswInfo = await this.GetAllUserPassword(ShowErrorMode.NO);
+ if (pswInfo == null)
+ {
+ //鍑虹幇鏈煡閿欒,璇风◢鍚庡啀璇�
+ string msg = Language.StringByID(R.MyInternationalizationString.uUnKnowErrorAndResetAgain);
+ this.ShowTipMsg(msg);
+ return -1;
+ }
+ foreach (var data in pswInfo)
+ {
+ //4涓敤鎴峰瘑鐮�
+ if (data.UserId >= 1 && data.UserId <= 4)
+ {
+ return 1;
+ }
+ }
+ return 0;
+ }
+
+ /// <summary>
+ /// 娣诲姞瀵嗙爜鐨勫娉�
+ /// </summary>
+ /// <param name="userId">鐢ㄦ埛ID</param>
+ /// <param name="password">缃戝叧璇撮渶瑕佸師鏉ョ殑瀵嗙爜,涔熶笉鐭ラ亾涓轰粈涔�</param>
+ /// <param name="passWordTips">瀵嗙爜澶囨敞</param>
+ /// <returns></returns>
+ public async Task<bool> AddPassWordTips(int userId, string password, string passWordTips)
+ {
+ var result = await Safeguard.SetPassWordTipsAsync(userId, password, passWordTips, this.GetLoginToken());
+ if (result == null || result.setUserPasswordResponseData == null)
+ {
+ //淇敼澶囨敞淇℃伅澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ if (result.setUserPasswordResponseData.Result != 0)
+ {
+ //淇敼澶囨敞淇℃伅澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
+
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ return true;
+ }
+
+ #endregion
+
+ #region 鈻� 鎶ヨ鐩爣___________________________
+
+ /// <summary>
+ /// 娣诲姞鎶ヨ鐩爣鍒板畨闃�
+ /// </summary>
+ /// <param name="ZoneId">闃插尯ID</param>
+ /// <param name="listAction">娣诲姞鐨勭洰鏍�</param>
+ /// <returns></returns>
+ public async Task<bool> AddAlarmTagetToSafety(int ZoneId, List<Safeguard.AlarmActionObj> listAction)
+ {
+ //鐜拌幏鍙栧綋鍓嶇殑甯冮槻妯″紡
+ var safetyMode = await this.GetSafetyMode();
+ if (safetyMode != null)
+ {
+ //褰撳墠姝e浜庡竷闃叉ā寮�,鏃犳硶娣诲姞璁惧
+ string msg = Language.StringByID(R.MyInternationalizationString.uCanNotAddDeviceInGarrisonMode);
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ //楠岃瘉韬唤
+ bool login = await this.ShowSafetyAdminValidatedDialog();
+ if (login == false)
+ {
+ return false;
+ }
+
+ if (ZoneId > 3)
+ {
+ ZoneId = 3;
+ }
+ var saveData = new Safeguard.AddZoneActionData();
+ saveData.ActionType = ZoneId;
+ saveData.Actions = listAction;
+ saveData.LoginToken = this.GetLoginToken();
+
+ //娣诲姞鎶ヨ鐩爣鍒板畨闃�
+ var result = await Safeguard.AddZoneActionAsync(saveData);
+ if (result == null || result.addZoneActionResponseData == null || result.addZoneActionResponseData.Result == 1)
+ {
+ //娣诲姞鎶ヨ鐩爣澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uAddAlarmTargetFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+
+ return false;
+ }
+ foreach (var data in result.addZoneActionResponseData.Actions)
+ {
+ if (data.Status == "1")
+ {
+ if (data.Type == "0")
+ {
+ var device = Common.LocalDevice.Current.GetDevice(data.DeviceAddr, data.Epoint);
+ string msg = Common.LocalDevice.Current.GetDeviceEpointName(device) + "\r\n";
+ //鐩爣璁惧涓嶅瓨鍦�
+ msg += Language.StringByID(R.MyInternationalizationString.uTargetDeviceIsNotExsit);
+ this.ShowTipMsg(msg);
+ }
+ else if (data.Type == "1")
+ {
+ var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(data.ScenesId);
+ if (scene != null)
+ {
+ string msg = scene.Name + "\r\n";
+ //鐩爣鍦烘櫙涓嶅瓨鍦�
+ msg += Language.StringByID(R.MyInternationalizationString.uTargetSceneIsNotExsit);
+ this.ShowTipMsg(msg);
+ }
+ }
+ }
+ }
+
+ //灏嗘姤璀︾洰鏍囧垪琛ㄥ姞鍏ョ紦瀛�(浠庢柊浠庣綉鍏抽偅閲岃幏鍙栨柊杩藉姞鐨勮澶�)
+ var resultData = await Safeguard.CatZoneActionAsync(ZoneId);
+ if (resultData == null
+ || resultData.catZoneActionResponseData == null
+ || resultData.catZoneActionResponseData.Result == 1)
+ {
+ //鑾峰彇鎶ヨ鐩爣鍒楄〃澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uGetAlarmTargetListFail);
+ this.ShowTipMsg(msg);
+ return false;
+ }
+ this.SetAlarmTargetDeviceToMemory(resultData.catZoneActionResponseData, ShowErrorMode.YES);
+
+ return true;
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鎶ヨ鐩爣
+ /// </summary>
+ /// <param name="ZoneId">闃插尯ID</param>
+ /// <param name="listActions">鍒犻櫎鐨勭洰鏍�</param>
+ /// <returns></returns>
+ public async Task<bool> DeleteAlarmTaget(int ZoneId, List<Safeguard.DelAlarmActionObj> listActions)
+ {
+ //鐜拌幏鍙栧綋鍓嶇殑甯冮槻妯″紡
+ var safetyMode = await this.GetSafetyMode();
+ if (safetyMode != null)
+ {
+ //褰撳墠姝e浜庡竷闃叉ā寮�,鏃犳硶鍒犻櫎璁惧
+ string msg = Language.StringByID(R.MyInternationalizationString.uCanNotDeleteDeviceInGarrisonMode);
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ //楠岃瘉韬唤
+ bool login = await this.ShowSafetyAdminValidatedDialog();
+ if (login == false)
+ {
+ return false;
+ }
+ if (ZoneId > 3)
+ {
+ ZoneId = 3;
+ }
+ //鍙傛暟
+ var Pra = new Safeguard.DelZoneActionData();
+ Pra.ActionType = ZoneId;
+ Pra.Actions = listActions;
+ Pra.LoginToken = this.GetLoginToken();
+ //鎵ц鍒犻櫎
+ var result = await Safeguard.DelZoneActionAsync(Pra);
+ if (result == null || result.delZoneActionResponseData == null || result.delZoneActionResponseData.Result == 1)
+ {
+ //鍒犻櫎鎶ヨ鐩爣澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uDeleteAlarmTargetFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+
+ return false;
+ }
+
+ //鑾峰彇鏈湴缂撳瓨
+ if (this.dicAllZoneInfo.ContainsKey(ZoneId) == false)
+ {
+ return true;
+ }
+ SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[ZoneId];
+
+ //淇敼缂撳瓨
+ foreach (var device in result.delZoneActionResponseData.Actions)
+ {
+ //鍒犻櫎澶辫触
+ if (device.Status == "1")
+ {
+ continue;
+ }
+ //璁惧
+ if (device.Type == "0")
+ {
+ //鍒犻櫎鎶ヨ璁惧
+ string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device.DeviceAddr, device.Epoint);
+ if (zoneInfo.dicAlarmDevice.ContainsKey(mainkeys) == false)
+ {
+ continue;
+ }
+ zoneInfo.dicAlarmDevice.Remove(mainkeys);
+ zoneInfo.dicAllDevice.Remove(mainkeys);
+ }
+ //鍦烘櫙
+ else if (device.Type == "1")
+ {
+ //鍒犻櫎鍦烘櫙
+ if (zoneInfo.dicScenes.ContainsKey(device.ScenesId) == true)
+ {
+ zoneInfo.dicScenes.Remove(device.ScenesId);
+ }
+ }
+ }
+ return true;
+ }
+
+ #endregion
+
+ #region 鈻� 鑾峰彇鍦烘櫙___________________________
+
+ /// <summary>
+ /// 鏍规嵁闃插尯ID鑾峰彇鏈湴鐨勫満鏅�
+ /// </summary>
+ /// <param name="ZoneId">闃插尯ID</param>
+ /// <returns></returns>
+ public Dictionary<int, string> GetLocalSceneByZoneID(int ZoneId)
+ {
+ if (ZoneId > 3)
+ {
+ ZoneId = 3;
+ }
+ if (this.dicAllZoneInfo.ContainsKey(ZoneId) == false)
+ {
+ return new Dictionary<int, string>();
+ }
+ var infoData = this.dicAllZoneInfo[ZoneId];
+ return infoData.dicScenes;
+ }
+
+ #endregion
+
+ #region 鈻� 鏃佽矾璁剧疆___________________________
+
+ /// <summary>
+ /// 鏃佽矾鐘舵�佽缃�
+ /// </summary>
+ /// <param name="zoneId">闃插尯ID</param>
+ /// <param name="device">浼犳劅鍣ㄨ澶�</param>
+ /// <param name="statu">鏃佽矾鐘舵�� -> 0:涓嶆梺璺� 1:鏃佽矾</param>
+ /// <returns></returns>
+ public async Task<bool> SetByPassStatuToSafety(int zoneId, CommonDevice device, int statu)
+ {
+ //楠岃瘉
+ bool flage = await this.ShowSafetyAdminValidatedDialog();
+ if (flage == false)
+ {
+ return false;
+ }
+
+ //鍙傛暟
+ var Pra = new Safeguard.EqByPassData();
+ Pra.ZoneId = zoneId;
+ Pra.MacAddr = device.DeviceAddr;
+ Pra.Epoint = device.DeviceEpoint;
+ Pra.IsByPass = statu;
+ Pra.LoginToken = this.GetLoginToken();
+
+ var result = await Safeguard.EqByPassAllDataAsync(Pra);
+ if (result == null || result.eqByPassResponseData != null && result.eqByPassResponseData.Result == 3)
+ {
+ //璁剧疆澶辫触,绯荤粺褰撳墠澶勪簬鎾ら槻鐘舵��
+ string msg2 = Language.StringByID(R.MyInternationalizationString.uByPassFailAndSystemInWithdrawGarrisonStatu);
+ this.ShowErrorMsg(msg2);
+ return false;
+ }
+
+ //鍏朵粬閿欒
+ if (result.eqByPassResponseData == null || result.eqByPassResponseData.Result != 0)
+ {
+ //鏃佽矾鐘舵�佽缃け璐�
+ string msg = Language.StringByID(R.MyInternationalizationString.uSetByPassStatuFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+
+ return false;
+ }
+
+ return true;
+ }
+
+ #endregion
+
+ #region 鈻� 甯冮槻鎾ら槻___________________________
+
+ /// <summary>
+ /// 璁剧疆瀹夐槻鐨勫竷闃叉ā寮�,鎴愬姛鏃�,鍐呴儴涓嶄細鎻愮ず淇℃伅(涓嶈璋冪敤姝ゆ柟娉曟潵瀹炵幇銆愭挙闃层��)
+ /// </summary>
+ /// <param name="garrison">甯冮槻妯″紡</param>
+ /// <returns>缃戝叧鐜板湪瀹炶鐨勫竷闃叉ā寮�</returns>
+ public async Task<GarrisonMode> SetSafetyGarrisonByModel(GarrisonMode garrison)
+ {
+ //妫�娴嬪叾浠栭槻鍖洪噷闈㈡湁娌℃湁閰嶇疆鏈変紶鎰熷櫒
+ if (this.CheckHadInteriorSectorsSensor() == false)
+ {
+ //鍏朵粬闃插尯閲屾病鏈夐厤缃紶鎰熷櫒璁惧
+ string msg = Language.StringByID(R.MyInternationalizationString.uNotSensorInOtherSectors);
+ this.ShowErrorMsg(msg);
+ return GarrisonMode.None;
+ }
+
+ if (this.UserPassword == null)
+ {
+ var data = HdlFileLogic.Current.ReadFileByteContent(DirNameResourse.SafeguardUserPassword);
+ if (data != null)
+ {
+ this.UserPassword = System.Text.Encoding.UTF8.GetString(data);
+ }
+ }
+ if (string.IsNullOrEmpty(this.UserPassword) == true)
+ {
+ //杈撳叆瀵嗙爜
+ string password = await this.ShowInputUserPasswordForm();
+ if (string.IsNullOrEmpty(password) == true)
+ {
+ return GarrisonMode.None;
+ }
+ var result = await this.SetSafetyGarrisonByModel(garrison, false);
+ if (result != GarrisonMode.None && result != GarrisonMode.RemoveGarrison)
+ {
+ //淇濆瓨鍔犲瘑鐨勫瘑鐮佸埌鏈湴
+ HdlFileLogic.Current.SaveTextToFile(DirNameResourse.SafeguardUserPassword, this.UserPassword);
+ }
+ return result;
+ }
+ else
+ {
+ return await this.SetSafetyGarrisonByModel(garrison, true);
+ }
+ }
+
+ /// <summary>
+ /// 璁剧疆瀹夐槻鐨勫竷闃叉ā寮�,鎴愬姛鏃�,鍐呴儴涓嶄細鎻愮ず淇℃伅(涓嶈璋冪敤姝ゆ柟娉曟潵瀹炵幇銆愭挙闃层��)
+ /// </summary>
+ /// <param name="garrison">甯冮槻妯″紡</param>
+ /// <param name="showPswForm">鐢ㄦ埛瀵嗙爜閿欒鏃讹紝鏄惁鍏佽寮瑰嚭杈撳叆鐢ㄦ埛瀵嗙爜鐨勭獥鍙�</param>
+ /// <returns>缃戝叧鐜板湪瀹炶鐨勫竷闃叉ā寮�</returns>
+ private async Task<GarrisonMode> SetSafetyGarrisonByModel(GarrisonMode garrison, bool showPswForm)
+ {
+ //鍏堟妸褰撳墠鐨勬ā寮忕粰绉婚櫎鎺�
+ var flage = await this.RemoveSafetyGarrison(garrison, showPswForm);
+ if (flage == -1)
+ {
+ return GarrisonMode.None;
+ }
+ //鍒ゆ柇鏈夋病鏈夊叾浠栭�昏緫鍘讳慨鏀逛簡甯冮槻妯″紡
+ //鎵�浠ュ啀娆¤幏鍙栨ā寮�
+ var safetyMode = await this.GetSafetyMode();
+ if (safetyMode != null)
+ {
+ return GarrisonMode.None;
+ }
+
+ //鍙傛暟
+ var Pra = new Safeguard.EnableModeData();
+ //妯″紡ID
+ Pra.ModeId = (int)garrison;
+ //妫�鏌ラ槻鍖鸿澶囨渶杩戜笂鎶ョ殑瀹夐槻淇℃伅鐘舵�佽繘琛屽竷闃�
+ Pra.CheckIASStatus = 1;
+ //姘镐箙甯冮槻锛岀洿鍒版挙闃�
+ Pra.Setting = 1;
+ //鐢ㄦ埛瀵嗙爜
+ Pra.UserPassword = this.UserPassword;
+
+ //鎵ц甯冮槻
+ var result = await Safeguard.EnableModeAsync(Pra);
+ if (result == null || result.enableModeResponseData == null)
+ {
+ //甯冮槻璁剧疆澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uSetGarrisonFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+ return GarrisonMode.RemoveGarrison;
+ }
+
+ //閿欒妫�娴�
+ if (result.enableModeResponseData.Result == 1)
+ {
+ //甯冮槻妯″紡涓嶅瓨鍦�
+ string msg = Language.StringByID(R.MyInternationalizationString.uGarrisonModeIsNotEsixt);
+ this.ShowErrorMsg(msg);
+ return GarrisonMode.RemoveGarrison;
+ }
+ else if (result.enableModeResponseData.Result == 2)
+ {
+ //娓呯┖瀵嗙爜缂撳瓨
+ this.UserPassword = null;
+
+ if (showPswForm == false)
+ {
+ //鐢ㄦ埛瀵嗙爜閿欒鎴栨湭璁剧疆鐢ㄦ埛瀵嗙爜
+ string msg = Language.StringByID(R.MyInternationalizationString.uUserPasswordIsError);
+ this.ShowErrorMsg(msg);
+ return GarrisonMode.RemoveGarrison;
+ }
+ else
+ {
+ //閲嶆柊鏄剧ず杈撳叆鐢ㄦ埛瀵嗙爜鐨勭獥鍙�
+ string password = await this.ShowInputUserPasswordForm();
+ if (string.IsNullOrEmpty(password) == true)
+ {
+ return GarrisonMode.RemoveGarrison;
+ }
+
+ var result2 = await this.SetSafetyGarrisonByModel(garrison, false);
+ if (result2 != GarrisonMode.None && result2 != GarrisonMode.RemoveGarrison)
+ {
+ //淇濆瓨鍔犲瘑瀵嗙爜鍒版湰鍦�
+ HdlFileLogic.Current.SaveTextToFile(DirNameResourse.SafeguardUserPassword, this.UserPassword);
+ }
+ return result2;
+ }
+ }
+ else if (result.enableModeResponseData.Result == 3)
+ {
+ //瀹夐槻璁惧鏈氨缁�
+ string msg = Language.StringByID(R.MyInternationalizationString.uSafetyDeviceDoNotReady);
+ msg += "(" + result.enableModeResponseData.IASName + ")";
+ this.ShowErrorMsg(msg);
+ return GarrisonMode.RemoveGarrison;
+ }
+ else if (result.enableModeResponseData.Result == 4)
+ {
+ //鍏朵粬甯冮槻妯″紡姝e湪鍚敤涓�
+ string msg = Language.StringByID(R.MyInternationalizationString.uOtherGarrisonIsActtion);
+ this.ShowErrorMsg(msg);
+ return (GarrisonMode)result.enableModeResponseData.ModeIdBeUsing;
+ }
+ else if (result.enableModeResponseData.Result == 5)
+ {
+ //妯″紡灞炴�т笉鍏佽澶辫兘
+ string msg = Language.StringByID(R.MyInternationalizationString.uGarrisonModeElementCanNotLostFunction);
+ this.ShowErrorMsg(msg);
+ return GarrisonMode.RemoveGarrison;
+ }
+ return garrison;
+ }
+
+ /// <summary>
+ /// 绉婚櫎褰撳墠姝e湪杩愯鐨勫竷闃叉ā寮�(鎴愬姛鏃讹紝鍐呴儴涓嶄細鎻愮ず淇℃伅)
+ /// </summary>
+ /// <param name="garrison">甯冮槻妯″紡(杩欎釜鍙橀噺鍙槸涓轰簡鍙樻洿鎻愮ず閿欒淇℃伅锛屽綋涓嶆槸鎾ら槻鏃讹紝閿欒鎻愮ず淇℃伅浼氭敼鍙�)</param>
+ /// <param name="showPswForm">鐢ㄦ埛瀵嗙爜閿欒鏃讹紝鏄惁鍏佽寮瑰嚭杈撳叆鐢ㄦ埛瀵嗙爜鐨勭獥鍙�</param>
+ /// <returns></returns>
+ public async Task<int> RemoveSafetyGarrison(GarrisonMode garrison, bool showPswForm)
+ {
+ //鐜拌幏鍙栧綋鍓嶇殑甯冮槻妯″紡
+ var safetyMode = await this.GetSafetyMode();
+ if (safetyMode == null)
+ {
+ //濡傛灉鏄挙闃茬殑璇�
+ if (garrison == GarrisonMode.RemoveGarrison)
+ {
+ //褰撳墠涓嶅瓨鍦ㄥ竷闃�
+ string msg = Language.StringByID(R.MyInternationalizationString.uNowDoNotHadGarrison);
+ this.ShowErrorMsg(msg);
+ return -1;
+ }
+ //骞舵病鏈夎缃竷闃�,涔熷氨涓嶈皥浠�涔堟挙闃蹭簡
+ return 0;
+ }
+
+ //鎾ら槻鐨勬椂鍊欙紝鏃犳潯浠跺脊鍑鸿緭鍏ュ瘑鐮佹
+ if (garrison == GarrisonMode.RemoveGarrison)
+ {
+ string psw = await this.ShowInputUserPasswordForm();
+ if (string.IsNullOrEmpty(psw) == true)
+ {
+ return -1;
+ }
+ }
+
+ //鎾ら槻
+ var result = await Safeguard.WithdrawModeAsync(this.UserPassword);
+ if (result == null || result.withdrawModeResponseData == null)
+ {
+ //鎵ц鎾ら槻鎿嶄綔鐨勬椂鍊�
+ if (garrison == GarrisonMode.RemoveGarrison)
+ {
+ //鎾ら槻澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uRemoveGarrisonFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+ }
+ else
+ {
+ //甯冮槻妯″紡鍙樻洿澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uChangedGarrisonModeFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+ }
+
+ return -1;
+ }
+
+ if (result.withdrawModeResponseData.Result == 2)
+ {
+ //娓呯┖瀵嗙爜缂撳瓨
+ this.UserPassword = null;
+ if (showPswForm == false || garrison == GarrisonMode.RemoveGarrison)
+ {
+ //鐢ㄦ埛瀵嗙爜閿欒鎴栨湭璁剧疆鐢ㄦ埛瀵嗙爜
+ string msg = Language.StringByID(R.MyInternationalizationString.uUserPasswordIsError);
+ this.ShowErrorMsg(msg);
+ return -1;
+ }
+ else
+ {
+ //閲嶆柊鏄剧ず杈撳叆鐢ㄦ埛瀵嗙爜鐨勭獥鍙�
+ string password = await this.ShowInputUserPasswordForm();
+ if (string.IsNullOrEmpty(password) == true)
+ {
+ return -1;
+ }
+
+ var result2 = await this.RemoveSafetyGarrison(garrison, false);
+ if (result2 != -1)
+ {
+ //淇濆瓨鍒板姞瀵嗗瘑鐮佹湰鍦�
+ HdlFileLogic.Current.SaveTextToFile(DirNameResourse.SafeguardUserPassword, this.UserPassword);
+ }
+ return result2;
+ }
+ }
+ else if (result.withdrawModeResponseData.Result == 3 && garrison == GarrisonMode.RemoveGarrison)
+ {
+ //褰撳墠妯″紡涓嶅彲鎾ら槻
+ string msg = Language.StringByID(R.MyInternationalizationString.uNowGarrisonCanNotRemove);
+ this.ShowErrorMsg(msg);
+ return -1;
+ }
+ return 1;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠瀹夐槻鐨勬ā寮�(鍦ㄥ锛岀瀹剁瓑绛�),濡傛灉娌℃湁甯冮槻锛屽垯杩斿洖null
+ /// </summary>
+ public async Task<Safeguard.GetModeUsingResponseData> GetSafetyMode()
+ {
+ var result = await Safeguard.GetModeUsingAsync();
+ if (result == null || result.getModeUsingResponseData == null)
+ {
+ return null;
+ }
+ if (result.getModeUsingResponseData.Result == 1)
+ {
+ return null;
+ }
+ return result.getModeUsingResponseData;
+ }
+
+ /// <summary>
+ /// 鏄剧ず杈撳叆鐢ㄦ埛瀵嗙爜鐨勭晫闈�(杩斿洖null鏃朵唬琛ㄥ嚭閿欐垨鑰呭彇娑�)
+ /// </summary>
+ public async Task<string> ShowInputUserPasswordForm()
+ {
+ NumberPswInputDialogForm Dialogform = null;
+
+ bool isShowingProgressBar = false;
+ string ProgressBarText = string.Empty;
+
+ string pasword = null;
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ isShowingProgressBar = CommonPage.Loading.Visible;
+ ProgressBarText = CommonPage.Loading.Text;
+ if (isShowingProgressBar == true)
+ {
+ //濡傛灉鍦ㄥ脊鍑烘牎楠屽瘑鐮佹鐨勬椂鍊欙紝鏄剧ず鐫�杩涘害鏉$殑璇濓紝鍏堟殏鏃跺叧闂繘搴︽潯
+ CommonPage.Loading.Hide();
+ }
+
+ Dialogform = new NumberPswInputDialogForm();
+ Dialogform.AddForm(Language.StringByID(R.MyInternationalizationString.uPleaseInputUserPassword), 4);
+ //纭鎸夐挳
+ Dialogform.FinishInputEvent += ((textValue) =>
+ {
+ Dialogform.CloseForm();
+ //鐢ㄦ埛瀵嗙爜
+ pasword = textValue;
+ //鍔犲瘑瀵嗙爜
+ this.UserPassword = pasword;
+ });
+ });
+ while (pasword == null)
+ {
+ if (Dialogform != null && Dialogform.Parent == null)
+ {
+ break;
+ }
+ await Task.Delay(500);
+ }
+
+ //鎭㈠杩涘害鏉�
+ if (isShowingProgressBar == true)
+ {
+ Application.RunOnMainThread(() =>
+ {
+ CommonPage.Loading.Start(ProgressBarText);
+ });
+ }
+ return pasword;
+ }
+
+ /// <summary>
+ /// 妫�娴嬪叾浠栭槻鍖洪噷闈㈡湁娌℃湁閰嶇疆鏈変紶鎰熷櫒(甯冮槻浣跨敤)
+ /// </summary>
+ /// <returns></returns>
+ private bool CheckHadInteriorSectorsSensor()
+ {
+ for (int i = 3; i <= 5; i++)
+ {
+ if (dicAllZoneInfo.ContainsKey(i) == true
+ && dicAllZoneInfo[i].dicSensor.Count > 0)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ #endregion
+
+ #region 鈻� 淇℃伅鎺ㄩ�乢__________________________
+
+ /// <summary>
+ /// 璁剧疆鎸囧畾闃插尯鐨勪俊鎭帹閫佺姸鎬�
+ /// </summary>
+ /// <param name="zoneId">闃插尯ID</param>
+ /// <param name="statu">鐘舵�� 0:鎺ㄩ�� 1:涓嶆帹閫�</param>
+ /// <returns></returns>
+ public async Task<bool> SetGarrisonInformationPushStatu(int zoneId, int statu)
+ {
+ //鏍¢獙瀵嗙爜
+ bool flage = await this.ShowSafetyAdminValidatedDialog();
+ if (flage == false)
+ {
+ return false;
+ }
+ //鐘舵�佸彉鏇�
+ var result = await Safeguard.DisablePushMessageAsync(zoneId, statu);
+ if (result == null || result.disablePushMessageResponseData == null || result.disablePushMessageResponseData.Result == 1)
+ {
+ //璁剧疆淇℃伅鎺ㄩ�佸け璐�
+ string msg = Language.StringByID(R.MyInternationalizationString.uSetInformationPushFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ if (this.dicAllZoneInfo.ContainsKey(zoneId) == false)
+ {
+ return true;
+ }
+ SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[zoneId];
+ zoneInfo.InformationPush = statu;
+
+ return true;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠闃插尯鐨勪俊鎭帹閫佺姸鎬�
+ /// </summary>
+ /// <param name="zoneId">闃插尯ID</param>
+ /// <returns>0:鎺ㄩ�� 1:涓嶆帹閫�</returns>
+ public int GetGarrisonInformationPushStatu(int zoneId)
+ {
+ if (this.dicAllZoneInfo.ContainsKey(zoneId) == false)
+ {
+ return 1;
+ }
+ SafeguardZoneInfo zoneInfo = this.dicAllZoneInfo[zoneId];
+ return zoneInfo.InformationPush;
+ }
+
+ #endregion
+
+ #region 鈻� 寤惰繜璁剧疆___________________________
+
+ /// <summary>
+ /// 鑾峰彇闃插尯鐨勫欢杩熸椂闂�(浠呴檺鍑哄叆闃插尯),鍑洪敊鏃惰繑鍥瀗ull
+ /// </summary>
+ /// <returns></returns>
+ public async Task<Safeguard.CatDelayTimeResponseData> GetGarrisonDelayTime()
+ {
+ //鑾峰彇
+ var result = await Safeguard.CatDelayTimeAsync();
+ if (result == null || result.catDelayTimeResponseData == null)
+ {
+ //鑾峰彇寤舵椂鏃堕棿澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uGetDelayTimeFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+ return null;
+ }
+ return result.catDelayTimeResponseData;
+ }
+
+ /// <summary>
+ /// 璁剧疆闃插尯鐨勮繘鍑哄欢杩熸椂闂� (浠呴檺鍑哄叆闃插尯),鐜版帴鍙d笉鏀寔鍗曚釜淇敼
+ /// </summary>
+ /// <param name="enterDelayTime">杩涘叆寤舵椂(绉�)</param>
+ /// <param name="goOutDelayTime">澶栧嚭寤舵椂(绉�)</param>
+ /// <returns></returns>
+ public async Task<bool> SetGarrisonDelayTime(int enterDelayTime, int goOutDelayTime)
+ {
+ //鏍¢獙瀵嗙爜
+ bool flage = await this.ShowSafetyAdminValidatedDialog();
+ if (flage == false)
+ {
+ return false;
+ }
+ //鏇存敼鏃堕棿
+ var result = await Safeguard.SetDelayTimeAsync(enterDelayTime, goOutDelayTime, this.GetLoginToken());
+ if (result == null || result.setDelayTimeResponseData == null)
+ {
+ //璁剧疆寤舵椂鏃堕棿澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uSetDelayTimeFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ return true;
+ }
+
+ #endregion
+
+ #region 鈻� 鑳佽揩璁剧疆___________________________
+
+ /// <summary>
+ /// 鑾峰彇鑳佽揩鐨勭數璇濊仈绯绘柟寮�(鑾峰彇澶辫触鏃朵細杩斿洖null)
+ /// </summary>
+ /// <returns></returns>
+ public async Task<Safeguard.CheckCoercePhoneNumberResponseData> GetCoercePhoneNumber()
+ {
+ //鑾峰彇
+ var result = await Safeguard.CheckCoercePhoneNumberAsync();
+ if (result == null || result.checkCoercePhoneNumberResponseData == null)
+ {
+ //鑾峰彇鑳佽揩鑱旂郴鏂瑰紡淇℃伅澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uGetCoercePhoneNumberFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+ return null;
+ }
+ //娌℃湁鏁版嵁
+ if (result.checkCoercePhoneNumberResponseData.Result == 1)
+ {
+ return null;
+ }
+ return result.checkCoercePhoneNumberResponseData;
+ }
+
+ /// <summary>
+ /// 璁剧疆鑳佽揩鐨勮仈绯讳汉鏂瑰紡
+ /// </summary>
+ /// <param name="listPhone">鍦板尯鐮�-鑱旂郴鏂瑰紡</param>
+ /// <param name="listNote">鑱旂郴浜哄娉�</param>
+ /// <param name="addPhone">鏄惁鏄柊寤鸿仈绯讳汉,false鐨勬椂鍊�,鍙敼澶囨敞</param>
+ /// <returns></returns>
+ public async Task<bool> SetCoercePhoneNumber(List<string> listPhone, List<string> listNote, bool addPhone = true)
+ {
+ if (addPhone == true)
+ {
+ var Pra = new Safeguard.SetCoercePhoneNumberData();
+ var Actonobj = new Safeguard.PushTargetActionObj();
+ Actonobj.Type = 2;
+ Pra.Actions.Add(Actonobj);
+ Pra.LoginToken = this.GetLoginToken();
+
+ for (int i = 0; i < listPhone.Count; i++)
+ {
+ var phoneInfo = new Safeguard.PushTargetInfo();
+ Actonobj.PushTarget.Add(phoneInfo);
+ //鐢佃瘽鍙风爜
+ phoneInfo.PushNumber = listPhone[i];
+ }
+ var result = await Safeguard.SetCoercePhoneNumberAsync(Pra);
+ if (result == null || result.setCoercePhoneNumberResponseData == null || result.setCoercePhoneNumberResponseData.Result != 0)
+ {
+ //淇敼鑳佽揩鑱旂郴鏂瑰紡澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uChangedCoercePhoneNumberFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ }
+ for (int i = 0; i < listNote.Count; i++)
+ {
+ var result = await Safeguard.SetCoercePhoneNumberNoteAsync(listPhone[i], listNote[i]);
+ if (result == null)
+ {
+ //淇敼澶囨敞淇℃伅澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂");
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ if (result.Result == -2)
+ {
+ //閿欒:缃戝叧瀵硅薄涓㈠け
+ string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg);
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ if (result.Result != 0)
+ {
+ //淇敼澶囨敞淇℃伅澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鑳佽揩鐨勮仈绯讳汉鏂瑰紡
+ /// </summary>
+ /// <param name="areaCode"></param>
+ /// <param name="phoneNum"></param>
+ /// <returns></returns>
+ public async Task<bool> DeleteCoercePhoneNumber(string areaCode, string phoneNum)
+ {
+ var Pra = new Safeguard.DelCoercePhoneNumberData();
+ var Actonobj = new Safeguard.PushTargetActionObj();
+ Actonobj.Type = 2;
+ Pra.Actions.Add(Actonobj);
+ Pra.LoginToken = this.GetLoginToken();
+
+ var phoneInfo = new Safeguard.PushTargetInfo();
+ Actonobj.PushTarget.Add(phoneInfo);
+ //鐢佃瘽鍙风爜
+ phoneInfo.PushNumber = areaCode + "-" + phoneNum;
+
+ var result = await Safeguard.DelCoercePhoneNumberAsync(Pra);
+ if (result == null || result.delCoercePhoneNumberResponseData == null || result.delCoercePhoneNumberResponseData.Result != 0)
+ {
+ //鍒犻櫎鑳佽揩鑱旂郴鏂瑰紡澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uDeleteCoercePhoneNumberFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+ this.ShowErrorMsg(msg);
+ return false;
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// 缁欒仈绯诲彿鐮佹坊鍔犲娉ㄧ殑淇℃伅
+ /// </summary>
+ private class AddPushNumberNoteInfo
+ {
+ /// <summary>
+ /// 鍥哄畾253
+ /// </summary>
+ public int ActionType = 253;
+ /// <summary>
+ /// LoginToken
+ /// </summary>
+ public string LoginToken = string.Empty;
+ /// <summary>
+ /// 鍦板尯鐮�-鑱旂郴鏂瑰紡
+ /// </summary>
+ public string PushNumber = string.Empty;
+ /// <summary>
+ /// 鑱旂郴浜哄彿鐮佸娉紝鏈�澶�63byte
+ /// </summary>
+ public string PushNumberNote = string.Empty;
+ }
+
+ #endregion
+
+ #region 鈻� 鎵ц鐩爣鐘舵�佺殑缈昏瘧鏂囨湰_____________
+
+ /// <summary>
+ /// 鑾峰彇鎵ц鐩爣鐨勭姸鎬佹枃鏈�
+ /// </summary>
+ /// <param name="listTaskInfo">鍔ㄤ綔瀵硅薄,鍙互涓虹┖</param>
+ /// <returns></returns>
+ public string GetAdjustTargetStatuText(List<Safeguard.TaskListInfo> listTaskInfo)
+ {
+ if (listTaskInfo == null || listTaskInfo.Count == 0)
+ {
+ //鏃犲姩浣�
+ return Language.StringByID(R.MyInternationalizationString.uNotAction);
+ }
+ //瑕佽�冭檻瀹冪殑鎺掑垪椤哄簭(鍙互鎸夐渶姹傚彉鏇寸紪鍙�)
+ Dictionary<int, string> dicSort = new Dictionary<int, string>();
+ //鏈�澶х紪鍙�
+ int MaxNo = listTaskInfo.Count > 4 ? listTaskInfo.Count : 4;
+ //寮�鍏崇殑浣嶇疆缂栧彿
+ int ControlNo = 0;
+ //鐧惧垎姣旂殑浣嶇疆缂栧彿
+ int persentNo = 1;
+ //绌鸿皟娓╁害鐨勪綅缃紪鍙�
+ int temparetureNo = 2;
+ //绌鸿皟妯″紡鐨勪綅缃紪鍙�
+ int modelNo = 3;
+ //绌鸿皟椋庨�熺殑浣嶇疆缂栧彿
+ int windNo = 4;
+ //鍏朵粬缂栧彿(涓嶇悊浼氫綅缃�,浠ュ垪琛ㄧ殑椤哄簭涓哄噯)
+ int otherNo = 100;
+
+ foreach (var info in listTaskInfo)
+ {
+ #region 鈻� 鏅捐。鏋禵_____
+ //鈽呪槄鈽呪槄涓存椂澶勭悊,鍚庢湡浼氬垹闄�
+ if (info.Epoint != -1)
+ {
+ //鏈�楂樻渶浣庡
+ if (info.Epoint == 1)
+ {
+ dicSort[dicSort.Count + otherNo] = info.Data1 == 0 ? Language.StringByID(R.MyInternationalizationString.uTheHighestPoint) : Language.StringByID(R.MyInternationalizationString.uTheLowestPoint);
+ }
+ //椋庡共
+ else if (info.Epoint == 3)
+ {
+ dicSort[dicSort.Count + otherNo] = info.Data1 == 1 ? Language.StringByID(R.MyInternationalizationString.uOpenAirdry) : Language.StringByID(R.MyInternationalizationString.uCloseAirdry);
+ }
+ //鐑樺共
+ else if (info.Epoint == 4)
+ {
+ dicSort[dicSort.Count + otherNo] = info.Data1 == 1 ? Language.StringByID(R.MyInternationalizationString.uOpenDry) : Language.StringByID(R.MyInternationalizationString.uCloseDry);
+ }
+ //娑堟瘨
+ else if (info.Epoint == 5)
+ {
+ dicSort[dicSort.Count + otherNo] = info.Data1 == 1 ? Language.StringByID(R.MyInternationalizationString.uOpenDisinfect) : Language.StringByID(R.MyInternationalizationString.uCloseDisinfect);
+ }
+ //鐓ф槑
+ else if (info.Epoint == 2)
+ {
+ dicSort[dicSort.Count + otherNo] = info.Data1 == 1 ? Language.StringByID(R.MyInternationalizationString.uOpenLighting) : Language.StringByID(R.MyInternationalizationString.uCloseLighting);
+ }
+ //鐗规畩,涓嶈兘寰�涓嬭蛋
+ continue;
+ }
+ #endregion
+
+ #region 鈻� 寮�鍏虫帶鍒禵___
+ //寮�鍏虫帶鍒�
+ if (info.TaskType == 1)
+ {
+ if (info.Data1 == 1)
+ {
+ //寮�
+ dicSort[ControlNo] = Language.StringByID(R.MyInternationalizationString.uSimpleOpen);
+ }
+ else
+ {
+ //鍏�
+ dicSort[ControlNo] = Language.StringByID(R.MyInternationalizationString.uSimpleClose);
+ }
+ }
+ #endregion
+
+ #region 鈻� 浜害璋冭妭____
+ //浜害璋冭妭
+ else if (info.TaskType == 3)
+ {
+ if (info.Data1 == 0)
+ {
+ //鍏�
+ dicSort[persentNo] = Language.StringByID(R.MyInternationalizationString.uSimpleClose);
+ }
+ else
+ {
+ dicSort[persentNo] = HdlDeviceCommonLogic.Current.CalculateLightLevelPersent(info.Data1) + "%";
+ }
+ }
+ #endregion
+
+ #region 鈻� 绐楀笜璁惧____
+ //绐楀笜璁惧(瀹冪殑寮�鍏冲拰寮�鍏虫帶鍒舵槸鍙嶈繃鏉ョ殑)
+ else if (info.TaskType == 6)
+ {
+ if (info.Data1 == 0)
+ {
+ //寮�
+ dicSort[ControlNo] = Language.StringByID(R.MyInternationalizationString.uSimpleOpen);
+ }
+ else if (info.Data1 == 1)
+ {
+ //鍏�
+ dicSort[ControlNo] = Language.StringByID(R.MyInternationalizationString.uSimpleClose);
+ }
+ else if (info.Data1 == 5)
+ {
+ //绐楀笜鐧惧垎姣�
+ dicSort[persentNo] = info.Data2 + "%";
+ }
+ }
+ #endregion
+
+ #region 鈻� 绌鸿皟璁惧____
+ //绌鸿皟璁惧
+ else if (info.TaskType == 5)
+ {
+ if (info.Data1 == 3)
+ {
+ if (info.Data2 == 0)
+ {
+ return Language.StringByID(R.MyInternationalizationString.uSimpleClose);
+ }
+ else if (info.Data2 == 1)
+ {
+ //鑷姩
+ dicSort[modelNo] = Language.StringByID(R.MyInternationalizationString.Mode_Auto);
+ }
+ else if (info.Data2 == 3)
+ {
+ //鍒跺喎
+ dicSort[modelNo] = Language.StringByID(R.MyInternationalizationString.Mode_Cool);
+ }
+ else if (info.Data2 == 4)
+ {
+ //鍒剁儹
+ dicSort[modelNo] = Language.StringByID(R.MyInternationalizationString.Mode_Heat);
+ }
+ else if (info.Data2 == 7)
+ {
+ //閫侀
+ dicSort[modelNo] = Language.StringByID(R.MyInternationalizationString.Mode_FanOnly);
+ }
+ else if (info.Data2 == 8)
+ {
+ //闄ゆ箍
+ dicSort[modelNo] = Language.StringByID(R.MyInternationalizationString.Mode_Dry);
+ }
+ }
+ else if (info.Data1 == 4 || info.Data1 == 5|| info.Data1 == 7)
+ {
+ //娓╁害
+ dicSort[temparetureNo] = $"{ info.Data2 / 100}鈩�";
+ }
+ else if (info.Data1 == 6)
+ {
+ if (info.Data2 == 1)
+ {
+ //浣庨
+ dicSort[windNo] = Language.StringByID(R.MyInternationalizationString.Fan_Low);
+ }
+ else if (info.Data2 == 2)
+ {
+ //涓
+ dicSort[windNo] = Language.StringByID(R.MyInternationalizationString.Fan_Middle);
+ }
+ else if (info.Data2 == 3)
+ {
+ //楂橀
+ dicSort[windNo] = Language.StringByID(R.MyInternationalizationString.Fan_Height);
+ }
+ }
+ }
+ #endregion
+ }
+ //濡傛灉寮�鍏冲拰鐧惧垎姣斾竴璧峰瓨鍦ㄧ殑璇�,鍒欎笉鏄剧ず寮�鍏虫枃瀛�
+ if (dicSort.ContainsKey(ControlNo) == true && dicSort.ContainsKey(persentNo) == true)
+ {
+ dicSort.Remove(ControlNo);
+ }
+
+ //鎷兼帴鏂囨湰
+ string txtvalue = string.Empty;
+ for (int i = 0; i <= MaxNo; i++)
+ {
+ if (dicSort.ContainsKey(i) == true)
+ {
+ txtvalue += dicSort[i] + " ";
+ }
+ }
+ //鍏朵粬鐨�
+ MaxNo = otherNo + dicSort.Count;
+ for (int i = otherNo; i < MaxNo; i++)
+ {
+ if (dicSort.ContainsKey(i) == true)
+ {
+ txtvalue += dicSort[i] + " ";
+ continue;
+ }
+ break;
+ }
+
+ return txtvalue.Trim();
+ }
+
+ #endregion
+
+ #region 鈻� 閲嶇疆绠$悊鍛樺瘑鐮乢____________________
+
+ /// <summary>
+ /// 閲嶇疆绠$悊鍛樺瘑鐮�
+ /// </summary>
+ /// <param name="password">鏂板瘑鐮�</param>
+ /// <returns></returns>
+ private async Task<bool> DoResetAdministratorPsw(string password)
+ {
+ var realWay = ZigBee.Device.ZbGateway.MainGateWay;
+ if (realWay == null)
+ {
+ //閿欒:缃戝叧瀵硅薄涓㈠け
+ //string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg);
+ //this.ShowTipMsg(msg);
+ return false;
+ }
+ //鏄惁杈炬垚涓柇鐨勬椂鏈�
+ bool canBreak = false;
+ bool success = false;
+ //瓒呮椂鏃堕棿
+ int TimeOut = 0;
+ string checkTopic = realWay.GwId + "/Security/AdminSetNewPassword_Respon";
+ Action<string, string> getResultAction = (topic, message) =>
+ {
+ try
+ {
+ if (topic == checkTopic)
+ {
+ TimeOut = 0;
+ var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+ var result = JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
+ success = result == 0;
+ canBreak = true;
+ }
+ }
+ catch { }
+ };
+
+ realWay.Actions += getResultAction;
+ try
+ {
+ var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 4033 } };
+ var data = new Newtonsoft.Json.Linq.JObject { { "HomeId", Common.Config.Instance.HomeId }, { "Password", password } };
+ jObject.Add("Data", data);
+ realWay.Send("Security/AdminSetNewPassword", jObject.ToString());
+ }
+ catch
+ {
+ canBreak = true;
+ //鍑虹幇鏈煡閿欒,璇风◢鍚庡啀璇�
+ //string msg = Language.StringByID(R.MyInternationalizationString.uUnKnowErrorAndResetAgain);
+ //this.ShowTipMsg(msg);
+ }
+
+ while (canBreak == false && TimeOut < 20)
+ {
+ await Task.Delay(100);
+ TimeOut++;
+ }
+
+ realWay.Actions -= getResultAction;
+ getResultAction = null;
+
+ if (TimeOut >= 20)
+ {
+ //閲嶇疆绠$悊鍛樺瘑鐮佸け璐�(缃戝叧鍥炲瓒呮椂)
+ //string msg = Language.StringByID(R.MyInternationalizationString.uResetAdministratorPswFail);
+ //msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂");
+ //this.ShowTipMsg(msg);
+ return false;
+ }
+ return success;
+ }
+
+ #endregion
+
+ #region 鈻� 涓�鑸柟娉昣__________________________
+
+ /// <summary>
+ /// 鑾峰彇鎵�鏈夐槻鍖虹殑ID(榛樿鏄�1锝�5)
+ /// </summary>
+ /// <returns></returns>
+ private List<int> GetAllZoneId()
+ {
+ //闃插尯id
+ //1锛�24灏忔椂闃插尯
+ //2锛�24灏忔椂闈欓煶闃插尯
+ //3锛氬嚭鍏ラ槻鍖�
+ //4锛氬唴閮ㄩ槻鍖�
+ //5锛氬懆鐣岄槻鍖�
+ List<int> list = new List<int>() { 1, 2, 3, 4, 5 };
+ return list;
+ }
+
+ /// <summary>
+ /// 鑾峰彇闃插尯鐨勭炕璇戝悕瀛�
+ /// </summary>
+ /// <param name="ZoneID"></param>
+ /// <returns></returns>
+ public string GetGarrisonText(int ZoneID)
+ {
+ if (ZoneID == 1)
+ {
+ //24灏忔椂闃插尯
+ return Language.StringByID(R.MyInternationalizationString.u24HourSectors);
+ }
+ else if (ZoneID == 2)
+ {
+ //闈欓煶闃插尯
+ return Language.StringByID(R.MyInternationalizationString.uMuteSectors);
+ }
+ else if (ZoneID == 3)
+ {
+ //鍑哄叆闃插尯
+ return Language.StringByID(R.MyInternationalizationString.uInAndOutSectors);
+ }
+ else if (ZoneID == 4)
+ {
+ //鍐呴儴闃插尯
+ return Language.StringByID(R.MyInternationalizationString.uInteriorSectors);
+ }
+ else if (ZoneID == 5)
+ {
+ //鍛ㄧ晫闃插尯
+ return Language.StringByID(R.MyInternationalizationString.uPerimeterSectors);
+ }
+ return string.Empty;
+ }
+
+ /// <summary>
+ /// 鏄剧ず閿欒淇℃伅绐楀彛
+ /// </summary>
+ /// <param name="msg"></param>
+ private void ShowErrorMsg(string msg)
+ {
+ Application.RunOnMainThread(() =>
+ {
+ var contr = new ShowMsgControl(ShowMsgType.Error, msg);
+ contr.Show();
+ });
+ }
+
+ /// <summary>
+ /// 鏄剧ず姝e父淇℃伅绐楀彛
+ /// </summary>
+ /// <param name="msg"></param>
+ private void ShowNormalMsg(string msg)
+ {
+ Application.RunOnMainThread(() =>
+ {
+ var contr = new ShowMsgControl(ShowMsgType.Normal, msg);
+ contr.Show();
+ });
+ }
+
+ /// <summary>
+ /// 鏄剧ずTip绐楀彛
+ /// </summary>
+ /// <param name="msg"></param>
+ private void ShowTipMsg(string msg)
+ {
+ Application.RunOnMainThread(() =>
+ {
+ var control = new ShowMsgControl(ShowMsgType.Tip, msg);
+ control.Show();
+ });
+ }
+
+ /// <summary>
+ /// 鑾峰彇璁惧鐨勫敮涓�涓婚敭
+ /// </summary>
+ /// <param name="device"></param>
+ /// <returns></returns>
+ private string GetDeviceMainKeys(CommonDevice device)
+ {
+ return Common.LocalDevice.Current.GetDeviceMainKeys(device);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐧婚檰鑰呯殑Token(濂藉儚绠$悊鍛樼櫥闄嗙殑鏃跺��,闇�瑕佸彉鏇碩oken,鎵�浠ユ殏涓斿畾涔変竴涓嚱鏁板嚭鏉�)
+ /// </summary>
+ /// <returns></returns>
+ public string GetLoginToken()
+ {
+ //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken
+ //return UserCenterLogic.GetConnectMainToken();
+ return Config.Instance.Token;
+ }
+
+ #endregion
+
+ #region 鈻� 缁撴瀯浣揰____________________________
+
+ /// <summary>
+ /// 鍐呴儴浣跨敤锛屽畨闃查槻鍖虹殑涓�浜涗俊鎭�
+ /// </summary>
+ private class SafeguardZoneInfo
+ {
+ /// <summary>
+ /// 闃插尯id銆�
+ /// </summary>
+ public int ZoneId;
+ /// <summary>
+ /// 甯冮槻闃插尯鍚嶇О 锛屾渶澶�32涓瓧绗�
+ /// </summary>
+ public string ZoneName;
+ /// <summary>
+ /// 淇℃伅鎺ㄩ�� 0:鎺ㄩ�� 1:涓嶆帹閫�
+ /// </summary>
+ public int InformationPush = 1;
+ /// <summary>
+ /// 浼犳劅鍣ㄨ澶囩殑淇℃伅(keys:璁惧涓婚敭)
+ /// </summary>
+ public Dictionary<string, Safeguard.ZoneDeviceListData> dicSensor = new Dictionary<string, Safeguard.ZoneDeviceListData>();
+ /// <summary>
+ /// 璇ラ槻鍖轰笅鍏ㄩ儴璁惧鏂囦欢璺緞(keys:璁惧涓婚敭,value:璁惧鏂囦欢璺緞)
+ /// </summary>
+ public Dictionary<string, string> dicAllDevice = new Dictionary<string, string>();
+ /// <summary>
+ /// 璇ラ槻鍖轰笅闈㈢殑鎶ヨ璁惧(keys:璁惧涓婚敭),锛滃彧鏈夐槻鍖篒D:1,2,3鎵嶄細鏈夈��4,5鐨勯兘褰掍负3,鍥犱负瀹冩槸浠ラ槻鍖烘ā寮廔D(ActionType)涓哄崟浣嶇殑锛�
+ /// </summary>
+ public Dictionary<string, Safeguard.CatActionResponseObj> dicAlarmDevice = new Dictionary<string, Safeguard.CatActionResponseObj>();
+ /// <summary>
+ /// 璇ラ槻鍖轰笅闈㈢殑鍦烘櫙(keys:鍦烘櫙No),锛滃彧鏈夐槻鍖篒D:1,2,3鎵嶄細鏈夈��4,5鐨勯兘褰掍负3,鍥犱负瀹冩槸浠ラ槻鍖烘ā寮廔D(ActionType)涓哄崟浣嶇殑锛�
+ /// </summary>
+ public Dictionary<int, string> dicScenes = new Dictionary<int, string>();
+ }
+
+ #endregion
+ }
+}
--
Gitblit v1.8.0