完成删除图层指令

dev
nxiaoxiao 1 year ago
parent 2550084b66
commit 70a871a42e

@ -138,7 +138,7 @@ namespace OMS.NET.Common
}
}
public void AddGroupLayer(long layerId)
public void OrderAddGroupLayer(long layerId)
{
if (Type == "order")
{
@ -146,6 +146,32 @@ namespace OMS.NET.Common
UpdateToDb();
}
}
public void OrderDeleteGroupLayer(long layerId)
{
if (Type == "order")
{
int index = Members!.AsArray().FindElementIndex(layerId);
Members!.AsArray().RemoveAt(index);
UpdateToDb();
}
}
public void Reset()
{
if (Type == "group")
{
Members = new JsonObject();
Members.AsObject()["0"] = 0;
int Count = Structure!.AsArray().Count;
for (int i = Count - 1; i <= 1; i--)
{
Structure!.AsArray().RemoveAt(i);
}
UpdateToDb();
}
}
public MapLayer ConvertToMapLayer()
{
return new MapLayer()

@ -290,7 +290,7 @@ namespace OMS.NET
}
}
private static readonly List<LayerData> _LayerDataList = new();
private static List<LayerData> _LayerDataList = new();
private static readonly object _LayerDataListLock = new();
private static readonly List<ActiveDataElement> _ActiveDataList = new();
@ -351,7 +351,7 @@ namespace OMS.NET
List<MapLayer> mapLayer = MapLayer.GetMapLayerList();
lock (_LayerDataListLock)
{
foreach (MapLayer layer in mapLayer)
foreach (MapLayer layer in mapLayer.Where(x => x.Phase == 1))
{
LayerData layerData = new(null, layer);
if (layerData.Type != "order")
@ -381,6 +381,22 @@ namespace OMS.NET
}
}
public static LayerData? GetLayerDataByLayerId(long layerId)
{
lock (_LayerDataListLock)
{
try
{
return _LayerDataList.Where(x => x.LayerId == layerId).First();
}
catch
{
Log.Warn("通过图层id未获取到图层数据");
return null;
}
}
}
public static LayerData GetOrderLayerData()
{
lock (_LayerDataListLock)
@ -389,6 +405,17 @@ namespace OMS.NET
}
}
/// <summary>
/// 移除已经标记删除的图层模板映射
/// </summary>
public static void RemoveDeletedLayerData()
{
lock (_LayerDataListLock)
{
_LayerDataList = _LayerDataList.Where(x => x.Phase == 1).ToList();
}
}
public static dynamic AdjustElementOrder(long elementAId, long elementBId, string templateA, string templateB, string method)
{
lock (_LayerDataListLock)
@ -487,7 +514,7 @@ namespace OMS.NET
if (mapLayer.Id != -1)
{
LayerData order = GetOrderLayerData();
order.AddGroupLayer(mapLayer.Id);
order.OrderAddGroupLayer(mapLayer.Id);
layer.HasChange = true;
layer.LayerId = mapLayer.Id;
_LayerDataList.Add(layer);

@ -1,4 +1,7 @@
using System.Text.Json;
using System.Text.Json.Nodes;
using OMS.NET.Common;
using OMS.NET.DbClass;
namespace OMS.NET.Instructs
{
@ -18,8 +21,42 @@ namespace OMS.NET.Instructs
if (Data?.GetType() != typeof(JsonElement)) return;//Data 非空和JsonElement类型检查
try
{
//string conveyor = GlobalArea.GetLoginEmailByID(wsid);
long id = Data.GetProperty("id").GetInt64();
LayerData layer = GlobalArea.GetLayerDataByLayerId(id)!;
if (layer.Type == "order") throw new Exception("Order Layer不能删");
layer.Phase = 2;
layer.Reset();//本身移除member和structure内的elementId引用然后更新到数据库
layer.HasChange = true;
LayerData order = GlobalArea.GetOrderLayerData();
order.OrderDeleteGroupLayer(id);
GlobalArea.RemoveDeletedLayerData();//更新图层模板映射
string conveyor = GlobalArea.GetLoginEmailByID(wsid);
string time = GlobalArea.GetCurrentTime();
ResponseOrBroadcastInstructs.Add(new Instruct()
{
IsBroadcast = true,
Type = "broadcast",
Class = "updateLayerOrder",
Conveyor = conveyor,
Time = time,
Data = new
{
member = order.Members
}
});
ResponseOrBroadcastInstructs.Add(new Instruct()
{
IsBroadcast = true,
Type = "broadcast",
Class = "deleteLayerAndMembers",
Conveyor = conveyor,
Time = time,
Data = new
{
id = id,
member = layer.Members
}
});
}
catch (Exception ex)
{

Loading…
Cancel
Save