Merge branch 'refs/heads/dev' into test

This commit is contained in:
xiaolipro 2024-08-02 17:52:48 +08:00
commit decb50a085
3 changed files with 62 additions and 20 deletions

View File

@ -0,0 +1,24 @@
using System.Text.RegularExpressions;
namespace SJZY.Track.Application.Helpers
{
public class StringHelper
{
/// <summary>
/// 只能输入英文字符和键盘上常用的符号
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsValidEnglishString(string input)
{
if (string.IsNullOrEmpty(input))
{
return false;
}
// Regular expression to match only English letters and specified symbols
var regex = new Regex(@"^[a-zA-Z\(\)@!#$%^&*_\-+=;:""'/><,.\s]+$");
return regex.IsMatch(input);
}
}
}

View File

@ -1,7 +1,5 @@
using SJZY.Expand.ABP.Core;
using SJZY.Track.Application.Contract.Services; using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.KPIAreaAggregate; using SJZY.Track.Domain.Aggregates.KPIAreaAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Dtos.Forewarning; using SJZY.Track.Domain.Dtos.Forewarning;
namespace SJZY.Track.Application.Services.ForewarningServices; namespace SJZY.Track.Application.Services.ForewarningServices;
@ -10,8 +8,8 @@ namespace SJZY.Track.Application.Services.ForewarningServices;
[Route("/ForewarningService")] [Route("/ForewarningService")]
public class KpiAreaService : ApplicationService public class KpiAreaService : ApplicationService
{ {
private readonly IKpiAreaRepository _ruleAreaRepository;
private readonly IForewarningCacheService _forewarningCacheService; private readonly IForewarningCacheService _forewarningCacheService;
private readonly IKpiAreaRepository _ruleAreaRepository;
public KpiAreaService(IKpiAreaRepository ruleAreaRepository, IForewarningCacheService forewarningCacheService) public KpiAreaService(IKpiAreaRepository ruleAreaRepository, IForewarningCacheService forewarningCacheService)
{ {
@ -28,6 +26,12 @@ public class KpiAreaService : ApplicationService
public async ValueTask<UnifyResultDto> CreateKpiArea(CreateRuleAreaRequest input) public async ValueTask<UnifyResultDto> CreateKpiArea(CreateRuleAreaRequest input)
{ {
var ruleAreaEntity = ObjectMapper.Map<CreateRuleAreaRequest, RuleAreaEntity>(input); var ruleAreaEntity = ObjectMapper.Map<CreateRuleAreaRequest, RuleAreaEntity>(input);
var hasSameName = await _ruleAreaRepository.IsAnyAsync(val => val.SubSystemId == input.SystemId && val.Name == input.Name);
if (hasSameName)
{
return new UnifyResultDto(false, "分区名称重复,请重新修改提交");
}
var areaId = await _ruleAreaRepository.CreateAreaAsync(ruleAreaEntity); var areaId = await _ruleAreaRepository.CreateAreaAsync(ruleAreaEntity);
return new UnifyResultDto(true, areaId, "创建成功"); return new UnifyResultDto(true, areaId, "创建成功");
} }

View File

@ -1,5 +1,6 @@
using SJZY.Track.Application.Contract.Dtos.TrackNode; using SJZY.Track.Application.Contract.Dtos.TrackNode;
using SJZY.Track.Application.Contract.Dtos.TrackStatus; using SJZY.Track.Application.Contract.Dtos.TrackStatus;
using SJZY.Track.Application.Helpers;
using SJZY.Track.Domain.Aggregates.TrackNodeAggregate; using SJZY.Track.Domain.Aggregates.TrackNodeAggregate;
using SJZY.Track.Domain.Aggregates.TrackStatusAggregate; using SJZY.Track.Domain.Aggregates.TrackStatusAggregate;
using SJZY.Track.Domain.Dtos.TrackNode; using SJZY.Track.Domain.Dtos.TrackNode;
@ -13,9 +14,9 @@ namespace SJZY.Track.Application.Services.TrackNode
[ApiExplorerSettings(GroupName = "轨迹节点")] [ApiExplorerSettings(GroupName = "轨迹节点")]
[Route("/Track/Node")] [Route("/Track/Node")]
public class TrackNodeService : ApplicationService, ITransientDependency public class TrackNodeService : ApplicationService, ITransientDependency
{ {
private readonly ITrackStatusRepository _trackStatusRepository;
private readonly ITrackNodeRepository _trackNodeRepository; private readonly ITrackNodeRepository _trackNodeRepository;
private readonly ITrackStatusRepository _trackStatusRepository;
public TrackNodeService( public TrackNodeService(
ITrackNodeRepository trackNodeRepository, ITrackStatusRepository trackStatusRepository) ITrackNodeRepository trackNodeRepository, ITrackStatusRepository trackStatusRepository)
@ -39,7 +40,7 @@ namespace SJZY.Track.Application.Services.TrackNode
_ => throw new BusinessException(message: "当前操作动作不合法") _ => throw new BusinessException(message: "当前操作动作不合法")
}; };
} }
/// <summary> /// <summary>
/// 获取分页轨迹节点 /// 获取分页轨迹节点
/// </summary> /// </summary>
@ -52,7 +53,7 @@ namespace SJZY.Track.Application.Services.TrackNode
var resultDto = await _trackNodeRepository.GetPageList(queryParam); var resultDto = await _trackNodeRepository.GetPageList(queryParam);
return resultDto; return resultDto;
} }
/// <summary> /// <summary>
/// 获取详情 /// 获取详情
/// </summary> /// </summary>
@ -62,9 +63,9 @@ namespace SJZY.Track.Application.Services.TrackNode
public async Task<UnifyResultDto> GetDetail(int nodeid) public async Task<UnifyResultDto> GetDetail(int nodeid)
{ {
var resultDto = await _trackNodeRepository.GetDetail(nodeid); var resultDto = await _trackNodeRepository.GetDetail(nodeid);
return new UnifyResultDto(true,resultDto); return new UnifyResultDto(true, resultDto);
} }
/// <summary> /// <summary>
/// 获取分页轨迹字典,下拉框用的 /// 获取分页轨迹字典,下拉框用的
/// </summary> /// </summary>
@ -83,13 +84,16 @@ namespace SJZY.Track.Application.Services.TrackNode
private async Task<UnifyResultDto> AddAsync(EditTrackNodeInput input) private async Task<UnifyResultDto> AddAsync(EditTrackNodeInput input)
{ {
#region 业务校验 #region 业务校验
if(string.IsNullOrEmpty(input.NodeName)|| string.IsNullOrEmpty(input.NodeEnName) || !input.SubSystemId.HasValue)
if (string.IsNullOrEmpty(input.NodeName) || string.IsNullOrEmpty(input.NodeEnName) ||
!input.SubSystemId.HasValue)
{ {
return new UnifyResultDto("200", "NodeName,NodeEnName,SubSystemId 必填", false); return new UnifyResultDto("200", "NodeName,NodeEnName,SubSystemId 必填", false);
} }
var trackNodesEntitys = await _trackNodeRepository.GetListAsync(a => var trackNodesEntitys = await _trackNodeRepository.GetListAsync(a =>
a.SubSystemId == input.SubSystemId && (a.NodeName == input.NodeName || a.NodeEnName == input.NodeEnName)); a.SubSystemId == input.SubSystemId &&
(a.NodeName == input.NodeName || a.NodeEnName == input.NodeEnName));
if (trackNodesEntitys.Any()) if (trackNodesEntitys.Any())
{ {
var trackNodeName = trackNodesEntitys.FirstOrDefault(a => a.NodeName == input.NodeName); var trackNodeName = trackNodesEntitys.FirstOrDefault(a => a.NodeName == input.NodeName);
@ -97,14 +101,21 @@ namespace SJZY.Track.Application.Services.TrackNode
{ {
throw new BusinessException(message: "该子系统下节点名称已存在"); throw new BusinessException(message: "该子系统下节点名称已存在");
} }
var trackNodeEnName = trackNodesEntitys.FirstOrDefault(a => a.NodeEnName == input.NodeEnName); var trackNodeEnName = trackNodesEntitys.FirstOrDefault(a => a.NodeEnName == input.NodeEnName);
if (trackNodeEnName != null) if (trackNodeEnName != null)
{ {
throw new BusinessException(message: "该子系统下节点英文名称已存在"); throw new BusinessException(message: "该子系统下节点英文名称已存在");
} }
} }
#endregion #endregion
if (!StringHelper.IsValidEnglishString(input.NodeEnName))
{
return new UnifyResultDto("200", "节点英文名称必须是英文和常用英文符号", false);
}
var entity = ObjectMapper.Map<EditTrackNodeInput, TrackNodeEntity>(input); var entity = ObjectMapper.Map<EditTrackNodeInput, TrackNodeEntity>(input);
var isTrue = await _trackNodeRepository.InsertAsync(entity); var isTrue = await _trackNodeRepository.InsertAsync(entity);
@ -114,11 +125,12 @@ namespace SJZY.Track.Application.Services.TrackNode
private async Task<UnifyResultDto> UpdateAsync(EditTrackNodeInput input) private async Task<UnifyResultDto> UpdateAsync(EditTrackNodeInput input)
{ {
#region 业务校验 #region 业务校验
if(string.IsNullOrEmpty(input.NodeName)|| string.IsNullOrEmpty(input.NodeEnName) )
if (string.IsNullOrEmpty(input.NodeName) || string.IsNullOrEmpty(input.NodeEnName))
{ {
return new UnifyResultDto("200", "NodeName,NodeEnName 必填", false); return new UnifyResultDto("200", "NodeName,NodeEnName 必填", false);
} }
var trackNodesEntitys = await _trackNodeRepository.GetFirstAsync(a => a.Id == input.Id); var trackNodesEntitys = await _trackNodeRepository.GetFirstAsync(a => a.Id == input.Id);
if (trackNodesEntitys == null) if (trackNodesEntitys == null)
{ {
@ -136,19 +148,21 @@ namespace SJZY.Track.Application.Services.TrackNode
private async Task<UnifyResultDto> DeleteAsync(EditTrackNodeInput input) private async Task<UnifyResultDto> DeleteAsync(EditTrackNodeInput input)
{ {
if(input.Id <=0 || !input.SubSystemId.HasValue) if (input.Id <= 0 || !input.SubSystemId.HasValue)
{ {
return new UnifyResultDto("200", "SubSystemId 必填", false); return new UnifyResultDto("200", "SubSystemId 必填", false);
} }
var trackStatus = await _trackStatusRepository.GetFirstAsync(val => val.Node == input.Id && val.SubSystemId == input.SubSystemId); var trackStatus =
if(trackStatus!=null) await _trackStatusRepository.GetFirstAsync(val =>
val.Node == input.Id && val.SubSystemId == input.SubSystemId);
if (trackStatus != null)
{ {
return new UnifyResultDto("200", "删除失败,该节点已被使用", false); return new UnifyResultDto("200", "删除失败,该节点已被使用", false);
} }
var rows = await _trackNodeRepository.DeleteById(input.Id); var rows = await _trackNodeRepository.DeleteById(input.Id);
return new UnifyResultDto("200", "删除成功", rows>0); return new UnifyResultDto("200", "删除成功", rows > 0);
} }
#endregion #endregion