From 52c84c10c3f77156f73566cb9793616e2a25dddd Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期二, 08 十二月 2020 16:08:55 +0800
Subject: [PATCH] 2020-12-08-001
---
HDL_ON/Entity/Room.cs | 116 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 89 insertions(+), 27 deletions(-)
diff --git a/HDL_ON/Entity/Room.cs b/HDL_ON/Entity/Room.cs
index 91e78cd..7d39796 100644
--- a/HDL_ON/Entity/Room.cs
+++ b/HDL_ON/Entity/Room.cs
@@ -122,15 +122,25 @@
{
foreach (var updateTemp in roomUpdateList)
{
+ var localDelRoom = CurrentSpatial.needDeleteRooms.Find((obj) => obj.roomId == updateTemp.roomId);
+ if(localDelRoom!= null)
+ {
+ DelRoom(localDelRoom);
+
+ continue;
+ }
var localRoom = CurrentSpatial.RoomList.Find((obj) => obj.roomId == updateTemp.roomId);
if (localRoom != null)
{
- localRoom.roomName = updateTemp.roomName;
- localRoom.roomImage = updateTemp.roomImage;
- localRoom.parentId = updateTemp.parentId;
- localRoom.createTime = updateTemp.createTime;
- localRoom.modifyTime = updateTemp.modifyTime;
- localRoom.SaveRoomData();
+ if (localRoom.modifyTime != updateTemp.modifyTime)
+ {
+ localRoom.roomName = updateTemp.roomName;
+ localRoom.roomImage = updateTemp.roomImage;
+ localRoom.parentId = updateTemp.parentId;
+ localRoom.createTime = updateTemp.createTime;
+ localRoom.modifyTime = updateTemp.modifyTime;
+ localRoom.SaveRoomData();
+ }
}else
{
updateTemp.SaveRoomData();
@@ -143,6 +153,8 @@
foreach(var newRoom in roomUpdateList)
{
newRoom.SaveRoomData();
+ RoomList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Room>(
+ Newtonsoft.Json.JsonConvert.SerializeObject(newRoom)));
}
}
}
@@ -194,7 +206,7 @@
{
try
{
- var floorsDataBytes = FileUtils.ReadFile(dataSavePath);
+ var floorsDataBytes = FileUtils.ReadFile("FloorsData");
if (floorsDataBytes != null)
{
var floorsDataString = System.Text.Encoding.UTF8.GetString(floorsDataBytes);
@@ -262,7 +274,7 @@
if (tRoom != null)
{
FloorList.Remove(floor);
- floor.modifyTime = "";
+ floor.DeleteSign = true;
}
SaveFloorData();
}
@@ -278,16 +290,7 @@
SaveSpatialInfo();
}
- /// <summary>
- /// 淇濆瓨鎴块棿鏁版嵁
- /// </summary>
- public void SaveRoomData()
- {
- var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
- FileUtils.WriteFileByBytes(dataSavePath, ssd);
- MainPage.Log($"Save Room Data {roomName} : {uid}");
- SaveSpatialInfo();
- }
+
#endregion
#region 鎴块棿鍒楄〃
@@ -316,11 +319,40 @@
var roomDataBytes = FileUtils.ReadFile(filePath);
var roomDataString = System.Text.Encoding.UTF8.GetString(roomDataBytes);
var room = Newtonsoft.Json.JsonConvert.DeserializeObject<Room>(roomDataString);
- if (room != null)
+ if (room != null )
{
- rooms.Add(room);
+ if(room.DeleteSign)
+ {
+ needDeleteRooms.Add(room);
+ }else
+ {
+ rooms.Add(room);
+ }
}
}
+ }
+ if(needDeleteRooms.Count>0)
+ {
+ //鍒犻櫎宸茬粡鏍囪闇�瑕佸垹闄ょ殑鎴块棿
+ new System.Threading.Thread(() =>
+ {
+ var delIds = new List<string>();
+ foreach(var delTemp in needDeleteRooms)
+ {
+ delIds.Add(delTemp.roomId);
+ }
+ var pm = new HttpServerRequest();
+ var pack = pm.DeleteRoom(delIds);
+ if (pack.Code == StateCode.SUCCESS)
+ {
+ foreach (var delTemp in needDeleteRooms)
+ {
+ FileUtils.DeleteFile(delTemp.dataSavePath);
+ }
+ needDeleteRooms.Clear();
+ }
+ })
+ { IsBackground = true }.Start();
}
}
catch (Exception ex)
@@ -331,6 +363,12 @@
return rooms;
}
}
+ /// <summary>
+ /// 闇�瑕佸垹闄ょ殑鎴块棿
+ /// 鏈湴鏍囪鍒犻櫎浜嗭紝浣嗘槸鏈嶅姟涓婃病鏈夊垹闄�
+ /// 鏃犳硶涓庢湇鍔″櫒閫氳閫犳垚鍒犻櫎涓嶆垚鍔燂紝閫氳鎴愬姛涔嬪悗瑕侀噸鏂板垹闄�
+ /// </summary>
+ List<Room> needDeleteRooms = new List<Room>();
/// <summary>
/// 澧炲姞鎴块棿
/// </summary>
@@ -346,14 +384,29 @@
/// <param name="room"></param>
public void DelRoom(Room room)
{
- var tRoom = RoomList.Find((obj) => obj.uid == room.uid);
- if (tRoom != null)
+ new System.Threading.Thread(() =>
{
- FileUtils.DeleteFile(room.dataSavePath);
- RoomList.Remove(room);
room.DeleteSign = true;
- }
- room.SaveRoomData();
+ room.SaveRoomData();
+ var tRoom = RoomList.Find((obj) => obj.uid == room.uid);
+ if (tRoom != null)
+ {
+ RoomList.Remove(room);
+ }
+ var temp = needDeleteRooms.Find((obj) => obj.uid == room.uid);
+ if (temp != null)
+ {
+ needDeleteRooms.Add(room);
+ }
+ var pm = new HttpServerRequest();
+ var pack = pm.DeleteRoom(new List<string>() { room.roomId });
+ if (pack.Code == StateCode.SUCCESS)
+ {
+ FileUtils.DeleteFile(room.dataSavePath);
+ needDeleteRooms.Remove(room);
+ }
+ })
+ { IsBackground = true }.Start();
}
/// <summary>
/// 鍒犻櫎鎵�鏈夋埧闂�
@@ -390,7 +443,16 @@
{ IsBackground = true }.Start();
}
-
+ /// <summary>
+ /// 淇濆瓨鎴块棿鏁版嵁
+ /// </summary>
+ public void SaveRoomData()
+ {
+ var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
+ FileUtils.WriteFileByBytes(dataSavePath, ssd);
+ MainPage.Log($"Save Room Data {roomName} : {uid}");
+ SaveSpatialInfo();
+ }
#endregion
}
--
Gitblit v1.8.0