From f4c86f68b900bd506ef7214b2ae9bd23a9d2ffa8 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期六, 19 十二月 2020 17:48:11 +0800
Subject: [PATCH] 完成筛选房间的功能
---
HDL_ON/Entity/Function/Scene.cs | 294 ++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 224 insertions(+), 70 deletions(-)
diff --git a/HDL_ON/Entity/Function/Scene.cs b/HDL_ON/Entity/Function/Scene.cs
old mode 100644
new mode 100755
index 5869434..4ac4da6
--- a/HDL_ON/Entity/Function/Scene.cs
+++ b/HDL_ON/Entity/Function/Scene.cs
@@ -1,13 +1,39 @@
锘縰sing System;
using System.Collections.Generic;
+using HDL_ON.DAL.Server;
using Shared;
namespace HDL_ON.Entity
{
+ public class SceneApiPack
+ {
+ static SceneApiPack _ScenePack;
+ public static SceneApiPack ScenePack
+ {
+ get
+ {
+ if(_ScenePack == null)
+ {
+ _ScenePack = new SceneApiPack();
+ }
+ return _ScenePack;
+ }
+ }
+
+ }
+
public class Scene
{
+ public Scene()
+ {
+ sid = NewSid();
+ if (!DB_ResidenceData.Instance.CheckWhetherGatewayIdIsNull())
+ {
+ gatewayId = DB_ResidenceData.Instance.HomeGateway.gatewayId;
+ }
+ }
/// <summary>
- /// 杩滅鍞竴ID
+ /// 浜戠鍞竴ID
/// </summary>
public string userSceneId = "";
/// <summary>
@@ -31,39 +57,43 @@
/// </summary>
public List<string> roomIds = new List<string>();
/// <summary>
+ /// 鎵�灞炴埧闂村垪琛�
+ /// </summary>
+ public List<string> uids = new List<string>();
+ /// <summary>
/// 寤舵椂
/// </summary>
- public int delay = 0;
- /// <summary>
- /// 寤舵椂鏄剧ず鐨勬枃鏈�
- /// </summary>
- [Newtonsoft.Json.JsonIgnore]
- public string delayText
- {
- get
- {
- string text = "";
- switch (delay)
- {
- case 0:
- text = Language.StringByID(StringId.NoDelay);
- break;
- case 30:
- text = "30s";
- break;
- case 60:
- text = "1min";
- break;
- case 120:
- text = "2min";
- break;
- case 300:
- text = "5min";
- break;
- }
- return text;
- }
- }
+ public string delay = "0";
+ ///// <summary>
+ ///// 寤舵椂鏄剧ず鐨勬枃鏈�
+ ///// </summary>
+ //[Newtonsoft.Json.JsonIgnore]
+ //public string delayText
+ //{
+ // get
+ // {
+ // string text = "";
+ // switch (delay)
+ // {
+ // case 0:
+ // text = Language.StringByID(StringId.NoDelay);
+ // break;
+ // case 30:
+ // text = "30s";
+ // break;
+ // case 60:
+ // text = "1min";
+ // break;
+ // case 120:
+ // text = "2min";
+ // break;
+ // case 300:
+ // text = "5min";
+ // break;
+ // }
+ // return text;
+ // }
+ //}
/// <summary>
/// 鍦烘櫙鍒嗙粍
@@ -78,11 +108,33 @@
/// </summary>
public bool collect = false;
+ ///// <summary>
+ ///// 鍦烘櫙鑳屾櫙
+ ///// </summary>
+ //public string ImagePath = "Intelligence/Gallery/scenebg1.png";//"FunctionIcon/Scene/s1.png";
- /// <summary>
- /// 鍦烘櫙鑳屾櫙
- /// </summary>
- public string ImagePath = "Intelligence/Gallery/scenebg1.png";//"FunctionIcon/Scene/s1.png";
+ ///// <summary>
+ ///// 鍦烘櫙鑳屾櫙
+ ///// </summary>
+ public string ImagePath
+ {
+ get
+ {
+ if (string.IsNullOrEmpty(image))
+ {
+ return "Intelligence/Gallery/scenebg1.png";
+ }
+ else
+ {
+ return image;
+ }
+ }
+ set
+ {
+ image = value;
+ }
+ }
+
/// <summary>
/// 鍦烘櫙鍔熻兘鍒楄〃
@@ -94,21 +146,18 @@
public List<ScenePushConfig> pushConfigs = new List<ScenePushConfig>();
/// <summary>
- /// 鐢熸垚鍦烘櫙sid
+ /// 鐢熸垚閫昏緫sid鏂规硶
/// </summary>
- public void NewSid()
+ public string NewSid()
{
- string sSceneid = "";
+ string sceneId = "";
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);
@@ -127,25 +176,29 @@
sTimeSpan = "00000000";
}
- sSceneid = sOidBeginsWith + sTimeSpan;
+ sceneId = sOidBeginsWith + sTimeSpan;
- sSceneid += "0A";
- sSceneid += "0A01";
- //0A01 鐗╂ā鍨嬩负鍦烘櫙锛� 0001 琛ㄧず 1 鍙峰満鏅姛鑳�
- int iTopSceneId = 1;
+ sceneId += "0A";
+ sceneId += "0A01";
+ int maxId = 1;
- Random random = new Random();
- iTopSceneId = random.Next(0, 255);
- iTopSceneId += random.Next(0, 255);
- sSceneid += iTopSceneId.ToString("X4");//鍦烘櫙鍙� 涓や釜byte
- sSceneid += "1100";
- sid = sSceneid;
+ for (int i = 0; i < FunctionList.List.scenes.Count; i++)
+ {
+ string s = FunctionList.List.scenes[i].sid.Substring(20, 4);
+ int iThisSceneId = Convert.ToInt16(s, 16);
+ if (iThisSceneId > maxId)
+ maxId = iThisSceneId;
+ }
+
+ sceneId += (maxId + 1).ToString("X4");
+ sceneId += "0000";
}
catch
{
- sid = sSceneid;
+ return sceneId;
}
+ return sceneId;
}
/// <summary>
@@ -157,7 +210,7 @@
string roomNameList = "";
foreach (var roomId in roomIds)
{
- var findRoom = DB_ResidenceData.rooms.Find(obj => obj.sid == roomId);
+ var findRoom = SpatialInfo.CurrentSpatial.RoomList.Find(obj => obj.roomId == roomId);
if (findRoom == null)
{
continue;
@@ -166,7 +219,7 @@
{
roomNameList += ",";
}
- roomNameList += findRoom.floorName + findRoom.name;
+ roomNameList += findRoom.floorName + findRoom.roomName;
}
if (roomNameList == "" )
{
@@ -186,20 +239,124 @@
return "SceneData_" + sid;
}
}
+
/// <summary>
/// 淇濆瓨鍔熻兘鏁版嵁
/// </summary>
- public void SaveSceneData()
+ public void SaveSceneData(bool upServer)
{
- var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
- FileUtils.WriteFileByBytes(savePath + this.sid, ssd);
- MainPage.Log($"Save Scene Data : {this.sid}");
+ if (upServer)
+ {
+ UploadScene();
+ }
+ else
+ {
+ var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
+ Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
+ MainPage.Log($"Save Scene Data : {savePath}");
+ }
+ }
+ /// <summary>
+ /// 鏀惰棌鍦烘櫙
+ /// </summary>
+ /// <returns></returns>
+ public string CollectScene()
+ {
+ var pm = new HttpServerRequest();
+ if (this.collect)
+ {
+ var revPack = pm.CollectScene(this.userSceneId);
+ return revPack;
+ }
+ else
+ {
+ var revPack = pm.CancelCollectScene(this.userSceneId);
+ return revPack;
+ }
}
/// <summary>
- /// 鏇存柊鏃堕棿
+ /// 缂栬緫鍦烘櫙
/// </summary>
- public DateTime refreshTime = DateTime.MinValue;
+ public string EditScene()
+ {
+ var pm = new HttpServerRequest();
+ var revPack = pm.EditScene(this);
+ if (revPack.Code == StateCode.SUCCESS)
+ {
+ var scenes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Scene>>(revPack.Data.ToString());
+ var tempScene = scenes.Find((obj) => obj.sid == sid);
+ if (tempScene != null)
+ {
+ var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(tempScene));
+ Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
+ }
+ }
+ return revPack.Code;
+ }
+
+ /// <summary>
+ /// 淇敼鍦烘櫙
+ /// </summary>
+ public string UpdateScene()
+ {
+ var pm = new HttpServerRequest();
+ var revPack = pm.EditScene(this);
+ if (revPack.Code == StateCode.SUCCESS)
+ {
+ var scenes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Scene>>(revPack.Data.ToString());
+ var tempScene = scenes.Find((obj) => obj.sid == sid);
+ if (tempScene != null)
+ {
+ var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(tempScene));
+ Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
+ }
+ }
+ return revPack.Code;
+ }
+
+
+
+ /// <summary>
+ /// 涓婁紶鏁版嵁鍒颁簯绔�
+ /// </summary>
+ void UploadScene()
+ {
+ var pm = new HttpServerRequest();
+ ResponsePackNew revPack;
+ if (string.IsNullOrEmpty(createTime) && string.IsNullOrEmpty(modifyTime))
+ {
+ revPack = pm.AddScene(this);
+ if (revPack.Code == StateCode.SUCCESS)
+ {
+ var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
+ Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
+ }
+ }
+ else if (!string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime))
+ {
+ revPack = pm.EditScene(this);
+ if (revPack.Code == StateCode.SUCCESS)
+ {
+ var scenes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Scene>>(revPack.Data.ToString());
+ var tempScene = scenes.Find((obj) => obj.sid == sid);
+ if (tempScene != null)
+ {
+ var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(tempScene));
+ Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 浜戠鏁版嵁鍒涘缓鐨勬椂闂�
+ /// </summary>
+ public string createTime = "";
+ /// <summary>
+ /// 浜戠鏁版嵁淇敼鐨勬渶鍚庢椂闂�
+ /// </summary>
+ public string modifyTime = "";
}
/// <summary>
/// 鍦烘櫙鍔熻兘瀵硅薄
@@ -219,10 +376,11 @@
/// 鏈湴瀵瑰簲鐨勫姛鑳�
/// </summary>
[Newtonsoft.Json.JsonIgnore]
- public Function localFunction {
+ public Function localFunction
+ {
get
{
- if(_localFunction == null)
+ if (_localFunction == null)
{
_localFunction = ConvertFunctionObject();
}
@@ -236,14 +394,10 @@
/// <returns></returns>
Function ConvertFunctionObject()
{
- var localFunction = DB_ResidenceData.functionList.GetAllDeviceFunctionList().Find((obj) => obj.sid == sid);
- foreach (var s in status)
- {
- localFunction.attributes.Add(new FunctionAttributes() { key = s.key, curValue = s.value, value = new List<string>() { s.value } });
- }
+ var localFunction = FunctionList.List.GetDeviceFunctionList().Find((obj) => obj.sid == sid);
return localFunction;
}
-
+
}
/// <summary>
--
Gitblit v1.8.0