diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentMapInput.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentMapInput.cs
new file mode 100644
index 00000000..e952cc62
--- /dev/null
+++ b/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentMapInput.cs
@@ -0,0 +1,41 @@
+namespace SJZY.Track.Application.Contract.Dtos.TrackContents;
+
+public class EditTrackContentMapInput
+{
+ public int? Id { get; set; }
+
+ ///
+ /// 映射子系统id
+ ///
+ public int MapSubSystemId { get; set; }
+
+ ///
+ /// 映射轨迹内容代码
+ ///
+ public string MapTrackContentCode { get; set; }
+
+ ///
+ /// 映射轨迹内容id
+ ///
+ public int MapTrackContentId { get; set; }
+
+ ///
+ /// 操作类型
+ ///
+ public OptionTypeNoNull Options { get; set; }
+
+ ///
+ /// 源子系统id
+ ///
+ public int SubSystemId { get; set; }
+
+ ///
+ /// 源轨迹内容代码
+ ///
+ public string TrackContentCode { get; set; }
+
+ ///
+ /// 源轨迹内容id
+ ///
+ public int TrackContentId { get; set; }
+}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
index 542b0612..9201b16f 100644
--- a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
+++ b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
@@ -1,9 +1,13 @@
using Microsoft.Extensions.Localization;
using SJZY.Expand.ABP.Core.Common.Dto;
+using SJZY.Expand.ABP.Core.Localization;
using SJZY.Track.Application.Contract.Dtos.TrackContents;
+using SJZY.Track.Application.Contract.Dtos.TrackPull;
using SJZY.Track.Application.Localization;
using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
+using SJZY.Track.Domain.Aggregates.TrackPullAggregate;
using SJZY.Track.Domain.Dtos.TrackContents;
+using System.Linq.Expressions;
using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.Services.TrackContents
@@ -160,5 +164,42 @@ namespace SJZY.Track.Application.Services.TrackContents
{
return await _trackContentRepository.GetMapDetailAsync(id);
}
+
+ ///
+ /// 轨迹内容映射编辑
+ ///
+ ///
+ ///
+ [HttpPost("EditMap")]
+ public async Task EditMapAsync([FromBody] EditTrackContentMapInput input)
+ {
+ if (input.Options != OptionTypeNoNull.删除)
+ {
+ Expression> isMapAnyExp = x =>
+ x.TrackContentId == input.TrackContentId && x.MapTrackContentId == input.MapTrackContentId;
+ if (input.Options == OptionTypeNoNull.修改) isMapAnyExp.And(x => x.Id != input.Id);
+
+ if (await _trackContentRepository.IsMapAnyAsync(isMapAnyExp))
+ throw new BusinessException(message: _stringLocalizer["IsTrackContentMapAny"]);
+ }
+
+ switch (input.Options)
+ {
+ case OptionTypeNoNull.新增:
+ break;
+
+ case OptionTypeNoNull.删除:
+ break;
+
+ case OptionTypeNoNull.修改:
+ break;
+
+ default:
+ throw new BusinessException(message: _stringLocalizer[SjzyBasicLocalization.Validation_IsInEnum,
+ nameof(EditTrackContentMapInput.Options)]);
+ }
+
+ return true;
+ }
}
}
\ 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 cb4c9a4f..30439f50 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs
@@ -11,4 +11,6 @@ public interface ITrackContentRepository : IBasicRepository
Task> GetMapPageAsync(GetTrackContentMapPageInputVO input);
Task GetMapDetailAsync(int id);
+
+ Task IsMapAnyAsync(Expression> whereExpression);
}
\ 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
index b5755d21..dce4eff9 100644
--- a/src/SJZY.Track.Domain/Dtos/TrackContents/GetTrackContentMapDetailOutputVO.cs
+++ b/src/SJZY.Track.Domain/Dtos/TrackContents/GetTrackContentMapDetailOutputVO.cs
@@ -43,4 +43,14 @@ public class GetTrackContentMapDetailOutputVO
/// 源轨迹内容id
///
public int TrackContentId { get; set; }
+
+ ///
+ /// 源轨迹内容代码
+ ///
+ public string TrackContentCode { get; set; }
+
+ ///
+ /// 映射轨迹内容代码
+ ///
+ public string MapTrackContentCode { 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 a186543a..d21dad20 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs
@@ -3,6 +3,7 @@ using SJZY.Track.Domain.Aggregates.TrackFlagAggregate;
using SJZY.Track.Domain.Aggregates.TrackStatusAggregate;
using SJZY.Track.Domain.Dtos.TrackContents;
using SJZY.Track.Domain.VEntities;
+using System.Linq.Expressions;
namespace SJZY.Track.Repository.Repositories;
@@ -138,4 +139,9 @@ public class TrackContentRepository : BasicRepository, ITrac
}, true)
.SingleAsync();
}
+
+ public async Task IsMapAnyAsync(Expression> whereExpression)
+ {
+ return await Context.Queryable().Where(whereExpression).AnyAsync();
+ }
}
\ No newline at end of file