From af9c3e0b3b1eb370e966b3ca9db3f62848d4189b Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期六, 21 八月 2021 13:03:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/newBranch1' into WJC
---
HDL_ON/Entity/Function/SecurityAlarm.cs | 417 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 411 insertions(+), 6 deletions(-)
diff --git a/HDL_ON/Entity/Function/SecurityAlarm.cs b/HDL_ON/Entity/Function/SecurityAlarm.cs
index eeab50e..4eda460 100644
--- a/HDL_ON/Entity/Function/SecurityAlarm.cs
+++ b/HDL_ON/Entity/Function/SecurityAlarm.cs
@@ -1,11 +1,117 @@
锘縰sing System;
using System.Collections.Generic;
using HDL_ON.Common;
+using HDL_ON.DAL.Server;
+using Shared;
namespace HDL_ON.Entity
{
+ /// <summary>
+ /// 瀹夐槻涓績
+ /// </summary>
+ public class SecurityCenter
+ {
+ static SecurityCenter _center;
+
+ public static SecurityCenter Security
+ {
+ get
+ {
+ if(_center == null)
+ {
+ _center = new SecurityCenter();
+ }
+ return _center;
+ }
+ }
+
+ SecurityAlarm _securityAlarm;
+ /// <summary>
+ /// 褰撳墠甯冮槻妯″紡
+ /// </summary>
+ public SecurityAlarm CurrentDefenseMode
+ {
+ get
+ {
+ return _securityAlarm;
+ }
+ set
+ {
+ _securityAlarm = value;
+ UI.HomePage.LoadEvent_RefreshSecurityStatus();
+ }
+ }
+
+ HttpServerRequest httpServerRequest = new HttpServerRequest();
+
+
+
+ List<SecurityAlarm> _securityAlarmList;
+ /// <summary>
+ /// 闃插尯鍒楄〃
+ /// </summary>
+ public List<SecurityAlarm> securityAlarmList
+ {
+ get
+ {
+ if(_securityAlarmList == null)
+ {
+ _securityAlarmList = GetSecurityAlarmList();
+ }
+ return _securityAlarmList;
+ }
+ }
+
+
+ /// <summary>
+ /// 璇诲彇浜戠瀹夐槻鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ public List<SecurityAlarm> GetSecurityAlarmList()
+ {
+ var pack = httpServerRequest.GetSecurityList();
+ if(pack.Code == StateCode.SUCCESS)
+ {
+ var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SecurityAlarm>>(pack.Data.ToString());
+ if(revData!= null)
+ {
+ _securityAlarmList = revData;
+ return revData;
+ }
+ }
+ return new List<SecurityAlarm>();
+ }
+
+ /// <summary>
+ /// 鐘舵�� enable甯冮槻銆乨isable鎾掗槻
+ /// </summary>
+ public string status
+ {
+ get
+ {
+ string result = "disable";
+ foreach(var s in securityAlarmList)
+ {
+ if(s.status == "enable")
+ {
+ result = "enable";
+ break;
+ }
+ }
+ return result;
+ }
+ }
+
+
+ }
+
+
public class SecurityAlarm
{
+ /// <summary>
+ /// 瀹夐槻浜戠id
+ /// </summary>
+ public string userSecurityId;
/// <summary>
/// 瀹夐槻sid
/// </summary>
@@ -21,7 +127,7 @@
/// <summary>
/// 鐘舵�� enable甯冮槻銆乨isable鎾掗槻
/// </summary>
- public string status;
+ public string status = "disable";
/// <summary>
/// 绫诲瀷
/// "all"--鍏ㄥ畢甯冮槻锛�
@@ -29,7 +135,7 @@
/// "all_day":24灏忔椂,
/// "mute"锛氶潤闊�
/// </summary>
- public string type;
+ public string type = "normal";
/// <summary>
/// 鏇存柊鏃堕棿
/// </summary>
@@ -70,6 +176,93 @@
var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
FileUtlis.Files.WriteFileByBytes(savePath, ssd);
}
+
+ /// <summary>
+ /// 淇濆瓨瀹夐槻淇℃伅
+ /// </summary>
+ public string SaveInfo()
+ {
+ HttpServerRequest hsr = new HttpServerRequest();
+ if (string.IsNullOrEmpty(sid))
+ {
+ NewSid();
+ var pack = hsr.AddSecurity(new List<SecurityAlarm>() { this });
+ if (pack.Code == StateCode.SUCCESS)
+ {
+ SaveFile();
+ }else
+ {
+ sid = "";
+ }
+ return pack.Code;
+ }
+ else
+ {
+ var pack = hsr.EditSecurity(new List<SecurityAlarm>() { this });
+ if (pack.Code == StateCode.SUCCESS)
+ {
+ SaveFile();
+ }
+ return pack.Code;
+ }
+ }
+
+
+ /// <summary>
+ /// 鐢熸垚sid鏂规硶
+ /// </summary>
+ public void NewSid()
+ {
+ try
+ {
+ string sOidBeginsWith = "000101";//鍘傚晢 + 閫氳鏂瑰紡
+ DateTime dt = DateTime.Now;
+ DateTime startTime = TimeZoneInfo.ConvertTimeToUtc(new DateTime(2020, 1, 1));
+ long m = (long)((dt - startTime).TotalMilliseconds / 10);
+ string sTimeSpan = "00000000";
+
+ byte[] arry = new byte[4];
+ arry[0] = (byte)(m & 0xFF);
+ arry[1] = (byte)((m & 0xFF00) >> 8);
+ arry[2] = (byte)((m & 0xFF0000) >> 16);
+ arry[3] = (byte)((m >> 24) & 0xFF);
+ sTimeSpan = arry[0].ToString("X2") + arry[1].ToString("X2") + arry[2].ToString("X2") + arry[3].ToString("X2");
+
+
+ if (sTimeSpan.Length >= 8)
+ {
+ sTimeSpan = sTimeSpan.Substring(0, 8);
+ }
+ else
+ {
+ sTimeSpan = Guid.NewGuid().ToString().Substring(0, 8);
+ //sTimeSpan = "00000000";
+ }
+
+ sid = sOidBeginsWith + sTimeSpan;
+
+ sid += "16";
+ sid += "1601";
+ int maxId = 1;
+
+
+ for (int i = 0; i < SecurityCenter.Security.securityAlarmList.Count; i++)
+ {
+ string s = SecurityCenter.Security.securityAlarmList[i].sid.Substring(20, 4);
+ int iThisSceneId = Convert.ToInt16(s, 16);
+ if (iThisSceneId > maxId)
+ maxId = iThisSceneId;
+ }
+
+ sid += (maxId + 1).ToString("X4");
+ sid += "0000";
+ }
+ catch
+ {
+ }
+ }
+
+
}
/// <summary>
@@ -126,11 +319,10 @@
public string bypass;
}
-
/// <summary>
/// 瀹夐槻杈撳叆
/// </summary>
-public class SecurityInput
+ public class SecurityInput
{
/// <summary>
/// 杈撳叆鏉′欢锛堝姛鑳斤級鐨剆id
@@ -145,6 +337,154 @@
/// 瀹夐槻杈撳叆鏉′欢
/// </summary>
public List<SecurityInputCondition> condition = new List<SecurityInputCondition>();
+
+ /// <summary>
+ /// 鍔犲叆杈撳叆鏉′欢
+ /// 鏈湴鍒ゆ柇浣跨敤
+ /// </summary>
+ [Newtonsoft.Json.JsonIgnore]
+ public bool addCondition = false;
+
+ [Newtonsoft.Json.JsonIgnore]
+ Function _function = null;
+ /// <summary>
+ /// 瀵瑰簲鐨勫姛鑳藉璞�
+ /// </summary>
+ /// <returns></returns>
+ public Function GetFunction()
+ {
+ if (_function == null)
+ {
+ _function = FunctionList.List.Functions.Find((obj) => obj.sid == sid);
+ }
+ return _function;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曚釜鐘舵�佺殑鏄剧ず鏂囨湰
+ /// </summary>
+ /// <param name="inputValue"></param>
+ /// <returns></returns>
+ public string GetStateText(string inputValue)
+ {
+ string text = "";
+
+ if (GetFunction() == null)
+ return text;
+ switch (GetFunction().spk)
+ {
+ case SPK.SensorGas:
+ case SPK.SensorSmoke:
+ if (inputValue == "true")
+ {
+ text += Language.StringByID(StringId.InAlarm) + " ";
+ }
+ else if (inputValue == "false")
+ {
+ text += Language.StringByID(StringId.Normal) + " ";
+ }
+ break;
+ case SPK.SensorPir:
+ if (inputValue == "true")
+ {
+ text += Language.StringByID(StringId.youren) + " ";
+ }
+ else if (inputValue == "false")
+ {
+ text += Language.StringByID(StringId.wuren) + " ";
+ }
+ break;
+ case SPK.SensorWater:
+ if (inputValue == "true")
+ {
+ text += Language.StringByID(StringId.WaterLeakage) + " ";
+ }
+ else if (inputValue == "false")
+ {
+ text += Language.StringByID(StringId.Normal) + " ";
+ }
+ break;
+ case SPK.SensorDoorWindow:
+ if (inputValue == "true")
+ {
+ text += Language.StringByID(StringId.Open) + " ";
+ }
+ else if (inputValue == "false")
+ {
+ text += Language.StringByID(StringId.Close) + " ";
+ }
+ break;
+ }
+
+ return text;
+ }
+
+ /// <summary>
+ /// 鐘舵�佹枃鏈�
+ /// </summary>
+ /// <returns></returns>
+ public string StateText ()
+ {
+ string text = "";
+ switch(GetFunction().spk)
+ {
+ case SPK.SensorGas:
+ case SPK.SensorSmoke:
+ foreach (var con in condition)
+ {
+ if (con.value == "true")
+ {
+ text += Language.StringByID(StringId.InAlarm) + " ";
+ }
+ else if (con.value == "false")
+ {
+ text += Language.StringByID(StringId.Normal) + " ";
+ }
+ }
+ break;
+ case SPK.SensorPir:
+ foreach (var con in condition)
+ {
+ if (con.value == "true")
+ {
+ text += Language.StringByID(StringId.youren) + " ";
+ }
+ else if (con.value == "false")
+ {
+ text += Language.StringByID(StringId.wuren) + " ";
+ }
+ }
+ break;
+ case SPK.SensorWater:
+ foreach (var con in condition)
+ {
+ if (con.value == "true")
+ {
+ text += Language.StringByID(StringId.WaterLeakage) + " ";
+ }
+ else if (con.value == "false")
+ {
+ text += Language.StringByID(StringId.Normal) + " ";
+ }
+ }
+ break;
+ case SPK.SensorDoorWindow:
+ foreach (var con in condition)
+ {
+ if (con.value == "true")
+ {
+ text += Language.StringByID(StringId.Open) + " ";
+ }
+ else if (con.value == "false")
+ {
+ text += Language.StringByID(StringId.Close) + " ";
+ }
+ }
+ break;
+ }
+
+ return text;
+ }
}
/// <summary>
@@ -179,9 +519,11 @@
{
/// <summary>
/// 鎺у埗鐩爣绫诲瀷
- /// 璁惧锛�0锛屽満鏅�1锛岃嚜鍔ㄥ寲2
+ /// 0:璁惧
+ /// 1:鍦烘櫙
+ /// 2:鑷姩鍖�
/// </summary>
- public string target_type;
+ public string target_type ="0";
/// <summary>
/// 杈撳嚭鐩爣鐨剆id
/// </summary>
@@ -190,6 +532,69 @@
/// 瀹夐槻杈撳嚭鐘舵��
/// </summary>
public List<SecurityOutputStatus> status = new List<SecurityOutputStatus>();
+
+ /// <summary>
+ /// 鍔犲叆杈撳叆鏉′欢
+ /// 鏈湴鍒ゆ柇浣跨敤
+ /// </summary>
+ [Newtonsoft.Json.JsonIgnore]
+ public bool addCondition = false;
+
+ [Newtonsoft.Json.JsonIgnore]
+ Function _function = null;
+ /// <summary>
+ /// 瀵瑰簲鐨勫姛鑳藉璞�
+ /// </summary>
+ /// <returns></returns>
+ public Function GetFunction()
+ {
+ if (_function == null)
+ {
+ _function = FunctionList.List.Functions.Find((obj) => obj.sid == sid);
+ }
+ return _function;
+ }
+
+
+ /// <summary>
+ /// 鐘舵�佹枃鏈�
+ /// </summary>
+ /// <returns></returns>
+ public string StateText()
+ {
+ string text = "";
+ if (target_type == "0")
+ {
+ switch (GetFunction().spk)
+ {
+ case SPK.LightDimming:
+ case SPK.LightCCT:
+ case SPK.LightRGB:
+ case SPK.LightSwitch:
+ foreach (var state in status)
+ {
+ if (state.key == FunctionAttributeKey.Brightness)
+ {
+ if (state.value == "0")
+ {
+ text = Language.StringByID(StringId.Close);
+ }
+ else
+ {
+ text = Language.StringByID(StringId.Open);
+ }
+ }
+ }
+ break;
+ }
+ }else if(target_type == "1")
+ {
+
+ }
+
+ return text;
+ }
+
}
/// <summary>
/// 瀹夐槻杈撳嚭鐘舵��
--
Gitblit v1.8.0