From 30b5770f56f99c1f92e933ad31cf7d2af58b033c Mon Sep 17 00:00:00 2001 From: wei <kaede@kaededeMacBook-Air.local> Date: 星期三, 02 十二月 2020 16:31:48 +0800 Subject: [PATCH] 20201202 --- HDL_ON/Entity/Room.cs | 305 +++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 274 insertions(+), 31 deletions(-) diff --git a/HDL_ON/Entity/Room.cs b/HDL_ON/Entity/Room.cs index 7884d78..5c0cdcb 100644 --- a/HDL_ON/Entity/Room.cs +++ b/HDL_ON/Entity/Room.cs @@ -3,65 +3,308 @@ namespace HDL_ON.Entity { + /// <summary> + /// 璇诲彇鏈嶅姟鍣ㄧ┖闂翠俊鎭繑鍥炲埌鏁版嵁鍖� + /// </summary> + public class RoomApiPack + { + public List<SpatialInfo> list = new List<SpatialInfo>(); + + public string totalCount = "0"; + + public string totalPage = "0"; + + public string pageNo = "0"; + + public string pageSize = "0"; + + } + /// <summary> + /// 绌洪棿淇℃伅鍩虹绫� + /// 鍖呭惈妤煎眰/鎴块棿 + /// </summary> + public class SpatialInfo + { + public string roomId = ""; + public string roomName = ""; + public string roomImage = ""; + public string roomType = ""; + public string parentId = ""; + public string uid = Guid.NewGuid().ToString(); + + public string createTime = ""; + public string modifyTime = ""; + + protected void SaveSpatialInfo() + { + var pm = new DAL.Server.HttpServerRequest(); + if (string.IsNullOrEmpty(createTime) && string.IsNullOrEmpty(modifyTime)) + { + pm.AddRoom(new List<SpatialInfo>() { this }); + } + else if (string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime)) + { + pm.DeleteRoom(new List<string>() { roomId }); + } + else if (!string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime)) + { + pm.UpdateRoom(new List<SpatialInfo>() { this }); + } + } + + /// <summary> + /// 鏇存柊妤煎眰淇℃伅 + /// </summary> + public void UpdateSpatialInfoData() + { + if (roomType == "ROOM") + { + + } + else if (roomType == "FLOOR") + { + var tempFloor = Floor.InsFloor.Floors.Find((obj) => obj.roomId == roomId); + if (tempFloor == null) + { + Floor.InsFloor.Floors.Add(this as Floor); + } + else + { + tempFloor = this as Floor; + } + var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(Floor.InsFloor.Floors)); + FileUtils.WriteFileByBytes(Floor.InsFloor.FloorDataSavePath, ssd); + MainPage.Log("鏇存柊妤煎眰淇℃伅"); + } + } + } /// <summary> /// 鎴块棿瀵硅薄 - /// 鎴块棿鍛藉悕瑙勫垯 typeof (Room).Name + "_" + etNameBox.Text.Trim (); /// </summary> - [System.Serializable] - public class Room + [Serializable] + public class Floor : SpatialInfo { + #region 妤煎眰鏁版嵁鐩稿叧 + static Floor ins_Floor ; + public static Floor InsFloor { + get { + if(ins_Floor== null) + { + ins_Floor = new Floor(); + } + return ins_Floor; + } + } + public string FloorDataSavePath = "FloorsData"; /// <summary> - /// 鎴块棿鍚� + /// 妤煎眰鍒楄〃 /// </summary> - public string name = "Room"; - /// <summary> - /// 鎴块棿ID - /// </summary> - public string sid; - /// <summary> - /// 妤煎眰绱㈠紩 - /// </summary> - public int floorIndex = -1; + List<Floor> floors; + public List<Floor> Floors + { + get + { + if (floors == null) + { + try + { + var floorsDataBytes = FileUtils.ReadFile(FloorDataSavePath); + if (floorsDataBytes != null) + { + var floorsDataString = System.Text.Encoding.UTF8.GetString(floorsDataBytes); + MainPage.Log(floorsDataString); + floors = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Floor>>(floorsDataString); + if (floors == null) + { + floors = new List<Floor>(); + } + } + } + catch (Exception ex) + { + MainPage.Log($"妤煎眰鏁版嵁鍒濆鍖栧け璐ワ細{ex.Message}"); + } + } + return floors; + } + } /// <summary> - /// 鎴块棿鑳屾櫙 + /// 澧炲姞妤煎眰 /// </summary> + /// <param name="floor"></param> + public void AddFloor(Floor floor) + { + ins_Floor.floors.Add(floor); + floor.SaveFloorData(); + } + /// <summary> + /// 鍒犻櫎妤煎眰 + /// </summary> + /// <param name="floor"></param> + public void DelFloor(Floor floor) + { + var tRoom = ins_Floor.floors.Find((obj) => obj.uid == floor.uid); + if (tRoom != null) + { + ins_Floor.floors.Remove(floor); + floor.modifyTime = ""; + } + SaveFloorData(); + } + + #endregion + + public Floor() + { + roomType = "FLOOR"; + parentId = DB_ResidenceData.residenceData.CurReginID; + } + /// <summary> + /// 淇濆瓨妤煎眰鏁版嵁 + /// </summary> + public void SaveFloorData() + { + var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(ins_Floor.floors)); + FileUtils.WriteFileByBytes(FloorDataSavePath, ssd); + MainPage.Log($"Save floor Data"); + base.SaveSpatialInfo(); + } + + } + + [Serializable] + public class Room : SpatialInfo + { + public Room() + { + roomType = "ROOM"; + roomName = "Room"; + } public string backgroundImage = "Classification/Room/Roombg.png"; + public string roomSavePath + { + get + { + return "RoomPath_" + uid; + } + } /// <summary> /// 妤煎眰 /// </summary> - public string floor { + [Newtonsoft.Json.JsonIgnore] + public string floorName + { get { - string str = ""; - if (floorIndex != -1) + if (Floor.InsFloor.Floors.Count > 0) { - if (floorIndex < DB_ResidenceData.residenceData.floors.Count) - str = DB_ResidenceData.residenceData.floors[floorIndex]; + var f = Floor.InsFloor.Floors.Find((obj) => obj.uid == parentId); + if (f != null) + { + return f.roomName + " "; + } } - return str; + return ""; } } - /// <summary> /// 鎴块棿鍔熻兘鍒楄〃 /// </summary> - [Newtonsoft.Json.JsonIgnore] - public List<Function> functions = new List<Function>(); - - public void RefreshFunctions() + List<Function> functions = new List<Function>(); + /// <summary> + /// 鑾峰彇鎴块棿鍔熻兘鍒楄〃 + /// </summary> + public List<Function> GetRoomFunctions(bool needRefresh) { - List<Function> funcList = new List<Function>(); - foreach (var f in DB_ResidenceData.residenceData.functionList.functions) + if (needRefresh) { - if (f.roomIdList.Contains(sid) && sid != null) + functions = new List<Function>(); + } + if (functions.Count == 0) + { + foreach (var f in DB_ResidenceData.functionList.GetAllFunction()) { - funcList.Add(f); + if (f.roomIds.Contains(uid) && uid != null) + { + functions.Add(f); + } } } - functions = funcList; + return functions; + } + /// <summary> + /// 澧炲姞鎴块棿鍔熻兘 + /// 鎿嶄綔鐨勬槸缂撳瓨鏁版嵁锛屼笉鐢ㄤ繚瀛� + /// </summary> + public void AddRoomFunction(Function function) + { + functions.Add(function); + } + /// <summary> + /// 鍒犻櫎鎴块棿鍔熻兘 + /// 鎿嶄綔鐨勬槸缂撳瓨鏁版嵁锛屼笉鐢ㄤ繚瀛� + /// </summary> + public void RemoveRoomFunction(Function function) + { + functions.Remove(functions.Find((obj) => obj.sid == function.sid)); + } + /// <summary> + /// 鎴块棿鍦烘櫙鍒楄〃 + /// </summary> + List<Scene> scenes = new List<Scene>(); + /// <summary> + /// 鑾峰彇鍦烘櫙鍒楄〃 + /// </summary> + /// <returns></returns> + public List<Scene> GetRoomScenes(bool needRefresh) + { + if (needRefresh) + { + scenes = new List<Scene>(); + } + if (scenes.Count == 0) + { + foreach (var s in DB_ResidenceData.functionList.scenes) + { + if (s.roomIds.Contains(uid) && uid != null) + { + scenes.Add(s); + } + } + } + return scenes; + } + /// <summary> + /// 澧炲姞鎴块棿鍦烘櫙 + /// 鎿嶄綔鐨勬槸缂撳瓨鏁版嵁锛屼笉鐢ㄤ繚瀛� + /// </summary> + /// <param name="scene"></param> + public void AddRoomScene(Scene scene) + { + scenes.Add(scene); + } + /// <summary> + /// 绉婚櫎鎴块棿鍦烘櫙 + /// 鎿嶄綔鐨勬槸缂撳瓨鏁版嵁锛屼笉鐢ㄤ繚瀛� + /// </summary> + /// <param name="scene"></param> + public void RemoveRoomScene(Scene scene) + { + scenes.Remove(scenes.Find((obj) => obj.sid == scene.sid)); + } + /// <summary> + /// 淇濆瓨鎴块棿鏁版嵁 + /// </summary> + public void SaveRoomData() + { + var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); + FileUtils.WriteFileByBytes(roomSavePath, ssd); + MainPage.Log($"Save Room Data {roomName} : {this.uid}"); + base.SaveSpatialInfo(); } } -} + +} \ No newline at end of file -- Gitblit v1.8.0