diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentInput.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentInput.cs index 44aa0fee..4bce2569 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentInput.cs @@ -93,10 +93,10 @@ public class GetTrackContentDetailDto /// /// 轨迹标记id /// - public int? TrackFlagId { get; set; } + public string? TrackFlagId { get; set; } /// - /// 轨迹标记 + /// 轨迹标记ids /// - public string TrackFlag { get; set; } + public List? TrackFlagIds { get; set; } } diff --git a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs index fdc5b12e..48bf22fe 100644 --- a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs +++ b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs @@ -60,7 +60,6 @@ public class TrackContentService : ApplicationService var dto = ObjectMapper.Map(detailInfo); - if (dto.TrackFlagId == 0) dto.TrackFlagId = null; return new UnifyResultDto(GlobalConst.SuccessCode, "", dto); } diff --git a/src/SJZY.Track.Application/Services/TrackFlags/TrackFlagService.cs b/src/SJZY.Track.Application/Services/TrackFlags/TrackFlagService.cs index 7f2669d1..445c9472 100644 --- a/src/SJZY.Track.Application/Services/TrackFlags/TrackFlagService.cs +++ b/src/SJZY.Track.Application/Services/TrackFlags/TrackFlagService.cs @@ -1,9 +1,10 @@ -using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Localization; using SJZY.Track.Application.Contract.Dtos.TrackFlags; using SJZY.Track.Application.Localization; using SJZY.Track.Domain.Aggregates.TrackContentAggregate; using SJZY.Track.Domain.Aggregates.TrackFlagAggregate; using SJZY.Track.Domain.Dtos.TrackFlags; +using SqlSugar; using Volo.Abp.DependencyInjection; namespace SJZY.Track.Application.Services.TrackFlags; @@ -152,7 +153,8 @@ public class TrackFlagService : ApplicationService, ITransientDependency { #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) { //throw new BusinessException(message: _stringLocalizer["IsExistTrackFlag"]); diff --git a/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/TrackContentEntity.cs b/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/TrackContentEntity.cs index b021473d..60dd5757 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/TrackContentEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/TrackContentEntity.cs @@ -37,10 +37,10 @@ public class TrackContentEntity : IFullAuditedBasicEntitys, IAggregateRoot public int SubSystemId { get; set; } /// - /// 轨迹标记id + /// 轨迹标记id,多个逗号分隔 /// [SugarColumn(ColumnName = "TrackFlagId")] - public int TrackFlagId { get; set; } + public string TrackFlagId { get; set; } /// /// 所属轨迹状态id diff --git a/src/SJZY.Track.Domain/Aggregates/TrackFlagAggregate/TrackFlagEntity.cs b/src/SJZY.Track.Domain/Aggregates/TrackFlagAggregate/TrackFlagEntity.cs index 81d0da3e..835d2f68 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackFlagAggregate/TrackFlagEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackFlagAggregate/TrackFlagEntity.cs @@ -1,4 +1,4 @@ -namespace SJZY.Track.Domain.Aggregates.TrackFlagAggregate; +namespace SJZY.Track.Domain.Aggregates.TrackFlagAggregate; /// /// 轨迹标记表 @@ -30,9 +30,9 @@ public class TrackFlagEntity : IFullAuditedBasicEntitys, IAggregateRoot [SugarColumn(ColumnName = "SubSystemId")] public int SubSystemId { get; set; } - ///// - ///// 是否完结 - ///// - //[SugarColumn(ColumnName = "IsCompleted")] - //public bool IsCompleted { get; set; } + /// + /// 是否广播 + /// + [SugarColumn(ColumnName = "IsCompleted")] + public bool IsToMq { get; set; } } diff --git a/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs b/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs index 4b13d3dd..bfc83c44 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs @@ -47,4 +47,10 @@ public class TrackStatusEntity : IFullAuditedBasicEntitys, IAggregateRoot /// [SugarColumn(ColumnName = "IsCompleted")] public bool IsCompleted { get; set; } + + /// + /// 是否广播 + /// + [SugarColumn(ColumnName = "IsCompleted")] + public bool IsToMq { get; set; } } diff --git a/src/SJZY.Track.Domain/Dtos/TrackContents/GetTrackContentDetailVO.cs b/src/SJZY.Track.Domain/Dtos/TrackContents/GetTrackContentDetailVO.cs index a8489f9b..dc7a23db 100644 --- a/src/SJZY.Track.Domain/Dtos/TrackContents/GetTrackContentDetailVO.cs +++ b/src/SJZY.Track.Domain/Dtos/TrackContents/GetTrackContentDetailVO.cs @@ -1,4 +1,4 @@ -namespace SJZY.Track.Domain.Dtos.TrackContents; +namespace SJZY.Track.Domain.Dtos.TrackContents; public class GetTrackContentDetailVO { @@ -45,10 +45,10 @@ public class GetTrackContentDetailVO /// /// 轨迹标记id /// - public int TrackFlagId { get; set; } + public string? TrackFlagId { get; set; } /// - /// 轨迹标记 + /// 轨迹标记ids /// - public string TrackFlag { get; set; } + public List? TrackFlagIds { get; set; } } diff --git a/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs index 3e885233..199af1f3 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs @@ -10,10 +10,6 @@ namespace SJZY.Track.Repository.Repositories; public class TrackContentRepository : BasicRepository, ITrackContentRepository, IScopedDependency { - public TrackContentRepository() - { - } - /// /// 获取轨迹内容明细 /// @@ -23,10 +19,9 @@ public class TrackContentRepository : BasicRepository, ITrac { var detail = await Context.Queryable() .LeftJoin((a, b) => a.TrackStatusId == b.Id && b.IsDeleted == false) - .LeftJoin((a, b, c) => a.TrackFlagId == c.Id && c.IsDeleted == false) - .LeftJoin((a, b, c, d) => a.SubSystemId == d.Id && d.IsDeleted == false) - .Where((a, b, c, d) => a.Id == id) - .Select((a, b, c, d) => new GetTrackContentDetailVO + .LeftJoin((a, b, d) => a.SubSystemId == d.Id && d.IsDeleted == false) + .Where((a, b, d) => a.Id == id) + .Select((a, b, d) => new GetTrackContentDetailVO { Id = a.Id, SubSystemId = a.SubSystemId, @@ -37,8 +32,8 @@ public class TrackContentRepository : BasicRepository, ITrac Content = a.Content, EnContent = a.EnContent, TrackFlagId = a.TrackFlagId, - TrackFlag = c.Name }) + .Mapper(x => { x.TrackFlagIds = x.TrackFlagId?.Split(',').Select(int.Parse).ToList(); }) .FirstAsync(); return detail; } @@ -50,23 +45,21 @@ public class TrackContentRepository : BasicRepository, ITrac /// public async Task> GetPageTrackContent(GetPageTrackContentVO input) { - UnifyPageResultDto pagedList = new UnifyPageResultDto(); - pagedList = await Context.Queryable() + var pagedList = await Context.Queryable() .LeftJoin((a, b) => a.TrackStatusId == b.Id && b.IsDeleted == false) - .LeftJoin((a, b, c) => a.TrackFlagId == c.Id && c.IsDeleted == false) - .LeftJoin((a, b, c, d) => a.SubSystemId == d.Id && d.IsDeleted == false) - .LeftJoin((a, b, c, d, e) => a.CreateUserId == e.Id && e.IsDeleted == false) - .LeftJoin((a, b, c, d, e, f) => a.UpdateUserId == f.Id && f.IsDeleted == false) - .WhereIF(input.SubSystemId > 0, (a, b, c, d, e, f) => a.SubSystemId == input.SubSystemId) + .LeftJoin((a, b, d) => a.SubSystemId == d.Id && d.IsDeleted == false) + .LeftJoin((a, b, d, e) => a.CreateUserId == e.Id && e.IsDeleted == false) + .LeftJoin((a, b, 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.Keywords.IsNullOrWhiteSpace(), - (a, b, c, d, e, f) => a.Code.Contains(input.Keywords) || a.Content.Contains(input.Keywords) - || a.EnContent.Contains(input.Keywords)) - .WhereIF(input.TrackStatusId > 0, (a, b, c, d, e, f) => a.TrackStatusId == input.TrackStatusId) - .OrderByIF(input.SelectIds.IsNullOrEmpty(), (a, b, c, d, e, f) => a.CreateTime, OrderByType.Desc) + (a, b, d, e, f) => a.Code.Contains(input.Keywords) || a.Content.Contains(input.Keywords) + || a.EnContent.Contains(input.Keywords)) + .WhereIF(input.TrackStatusId > 0, (a, b, d, e, f) => a.TrackStatusId == input.TrackStatusId) + .OrderByIF(input.SelectIds.IsNullOrEmpty(), (a, b, d, e, f) => a.CreateTime, OrderByType.Desc) .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) - .Select((a, b, c, d, e, f) => new GetTrackContentListVO + .Select((a, b, d, e, f) => new GetTrackContentListVO { Id = a.Id, SubSystem = d.CnName, @@ -78,7 +71,9 @@ public class TrackContentRepository : BasicRepository, ITrac .Return("干线") .ElseIF(b.Node == 4).Return("派送").ElseIF(b.Node == 5).Return("其他") .End(""), - TrackFlag = c.Name, + TrackFlag = SqlFunc.Subqueryable() + .Where(x => SqlFunc.SplitIn(a.TrackFlagId, x.Id.ToString())) + .SelectStringJoin(x => x.Name, ","), CreateTime = a.CreateTime, CreateUser = e.Name, UpdateTime = a.UpdateTime, diff --git a/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs index 60302e81..91b54841 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs @@ -78,23 +78,23 @@ public class TrackTemplateRepository : BasicRepository, ITr .LeftJoin((templateContent, trackContent, trackStatus, enumValue) => enumValue.Property == EnumPropertyEnums.节点.GetDescription() && trackStatus.Node == enumValue.Enumkey && !enumValue.IsDeleted) - .LeftJoin((templateContent, trackContent, trackStatus, enumValue, trackFlag) => - trackContent.TrackFlagId == trackFlag.Id && !trackFlag.IsDeleted) - .LeftJoin((templateContent, trackContent, trackStatus, enumValue, trackFlag, createUser) => + .LeftJoin((templateContent, trackContent, trackStatus, enumValue, createUser) => templateContent.CreateUserId == createUser.Id && !createUser.IsDeleted) .LeftJoin( - (templateContent, trackContent, trackStatus, enumValue, trackFlag, createUser, updateUser) => + (templateContent, trackContent, trackStatus, enumValue, createUser, updateUser) => templateContent.UpdateUserId == updateUser.Id && !updateUser.IsDeleted) .Filter(null, true) .Where(templateContent => input.TrackTemplateIds.Contains(templateContent.TrackTemplateId) && !templateContent.IsDeleted) - .Select((templateContent, trackContent, trackStatus, enumValue, trackFlag, createUser, updateUser) => + .Select((templateContent, trackContent, trackStatus, enumValue, createUser, updateUser) => new GetTrackTemplateContentPageOutputVO { Id = templateContent.Id, TrackStatus = trackStatus.Status, Node = enumValue.Disp, - TrackFlag = trackFlag.Name, + TrackFlag = SqlFunc.Subqueryable() + .Where(x => SqlFunc.Contains(trackContent.TrackFlagId, x.Id.ToString())) + .SelectStringJoin(x => x.Name, ","), CreateTime = templateContent.CreateTime, CreateUser = createUser.Name, UpdateTime = templateContent.UpdateTime,