track/src/SJZY.Track.Infrastructure/Repositories/TrackTemplateRepository.cs
2024-03-01 09:39:35 +08:00

161 lines
7.3 KiB
C#

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.VEntities;
using SJZY.Track.Infrastructure.Enum;
namespace SJZY.Track.Infrastructure.Repositories;
public class TrackTemplateRepository : BasicRepository<TrackTemplateEntity>, ITrackTemplateRepository, IScopedDependency
{
/// <summary>
/// 获取轨迹模版明细
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<GetTrackTemplateDetailVO?> GetDetailAsync(int id)
{
var detail = await Context.Queryable<TrackTemplateEntity>()
.LeftJoin<VSystemEntity>((a, b) => a.SubSystemId == b.Id)
.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;
}
/// <summary>
/// 分页获取轨迹模版
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<UnifyPageResultDto<GetTrackTemplateListVO>> GetPageTrackTemplate(GetPageTrackTemplateVO input)
{
UnifyPageResultDto<GetTrackTemplateListVO> pagedList = await Context.Queryable<TrackTemplateEntity>()
.LeftJoin<VSystemEntity>((a, b) => a.SubSystemId == b.Id)
.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.TrackTemplateId > 0,
(a, b) => SqlFunc.IIF(a.Id == input.TrackTemplateId, 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
})
.ToPagedListAsync(input.PageIndex, input.PageSize);
return pagedList;
}
/// <inheritdoc/>
public async Task<UnifyPageResultDto<GetTrackTemplateContentPageOutputVO>> GetContentPageAsync(
GetTrackTemplateContentPageInputVO input)
{
return await Context.Queryable<TrackTemplateContentEntity>()
.InnerJoin<TrackContentEntity>((templateContent, trackContent) =>
templateContent.TrackContentId == trackContent.Id && !trackContent.IsDeleted)
.LeftJoin<TrackStatusEntity>((templateContent, trackContent, trackStatus) =>
trackContent.TrackStatusId == trackStatus.Id && !trackStatus.IsDeleted)
.LeftJoin<VEnumValueInfoEntity>((templateContent, trackContent, trackStatus, enumValue) =>
enumValue.Property == EnumPropertyEnums.节点.GetDescription() && trackStatus.Node == enumValue.Enumkey &&
!enumValue.IsDeleted)
.LeftJoin<TrackFlagEntity>((templateContent, trackContent, trackStatus, enumValue, trackFlag) =>
trackContent.TrackFlagId == trackFlag.Id && !trackFlag.IsDeleted)
.LeftJoin<VUserEntity>((templateContent, trackContent, trackStatus, enumValue, trackFlag, createUser) =>
templateContent.CreateUserId == createUser.Id && !createUser.IsDeleted)
.LeftJoin<VUserEntity>(
(templateContent, trackContent, trackStatus, enumValue, trackFlag, createUser, updateUser) =>
templateContent.UpdateUserId == updateUser.Id && !updateUser.IsDeleted)
.Filter(null, true)
.Where(templateContent =>
templateContent.TrackTemplateId == input.TrackTemplateId && !templateContent.IsDeleted)
.OrderByDescending(templateContent => templateContent.CreateTime)
.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)
.ToPagedListAsync(input.PageIndex, input.PageSize);
}
/// <inheritdoc/>
public async Task<GetTrackTemplateContentDetailOutputVO> GetContentDetailAsync(int id)
{
return await Context.Queryable<TrackTemplateContentEntity>()
.InnerJoin<TrackContentEntity>((templateContent, trackContent) =>
templateContent.TrackContentId == trackContent.Id && !trackContent.IsDeleted)
.LeftJoin<TrackStatusEntity>((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();
}
/// <inheritdoc/>
public async Task<bool> IsContentAnyAsync(Expression<Func<TrackTemplateContentEntity, bool>> whereExpression)
{
return await Context.Queryable<TrackTemplateContentEntity>().Where(whereExpression).AnyAsync();
}
/// <inheritdoc/>
public async Task<bool> InsertContentAsync(TrackTemplateContentEntity insertObj)
{
return await Context.Insertable(insertObj).ExecuteCommandAsync() > 0;
}
/// <inheritdoc/>
public async Task<TrackTemplateContentEntity> GetContentByIdAsync(int id)
{
return await Context.Queryable<TrackTemplateContentEntity>().InSingleAsync(id);
}
/// <inheritdoc/>
public async Task<bool> UpdateContentAsync(TrackTemplateContentEntity updateObj)
{
return await Context.Updateable(updateObj).ExecuteCommandHasChangeAsync();
}
/// <inheritdoc/>
public async Task<bool> SoftDeleteContentAsync(int id)
{
return await Context.Updateable<TrackTemplateContentEntity>()
.Where(x => x.Id == id)
.SetColumns(nameof(ISoftDeleteBasicEntity.IsDeleted), true)
.ExecuteCommandHasChangeAsync();
}
public async Task<List<TrackTemplateContentEntity>> GetContentListAsync(
Expression<Func<TrackTemplateContentEntity, bool>> whereExpression)
{
return await Context.Queryable<TrackTemplateContentEntity>().Where(whereExpression).ToListAsync();
}
}