轨迹标记功能补充

This commit is contained in:
moyongzhen 2024-02-29 11:49:14 +08:00
parent 90e59e27ea
commit a4504f4d67
11 changed files with 499 additions and 5 deletions

View File

@ -0,0 +1,30 @@
using AutoMapper;
using AutoMapper.Internal.Mappers;
using SJZY.Track.Application.Dtos.TrackFlags;
using SJZY.Track.Application.Dtos.TrackStatus;
using SJZY.Track.Domain.Aggregates.TrackFlagAggregate;
using SJZY.Track.Domain.Dtos.TrackFlags;
using SJZY.Track.Domain.Dtos.TrackStatus;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.ObjectMapping;
namespace SJZY.Track.Application.AutoMapper
{
public class TrackFlagAutoMapperProfile : Profile
{
public TrackFlagAutoMapperProfile()
{
CreateMap<EditTrackFlagInput, TrackFlagEntity>(MemberList.None)
.ForMember(dest => dest.Name, opt => opt.MapFrom(source => source.Flag))
.ForMember(dest => dest.IsCompleted, opt => opt.MapFrom(source => source.IsFinish));
CreateMap<GetTrackFlagDetailVO, GetTrackFlagDetailDto>(MemberList.None);
CreateMap<GetTrackFlagListVO, GetTrackFlagListDto>(MemberList.None);
CreateMap<UnifyPageResultDto<GetTrackFlagListVO>, UnifyPageResultDto<GetTrackFlagListVO>>(MemberList.None);
}
}
}

View File

@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Application.Dtos.TrackFlags
{
public class EditTrackFlagInput
{
/// <summary>
/// 操作类型
/// </summary>
public OptionType Options { get; set; }
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; }
/// <summary>
/// 标记
/// </summary>
public string Flag { get; set; }
/// <summary>
/// 代码
/// </summary>
public string Code { get; set; }
/// <summary>
/// 是否完结
/// </summary>
public bool IsFinish { get; set; }
}
public class GetTrackFlagDetailDto
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; }
/// <summary>
/// 子系统
/// </summary>
public string SubSystem { get; set; }
/// <summary>
/// 代码
/// </summary>
public string Code { get; set; }
/// <summary>
///
/// </summary>
public string Flag { get; set; }
/// <summary>
/// 是否完结
/// </summary>
public bool IsFinish { get; set; }
}
}

View File

@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Application.Dtos.TrackFlags
{
public class GetTrackFlagListDto
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 子系统
/// </summary>
public string SubSystem { get; set; }
/// <summary>
/// 代码
/// </summary>
public string Code { get; set; }
/// <summary>
/// 标记
/// </summary>
public string Flag { get; set; }
/// <summary>
/// 是否完结
/// </summary>
public bool IsFinish { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string CreateUser { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public string UpdateUser { get; set; }
}
public class GetPageTrackFlagInput : PageInfoInput
{
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; }
/// <summary>
/// 关键字
/// </summary>
public string keywords { get; set; }
}
}

View File

@ -1,5 +1,10 @@
using SJZY.Track.Application.Dtos.TrackStatus; using Microsoft.Extensions.Localization;
using SJZY.Track.Application.Dtos.TrackFlags;
using SJZY.Track.Application.Dtos.TrackStatus;
using SJZY.Track.Application.Localization;
using SJZY.Track.Domain.Aggregates.TrackFlagAggregate;
using SJZY.Track.Domain.Aggregates.TrackStatusAggregate; using SJZY.Track.Domain.Aggregates.TrackStatusAggregate;
using SJZY.Track.Domain.Dtos.TrackFlags;
using SJZY.Track.Domain.Dtos.TrackStatus; using SJZY.Track.Domain.Dtos.TrackStatus;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -17,10 +22,110 @@ namespace SJZY.Track.Application.Services.TrackFlags
[Route("/Track/Flag")] [Route("/Track/Flag")]
public class TrackFlagService : ApplicationService, ITransientDependency public class TrackFlagService : ApplicationService, ITransientDependency
{ {
public TrackFlagService() private readonly IStringLocalizer<TrackLocalizationResource> _stringLocalizer;
private readonly ITrackFlagRepository _trackFlagRepository;
public TrackFlagService(
IStringLocalizer<TrackLocalizationResource> stringLocalizer,
ITrackFlagRepository trackFlagRepository
)
{ {
this._stringLocalizer=stringLocalizer;
this._trackFlagRepository=trackFlagRepository;
} }
/// <summary>
/// 轨迹标记编辑
/// </summary>
/// <returns></returns>
[HttpPost("Edit")]
public async Task<UnifyResultDto> EditAsync(EditTrackFlagInput input)
{
return input.Options switch
{
OptionType.新增 => await AddAsync(input),
OptionType.修改 => await UpdateAsync(input),
OptionType.删除 => await DeleteAsync(input),
_ => throw new BusinessException(message: "当前操作动作不合法")
};
}
/// <summary>
/// 根据标记id获取轨迹标记
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("GetDetail")]
public async Task<UnifyResultDto<GetTrackFlagDetailDto>> GetDetailAsync(int id)
{
var detailInfo = await _trackFlagRepository.GetDetailAsync(id);
if (detailInfo == null)
{
return new UnifyResultDto<GetTrackFlagDetailDto>(false, null, "未查询到轨迹状态");
}
var dto = ObjectMapper.Map<GetTrackFlagDetailVO, GetTrackFlagDetailDto>(detailInfo);
return new UnifyResultDto<GetTrackFlagDetailDto>("200", "", dto);
}
/// <summary>
/// 获取分页轨迹标记
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetList")]
public async Task<UnifyPageResultDto<GetTrackFlagListDto>> GetPageTrackFlag(GetPageTrackFlagInput input)
{
var vo = ObjectMapper.Map<GetPageTrackFlagInput, GetPageTrackFlagVO>(input);
var resultDto = await _trackFlagRepository.GetPageTrackFlag(vo);
var pageResultDto =
ObjectMapper.Map<UnifyPageResultDto<GetTrackFlagListVO>, UnifyPageResultDto<GetTrackFlagListDto>>(
resultDto);
return pageResultDto;
}
#region 私有方法
private async Task<UnifyResultDto> AddAsync(EditTrackFlagInput input)
{
#region 业务校验
var trackStatusEntity = await _trackFlagRepository.GetFirstAsync(a => a.SubSystemId==input.SubSystemId&& (a.Code==input.Code || a.Name==input.Flag));
if (trackStatusEntity!=null)
{
throw new BusinessException(message: _stringLocalizer["TrackFlagExist"]);
}
#endregion
var entity = ObjectMapper.Map<EditTrackFlagInput, TrackFlagEntity>(input);
var isTrue = await _trackFlagRepository.InsertAsync(entity);
return new UnifyResultDto("200", "新增成功", isTrue);
}
private async Task<UnifyResultDto> UpdateAsync(EditTrackFlagInput input)
{
#region 业务校验
var trackStatusEntity = await _trackFlagRepository.GetFirstAsync(a => a.Id !=input.Id && a.SubSystemId==input.SubSystemId&& (a.Code==input.Code ||
a.Name ==input.Flag));
if (trackStatusEntity!=null)
{
throw new BusinessException(message: _stringLocalizer["TrackFlagExist"]);
}
#endregion
var templateEntity = await _trackFlagRepository.GetFirstAsync(a => a.Id == input.Id);
ObjectMapper.Map(input, templateEntity);
var isTrue = await _trackFlagRepository.UpdateAsync(templateEntity);
return new UnifyResultDto("200", "修改成功", isTrue);
}
private async Task<UnifyResultDto> DeleteAsync(EditTrackFlagInput input)
{
var isTrue = await _trackFlagRepository.SoftDeleteAsync(x => x.Id == input.Id);
return new UnifyResultDto("200", "删除成功", isTrue);
}
#endregion
} }
} }

View File

@ -0,0 +1,35 @@
using FluentValidation;
using SJZY.Track.Application.Dtos.TrackFlags;
using SJZY.Track.Application.Dtos.TrackStatus;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Application.Validations.TrackFlags
{
public class EditTrackFlagInputValidation : AbstractValidator<EditTrackFlagInput>, IValidationEnabled
{
public EditTrackFlagInputValidation()
{
//条件分支
When(x => x.Options == OptionType.修改 || x.Options == OptionType.删除, () =>
{
RuleFor(x => x.Id).GreaterThan(0).WithMessage("修改或删除时Id必须大于0!");
});
When(x => x.Options == OptionType.新增, () =>
{
RuleFor(x => x.Id).Equal(0).WithMessage("新增时Id必须等于0!");
});
When(x => x.Options == OptionType.修改 || x.Options == OptionType.新增, () =>
{
RuleFor(x => x.SubSystemId).GreaterThan(0).WithMessage("子系统的id必须大于0!");
RuleFor(x => x.Code).NotNull().WithMessage("轨迹标记代码必填!").NotEmpty().WithMessage("轨迹标记代码不能为空!");
RuleFor(x => x.Flag).NotNull().WithMessage("轨迹标记必填!").NotEmpty().WithMessage("轨迹标记不能为空!");
});
}
}
}

View File

@ -1,5 +1,9 @@
namespace SJZY.Track.Domain.Aggregates.TrackFlagAggregate; using SJZY.Track.Domain.Dtos.TrackFlags;
namespace SJZY.Track.Domain.Aggregates.TrackFlagAggregate;
public interface ITrackFlagRepository : IBasicRepository<TrackFlagEntity> public interface ITrackFlagRepository : IBasicRepository<TrackFlagEntity>
{ {
Task<GetTrackFlagDetailVO?> GetDetailAsync(int id);
Task<UnifyPageResultDto<GetTrackFlagListVO>> GetPageTrackFlag(GetPageTrackFlagVO input);
} }

View File

@ -29,4 +29,10 @@ public class TrackFlagEntity : IFullAuditedBasicEntitys, IAggregateRoot
/// </summary> /// </summary>
[SugarColumn(ColumnName = "SubSystemId")] [SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; } public int SubSystemId { get; set; }
/// <summary>
/// 是否完结
/// </summary>
[SugarColumn(ColumnName = "SubSystemId")]
public bool IsCompleted { get; set; }
} }

View File

@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Domain.Dtos.TrackFlags
{
public class GetPageTrackFlagVO : PageInfoInput
{
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; }
///// <summary>
///// 关键字
///// </summary>
//public string Keywords { get; set; }
}
public class GetTrackFlagListVO
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 子系统
/// </summary>
public string SubSystem { get; set; }
/// <summary>
/// 代码
/// </summary>
public string Code { get; set; }
/// <summary>
/// 标记
/// </summary>
public string Flag { get; set; }
/// <summary>
/// 是否完结
/// </summary>
public bool IsFinish { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string CreateUser { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public string UpdateUser { get; set; }
}
}

View File

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Domain.Dtos.TrackFlags
{
public class GetTrackFlagDetailVO
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; }
/// <summary>
/// 子系统
/// </summary>
public string SubSystem { get; set; }
/// <summary>
/// 代码
/// </summary>
public string Code { get; set; }
/// <summary>
///
/// </summary>
public string Flag { get; set; }
/// <summary>
/// 是否完结
/// </summary>
public bool IsFinish { get; set; }
}
}

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../common.props" /> <Import Project="../../common.props" />

View File

@ -1,7 +1,68 @@
using SJZY.Track.Domain.Aggregates.TrackFlagAggregate; using SJZY.Track.Domain.Aggregates.TrackFlagAggregate;
using SJZY.Track.Domain.Aggregates.TrackStatusAggregate;
using SJZY.Track.Domain.Dtos.TrackFlags;
using SJZY.Track.Domain.Dtos.TrackStatus;
using SJZY.Track.Domain.VEntities;
namespace SJZY.Track.Repository; namespace SJZY.Track.Repository;
public class TrackFlagRepository : BasicRepository<TrackFlagEntity>, ITrackFlagRepository, IScopedDependency public class TrackFlagRepository : BasicRepository<TrackFlagEntity>, ITrackFlagRepository, IScopedDependency
{ {
public TrackFlagRepository()
{
}
/// <summary>
/// 获取轨迹标记明细
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<GetTrackFlagDetailVO?> GetDetailAsync(int id)
{
var detail = await Context.Queryable<TrackFlagEntity>()
.LeftJoin<VSystemEntity>((a, b) => a.SubSystemId == b.Id)
.Where((a, b) => a.Id == id)
.Select((a, b) => new GetTrackFlagDetailVO
{
Id = a.Id,
SubSystemId = a.SubSystemId,
SubSystem = b.CnName,
Code = a.Code,
Flag = a.Name,
IsFinish=a.IsCompleted
})
.FirstAsync();
return detail;
}
/// <summary>
/// 分页获取轨迹标记
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<UnifyPageResultDto<GetTrackFlagListVO>> GetPageTrackFlag(GetPageTrackFlagVO input)
{
UnifyPageResultDto<GetTrackFlagListVO> pagedList = new UnifyPageResultDto<GetTrackFlagListVO>();
pagedList = await Context.Queryable<TrackFlagEntity>()
.LeftJoin<VSystemEntity>((a, b) => a.SubSystemId == b.Id)
.LeftJoin<VUserEntity>((a, b, c) => a.CreateUserId == c.Id)
.LeftJoin<VUserEntity>((a, b, c, d) => a.UpdateUserId == d.Id)
.WhereIF(input.SubSystemId > 0, (a, b, c, d) => a.SubSystemId == input.SubSystemId)
.Select((a, b, c, d) => new GetTrackFlagListVO
{
Id = a.Id,
SubSystem = b.CnName,
Code = a.Code,
Flag = a.Name,
IsFinish=a.IsCompleted,
CreateTime = a.CreateTime,
CreateUser = c.Name,
UpdateTime = a.UpdateTime,
UpdateUser = d.Name,
})
.ToPagedListAsync(input.PageIndex, input.PageSize);
return pagedList;
}
} }