Browse Source

字段对照

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
e4487f8941
  1. 67
      src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs
  2. 25
      src/Shentun.Peis.Application.Contracts/ColumnReferences/UpdateColumnReferenceInterfaceDto.cs
  3. 52
      src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs
  4. 3
      src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCode.cs
  5. 67
      src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCodeManager.cs
  6. 3
      src/Shentun.Peis.Domain/ColumnReferenceInterfaces/ColumnReferenceInterface.cs
  7. 61
      src/Shentun.Peis.Domain/ColumnReferenceInterfaces/ColumnReferenceInterfaceManager.cs
  8. 4
      test/Shentun.Peis.Application.Tests/ColumnReferenceAppServiceTest.cs

67
src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs

@ -19,8 +19,8 @@ namespace Shentun.Peis.PlugIns
protected IConfiguration InterfaceConfig;
protected string? ConnctionStr;
protected string AppSql;
private List<ColumnReferenceColumn> _columnNames;
private List<ColumnReferenceColumn> _interfaceColumnNames;
private List<ColumnReferenceColumn> _columns;
private List<ColumnReferenceColumn> _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<ColumnReferenceColumn>();
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<ColumnReferenceColumn>();
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<ColumnReferenceColumn>();
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<ColumnReferenceColumn>();
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<ColumnReferenceColumn> GetAppColumns()
{
if (_columnNames == null || _columnNames.Count() == 0)
if (_columns == null || _columns.Count() == 0)
{
return new List<ColumnReferenceColumn>()
{
@ -90,13 +97,13 @@ namespace Shentun.Peis.PlugIns
};
}
return _columnNames;
return _columns;
}
public virtual List<ColumnReferenceColumn> GetInterfaceColumns()
{
if (_interfaceColumnNames == null || _interfaceColumnNames.Count() == 0)
if (_interfaceColumns == null || _interfaceColumns.Count() == 0)
{
return new List<ColumnReferenceColumn>()
{
@ -113,7 +120,7 @@ namespace Shentun.Peis.PlugIns
};
}
return _interfaceColumnNames;
return _interfaceColumns;
}
public virtual async Task<List<ColumnReferenceCodeValue>> GetAppCodeValuesAsync()
{

25
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
{
/// <summary>
/// 主键ID
/// </summary>
public Guid ColumnReferenceId { get; set; }
public UpdateColumnReferenceCodeDto AppCode { get; set; }
public List<UpdateColumnReferenceInterfaceCodeDto> InterfaceCodes { get; set; }
}
public class UpdateColumnReferenceCodeDto
{
public string CodeValue { get; set; }
}
public class UpdateColumnReferenceInterfaceCodeDto
{
public string CodeValue { get; set; }
}
}

52
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<ColumnReferenceCode, Guid> _columnReferenceCodeRepository;
private readonly IRepository<ColumnReferenceInterface, Guid> _columnReferenceInterfaceRepository;
private readonly ColumnReferenceManager _manager;
private readonly ColumnReferenceCodeManager _columnReferenceCodeManager;
private readonly ColumnReferenceInterfaceManager _columnReferenceInterfaceManager;
private readonly CacheService _cacheService;
private readonly IRepository<IdentityUser, Guid> _userRepository;
@ -48,7 +53,9 @@ namespace Shentun.Peis.ColumnReferences
CacheService cacheService,
IRepository<IdentityUser, Guid> userRepository,
IRepository<ColumnReferenceCode, Guid> columnReferenceCodeRepository,
IRepository<ColumnReferenceInterface, Guid> columnReferenceInterfaceRepository
IRepository<ColumnReferenceInterface, Guid> 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);
}
/// <summary>
/// 跟新字段对照
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
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);
}
}
/// <summary>
///获取字段对照本系统所有列名
/// </summary>
/// <param name="input"></param>

3
src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCode.cs

@ -18,7 +18,8 @@ namespace Shentun.Peis.Models
[Table("column_reference_code")]
public class ColumnReferenceCode : AuditedEntity<Guid>, IHasConcurrencyStamp
{
public ColumnReferenceCode() { }
public ColumnReferenceCode(Guid id):base(id) { }
/// <summary>
/// 字段对照主表ID
/// </summary>

67
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<ColumnReferenceCode, Guid> _repository;
private readonly IRepository<ColumnReferenceInterface, Guid> _columnReferenceInterfaceRepository;
public ColumnReferenceCodeManager(
IRepository<ColumnReferenceCode, Guid> repository,
IRepository<ColumnReferenceInterface, Guid> columnReferenceInterfaceRepository
)
{
_repository = repository;
_columnReferenceInterfaceRepository = columnReferenceInterfaceRepository;
}
/// <summary>
/// 创建
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public async Task<ColumnReferenceCode> 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);
}
}
}

3
src/Shentun.Peis.Domain/ColumnReferenceInterfaces/ColumnReferenceInterface.cs

@ -16,7 +16,8 @@ namespace Shentun.Peis.Models
[Table("column_reference_interface")]
public class ColumnReferenceInterface : AuditedEntity<Guid>, IHasConcurrencyStamp
{
public ColumnReferenceInterface() { }
public ColumnReferenceInterface(Guid id):base(id) { }
/// <summary>
/// 字段对照本系统编码表ID
/// </summary>

61
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<ColumnReferenceInterface, Guid> _repository;
public ColumnReferenceInterfaceManager(
IRepository<ColumnReferenceInterface, Guid> repository
)
{
_repository = repository;
}
/// <summary>
/// 创建
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public async Task<ColumnReferenceInterface> 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);
}
}
}

4
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))
{

Loading…
Cancel
Save