You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.9 KiB
C#
87 lines
2.9 KiB
C#
using System.Text.Json;
|
|
using System.Text.Json.Nodes;
|
|
using OMS.NET.DbClass;
|
|
|
|
namespace OMS.NET.Common
|
|
{
|
|
public class LayerData
|
|
{
|
|
public string? TemplateId { get; set; }
|
|
public long LayerId { get; set; }
|
|
public bool HasChange { get; set; } = false;
|
|
public string Type { get; set; }
|
|
public JsonNode? Members { get; set; }
|
|
public JsonNode? Structure { get; set; }
|
|
public int Phase { get; set; } = 1;
|
|
|
|
public LayerData(long layerId, string type)
|
|
{
|
|
LayerId = layerId;
|
|
Type = type;
|
|
}
|
|
|
|
public LayerData(string? templateId, MapLayer layer)
|
|
{
|
|
TemplateId = templateId;
|
|
LayerId = layer.Id;
|
|
Type = layer.Type;
|
|
Members = (layer.Type == "order") ? JsonNode.Parse(layer.Members) : JsonNode.Parse(Util.Base64ToJson(layer.Members));
|
|
Structure = string.IsNullOrEmpty(layer.Structure) ? null : JsonNode.Parse(Util.Base64ToJson(layer.Structure));
|
|
Phase = layer.Phase;
|
|
}
|
|
|
|
public void AppendElement(long elementId, string elementType)
|
|
{
|
|
if (Type == "order")
|
|
{
|
|
GlobalArea.Log.Error($"order图层不能添加{elementType}元素");
|
|
return;
|
|
}
|
|
if (Members![elementId.ToString()] == null)
|
|
{
|
|
Members![elementId.ToString()] = elementType;
|
|
Structure!.AsArray().Add(elementId);
|
|
HasChange = true;
|
|
//上传图层到数据库
|
|
MapLayer mapLayer = ConvertToMapLayer();
|
|
MapLayer.Update(mapLayer);
|
|
}
|
|
}
|
|
|
|
public void DeleteElement(long elementId)
|
|
{
|
|
if (Type == "order")
|
|
{
|
|
GlobalArea.Log.Error($"order图层不能移除Element元素");
|
|
return;
|
|
}
|
|
Members!.AsObject().Remove(elementId.ToString());
|
|
//移除structure中的值
|
|
for (int i = 0; i < Structure!.AsArray().Count; i++)
|
|
{
|
|
JsonNode node = Structure!.AsArray().ElementAt(i)!;
|
|
if (node.GetValueKind() == JsonValueKind.Number &&
|
|
node.GetValue<long>() == elementId)
|
|
{
|
|
Structure!.AsArray().RemoveAt(i);
|
|
break;
|
|
}
|
|
}
|
|
//上传图层到数据库
|
|
MapLayer mapLayer = ConvertToMapLayer();
|
|
MapLayer.Update(mapLayer);
|
|
}
|
|
|
|
public MapLayer ConvertToMapLayer()
|
|
{
|
|
return new MapLayer()
|
|
{
|
|
Id = LayerId,
|
|
Type = Type,
|
|
Members = (Type == "order") ? Members!.ToString() : Util.JsonToBase64(Members!.ToString()),
|
|
Structure = (Structure == null) ? "" : Util.JsonToBase64(Structure!.ToString()),
|
|
Phase = Phase
|
|
};
|
|
}
|
|
}
|
|
} |