From e4487f894123610d2350b91d5483bb25f208889b Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Sat, 27 Apr 2024 17:20:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=AF=B9=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ColumnReferencePlugInsBase.cs | 67 ++++++++++--------- .../UpdateColumnReferenceInterfaceDto.cs | 25 +++++++ .../ColumnReferenceAppService.cs | 52 +++++++++++++- .../ColumnReferenceCode.cs | 3 +- .../ColumnReferenceCodeManager.cs | 67 +++++++++++++++++++ .../ColumnReferenceInterface.cs | 3 +- .../ColumnReferenceInterfaceManager.cs | 61 +++++++++++++++++ .../ColumnReferenceAppServiceTest.cs | 4 +- 8 files changed, 247 insertions(+), 35 deletions(-) create mode 100644 src/Shentun.Peis.Application.Contracts/ColumnReferences/UpdateColumnReferenceInterfaceDto.cs create mode 100644 src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCodeManager.cs create mode 100644 src/Shentun.Peis.Domain/ColumnReferenceInterfaces/ColumnReferenceInterfaceManager.cs diff --git a/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs b/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs index 1d3cc10..857cf1a 100644 --- a/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs +++ b/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs @@ -19,8 +19,8 @@ namespace Shentun.Peis.PlugIns protected IConfiguration InterfaceConfig; protected string? ConnctionStr; protected string AppSql; - private List _columnNames; - private List _interfaceColumnNames; + private List _columns; + private List _interfaceColumns; public ColumnReferencePlugInsBase(string configParm) { @@ -35,45 +35,52 @@ namespace Shentun.Peis.PlugIns .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(configParm))); InterfaceConfig = configurationBuilder.Build(); AppSql = InterfaceConfig.GetSection("App").GetSection("Sql").Value; - var columnNames = InterfaceConfig.GetSection("App").GetSection("ColumnNames").Value; - columnNames = columnNames.Replace(",", ","); - var columnNameArry = columnNames.Split(','); - _columnNames = new List(); - foreach (var columnName in columnNameArry) + var columns = InterfaceConfig.GetSection("App").GetSection("Columns").Value; + string[]? columnArry; + if (columns != null) { - var columns = columnName.Split('='); - if(columns.Length == 2) + columns = columns.Replace(",", ","); + columnArry = columns.Split(','); + _columns = new List(); + foreach (var column in columnArry) { - _columnNames.Add(new ColumnReferenceColumn() + var singleColumns = column.Split('='); + if (singleColumns.Length == 2) { - Column = columns[0], - Name = columns[1] - }); + _columns.Add(new ColumnReferenceColumn() + { + Column = singleColumns[0], + Name = singleColumns[1] + }); + } } } + - columnNames = InterfaceConfig.GetSection("Interface").GetSection("ColumnNames").Value; - columnNames = columnNames.Replace(",", ","); - columnNameArry = columnNames.Split(','); - _interfaceColumnNames = new List(); - foreach (var columnName in columnNameArry) + columns = InterfaceConfig.GetSection("Interface").GetSection("Columns").Value; + if(columns != null) { - var columns = columnName.Split('='); - if (columns.Length == 2) + columns = columns.Replace(",", ","); + columnArry = columns.Split(','); + _interfaceColumns = new List(); + foreach (var columnName in columnArry) { - _interfaceColumnNames.Add(new ColumnReferenceColumn() + var singleColumns = columnName.Split('='); + if (singleColumns.Length == 2) { - Column = columns[0], - Name = columns[1] - }); + _interfaceColumns.Add(new ColumnReferenceColumn() + { + Column = singleColumns[0], + Name = singleColumns[1] + }); + } } } - - + } public virtual List GetAppColumns() { - if (_columnNames == null || _columnNames.Count() == 0) + if (_columns == null || _columns.Count() == 0) { return new List() { @@ -90,13 +97,13 @@ namespace Shentun.Peis.PlugIns }; } - return _columnNames; + return _columns; } public virtual List GetInterfaceColumns() { - if (_interfaceColumnNames == null || _interfaceColumnNames.Count() == 0) + if (_interfaceColumns == null || _interfaceColumns.Count() == 0) { return new List() { @@ -113,7 +120,7 @@ namespace Shentun.Peis.PlugIns }; } - return _interfaceColumnNames; + return _interfaceColumns; } public virtual async Task> GetAppCodeValuesAsync() { diff --git a/src/Shentun.Peis.Application.Contracts/ColumnReferences/UpdateColumnReferenceInterfaceDto.cs b/src/Shentun.Peis.Application.Contracts/ColumnReferences/UpdateColumnReferenceInterfaceDto.cs new file mode 100644 index 0000000..c8c9360 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/ColumnReferences/UpdateColumnReferenceInterfaceDto.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.ColumnReferences +{ + public class UpdateColumnReferenceInterfaceDto + { + /// + /// 主键ID + /// + public Guid ColumnReferenceId { get; set; } + public UpdateColumnReferenceCodeDto AppCode { get; set; } + public List InterfaceCodes { get; set; } + } + public class UpdateColumnReferenceCodeDto + { + public string CodeValue { get; set; } + } + public class UpdateColumnReferenceInterfaceCodeDto + { + public string CodeValue { get; set; } + } + +} diff --git a/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs b/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs index fe024c6..7c981fa 100644 --- a/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs +++ b/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs @@ -25,6 +25,9 @@ using System.IO; using Shentun.Peis.HelperDto; using Shentun.Peis.PlugIns; using Volo.Abp.Threading; +using Shentun.Peis.ColumnReferenceCodes; +using Shentun.Peis.ColumnReferenceInterfaces; +using Volo.Abp.Domain.Entities; namespace Shentun.Peis.ColumnReferences { @@ -39,6 +42,8 @@ namespace Shentun.Peis.ColumnReferences private readonly IRepository _columnReferenceCodeRepository; private readonly IRepository _columnReferenceInterfaceRepository; private readonly ColumnReferenceManager _manager; + private readonly ColumnReferenceCodeManager _columnReferenceCodeManager; + private readonly ColumnReferenceInterfaceManager _columnReferenceInterfaceManager; private readonly CacheService _cacheService; private readonly IRepository _userRepository; @@ -48,7 +53,9 @@ namespace Shentun.Peis.ColumnReferences CacheService cacheService, IRepository userRepository, IRepository columnReferenceCodeRepository, - IRepository columnReferenceInterfaceRepository + IRepository columnReferenceInterfaceRepository, + ColumnReferenceCodeManager columnReferenceCodeManager, + ColumnReferenceInterfaceManager columnReferenceInterfaceManager ) { _repository = repository; @@ -57,6 +64,8 @@ namespace Shentun.Peis.ColumnReferences _userRepository = userRepository; _columnReferenceCodeRepository = columnReferenceCodeRepository; _columnReferenceInterfaceRepository = columnReferenceInterfaceRepository; + _columnReferenceCodeManager = columnReferenceCodeManager; + _columnReferenceInterfaceManager = columnReferenceInterfaceManager; } @@ -182,6 +191,47 @@ namespace Shentun.Peis.ColumnReferences await _manager.UpdateSortManyAsync(input); } /// + /// 跟新字段对照 + /// + /// + /// + public async Task UpdateInterfaceCodeValuesAsync(UpdateColumnReferenceInterfaceDto input) + { + var columnReferenceCode = await _columnReferenceCodeRepository.FindAsync(o => o.ColumnReferenceId == input.ColumnReferenceId && + o.CodeValue == input.AppCode.CodeValue); + + if (columnReferenceCode == null) + { + //新建 + columnReferenceCode = await _columnReferenceCodeManager.CreateAsync(new ColumnReferenceCode() + { + ColumnReferenceId = input.ColumnReferenceId, + CodeValue = input.AppCode.CodeValue + }); + columnReferenceCode = await _columnReferenceCodeRepository.InsertAsync(columnReferenceCode); + + } + else + { + //更新 + //先删除所有接口编码 + var columnReferenceInterfacs = await _columnReferenceInterfaceRepository.GetListAsync(o => o.ColumnReferenceCodeId == columnReferenceCode.Id); + await _columnReferenceInterfaceRepository.DeleteManyAsync(columnReferenceInterfacs); + + + } + //插入接口表数据 + foreach (var columnReferenceInterfaceDto in input.InterfaceCodes) + { + var columnReferenceInterface = await _columnReferenceInterfaceManager.CreateAsync(new ColumnReferenceInterface() + { + ColumnReferenceCodeId = columnReferenceCode.Id, + InterfaceCodeValue = columnReferenceInterfaceDto.CodeValue + }); + await _columnReferenceInterfaceRepository.InsertAsync(columnReferenceInterface); + } + } + /// ///获取字段对照本系统所有列名 /// /// diff --git a/src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCode.cs b/src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCode.cs index 2f65ff2..643161a 100644 --- a/src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCode.cs +++ b/src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCode.cs @@ -18,7 +18,8 @@ namespace Shentun.Peis.Models [Table("column_reference_code")] public class ColumnReferenceCode : AuditedEntity, IHasConcurrencyStamp { - + public ColumnReferenceCode() { } + public ColumnReferenceCode(Guid id):base(id) { } /// /// 字段对照主表ID /// diff --git a/src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCodeManager.cs b/src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCodeManager.cs new file mode 100644 index 0000000..c03f10a --- /dev/null +++ b/src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCodeManager.cs @@ -0,0 +1,67 @@ +using Shentun.Peis.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Domain.Services; + +namespace Shentun.Peis.ColumnReferenceCodes +{ + public class ColumnReferenceCodeManager : DomainService + { + private readonly IRepository _repository; + private readonly IRepository _columnReferenceInterfaceRepository; + public ColumnReferenceCodeManager( + IRepository repository, + IRepository columnReferenceInterfaceRepository + ) + { + _repository = repository; + _columnReferenceInterfaceRepository = columnReferenceInterfaceRepository; + } + + /// + /// 创建 + /// + /// + /// + public async Task CreateAsync( + ColumnReferenceCode entity + ) + { + DataHelper.CheckEntityIsNull(entity); + + return new ColumnReferenceCode( + GuidGenerator.Create() + ) + { + ColumnReferenceId = entity.ColumnReferenceId, + CodeValue = entity.CodeValue, + FilterCodeValue = entity.FilterCodeValue, + + }; + } + + public async Task UpdateAsync( + ColumnReferenceCode sourceEntity, + ColumnReferenceCode targetEntity + ) + { + DataHelper.CheckEntityIsNull(sourceEntity); + DataHelper.CheckEntityIsNull(targetEntity); + + targetEntity.CodeValue = sourceEntity.CodeValue; + targetEntity.FilterCodeValue = sourceEntity.FilterCodeValue; + } + + public async Task CheckAndDeleteAsync(ColumnReferenceCode entity) + { + var columnReferenceInterfaces = await _columnReferenceInterfaceRepository.GetListAsync(o => o.ColumnReferenceCodeId == entity.Id); + await _columnReferenceInterfaceRepository.DeleteManyAsync(columnReferenceInterfaces); + await _repository.DeleteAsync(entity); + + } + } +} diff --git a/src/Shentun.Peis.Domain/ColumnReferenceInterfaces/ColumnReferenceInterface.cs b/src/Shentun.Peis.Domain/ColumnReferenceInterfaces/ColumnReferenceInterface.cs index 7a0628e..330a404 100644 --- a/src/Shentun.Peis.Domain/ColumnReferenceInterfaces/ColumnReferenceInterface.cs +++ b/src/Shentun.Peis.Domain/ColumnReferenceInterfaces/ColumnReferenceInterface.cs @@ -16,7 +16,8 @@ namespace Shentun.Peis.Models [Table("column_reference_interface")] public class ColumnReferenceInterface : AuditedEntity, IHasConcurrencyStamp { - + public ColumnReferenceInterface() { } + public ColumnReferenceInterface(Guid id):base(id) { } /// /// 字段对照本系统编码表ID /// diff --git a/src/Shentun.Peis.Domain/ColumnReferenceInterfaces/ColumnReferenceInterfaceManager.cs b/src/Shentun.Peis.Domain/ColumnReferenceInterfaces/ColumnReferenceInterfaceManager.cs new file mode 100644 index 0000000..08cdcb8 --- /dev/null +++ b/src/Shentun.Peis.Domain/ColumnReferenceInterfaces/ColumnReferenceInterfaceManager.cs @@ -0,0 +1,61 @@ +using Shentun.Peis.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Domain.Services; + +namespace Shentun.Peis.ColumnReferenceInterfaces +{ + public class ColumnReferenceInterfaceManager : DomainService + { + private readonly IRepository _repository; + public ColumnReferenceInterfaceManager( + IRepository repository + ) + { + _repository = repository; + } + + /// + /// 创建 + /// + /// + /// + public async Task CreateAsync( + ColumnReferenceInterface entity + ) + { + DataHelper.CheckEntityIsNull(entity); + + return new ColumnReferenceInterface( + GuidGenerator.Create() + ) + { + ColumnReferenceCodeId = entity.ColumnReferenceCodeId, + InterfaceCodeValue = entity.InterfaceCodeValue + + }; + } + + public async Task UpdateAsync( + ColumnReferenceInterface sourceEntity, + ColumnReferenceInterface targetEntity + ) + { + DataHelper.CheckEntityIsNull(sourceEntity); + DataHelper.CheckEntityIsNull(targetEntity); + + targetEntity.InterfaceCodeValue = sourceEntity.InterfaceCodeValue; + } + + public async Task CheckAndDeleteAsync(ColumnReferenceInterface entity) + { + + await _repository.DeleteAsync(entity); + + } + } +} diff --git a/test/Shentun.Peis.Application.Tests/ColumnReferenceAppServiceTest.cs b/test/Shentun.Peis.Application.Tests/ColumnReferenceAppServiceTest.cs index 105f9f9..ce74d7c 100644 --- a/test/Shentun.Peis.Application.Tests/ColumnReferenceAppServiceTest.cs +++ b/test/Shentun.Peis.Application.Tests/ColumnReferenceAppServiceTest.cs @@ -28,7 +28,7 @@ namespace Shentun.Peis } [Fact] - public async Task GetAppColumnNames() + public async Task GetAppColumns() { using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) { @@ -52,7 +52,7 @@ namespace Shentun.Peis } [Fact] - public async Task GetInterfaceColumnNames() + public async Task GetInterfaceColumns() { using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) {