change:轨迹内容有多个轨迹标记

This commit is contained in:
xiaolipro 2024-09-10 16:43:58 +08:00
parent 8942fddc55
commit ba868dc168
9 changed files with 49 additions and 47 deletions

View File

@ -93,10 +93,10 @@ public class GetTrackContentDetailDto
/// <summary> /// <summary>
/// 轨迹标记id /// 轨迹标记id
/// </summary> /// </summary>
public int? TrackFlagId { get; set; } public string? TrackFlagId { get; set; }
/// <summary> /// <summary>
/// 轨迹标记 /// 轨迹标记ids
/// </summary> /// </summary>
public string TrackFlag { get; set; } public List<string>? TrackFlagIds { get; set; }
} }

View File

@ -60,7 +60,6 @@ public class TrackContentService : ApplicationService
var dto = ObjectMapper.Map<GetTrackContentDetailVO, GetTrackContentDetailDto>(detailInfo); var dto = ObjectMapper.Map<GetTrackContentDetailVO, GetTrackContentDetailDto>(detailInfo);
if (dto.TrackFlagId == 0) dto.TrackFlagId = null;
return new UnifyResultDto<GetTrackContentDetailDto>(GlobalConst.SuccessCode, "", dto); return new UnifyResultDto<GetTrackContentDetailDto>(GlobalConst.SuccessCode, "", dto);
} }

View File

@ -1,9 +1,10 @@
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using SJZY.Track.Application.Contract.Dtos.TrackFlags; using SJZY.Track.Application.Contract.Dtos.TrackFlags;
using SJZY.Track.Application.Localization; using SJZY.Track.Application.Localization;
using SJZY.Track.Domain.Aggregates.TrackContentAggregate; using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
using SJZY.Track.Domain.Aggregates.TrackFlagAggregate; using SJZY.Track.Domain.Aggregates.TrackFlagAggregate;
using SJZY.Track.Domain.Dtos.TrackFlags; using SJZY.Track.Domain.Dtos.TrackFlags;
using SqlSugar;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.Services.TrackFlags; namespace SJZY.Track.Application.Services.TrackFlags;
@ -152,7 +153,8 @@ public class TrackFlagService : ApplicationService, ITransientDependency
{ {
#region 业务校验 #region 业务校验
var isExistContent = await _trackContentRepository.GetFirstAsync(a => a.TrackFlagId == input.Id); var isExistContent =
await _trackContentRepository.GetFirstAsync(a => SqlFunc.SplitIn(a.TrackFlagId, input.Id.ToString()));
if (isExistContent != null) if (isExistContent != null)
{ {
//throw new BusinessException(message: _stringLocalizer["IsExistTrackFlag"]); //throw new BusinessException(message: _stringLocalizer["IsExistTrackFlag"]);

View File

@ -37,10 +37,10 @@ public class TrackContentEntity : IFullAuditedBasicEntitys, IAggregateRoot
public int SubSystemId { get; set; } public int SubSystemId { get; set; }
/// <summary> /// <summary>
/// 轨迹标记id /// 轨迹标记id,多个逗号分隔
/// </summary> /// </summary>
[SugarColumn(ColumnName = "TrackFlagId")] [SugarColumn(ColumnName = "TrackFlagId")]
public int TrackFlagId { get; set; } public string TrackFlagId { get; set; }
/// <summary> /// <summary>
/// 所属轨迹状态id /// 所属轨迹状态id

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Domain.Aggregates.TrackFlagAggregate; namespace SJZY.Track.Domain.Aggregates.TrackFlagAggregate;
/// <summary> /// <summary>
/// 轨迹标记表 /// 轨迹标记表
@ -30,9 +30,9 @@ public class TrackFlagEntity : IFullAuditedBasicEntitys, IAggregateRoot
[SugarColumn(ColumnName = "SubSystemId")] [SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; } public int SubSystemId { get; set; }
///// <summary> /// <summary>
///// 是否完结 /// 是否广播
///// </summary> /// </summary>
//[SugarColumn(ColumnName = "IsCompleted")] [SugarColumn(ColumnName = "IsCompleted")]
//public bool IsCompleted { get; set; } public bool IsToMq { get; set; }
} }

View File

@ -47,4 +47,10 @@ public class TrackStatusEntity : IFullAuditedBasicEntitys, IAggregateRoot
/// </summary> /// </summary>
[SugarColumn(ColumnName = "IsCompleted")] [SugarColumn(ColumnName = "IsCompleted")]
public bool IsCompleted { get; set; } public bool IsCompleted { get; set; }
/// <summary>
/// 是否广播
/// </summary>
[SugarColumn(ColumnName = "IsCompleted")]
public bool IsToMq { get; set; }
} }

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Domain.Dtos.TrackContents; namespace SJZY.Track.Domain.Dtos.TrackContents;
public class GetTrackContentDetailVO public class GetTrackContentDetailVO
{ {
@ -45,10 +45,10 @@ public class GetTrackContentDetailVO
/// <summary> /// <summary>
/// 轨迹标记id /// 轨迹标记id
/// </summary> /// </summary>
public int TrackFlagId { get; set; } public string? TrackFlagId { get; set; }
/// <summary> /// <summary>
/// 轨迹标记 /// 轨迹标记ids
/// </summary> /// </summary>
public string TrackFlag { get; set; } public List<int>? TrackFlagIds { get; set; }
} }

View File

@ -10,10 +10,6 @@ namespace SJZY.Track.Repository.Repositories;
public class TrackContentRepository : BasicRepository<TrackContentEntity>, ITrackContentRepository, IScopedDependency public class TrackContentRepository : BasicRepository<TrackContentEntity>, ITrackContentRepository, IScopedDependency
{ {
public TrackContentRepository()
{
}
/// <summary> /// <summary>
/// 获取轨迹内容明细 /// 获取轨迹内容明细
/// </summary> /// </summary>
@ -23,10 +19,9 @@ public class TrackContentRepository : BasicRepository<TrackContentEntity>, ITrac
{ {
var detail = await Context.Queryable<TrackContentEntity>() var detail = await Context.Queryable<TrackContentEntity>()
.LeftJoin<TrackStatusEntity>((a, b) => a.TrackStatusId == b.Id && b.IsDeleted == false) .LeftJoin<TrackStatusEntity>((a, b) => a.TrackStatusId == b.Id && b.IsDeleted == false)
.LeftJoin<TrackFlagEntity>((a, b, c) => a.TrackFlagId == c.Id && c.IsDeleted == false) .LeftJoin<VSystemEntity>((a, b, d) => a.SubSystemId == d.Id && d.IsDeleted == false)
.LeftJoin<VSystemEntity>((a, b, c, d) => a.SubSystemId == d.Id && d.IsDeleted == false) .Where((a, b, d) => a.Id == id)
.Where((a, b, c, d) => a.Id == id) .Select((a, b, d) => new GetTrackContentDetailVO
.Select((a, b, c, d) => new GetTrackContentDetailVO
{ {
Id = a.Id, Id = a.Id,
SubSystemId = a.SubSystemId, SubSystemId = a.SubSystemId,
@ -37,8 +32,8 @@ public class TrackContentRepository : BasicRepository<TrackContentEntity>, ITrac
Content = a.Content, Content = a.Content,
EnContent = a.EnContent, EnContent = a.EnContent,
TrackFlagId = a.TrackFlagId, TrackFlagId = a.TrackFlagId,
TrackFlag = c.Name
}) })
.Mapper(x => { x.TrackFlagIds = x.TrackFlagId?.Split(',').Select(int.Parse).ToList(); })
.FirstAsync(); .FirstAsync();
return detail; return detail;
} }
@ -50,23 +45,21 @@ public class TrackContentRepository : BasicRepository<TrackContentEntity>, ITrac
/// <returns></returns> /// <returns></returns>
public async Task<UnifyPageResultDto<GetTrackContentListVO>> GetPageTrackContent(GetPageTrackContentVO input) public async Task<UnifyPageResultDto<GetTrackContentListVO>> GetPageTrackContent(GetPageTrackContentVO input)
{ {
UnifyPageResultDto<GetTrackContentListVO> pagedList = new UnifyPageResultDto<GetTrackContentListVO>(); var pagedList = await Context.Queryable<TrackContentEntity>()
pagedList = await Context.Queryable<TrackContentEntity>()
.LeftJoin<TrackStatusEntity>((a, b) => a.TrackStatusId == b.Id && b.IsDeleted == false) .LeftJoin<TrackStatusEntity>((a, b) => a.TrackStatusId == b.Id && b.IsDeleted == false)
.LeftJoin<TrackFlagEntity>((a, b, c) => a.TrackFlagId == c.Id && c.IsDeleted == false) .LeftJoin<VSystemEntity>((a, b, d) => a.SubSystemId == d.Id && d.IsDeleted == false)
.LeftJoin<VSystemEntity>((a, b, c, d) => a.SubSystemId == d.Id && d.IsDeleted == false) .LeftJoin<VUserEntity>((a, b, d, e) => a.CreateUserId == e.Id && e.IsDeleted == false)
.LeftJoin<VUserEntity>((a, b, c, d, e) => a.CreateUserId == e.Id && e.IsDeleted == false) .LeftJoin<VUserEntity>((a, b, d, e, f) => a.UpdateUserId == f.Id && f.IsDeleted == false)
.LeftJoin<VUserEntity>((a, b, c, d, e, f) => a.UpdateUserId == f.Id && f.IsDeleted == false) .WhereIF(input.SubSystemId > 0, (a, b, d, e, f) => a.SubSystemId == input.SubSystemId)
.WhereIF(input.SubSystemId > 0, (a, b, c, d, e, f) => a.SubSystemId == input.SubSystemId)
.WhereIF(!input.Keywords.IsNullOrWhiteSpace(), .WhereIF(!input.Keywords.IsNullOrWhiteSpace(),
(a, b, c, d, e, f) => a.Code.Contains(input.Keywords) || a.Content.Contains(input.Keywords) (a, b, d, e, f) => a.Code.Contains(input.Keywords) || a.Content.Contains(input.Keywords)
|| a.EnContent.Contains(input.Keywords)) || a.EnContent.Contains(input.Keywords))
.WhereIF(input.TrackStatusId > 0, (a, b, c, d, e, f) => a.TrackStatusId == input.TrackStatusId) .WhereIF(input.TrackStatusId > 0, (a, b, d, e, f) => a.TrackStatusId == input.TrackStatusId)
.OrderByIF(input.SelectIds.IsNullOrEmpty(), (a, b, c, d, e, f) => a.CreateTime, OrderByType.Desc) .OrderByIF(input.SelectIds.IsNullOrEmpty(), (a, b, d, e, f) => a.CreateTime, OrderByType.Desc)
.OrderByIF(!input.SelectIds.IsNullOrEmpty(), .OrderByIF(!input.SelectIds.IsNullOrEmpty(),
(a, b, c, d, e, f) => SqlFunc.IIF(input.SelectIds.Contains(a.Id), SqlFunc.DateAdd(SqlFunc.GetDate(), 1), (a, b, d, e, f) => SqlFunc.IIF(input.SelectIds.Contains(a.Id), SqlFunc.DateAdd(SqlFunc.GetDate(), 1),
a.CreateTime), OrderByType.Desc) a.CreateTime), OrderByType.Desc)
.Select((a, b, c, d, e, f) => new GetTrackContentListVO .Select((a, b, d, e, f) => new GetTrackContentListVO
{ {
Id = a.Id, Id = a.Id,
SubSystem = d.CnName, SubSystem = d.CnName,
@ -78,7 +71,9 @@ public class TrackContentRepository : BasicRepository<TrackContentEntity>, ITrac
.Return("干线") .Return("干线")
.ElseIF(b.Node == 4).Return("派送").ElseIF(b.Node == 5).Return("其他") .ElseIF(b.Node == 4).Return("派送").ElseIF(b.Node == 5).Return("其他")
.End(""), .End(""),
TrackFlag = c.Name, TrackFlag = SqlFunc.Subqueryable<TrackFlagEntity>()
.Where(x => SqlFunc.SplitIn(a.TrackFlagId, x.Id.ToString()))
.SelectStringJoin(x => x.Name, ","),
CreateTime = a.CreateTime, CreateTime = a.CreateTime,
CreateUser = e.Name, CreateUser = e.Name,
UpdateTime = a.UpdateTime, UpdateTime = a.UpdateTime,

View File

@ -78,23 +78,23 @@ public class TrackTemplateRepository : BasicRepository<TrackTemplateEntity>, ITr
.LeftJoin<VEnumValueInfoEntity>((templateContent, trackContent, trackStatus, enumValue) => .LeftJoin<VEnumValueInfoEntity>((templateContent, trackContent, trackStatus, enumValue) =>
enumValue.Property == EnumPropertyEnums.节点.GetDescription() && trackStatus.Node == enumValue.Enumkey && enumValue.Property == EnumPropertyEnums.节点.GetDescription() && trackStatus.Node == enumValue.Enumkey &&
!enumValue.IsDeleted) !enumValue.IsDeleted)
.LeftJoin<TrackFlagEntity>((templateContent, trackContent, trackStatus, enumValue, trackFlag) => .LeftJoin<VUserEntity>((templateContent, trackContent, trackStatus, enumValue, createUser) =>
trackContent.TrackFlagId == trackFlag.Id && !trackFlag.IsDeleted)
.LeftJoin<VUserEntity>((templateContent, trackContent, trackStatus, enumValue, trackFlag, createUser) =>
templateContent.CreateUserId == createUser.Id && !createUser.IsDeleted) templateContent.CreateUserId == createUser.Id && !createUser.IsDeleted)
.LeftJoin<VUserEntity>( .LeftJoin<VUserEntity>(
(templateContent, trackContent, trackStatus, enumValue, trackFlag, createUser, updateUser) => (templateContent, trackContent, trackStatus, enumValue, createUser, updateUser) =>
templateContent.UpdateUserId == updateUser.Id && !updateUser.IsDeleted) templateContent.UpdateUserId == updateUser.Id && !updateUser.IsDeleted)
.Filter(null, true) .Filter(null, true)
.Where(templateContent => input.TrackTemplateIds.Contains(templateContent.TrackTemplateId) && .Where(templateContent => input.TrackTemplateIds.Contains(templateContent.TrackTemplateId) &&
!templateContent.IsDeleted) !templateContent.IsDeleted)
.Select((templateContent, trackContent, trackStatus, enumValue, trackFlag, createUser, updateUser) => .Select((templateContent, trackContent, trackStatus, enumValue, createUser, updateUser) =>
new GetTrackTemplateContentPageOutputVO new GetTrackTemplateContentPageOutputVO
{ {
Id = templateContent.Id, Id = templateContent.Id,
TrackStatus = trackStatus.Status, TrackStatus = trackStatus.Status,
Node = enumValue.Disp, Node = enumValue.Disp,
TrackFlag = trackFlag.Name, TrackFlag = SqlFunc.Subqueryable<TrackFlagEntity>()
.Where(x => SqlFunc.Contains(trackContent.TrackFlagId, x.Id.ToString()))
.SelectStringJoin(x => x.Name, ","),
CreateTime = templateContent.CreateTime, CreateTime = templateContent.CreateTime,
CreateUser = createUser.Name, CreateUser = createUser.Name,
UpdateTime = templateContent.UpdateTime, UpdateTime = templateContent.UpdateTime,