Merge remote-tracking branch 'origin/S04轨迹预警' into S04轨迹预警
This commit is contained in:
commit
707a05f911
@ -0,0 +1,29 @@
|
||||
namespace SJZY.Track.Application.Contract.Dtos.TrackNode;
|
||||
|
||||
public class EditTrackNodeInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 操作类型
|
||||
/// </summary>
|
||||
public OptionType Options { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹节点id,创建不用填
|
||||
/// </summary>
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 系统id
|
||||
/// </summary>
|
||||
public int SystemId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 节点名称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 节点英文名称
|
||||
/// </summary>
|
||||
public string EnName { get; set; }
|
||||
}
|
||||
@ -70,7 +70,11 @@ public class EditTrackPullConfigInput
|
||||
public string? OrderPath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹明细路径
|
||||
/// </summary>
|
||||
public string? TrackDetailsPath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹内容code
|
||||
/// </summary>
|
||||
public string? TrackContentCode { get; set; }
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
namespace SJZY.Track.Application.Contract.Dtos.TrackStatus;
|
||||
|
||||
public class QueryTrackNodeRequest:PageInfoInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 关键字,节点中文和英文
|
||||
/// </summary>
|
||||
public string? KeyWord { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 子系统id
|
||||
/// </summary>
|
||||
public long? SystemId { get; set; }
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
using AutoMapper;
|
||||
using SJZY.Track.Application.Contract.Dtos.TrackNode;
|
||||
using SJZY.Track.Application.Contract.Dtos.TrackStatus;
|
||||
using SJZY.Track.Domain.Aggregates.TrackNodeAggregate;
|
||||
using SJZY.Track.Domain.Dtos.TrackNode;
|
||||
|
||||
namespace SJZY.Track.Application.AutoMapper;
|
||||
|
||||
public class TrackNodeMapperProfile :Profile
|
||||
{
|
||||
public TrackNodeMapperProfile()
|
||||
{
|
||||
CreateMap<QueryTrackNodeRequest, TrackNodePageDto>();
|
||||
CreateMap<EditTrackNodeInput, TrackNodeEntity>(MemberList.None)
|
||||
.ForMember(val => val.NodeName, opt => opt.MapFrom(src => src.Name))
|
||||
.ForMember(val => val.NodeEnName, opt => opt.MapFrom(src => src.EnName))
|
||||
.ForMember(val => val.SubSystemId, opt => opt.MapFrom(src => src.SystemId));
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,132 @@
|
||||
using Microsoft.Extensions.Localization;
|
||||
using SJZY.Track.Application.Contract.Dtos.TrackNode;
|
||||
using SJZY.Track.Application.Contract.Dtos.TrackStatus;
|
||||
using SJZY.Track.Application.Localization;
|
||||
using SJZY.Track.Domain.Aggregates.TrackNodeAggregate;
|
||||
using SJZY.Track.Domain.Aggregates.TrackStatusAggregate;
|
||||
using SJZY.Track.Domain.Dtos.TrackNode;
|
||||
using Volo.Abp.DependencyInjection;
|
||||
|
||||
namespace SJZY.Track.Application.Services.TrackNodeServices
|
||||
{
|
||||
/// <summary>
|
||||
/// 轨迹节点服务
|
||||
/// </summary>
|
||||
[ApiExplorerSettings(GroupName = "轨迹节点")]
|
||||
[Route("/Track/Node")]
|
||||
public class TrackNodeService : ApplicationService, ITransientDependency
|
||||
{
|
||||
private readonly ITrackStatusRepository _trackStatusRepository;
|
||||
private readonly ITrackNodeRepository _trackNodeRepository;
|
||||
|
||||
public TrackNodeService(
|
||||
ITrackNodeRepository trackNodeRepository, ITrackStatusRepository trackStatusRepository)
|
||||
{
|
||||
this._trackNodeRepository = trackNodeRepository;
|
||||
_trackStatusRepository = trackStatusRepository;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹节点编辑
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost("Edit")]
|
||||
public async Task<UnifyResultDto> EditAsync(EditTrackNodeInput input)
|
||||
{
|
||||
return input.Options switch
|
||||
{
|
||||
OptionType.新增 => await AddAsync(input),
|
||||
OptionType.修改 => await UpdateAsync(input),
|
||||
OptionType.删除 => await DeleteAsync(input),
|
||||
_ => throw new BusinessException(message: "当前操作动作不合法")
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取分页轨迹节点
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("GetList")]
|
||||
public async Task<UnifyPageResultDto<TrackNodeDto>> GetPageTrackNode(QueryTrackNodeRequest input)
|
||||
{
|
||||
var queryParam = ObjectMapper.Map<QueryTrackNodeRequest, TrackNodePageDto>(input);
|
||||
var resultDto = await _trackNodeRepository.GetPageList(queryParam);
|
||||
return resultDto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取分页轨迹字典,下拉框用的
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("GetTrackNodeOption")]
|
||||
public async Task<UnifyPageResultDto<TrackNodeDicDto>> GetTrackNodeOption(QueryTrackNodeRequest input)
|
||||
{
|
||||
var queryParam = ObjectMapper.Map<QueryTrackNodeRequest, TrackNodePageDto>(input);
|
||||
var resultDto = await _trackNodeRepository.GetPageDicList(queryParam);
|
||||
return resultDto;
|
||||
}
|
||||
|
||||
#region 私有方法
|
||||
|
||||
private async Task<UnifyResultDto> AddAsync(EditTrackNodeInput input)
|
||||
{
|
||||
#region 业务校验
|
||||
var trackNodesEntitys = await _trackNodeRepository.GetListAsync(a =>
|
||||
a.SubSystemId == input.SystemId && (a.NodeName == input.Name || a.NodeEnName == input.EnName));
|
||||
if (trackNodesEntitys.Any())
|
||||
{
|
||||
var trackNodeName = trackNodesEntitys.FirstOrDefault(a => a.NodeName == input.Name);
|
||||
if (trackNodeName != null)
|
||||
{
|
||||
throw new BusinessException(message: "该子系统下节点名称已存在");
|
||||
}
|
||||
var trackNodeEnName = trackNodesEntitys.FirstOrDefault(a => a.NodeEnName == input.EnName);
|
||||
if (trackNodeEnName != null)
|
||||
{
|
||||
throw new BusinessException(message: "该子系统下节点英文名称已存在");
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
var entity = ObjectMapper.Map<EditTrackNodeInput, TrackNodeEntity>(input);
|
||||
var isTrue = await _trackNodeRepository.InsertAsync(entity);
|
||||
|
||||
return new UnifyResultDto("200", "新增成功", isTrue);
|
||||
}
|
||||
|
||||
private async Task<UnifyResultDto> UpdateAsync(EditTrackNodeInput input)
|
||||
{
|
||||
#region 业务校验
|
||||
|
||||
var trackNodesEntitys = await _trackNodeRepository.GetFirstAsync(a => a.Id == input.Id);
|
||||
if (trackNodesEntitys == null)
|
||||
{
|
||||
return new UnifyResultDto("200", "没有找到数据,更新失败", false);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
trackNodesEntitys.NodeEnName = input.EnName;
|
||||
trackNodesEntitys.NodeName = input.Name;
|
||||
var isTrue = await _trackNodeRepository.UpdateAsync(trackNodesEntitys);
|
||||
|
||||
return new UnifyResultDto("200", "修改成功", isTrue);
|
||||
}
|
||||
|
||||
private async Task<UnifyResultDto> DeleteAsync(EditTrackNodeInput input)
|
||||
{
|
||||
var trackStatus = await _trackStatusRepository.GetFirstAsync(val => val.Node == input.Id && val.SubSystemId == input.SystemId);
|
||||
if(trackStatus!=null)
|
||||
{
|
||||
return new UnifyResultDto("200", "删除失败,该节点已被使用", false);
|
||||
}
|
||||
|
||||
var rows = await _trackNodeRepository.DeleteById(input.Id);
|
||||
return new UnifyResultDto("200", "删除成功", rows>0);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
using SJZY.Track.Domain.Dtos.TrackNode;
|
||||
|
||||
namespace SJZY.Track.Domain.Aggregates.TrackNodeAggregate;
|
||||
|
||||
public interface ITrackNodeRepository:IBasicRepository<TrackNodeEntity>
|
||||
{
|
||||
/// <summary>
|
||||
/// 分页查询
|
||||
/// </summary>
|
||||
/// <param name="queryParam"></param>
|
||||
/// <returns></returns>
|
||||
Task<UnifyPageResultDto<TrackNodeDto>> GetPageList(TrackNodePageDto queryParam);
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询字典
|
||||
/// </summary>
|
||||
/// <param name="queryParam"></param>
|
||||
/// <returns></returns>
|
||||
Task<UnifyPageResultDto<TrackNodeDicDto>> GetPageDicList(TrackNodePageDto queryParam);
|
||||
|
||||
/// <summary>
|
||||
/// 删除
|
||||
/// </summary>
|
||||
/// <param name="inputId"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> DeleteById(long inputId);
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
namespace SJZY.Track.Domain.Aggregates.TrackNodeAggregate;
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹节点主表
|
||||
/// </summary>
|
||||
[SugarTable("t_track_node", TableDescription = "轨迹节点主表")]
|
||||
public class TrackNodeEntity : IFullAuditedBasicEntitys, IAggregateRoot
|
||||
{
|
||||
/// <summary>
|
||||
/// 自增主键
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "自增主键")]
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 子系统id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "SubSystemId", ColumnDescription = "子系统id")]
|
||||
public int SubSystemId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 节点名称
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "NodeName", Length = 32, ColumnDescription = "节点名称")]
|
||||
public string? NodeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 节点英文名称
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "NodeEnName", Length = 32, ColumnDescription = "节点英文名称")]
|
||||
public string? NodeEnName { get; set; }
|
||||
}
|
||||
@ -35,4 +35,9 @@ public class TrackPullConfigEntity : IFullAuditedBasicEntitys, IAggregateRoot
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "SubSystemId")]
|
||||
public int SubSystemId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹内容code
|
||||
/// </summary>
|
||||
public string? TrackContentCode { get; set; }
|
||||
}
|
||||
19
src/SJZY.Track.Domain/Dtos/TrackNode/TrackNodeDicDto.cs
Normal file
19
src/SJZY.Track.Domain/Dtos/TrackNode/TrackNodeDicDto.cs
Normal file
@ -0,0 +1,19 @@
|
||||
namespace SJZY.Track.Domain.Dtos.TrackNode;
|
||||
|
||||
public class TrackNodeDicDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 节点id
|
||||
/// </summary>
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string NodeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string EnName { get; set; }
|
||||
}
|
||||
56
src/SJZY.Track.Domain/Dtos/TrackNode/TrackNodeDto.cs
Normal file
56
src/SJZY.Track.Domain/Dtos/TrackNode/TrackNodeDto.cs
Normal file
@ -0,0 +1,56 @@
|
||||
namespace SJZY.Track.Domain.Dtos.TrackNode;
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹节点主表 DTO
|
||||
/// </summary>
|
||||
public class TrackNodeDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 自增主键
|
||||
/// </summary>
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 子系统id
|
||||
/// </summary>
|
||||
public int SubSystemId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 节点名称
|
||||
/// </summary>
|
||||
public string? NodeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 节点英文名称
|
||||
/// </summary>
|
||||
public string? NodeEnName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否删除
|
||||
/// </summary>
|
||||
public bool IsDeleted { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人id
|
||||
/// </summary>
|
||||
public int CreateUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新人
|
||||
/// </summary>
|
||||
public int? UpdateUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// </summary>
|
||||
public DateTime? UpdateTime { get; set; }
|
||||
|
||||
public string? CreateUserName { get; set; }
|
||||
|
||||
public string? UpdateUserName { get; set; }
|
||||
}
|
||||
14
src/SJZY.Track.Domain/Dtos/TrackNode/TrackNodePageDto.cs
Normal file
14
src/SJZY.Track.Domain/Dtos/TrackNode/TrackNodePageDto.cs
Normal file
@ -0,0 +1,14 @@
|
||||
namespace SJZY.Track.Domain.Dtos.TrackNode;
|
||||
|
||||
public class TrackNodePageDto:PageInfoInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 关键字,节点中文和英文
|
||||
/// </summary>
|
||||
public string? KeyWord { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 子系统id
|
||||
/// </summary>
|
||||
public long? SystemId { get; set; }
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
using SJZY.Track.Domain.Aggregates.TrackNodeAggregate;
|
||||
using SJZY.Track.Domain.Dtos.TrackNode;
|
||||
using SJZY.Track.Domain.VEntities;
|
||||
|
||||
namespace SJZY.Track.Repository.Repositories;
|
||||
|
||||
public class TrackNodeRepository: BasicRepository<TrackNodeEntity>,ITrackNodeRepository,IScopedDependency
|
||||
{
|
||||
public async Task<UnifyPageResultDto<TrackNodeDto>> GetPageList(TrackNodePageDto queryParam)
|
||||
{
|
||||
var result = await Context.Queryable<TrackNodeEntity>()
|
||||
.LeftJoin<VUserEntity>((t,u1)=>t.CreateUserId==u1.Id)
|
||||
.LeftJoin<VUserEntity>((t,u1,u2)=>t.UpdateUserId==u2.Id)
|
||||
.Where((t,u1,u2)=>!t.IsDeleted&&!u1.IsDeleted&&!u2.IsDeleted)
|
||||
.WhereIF(!string.IsNullOrEmpty(queryParam.KeyWord), (t,u1,u2)=>t.NodeName!.Contains(queryParam.KeyWord)||t.NodeEnName!.Contains(queryParam.KeyWord))
|
||||
.WhereIF(queryParam.SystemId.HasValue,(t,u1,u2)=>t.SubSystemId == queryParam.SystemId.Value)
|
||||
.Select((t, u1, u2) =>new TrackNodeDto()
|
||||
{
|
||||
Id = t.Id,
|
||||
NodeName = t.NodeName,
|
||||
NodeEnName = t.NodeEnName,
|
||||
SubSystemId = t.SubSystemId,
|
||||
UpdateTime = t.UpdateTime,
|
||||
CreateTime = t.CreateTime,
|
||||
UpdateUserId = t.UpdateUserId,
|
||||
UpdateUserName = u2.Name,
|
||||
CreateUserName = u1.Name
|
||||
}).ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public async Task<UnifyPageResultDto<TrackNodeDicDto>> GetPageDicList(TrackNodePageDto queryParam)
|
||||
{
|
||||
var result = await Context.Queryable<TrackNodeEntity>()
|
||||
.Where((t)=>!t.IsDeleted)
|
||||
.WhereIF(!string.IsNullOrEmpty(queryParam.KeyWord), (t)=>t.NodeName!.Contains(queryParam.KeyWord)||t.NodeEnName!.Contains(queryParam.KeyWord))
|
||||
.WhereIF(queryParam.SystemId.HasValue,(t)=>t.SubSystemId == queryParam.SystemId.Value)
|
||||
.Select(t =>new TrackNodeDicDto()
|
||||
{
|
||||
Id = t.Id,
|
||||
NodeName = t.NodeName,
|
||||
EnName = t.NodeEnName,
|
||||
}).ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<int> DeleteById(long inputId)
|
||||
{
|
||||
return Context.Deleteable<TrackNodeEntity>().Where(val=>val.Id==inputId).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user