161 lines
7.3 KiB
C#
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();
|
|
}
|
|
} |