| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.DAL.Server; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.Entity |
| | | { |
| | |
| | | public string uid = Guid.NewGuid().ToString(); |
| | | public string createTime = ""; |
| | | public string modifyTime = ""; |
| | | /// <summary> |
| | | /// 删除标记 |
| | | /// 需要删除数据时,标记为:true |
| | | /// 由云端删除成功之后,返回数据再清除本地数据 |
| | | /// </summary> |
| | | public bool DeleteSign = false; |
| | | ///// <summary> |
| | | ///// 删除标记 20201208:可欣:APP的在线和离线问题,刚刚确定了,离线无法编辑,只能控制 |
| | | ///// 需要删除数据时,标记为:true |
| | | ///// 由云端删除成功之后,返回数据再清除本地数据 |
| | | ///// </summary> |
| | | //public bool DeleteSign = false; |
| | | |
| | | |
| | | protected void SaveSpatialInfo() |
| | | protected ResponsePackNew SaveSpatialInfo() |
| | | { |
| | | var pm = new HttpServerRequest(); |
| | | var revPack = new ResponsePackNew(); |
| | | if (string.IsNullOrEmpty(createTime) && string.IsNullOrEmpty(modifyTime)) |
| | | { |
| | | pm.AddRoom(new List<SpatialInfo>() { this }); |
| | | revPack = pm.AddRoom(new List<SpatialInfo>() { this }); |
| | | } |
| | | else if (string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime)) |
| | | { |
| | | pm.DeleteRoom(new List<string>() { roomId }); |
| | | revPack = pm.DeleteRoom(new List<string>() { roomId }); |
| | | } |
| | | else if (!string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime)) |
| | | { |
| | | pm.UpdateRoom(new List<SpatialInfo>() { this }); |
| | | revPack = pm.UpdateRoom(new List<SpatialInfo>() { this }); |
| | | } |
| | | return revPack; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | 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.parentId = updateTemp.parentId; |
| | | localRoom.createTime = updateTemp.createTime; |
| | | localRoom.modifyTime = updateTemp.modifyTime; |
| | | localRoom.SaveRoomData(); |
| | | localRoom.SaveRoomData(false); |
| | | } |
| | | }else |
| | | { |
| | | updateTemp.SaveRoomData(); |
| | | updateTemp.SaveRoomData(false); |
| | | } |
| | | } |
| | | } |
| | |
| | | CurrentSpatial.DeleteAllRoom(); |
| | | foreach(var newRoom in roomUpdateList) |
| | | { |
| | | newRoom.SaveRoomData(); |
| | | newRoom.SaveRoomData(false); |
| | | RoomList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Room>( |
| | | Newtonsoft.Json.JsonConvert.SerializeObject(newRoom))); |
| | | } |
| | |
| | | localFloor = updateTemp; |
| | | } |
| | | } |
| | | CurrentSpatial.SaveFloorData(); |
| | | } |
| | | if(optionType == OptionType.Cover) |
| | | { |
| | |
| | | { |
| | | FloorList.Add(updateTemp); |
| | | } |
| | | var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(FloorList)); |
| | | FileUtils.WriteFileByBytes(dataSavePath, ssd); |
| | | } |
| | | var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(FloorList)); |
| | | FileUtils.WriteFileByBytes(dataSavePath, ssd); |
| | | } |
| | | } |
| | | |
| | |
| | | /// <param name="floor"></param> |
| | | public void AddFloor(SpatialInfo floor) |
| | | { |
| | | FloorList.Add(floor); |
| | | SaveFloorData(); |
| | | if (floor.SaveFloorData() == StateCode.SUCCESS) |
| | | { |
| | | FloorList.Add(floor); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 更新楼层信息 |
| | |
| | | /// <param name="floor"></param> |
| | | public void DelFloor(SpatialInfo floor) |
| | | { |
| | | var tRoom = FloorList.Find((obj) => obj.uid == floor.uid); |
| | | if (tRoom != null) |
| | | if (floor == null) |
| | | return; |
| | | var pm = new HttpServerRequest(); |
| | | var code = pm.DeleteRoom(new List<string>() { floor.roomId }).Code; |
| | | if (code == StateCode.SUCCESS) |
| | | { |
| | | FloorList.Remove(floor); |
| | | floor.DeleteSign = true; |
| | | var tRoom = FloorList.Find((obj) => obj.uid == floor.uid); |
| | | if (tRoom != null) |
| | | { |
| | | FloorList.Remove(floor); |
| | | } |
| | | var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(FloorList)); |
| | | FileUtils.WriteFileByBytes(dataSavePath, ssd); |
| | | MainPage.Log($"Save floor Data"); |
| | | } |
| | | SaveFloorData(); |
| | | else |
| | | { |
| | | Utlis.ShowTip(Language.StringByID(StringId.DeleteFloorFail) + "Code:" + code); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 保存楼层数据 |
| | | /// </summary> |
| | | void SaveFloorData() |
| | | string SaveFloorData() |
| | | { |
| | | var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(FloorList)); |
| | | FileUtils.WriteFileByBytes(dataSavePath, ssd); |
| | | MainPage.Log($"Save floor Data"); |
| | | SaveSpatialInfo(); |
| | | var pack = SaveSpatialInfo(); |
| | | if (pack.Code == StateCode.SUCCESS) |
| | | { |
| | | var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(FloorList)); |
| | | FileUtils.WriteFileByBytes(dataSavePath, ssd); |
| | | MainPage.Log($"Save floor Data"); |
| | | } |
| | | else |
| | | { |
| | | Utlis.ShowTip(Language.StringByID(StringId.EditRoomInfoFail) + "Code:" + pack.Code); |
| | | } |
| | | return pack.Code; |
| | | } |
| | | |
| | | |
| | |
| | | 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) |
| | | { |
| | | if(room.DeleteSign) |
| | | { |
| | | needDeleteRooms.Add(room); |
| | | }else |
| | | { |
| | | rooms.Add(room); |
| | | } |
| | | 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) |
| | |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 需要删除的房间 |
| | | /// 本地标记删除了,但是服务上没有删除 |
| | | /// 无法与服务器通讯造成删除不成功,通讯成功之后要重新删除 |
| | | /// </summary> |
| | | List<Room> needDeleteRooms = new List<Room>(); |
| | | /// <summary> |
| | | /// 增加房间 |
| | | /// </summary> |
| | | /// <param name="room"></param> |
| | | public void AddRoom(Room room) |
| | | { |
| | | RoomList.Add(room); |
| | | room.SaveRoomData(); |
| | | if (room.SaveRoomData() == StateCode.SUCCESS) |
| | | { |
| | | RoomList.Add(room); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 删除房间 |
| | |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | | room.DeleteSign = true; |
| | | 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) |
| | | { |
| | | var tRoom = RoomList.Find((obj) => obj.uid == room.uid); |
| | | if (tRoom != null) |
| | | { |
| | | RoomList.Remove(room); |
| | | } |
| | | FileUtils.DeleteFile(room.dataSavePath); |
| | | needDeleteRooms.Remove(room); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | |
| | | /// <summary> |
| | | /// 保存房间数据 |
| | | /// </summary> |
| | | public void SaveRoomData() |
| | | public string SaveRoomData(bool upServer = true) |
| | | { |
| | | var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); |
| | | FileUtils.WriteFileByBytes(dataSavePath, ssd); |
| | | MainPage.Log($"Save Room Data {roomName} : {uid}"); |
| | | SaveSpatialInfo(); |
| | | var packCode = StateCode.SUCCESS; |
| | | bool needSave = true; |
| | | if (upServer) |
| | | { |
| | | packCode = SaveSpatialInfo().Code; |
| | | } |
| | | if (needSave) |
| | | { |
| | | var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); |
| | | FileUtils.WriteFileByBytes(dataSavePath, ssd); |
| | | MainPage.Log($"Save Room Data {roomName} : {uid}"); |
| | | } |
| | | return packCode; |
| | | } |
| | | #endregion |
| | | |