轨迹内容功能
This commit is contained in:
parent
6f78f868f1
commit
2a07b472be
@ -0,0 +1,27 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using AutoMapper.Internal.Mappers;
|
||||||
|
using SJZY.Track.Application.Dtos.TrackContents;
|
||||||
|
using SJZY.Track.Application.Dtos.TrackTemplates;
|
||||||
|
using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
|
||||||
|
using SJZY.Track.Domain.Dtos.TrackContents;
|
||||||
|
using SJZY.Track.Domain.Dtos.TrackTemplate;
|
||||||
|
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 TrackContentAutoMapperProfile : Profile
|
||||||
|
{
|
||||||
|
public TrackContentAutoMapperProfile()
|
||||||
|
{
|
||||||
|
CreateMap<EditTrackContentInput, TrackContentEntity>(MemberList.None);
|
||||||
|
CreateMap<GetTrackContentDetailVO, GetTrackContentDetailDto>(MemberList.None);
|
||||||
|
CreateMap<GetPageTrackContentInput, GetPageTrackContentVO>(MemberList.None);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,7 +4,8 @@
|
|||||||
"NotNull1": "{0} is not null",
|
"NotNull1": "{0} is not null",
|
||||||
"NotFindData": "No data found under the specified number",
|
"NotFindData": "No data found under the specified number",
|
||||||
"ParameterDemo1": "{0} in {1} to do {2}",
|
"ParameterDemo1": "{0} in {1} to do {2}",
|
||||||
"TemplateExist": "The template code already exists under the currently selected subsystem"
|
"TemplateExist": "The template code already exists under the currently selected subsystem",
|
||||||
|
"TrackContentExist": "The trace code or trace content or trace content in the current subsystem is repeated in English"
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4,6 +4,7 @@
|
|||||||
"NotFindData": "未找到指定编号下的任何数据!",
|
"NotFindData": "未找到指定编号下的任何数据!",
|
||||||
"ParameterDemo": "{0}在{1}地方做了{2}动作",
|
"ParameterDemo": "{0}在{1}地方做了{2}动作",
|
||||||
"ParameterDemo1": "{0}在{1}地方做了{2}动作",
|
"ParameterDemo1": "{0}在{1}地方做了{2}动作",
|
||||||
"TemplateExist": "模板代码已存在于当前选择的子系统下"
|
"TemplateExist": "模板代码已存在于当前选择的子系统下",
|
||||||
|
"TrackContentExist": "当前子系统下轨迹代码或轨迹内容或轨迹内容英文重复"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,8 @@
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.Extensions.Localization;
|
||||||
using SJZY.Track.Application.Dtos.TrackContents;
|
using SJZY.Track.Application.Dtos.TrackContents;
|
||||||
using SJZY.Track.Application.Dtos.TrackStatus;
|
using SJZY.Track.Application.Dtos.TrackStatus;
|
||||||
|
using SJZY.Track.Application.Localization;
|
||||||
using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
|
using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
|
||||||
using SJZY.Track.Domain.Dtos.TrackContents;
|
using SJZY.Track.Domain.Dtos.TrackContents;
|
||||||
using SJZY.Track.Domain.Dtos.TrackStatus;
|
using SJZY.Track.Domain.Dtos.TrackStatus;
|
||||||
@ -20,12 +22,15 @@ namespace SJZY.Track.Application.Services.TrackContents
|
|||||||
[Route("/Track/Content")]
|
[Route("/Track/Content")]
|
||||||
public class TrackContentService : ApplicationService, ITransientDependency
|
public class TrackContentService : ApplicationService, ITransientDependency
|
||||||
{
|
{
|
||||||
|
private readonly IStringLocalizer<TrackLocalizationResource> _stringLocalizer;
|
||||||
private readonly ITrackContentRepository _trackContentRepository;
|
private readonly ITrackContentRepository _trackContentRepository;
|
||||||
|
|
||||||
public TrackContentService(
|
public TrackContentService(
|
||||||
|
IStringLocalizer<TrackLocalizationResource> stringLocalizer,
|
||||||
ITrackContentRepository trackContentRepository
|
ITrackContentRepository trackContentRepository
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
this._stringLocalizer=stringLocalizer;
|
||||||
this._trackContentRepository=trackContentRepository;
|
this._trackContentRepository=trackContentRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,6 +88,15 @@ namespace SJZY.Track.Application.Services.TrackContents
|
|||||||
#region 私有方法
|
#region 私有方法
|
||||||
private async Task<UnifyResultDto> AddAsync(EditTrackContentInput input)
|
private async Task<UnifyResultDto> AddAsync(EditTrackContentInput input)
|
||||||
{
|
{
|
||||||
|
#region 业务逻辑校验
|
||||||
|
var trackContentEntity = await _trackContentRepository.GetFirstAsync(a => a.SubSystemId==input.SubSystemId&&(a.Code==input.Code ||
|
||||||
|
a.Content==input.Content || a.EnContent==input.EnContent));
|
||||||
|
if (trackContentEntity != null)
|
||||||
|
{
|
||||||
|
throw new BusinessException(message: _stringLocalizer["TrackContentExist"]);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
var entity = ObjectMapper.Map<EditTrackContentInput, TrackContentEntity>(input);
|
var entity = ObjectMapper.Map<EditTrackContentInput, TrackContentEntity>(input);
|
||||||
var isTrue = await _trackContentRepository.InsertAsync(entity);
|
var isTrue = await _trackContentRepository.InsertAsync(entity);
|
||||||
|
|
||||||
@ -91,6 +105,15 @@ namespace SJZY.Track.Application.Services.TrackContents
|
|||||||
|
|
||||||
private async Task<UnifyResultDto> UpdateAsync(EditTrackContentInput input)
|
private async Task<UnifyResultDto> UpdateAsync(EditTrackContentInput input)
|
||||||
{
|
{
|
||||||
|
#region 业务逻辑校验
|
||||||
|
var trackContentEntity = await _trackContentRepository.GetFirstAsync(a => a.Id!=input.Id && a.SubSystemId==input.SubSystemId && (a.Code==input.Code ||
|
||||||
|
a.Content==input.Content || a.EnContent==input.EnContent));
|
||||||
|
if (trackContentEntity != null)
|
||||||
|
{
|
||||||
|
throw new BusinessException(message: _stringLocalizer["TrackContentExist"]);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
var templateEntity = await _trackContentRepository.GetFirstAsync(a => a.Id == input.Id);
|
var templateEntity = await _trackContentRepository.GetFirstAsync(a => a.Id == input.Id);
|
||||||
ObjectMapper.Map(input, templateEntity);
|
ObjectMapper.Map(input, templateEntity);
|
||||||
var isTrue = await _trackContentRepository.UpdateAsync(templateEntity);
|
var isTrue = await _trackContentRepository.UpdateAsync(templateEntity);
|
||||||
|
|||||||
@ -0,0 +1,38 @@
|
|||||||
|
using FluentValidation;
|
||||||
|
using SJZY.Track.Application.Dtos.TrackContents;
|
||||||
|
using SJZY.Track.Application.Dtos.TrackTemplates;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SJZY.Track.Application.Validations.TrackContents
|
||||||
|
{
|
||||||
|
public class EditTrackContentInputValidation : AbstractValidator<EditTrackContentInput>, IValidationEnabled
|
||||||
|
{
|
||||||
|
public EditTrackContentInputValidation()
|
||||||
|
{
|
||||||
|
//条件分支
|
||||||
|
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.TrackStatusId).GreaterThan(0).WithMessage("所属状态的id必须大于0!");
|
||||||
|
RuleFor(x => x.Code).NotNull().WithMessage("轨迹代码必填!").NotEmpty().WithMessage("轨迹代码不能为空!");
|
||||||
|
RuleFor(x => x.Content).NotNull().WithMessage("轨迹内容必填!").NotEmpty().WithMessage("轨迹内容不能为空!");
|
||||||
|
RuleFor(x => x.EnContent).NotNull().WithMessage("轨迹内容英文必填!").NotEmpty().WithMessage("轨迹内容英文不能为空!");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,4 +1,5 @@
|
|||||||
using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
|
using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
|
||||||
|
using SJZY.Track.Domain.Aggregates.TrackFlagAggregate;
|
||||||
using SJZY.Track.Domain.Aggregates.TrackStatusAggregate;
|
using SJZY.Track.Domain.Aggregates.TrackStatusAggregate;
|
||||||
using SJZY.Track.Domain.Dtos.TrackContents;
|
using SJZY.Track.Domain.Dtos.TrackContents;
|
||||||
using SJZY.Track.Domain.Dtos.TrackStatus;
|
using SJZY.Track.Domain.Dtos.TrackStatus;
|
||||||
@ -22,20 +23,22 @@ public class TrackContentRepository : BasicRepository<TrackContentEntity>, ITrac
|
|||||||
public async Task<GetTrackContentDetailVO?> GetDetailAsync(int id)
|
public async Task<GetTrackContentDetailVO?> GetDetailAsync(int id)
|
||||||
{
|
{
|
||||||
var detail = await Context.Queryable<TrackContentEntity>()
|
var detail = await Context.Queryable<TrackContentEntity>()
|
||||||
.LeftJoin<VSystemEntity>((a, b) => a.SubSystemId == b.Id)
|
.LeftJoin<TrackStatusEntity>((a, b) => a.TrackStatusId==b.Id)
|
||||||
.Where((a, b) => a.Id == id)
|
.LeftJoin<TrackFlagEntity>((a, b, c) => a.TrackFlagId==c.Id)
|
||||||
.Select((a, b) => new GetTrackContentDetailVO
|
.LeftJoin<VSystemEntity>((a, b, c, d) => a.SubSystemId == b.Id)
|
||||||
|
.Where((a, b, c, d) => a.Id == id)
|
||||||
|
.Select((a, b, c, d) => new GetTrackContentDetailVO
|
||||||
{
|
{
|
||||||
Id = a.Id,
|
Id = a.Id,
|
||||||
SubSystemId = a.SubSystemId,
|
SubSystemId = a.SubSystemId,
|
||||||
SubSystem = b.CnName,
|
SubSystem = d.CnName,
|
||||||
TrackStatusId=a.TrackStatusId,
|
TrackStatusId=a.TrackStatusId,
|
||||||
TrackStatus= "",
|
TrackStatus= b.Status,
|
||||||
Code = a.Code,
|
Code = a.Code,
|
||||||
Content = a.Content,
|
Content = a.Content,
|
||||||
EnContent = a.EnContent,
|
EnContent = a.EnContent,
|
||||||
TrackFlagId=a.TrackFlagId,
|
TrackFlagId=a.TrackFlagId,
|
||||||
TrackFlag=""
|
TrackFlag=c.Name
|
||||||
})
|
})
|
||||||
.FirstAsync();
|
.FirstAsync();
|
||||||
return detail;
|
return detail;
|
||||||
@ -50,28 +53,32 @@ public class TrackContentRepository : BasicRepository<TrackContentEntity>, ITrac
|
|||||||
{
|
{
|
||||||
UnifyPageResultDto<GetTrackContentListVO> pagedList = new UnifyPageResultDto<GetTrackContentListVO>();
|
UnifyPageResultDto<GetTrackContentListVO> pagedList = new UnifyPageResultDto<GetTrackContentListVO>();
|
||||||
pagedList = await Context.Queryable<TrackContentEntity>()
|
pagedList = await Context.Queryable<TrackContentEntity>()
|
||||||
.LeftJoin<VSystemEntity>((a, b) => a.SubSystemId == b.Id)
|
.LeftJoin<TrackStatusEntity>((a, b) => a.TrackStatusId==b.Id)
|
||||||
.LeftJoin<VUserEntity>((a, b, c) => a.CreateUserId == c.Id)
|
.LeftJoin<TrackFlagEntity>((a, b, c) => a.TrackFlagId==c.Id)
|
||||||
.LeftJoin<VUserEntity>((a, b, c, d) => a.UpdateUserId == d.Id)
|
.LeftJoin<VSystemEntity>((a, b, c, d) => a.SubSystemId == d.Id)
|
||||||
.WhereIF(input.SubSystemId > 0, (a, b, c, d) => a.SubSystemId == input.SubSystemId)
|
.LeftJoin<VUserEntity>((a, b, c, d, e) => a.CreateUserId == e.Id)
|
||||||
|
.LeftJoin<VUserEntity>((a, b, c, d, e, f) => a.UpdateUserId == f.Id)
|
||||||
|
.WhereIF(input.SubSystemId > 0, (a, b, c, d, e, f) => a.SubSystemId == input.SubSystemId)
|
||||||
.WhereIF(!input.Keywords.IsNullOrWhiteSpace(),
|
.WhereIF(!input.Keywords.IsNullOrWhiteSpace(),
|
||||||
(a, b, c, d) => a.Code.Contains(input.Keywords)
|
(a, b, c, d, e, f) => a.Code.Contains(input.Keywords) || a.Content.Contains(input.Keywords)
|
||||||
|
|| a.EnContent.Contains(input.Keywords)
|
||||||
)
|
)
|
||||||
.Select((a, b, c, d) => new GetTrackContentListVO
|
.Select((a, b, c, d, e, f) => new GetTrackContentListVO
|
||||||
{
|
{
|
||||||
Id = a.Id,
|
Id = a.Id,
|
||||||
SubSystem = b.CnName,
|
SubSystem = d.CnName,
|
||||||
Code = a.Code,
|
Code = a.Code,
|
||||||
Content = a.Content,
|
Content = a.Content,
|
||||||
EnContent = a.EnContent,
|
EnContent = a.EnContent,
|
||||||
TrackStatus= "",
|
TrackStatus= b.Status,
|
||||||
Node = "",
|
Node = SqlFunc.IF(b.Node == 1).Return("揽收").ElseIF(b.Node == 2).Return("干线").ElseIF(b.Node == 3).Return("清关")
|
||||||
TrackFlag= "",
|
.ElseIF(b.Node == 4).Return("中转").ElseIF(b.Node == 5).Return("派送")
|
||||||
|
.End(""),
|
||||||
|
TrackFlag= c.Name,
|
||||||
CreateTime = a.CreateTime,
|
CreateTime = a.CreateTime,
|
||||||
CreateUser = c.Name,
|
CreateUser = e.Name,
|
||||||
UpdateTime = a.UpdateTime,
|
UpdateTime = a.UpdateTime,
|
||||||
UpdateUser = d.Name,
|
UpdateUser = f.Name
|
||||||
|
|
||||||
})
|
})
|
||||||
.ToPagedListAsync(input.PageIndex, input.PageSize);
|
.ToPagedListAsync(input.PageIndex, input.PageSize);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user