diff --git a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
index 52c01e40..542b0612 100644
--- a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
+++ b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
@@ -149,5 +149,16 @@ namespace SJZY.Track.Application.Services.TrackContents
{
return await _trackContentRepository.GetMapPageAsync(input);
}
+
+ ///
+ /// 轨迹内容映射详情
+ ///
+ ///
+ ///
+ [HttpGet("GetMapDetail")]
+ public async Task GetMapDetailAsync(int id)
+ {
+ return await _trackContentRepository.GetMapDetailAsync(id);
+ }
}
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs
index fe1ab55c..cb4c9a4f 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs
@@ -9,4 +9,6 @@ public interface ITrackContentRepository : IBasicRepository
Task> GetPageTrackContent(GetPageTrackContentVO input);
Task> GetMapPageAsync(GetTrackContentMapPageInputVO input);
+
+ Task GetMapDetailAsync(int id);
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Dtos/TrackContents/GetTrackContentMapDetailOutputVO.cs b/src/SJZY.Track.Domain/Dtos/TrackContents/GetTrackContentMapDetailOutputVO.cs
new file mode 100644
index 00000000..b5755d21
--- /dev/null
+++ b/src/SJZY.Track.Domain/Dtos/TrackContents/GetTrackContentMapDetailOutputVO.cs
@@ -0,0 +1,46 @@
+namespace SJZY.Track.Domain.Dtos.TrackContents;
+
+public class GetTrackContentMapDetailOutputVO
+{
+ public int Id { get; set; }
+
+ ///
+ /// 映射子系统
+ ///
+ public string MapSubSystem { get; set; }
+
+ ///
+ /// 映射子系统id
+ ///
+ public int MapSubSystemId { get; set; }
+
+ ///
+ /// 映射轨迹内容
+ ///
+ public string MapTrackContent { get; set; }
+
+ ///
+ /// 映射轨迹内容id
+ ///
+ public int MapTrackContentId { get; set; }
+
+ ///
+ /// 子系统
+ ///
+ public string SubSystem { get; set; }
+
+ ///
+ /// 子系统id
+ ///
+ public int SubSystemId { get; set; }
+
+ ///
+ /// 源轨迹内容
+ ///
+ public string TrackContent { get; set; }
+
+ ///
+ /// 源轨迹内容id
+ ///
+ public int TrackContentId { get; set; }
+}
\ No newline at end of file
diff --git a/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs
index 50f6a2d2..a186543a 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs
@@ -117,4 +117,25 @@ public class TrackContentRepository : BasicRepository, ITrac
})
.ToPagedListAsync(input.PageIndex, input.PageSize);
}
+
+ public async Task GetMapDetailAsync(int id)
+ {
+ return await Context.Queryable()
+ .InnerJoin((contentMap, sourceContent) => contentMap.TrackContentId == sourceContent.Id && !sourceContent.IsDeleted)
+ .InnerJoin((contentMap, sourceContent, targetContent) => contentMap.MapTrackContentId == targetContent.Id && !targetContent.IsDeleted)
+ .LeftJoin((contentMap, sourceContent, targetContent, sourceSystem) => contentMap.SubSystemId == sourceSystem.Id && !sourceSystem.IsDeleted)
+ .LeftJoin((contentMap, sourceContent, targetContent, sourceSystem, targetSystem) => contentMap.MapSubSystemId == targetSystem.Id && !targetSystem.IsDeleted)
+ .Filter(null, true)
+ .Where(contentMap => !contentMap.IsDeleted)
+ .Select((contentMap, sourceContent, targetContent, sourceSystem, targetSystem) => new GetTrackContentMapDetailOutputVO
+ {
+ Id = contentMap.Id,
+ SubSystemId = contentMap.SubSystemId,
+ SubSystem = sourceSystem.CnName,
+ TrackContent = contentMap.TrackContentCode + "-" + sourceContent.Content,
+ MapSubSystem = targetSystem.CnName,
+ MapTrackContent = contentMap.MapTrackContentCode + "-" + targetContent.Content
+ }, true)
+ .SingleAsync();
+ }
}
\ No newline at end of file