实现删除元素指令

dev
nxiaoxiao 1 year ago
parent f4006f8c7d
commit 9e085dbbdc

@ -30,17 +30,17 @@ namespace OMS.NET.Common
Phase = layer.Phase;
}
public void AppendElement(long itemId, string ItemType)
public void AppendElement(long elementId, string elementType)
{
if (Type == "order")
{
GlobalArea.Log.Error($"order图层不能添加{ItemType}元素");
GlobalArea.Log.Error($"order图层不能添加{elementType}元素");
return;
}
if (Members![itemId.ToString()] == null)
if (Members![elementId.ToString()] == null)
{
Members![itemId.ToString()] = ItemType;
Structure!.AsArray().Add(itemId);
Members![elementId.ToString()] = elementType;
Structure!.AsArray().Add(elementId);
HasChange = true;
//上传图层到数据库
MapLayer mapLayer = ConvertToMapLayer();
@ -48,6 +48,30 @@ namespace OMS.NET.Common
}
}
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()

@ -329,6 +329,17 @@ namespace OMS.NET
}
}
/// <summary>
/// 移除活动数据,调用前必需确保对象已存在
/// </summary>
public static void RemoveActiveDataElement(long elementId)
{
lock (_ActiveDataListLock)
{
_ActiveDataList.Remove(GetActiveDataElement(elementId)!);
}
}
/// <summary>
/// 从数据库中构建layerid 和 templateid的对应关系
/// </summary>

@ -92,16 +92,14 @@ namespace OMS.NET.Instructs
Class = "upload",
Conveyor = conveyor,
Time = time,
Data = new Dictionary<string, object>()
{
{"vid",id},
{"rid",mapData.Id}
},
Data = new
{
vid = id,
rid = mapData.Id
}
});
}
}
else
{

@ -1,4 +1,6 @@
using System.Text.Json;
using OMS.NET.Common;
using OMS.NET.DbClass;
namespace OMS.NET.Instructs
{
@ -6,6 +8,7 @@ namespace OMS.NET.Instructs
{
public DeleteElementInstruct()
{
Type = "broadcast";
Class = "deleteElement";
}
@ -15,17 +18,91 @@ namespace OMS.NET.Instructs
{
if (!GlobalArea.LoginCheckByID(wsid)) return;//登录检查不通过则直接退出
if (Data?.GetType() != typeof(JsonElement)) return;//Data 非空和JsonElement类型检查
string conveyor = GlobalArea.GetLoginEmailByID(wsid);
try
{
string conveyor = GlobalArea.GetLoginEmailByID(wsid);
//解析id和tmpId
long id = Data.GetProperty("id").GetInt64();
string tmpId = Data.GetProperty("tmpId").GetString();
//需要先实现activeData相关
MapData mapData = MapData.Get(id) ?? throw new Exception($"Element{id}不存在");
mapData.Phase = 2;
int row = MapData.Update(mapData);
if (row == -1) throw new Exception("数据库修改失败");
if (GlobalArea.IsElementExit(id))
{
GlobalArea.RemoveActiveDataElement(id);
ResponseOrBroadcastInstructs.Add(new Instruct()
{
IsBroadcast = true,
Type = "broadcast",
Class = "pickSelectEndElements",
Conveyor = conveyor,
Time = GlobalArea.GetCurrentTime(),
Data = new
{
id = id
}
});
}
ResponseOrBroadcastInstructs.Add(new Instruct()
{
IsResponse = true,
Type = "send_correct",
Class = "delete",
Conveyor = conveyor,
Time = GlobalArea.GetCurrentTime(),
Data = new
{
rid = id
}
});
ResponseOrBroadcastInstructs.Add(new Instruct()
{
IsBroadcast = true,
Type = "broadcast",
Class = "deleteElement",
Conveyor = conveyor,
Time = GlobalArea.GetCurrentTime(),
Data = new
{
id = id
}
});
LayerData layer = GlobalArea.GetLayerDataByTemplateId(tmpId)!;
layer.DeleteElement(id);
ResponseOrBroadcastInstructs.Add(new Instruct()
{
IsBroadcast = true,
Type = "broadcast",
Class = "updateLayerData",
Conveyor = conveyor,
Time = GlobalArea.GetCurrentTime(),
Data = new
{
id = layer.LayerId,
members = layer.Members!.ToString(),
structure = layer.Structure!.ToString(),
}
});
}
catch
catch (Exception ex)
{
GlobalArea.Log.Warn($"处理{Class}广播指令出错:" + ex.Message);
//ResponseOrBroadcastInstructs.Clear();
ResponseOrBroadcastInstructs.Add(new Instruct()
{
IsResponse = true,
Type = "send_error",
Class = "delete",
Conveyor = conveyor,
Time = GlobalArea.GetCurrentTime(),
Data = new
{
source = Data,
message = ex.Message
}
});
}
});
}

Loading…
Cancel
Save