给数据库中路径的edges增加顺序id

This commit is contained in:
tian 2026-01-06 11:16:44 +08:00
parent 2d2e60c58b
commit 6fab2b3432

View File

@ -125,7 +125,7 @@ namespace NavisworksTransport
)
");
// 5. 路径边表(新增
// 5. 路径边表(新增SequenceNumber字段
ExecuteNonQuery(@"
CREATE TABLE IF NOT EXISTS PathEdges (
Id TEXT PRIMARY KEY,
@ -134,6 +134,7 @@ namespace NavisworksTransport
EndPointId TEXT NOT NULL,
SegmentType INTEGER NOT NULL,
PhysicalLength REAL NOT NULL,
SequenceNumber INTEGER NOT NULL,
Ts_X REAL,
Ts_Y REAL,
Ts_Z REAL,
@ -230,9 +231,9 @@ namespace NavisworksTransport
// 保存路径边
if (route.Edges != null && route.Edges.Count > 0)
{
foreach (var edge in route.Edges)
for (int i = 0; i < route.Edges.Count; i++)
{
SavePathEdge(route.Id, edge);
SavePathEdge(route.Id, route.Edges[i], i);
}
LogManager.Info($"保存路径: {route.Name},包含 {route.Edges.Count} 个路径边");
@ -569,15 +570,15 @@ namespace NavisworksTransport
/// <summary>
/// 保存路径边
/// </summary>
private void SavePathEdge(string routeId, PathEdge edge)
private void SavePathEdge(string routeId, PathEdge edge, int sequenceNumber)
{
var sql = @"
INSERT INTO PathEdges
(Id, RouteId, StartPointId, EndPointId, SegmentType, PhysicalLength,
(Id, RouteId, StartPointId, EndPointId, SegmentType, PhysicalLength, SequenceNumber,
Ts_X, Ts_Y, Ts_Z, Te_X, Te_Y, Te_Z,
ArcCenter_X, ArcCenter_Y, ArcCenter_Z,
RequestedRadius, ActualRadius, DeflectionAngle, ArcLength)
VALUES (@id, @routeId, @startId, @endId, @segType, @length,
VALUES (@id, @routeId, @startId, @endId, @segType, @length, @seqNum,
@tsx, @tsy, @tsz, @tex, @tey, @tez,
@acx, @acy, @acz,
@reqR, @actR, @angle, @arcLen)
@ -591,6 +592,7 @@ namespace NavisworksTransport
cmd.Parameters.AddWithValue("@endId", edge.EndPointId ?? "");
cmd.Parameters.AddWithValue("@segType", (int)edge.SegmentType);
cmd.Parameters.AddWithValue("@length", edge.PhysicalLength);
cmd.Parameters.AddWithValue("@seqNum", sequenceNumber);
// 直线段:保存起止点坐标
if (edge.SegmentType == PathSegmentType.Straight && edge.SampledPoints != null && edge.SampledPoints.Count >= 2)
@ -679,7 +681,7 @@ namespace NavisworksTransport
/// </summary>
private void LoadPathEdges(PathRoute route)
{
var sql = "SELECT * FROM PathEdges WHERE RouteId = @routeId ORDER BY Id";
var sql = "SELECT * FROM PathEdges WHERE RouteId = @routeId ORDER BY SequenceNumber";
using (var cmd = new SQLiteCommand(sql, _connection))
{