using System.Linq.Expressions; using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Track.Domain.Aggregates.TrackContentAggregate; using SJZY.Track.Domain.Aggregates.TrackFlagAggregate; using SJZY.Track.Domain.Aggregates.TrackStatusAggregate; using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; using SJZY.Track.Domain.Dtos.TrackTemplate; using SJZY.Track.Domain.Enums; using SJZY.Track.Domain.VEntities; namespace SJZY.Track.Repository.Repositories; public class TrackTemplateRepository : BasicRepository, ITrackTemplateRepository, IScopedDependency { /// /// 获取轨迹模版明细 /// /// /// public async Task GetDetailAsync(int id) { var detail = await Context.Queryable() .LeftJoin((a, b) => a.SubSystemId == b.Id && b.IsDeleted == false) .Where((a, b) => a.Id == id) .Select((a, b) => new GetTrackTemplateDetailVO { Id = a.Id, Code = a.Code, Name = a.Name, SubSystemId = a.SubSystemId, SubSystem = b.CnName }).FirstAsync(); return detail; } /// /// 分页获取轨迹模版 /// /// /// public async Task> GetPageTrackTemplate(GetPageTrackTemplateVO input) { UnifyPageResultDto pagedList = await Context.Queryable() .LeftJoin((a, b) => a.SubSystemId == b.Id && b.IsDeleted == false) .WhereIF(input.SubSystemId > 0, (a, b) => a.SubSystemId == input.SubSystemId) .WhereIF(!input.Keywords.IsNullOrWhiteSpace(), (a, b) => a.Name.Contains(input.Keywords) || a.Code.Contains(input.Keywords)) .OrderByIF(input.SelectIds.IsNullOrEmpty(), (a, b) => a.CreateTime, OrderByType.Desc) .OrderByIF(!input.SelectIds.IsNullOrEmpty(), (a, b) => SqlFunc.IIF(input.SelectIds.Contains(a.Id), SqlFunc.DateAdd(SqlFunc.GetDate(), 1), a.CreateTime), OrderByType.Desc) .Select((a, b) => new GetTrackTemplateListVO { Id = a.Id, Code = a.Code, CreateTime = a.CreateTime, Name = a.Name, SubSystem = b.CnName, SubSystemId = b.Id }) .ToPagedListAsync(input.PageIndex, input.PageSize); //.OrderByIF(input.TrackTemplateId > 0, // (a, b) => SqlFunc.IIF(a.Id == input.TrackTemplateId, SqlFunc.DateAdd(SqlFunc.GetDate(), 1), //a.CreateTime), OrderByType.Desc) return pagedList; } /// /// 获取轨迹内容属性值 /// /// public async Task GetTrackContentAttributeValue(GetTemplateContentAttributeValueInputVO input) { return null; } /// public async Task> GetContentPageAsync( GetTrackTemplateContentPageInputVO input) { return await Context.Queryable() .InnerJoin((templateContent, trackContent) => templateContent.TrackContentId == trackContent.Id && !trackContent.IsDeleted) .LeftJoin((templateContent, trackContent, trackStatus) => trackContent.TrackStatusId == trackStatus.Id && !trackStatus.IsDeleted) .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) => templateContent.CreateUserId == createUser.Id && !createUser.IsDeleted) .LeftJoin( (templateContent, trackContent, trackStatus, enumValue, trackFlag, 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) => new GetTrackTemplateContentPageOutputVO { Id = templateContent.Id, TrackStatus = trackStatus.Status, Node = enumValue.Disp, TrackFlag = trackFlag.Name, CreateTime = templateContent.CreateTime, CreateUser = createUser.Name, UpdateTime = templateContent.UpdateTime, UpdateUser = updateUser.Name }, true) .OrderBy(templateContent => templateContent.Sort) .ToPagedListAsync(input.PageIndex, input.PageSize); } /// public async Task GetContentDetailAsync(int id) { return await Context.Queryable() .InnerJoin((templateContent, trackContent) => templateContent.TrackContentId == trackContent.Id && !trackContent.IsDeleted) .LeftJoin((templateContent, trackContent, trackStatus) => trackContent.TrackStatusId == trackStatus.Id && !trackStatus.IsDeleted) .Filter(null, true) .Where(templateContent => templateContent.Id == id && !templateContent.IsDeleted) .Select((templateContent, trackContent, trackStatus) => new GetTrackTemplateContentDetailOutputVO { Id = templateContent.Id, TrackContent = trackContent.Code + "-" + trackContent.Content, TrackStatus = trackStatus.Status }, true) .SingleAsync(); } /// public async Task IsContentAnyAsync(Expression> whereExpression) { return await Context.Queryable().Where(whereExpression).AnyAsync(); } /// public async Task InsertContentAsync(TrackTemplateContentEntity insertObj) { return await Context.Insertable(insertObj).ExecuteCommandAsync() > 0; } /// public async Task GetContentByIdAsync(int id) { return await Context.Queryable().InSingleAsync(id); } /// public async Task UpdateContentAsync(TrackTemplateContentEntity updateObj) { return await Context.Updateable(updateObj).ExecuteCommandHasChangeAsync(); } /// public async Task SoftDeleteContentAsync(int id) { return await Context.Updateable() .Where(x => x.Id == id) .SetColumns(nameof(ISoftDeleteBasicEntity.IsDeleted), true) .ExecuteCommandHasChangeAsync(); } public async Task> GetContentListAsync( Expression> whereExpression) { return await Context.Queryable().Where(whereExpression).ToListAsync(); } public async Task UpdateContentRangeAsync(List updateObjs) { return await Context.Updateable(updateObjs).ExecuteCommandHasChangeAsync(); } public async Task ContentMaxAsync(Expression> columns, Expression> whereExpression) { return await Context.Queryable().Where(whereExpression).MaxAsync(columns); } public async Task UpdateContentAsync(Expression> columns, Expression> whereExpression) { return await Context.Updateable().SetColumns(columns).Where(whereExpression).ExecuteCommandHasChangeAsync(); } }