调整进入getKeyData的判断条件

This commit is contained in:
DEVICE8\12494
2023-04-07 17:13:11 +08:00
parent 9d85cceab6
commit adba94e833
3 changed files with 354 additions and 319 deletions

View File

@@ -1,6 +1,7 @@
using System.Collections;
using System.Data;
using System.Text;
using System.Text.RegularExpressions;
using JNPF.Common.Configuration;
using JNPF.Common.Core.Manager;
using JNPF.Common.Core.Manager.Files;
@@ -35,295 +36,295 @@ namespace JNPF.Systems;
[Route("api/system/[controller]")]
public class DataBaseService : IDynamicApiController, ITransient
{
/// <summary>
/// 服务基础仓储.
/// </summary>
public readonly ISqlSugarRepository<DbLinkEntity> _repository;
/// <summary>
/// 服务基础仓储.
/// </summary>
public readonly ISqlSugarRepository<DbLinkEntity> _repository;
/// <summary>
/// 数据连接服务.
/// </summary>
private readonly IDbLinkService _dbLinkService;
/// <summary>
/// 数据连接服务.
/// </summary>
private readonly IDbLinkService _dbLinkService;
/// <summary>
/// 文件服务.
/// </summary>
private readonly IFileManager _fileManager;
/// <summary>
/// 文件服务.
/// </summary>
private readonly IFileManager _fileManager;
/// <summary>
/// 数据库管理.
/// </summary>
private readonly IDataBaseManager _dataBaseManager;
/// <summary>
/// 数据库管理.
/// </summary>
private readonly IDataBaseManager _dataBaseManager;
/// <summary>
/// 用户管理.
/// </summary>
private readonly IUserManager _userManager;
/// <summary>
/// 用户管理.
/// </summary>
private readonly IUserManager _userManager;
/// <summary>
/// 初始化一个<see cref="DataBaseService"/>类型的新实例.
/// </summary>
public DataBaseService(
ISqlSugarRepository<DbLinkEntity> repository,
IDbLinkService dbLinkService,
IFileManager fileManager,
IDataBaseManager dataBaseManager,
IUserManager userManager)
{
_repository = repository;
_dbLinkService = dbLinkService;
_fileManager = fileManager;
_dataBaseManager = dataBaseManager;
_userManager = userManager;
}
#region GET
/// <summary>
/// 表名列表.
/// </summary>
/// <param name="id">连接Id.</param>
/// <param name="input">过滤条件.</param>
/// <returns></returns>
[HttpGet("{id}/Tables")]
public async Task<dynamic> GetList(string id, [FromQuery] KeywordInput input)
{
var link = await _dbLinkService.GetInfo(id);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var tables = _dataBaseManager.GetDBTableList(tenantLink);
//tables = tables.Where((x, i) => tables.FindIndex(z => z.Name == x.Name) == i).ToList();
//var output = tables.Adapt<List<DatabaseTableListOutput>>();
if (!string.IsNullOrEmpty(input.keyword))
tables = tables.FindAll(d => d.table.ToLower().Contains(input.keyword.ToLower()) || (d.tableName.IsNotEmptyOrNull() && d.tableName.ToLower().Contains(input.keyword.ToLower())));
if (tenantLink.DbType.ToLower().Equals("dm"))
/// <summary>
/// 初始化一个<see cref="DataBaseService"/>类型的新实例.
/// </summary>
public DataBaseService(
ISqlSugarRepository<DbLinkEntity> repository,
IDbLinkService dbLinkService,
IFileManager fileManager,
IDataBaseManager dataBaseManager,
IUserManager userManager)
{
GetTableCount(tables, tenantLink);
}
return new { list = tables.OrderBy(x => x.table).ToList() };
//try
//{
//}
//catch (Exception ex)
//{
// return new { list = new List<DatabaseTableListOutput>() };
//}
}
/// <summary>
/// 预览数据.
/// </summary>
/// <param name="input">请求参数.</param>
/// <param name="linkId">连接Id.</param>
/// <param name="tableName">表名.</param>
/// <returns></returns>
[HttpGet("{linkId}/Table/{tableName}/Preview")]
public async Task<dynamic> GetData([FromQuery] DatabaseTablePreviewQuery input, string linkId, string tableName)
{
var link = await _dbLinkService.GetInfo(linkId);
if (string.IsNullOrEmpty(tableName)) return new PageResult();
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
StringBuilder dbSql = new StringBuilder();
dbSql.AppendFormat("SELECT * FROM {0} WHERE 1=1", tableName);
if (!string.IsNullOrEmpty(input.field) && !string.IsNullOrEmpty(input.keyword))
dbSql.AppendFormat(" AND {0} like '%{1}%'", input.field, input.keyword);
return await _dataBaseManager.GetDataTablePage(tenantLink, dbSql.ToString(), input.currentPage, input.pageSize);
}
/// <summary>
/// 字段列表.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="tableName">表名.</param>
/// <param name="type">字段类型.</param>
/// <returns></returns>
[HttpGet("{linkId}/Tables/{tableName}/Fields")]
public async Task<dynamic> GetFieldList(string linkId, string tableName, [FromQuery] string type)
{
var link = await _dbLinkService.GetInfo(linkId);
if (string.IsNullOrEmpty(tableName)) return new PageResult();
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var data = _dataBaseManager.GetFieldList(tenantLink, tableName).Adapt<List<TableFieldOutput>>();
if (type.Equals("1"))
{
data.ForEach(item =>
{
item.field = item.field.ReplaceRegex("^f_", string.Empty).ParseToPascalCase().ToLowerCase();
});
_repository = repository;
_dbLinkService = dbLinkService;
_fileManager = fileManager;
_dataBaseManager = dataBaseManager;
_userManager = userManager;
}
return new { list = data };
}
#region GET
/// <summary>
/// 信息.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="tableName">主键值.</param>
/// <returns></returns>
[HttpGet("{linkId}/Table/{tableName}")]
public async Task<dynamic> GetInfo(string linkId, string tableName)
{
var link = await _dbLinkService.GetInfo(linkId);
if (string.IsNullOrEmpty(tableName)) return new PageResult();
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var output = _dataBaseManager.GetDataBaseTableInfo(tenantLink, tableName);
var data = _dataBaseManager.GetData(tenantLink, tableName);
output.hasTableData = data.Rows.Count > 0;
return output;
}
/// <summary>
/// 获取数据库表字段下拉框列表(弃用).
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="tableName">表名.</param>
/// <returns></returns>
[HttpGet("{linkId}/Tables/{tableName}/Fields/Selector")]
public async Task<dynamic> SelectorData(string linkId, string tableName)
{
var link = await _dbLinkService.GetInfo(linkId);
if (string.IsNullOrEmpty(tableName)) return new PageResult();
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var data = _dataBaseManager.GetDBTableList(tenantLink).FindAll(m => m.table == tableName).Adapt<List<DatabaseTableFieldsSelectorOutput>>();
return new { list = data };
}
/// <summary>
/// 导出.
/// </summary>
/// <param name="linkId">连接ID.</param>
/// <param name="tableName">表名称.</param>
/// <returns></returns>
[HttpGet("{linkId}/Table/{tableName}/Action/Export")]
public async Task<dynamic> ActionsExport(string linkId, string tableName)
{
var link = await _dbLinkService.GetInfo(linkId);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var data = _dataBaseManager.GetDataBaseTableInfo(tenantLink, tableName);
var jsonStr = data.ToJsonString();
return await _fileManager.Export(jsonStr, data.tableInfo.table, ExportFileType.bdb);
}
#endregion
#region POST
/// <summary>
/// 删除.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="tableName">表名.</param>
/// <returns></returns>
[HttpDelete("{linkId}/Table/{tableName}")]
[UnitOfWork]
public async Task Delete(string linkId, string tableName)
{
if (IsSysTable(tableName))
throw Oops.Oh(ErrorCode.D1504);
var link = await _dbLinkService.GetInfo(linkId);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var data = _dataBaseManager.GetData(tenantLink, tableName);
if (data.Rows.Count > 0)
throw Oops.Oh(ErrorCode.D1508);
if (!_dataBaseManager.Delete(tenantLink, tableName))
throw Oops.Oh(ErrorCode.D1500);
}
/// <summary>
/// 新建.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="input">请求参数.</param>
/// <returns></returns>
[HttpPost("{linkId}/Table")]
[UnitOfWork]
public async Task Create(string linkId, [FromBody] DatabaseTableInfoOutput input)
{
var link = await _dbLinkService.GetInfo(linkId);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
if (_dataBaseManager.IsAnyTable(tenantLink, input.tableInfo.newTable))
throw Oops.Oh(ErrorCode.D1503);
var tableInfo = input.tableInfo.Adapt<DbTableModel>();
tableInfo.table = input.tableInfo.newTable;
var tableFieldList = input.tableFieldList.Adapt<List<DbTableFieldModel>>();
if (!await _dataBaseManager.Create(tenantLink, tableInfo, tableFieldList))
throw Oops.Oh(ErrorCode.D1501);
}
/// <summary>
/// 更新.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="input">请求参数.</param>
/// <returns></returns>
[HttpPut("{linkId}/Table")]
[UnitOfWork]
public async Task Update(string linkId, [FromBody] DatabaseTableUpInput input)
{
var link = await _dbLinkService.GetInfo(linkId);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var oldFieldList = _dataBaseManager.GetFieldList(tenantLink, input.tableInfo.table).Adapt<List<TableFieldOutput>>();
oldFieldList = _dataBaseManager.ViewDataTypeConversion(oldFieldList, _dataBaseManager.ToDbType(tenantLink.DbType));
var oldTableInfo = _dataBaseManager.GetDBTableList(tenantLink).Find(m => m.table == input.tableInfo.table).Adapt<DbTableModel>();
var data = _dataBaseManager.GetData(tenantLink, input.tableInfo.table);
if (data.Rows.Count > 0)
throw Oops.Oh(ErrorCode.D1508);
var tableInfo = input.tableInfo.Adapt<DbTableModel>();
tableInfo.table = input.tableInfo.newTable;
if (IsSysTable(tableInfo.table))
throw Oops.Oh(ErrorCode.D1504);
var tableFieldList = input.tableFieldList.Adapt<List<DbTableFieldModel>>();
if (!input.tableInfo.table.Equals(input.tableInfo.newTable) && _dataBaseManager.IsAnyTable(tenantLink, input.tableInfo.newTable))
throw Oops.Oh(ErrorCode.D1503);
if (!await _dataBaseManager.Update(tenantLink, input.tableInfo.table, tableInfo, tableFieldList))
/// <summary>
/// 表名列表.
/// </summary>
/// <param name="id">连接Id.</param>
/// <param name="input">过滤条件.</param>
/// <returns></returns>
[HttpGet("{id}/Tables")]
public async Task<dynamic> GetList(string id, [FromQuery] KeywordInput input)
{
await _dataBaseManager.Create(tenantLink, oldTableInfo, oldFieldList.Adapt<List<DbTableFieldModel>>());
throw Oops.Oh(ErrorCode.D1502);
var link = await _dbLinkService.GetInfo(id);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var tables = _dataBaseManager.GetDBTableList(tenantLink);
//tables = tables.Where((x, i) => tables.FindIndex(z => z.Name == x.Name) == i).ToList();
//var output = tables.Adapt<List<DatabaseTableListOutput>>();
if (!string.IsNullOrEmpty(input.keyword))
tables = tables.FindAll(d => d.table.ToLower().Contains(input.keyword.ToLower()) || (d.tableName.IsNotEmptyOrNull() && d.tableName.ToLower().Contains(input.keyword.ToLower())));
if (tenantLink.DbType.ToLower().Equals("dm"))
{
GetTableCount(tables, tenantLink);
}
return new { list = tables.OrderBy(x => x.table).ToList() };
//try
//{
//}
//catch (Exception ex)
//{
// return new { list = new List<DatabaseTableListOutput>() };
//}
}
}
/// <summary>
/// 更新.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="input">请求参数.</param>
/// <returns></returns>
[HttpPut("{linkId}/addFields")]
[UnitOfWork]
public async Task AddFields(string linkId, [FromBody] DatabaseTableUpInput input)
{
try
/// <summary>
/// 预览数据.
/// </summary>
/// <param name="input">请求参数.</param>
/// <param name="linkId">连接Id.</param>
/// <param name="tableName">表名.</param>
/// <returns></returns>
[HttpGet("{linkId}/Table/{tableName}/Preview")]
public async Task<dynamic> GetData([FromQuery] DatabaseTablePreviewQuery input, string linkId, string tableName)
{
var link = await _dbLinkService.GetInfo(linkId);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
_dataBaseManager.AddTableColumn(tenantLink, input.tableInfo.table, input.tableFieldList.Adapt<List<DbTableFieldModel>>());
}
catch (Exception ex)
{
throw Oops.Oh(ErrorCode.D1510);
}
}
var link = await _dbLinkService.GetInfo(linkId);
if (string.IsNullOrEmpty(tableName)) return new PageResult();
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
StringBuilder dbSql = new StringBuilder();
dbSql.AppendFormat("SELECT * FROM {0} WHERE 1=1", tableName);
if (!string.IsNullOrEmpty(input.field) && !string.IsNullOrEmpty(input.keyword))
dbSql.AppendFormat(" AND {0} like '%{1}%'", input.field, input.keyword);
/// <summary>
/// 导入.
/// </summary>
/// <param name="linkid"></param>
/// <param name="file"></param>
/// <returns></returns>
[HttpPost("{linkid}/Action/Import")]
public async Task ActionsImport(string linkid, IFormFile file)
{
var fileType = Path.GetExtension(file.FileName).Replace(".", string.Empty);
if (!fileType.ToLower().Equals(ExportFileType.bdb.ToString()))
throw Oops.Oh(ErrorCode.D3006);
var josn = _fileManager.Import(file);
var data = josn.ToObject<DatabaseTableInfoOutput>();
if (data == null || data.tableFieldList == null || data.tableInfo == null)
throw Oops.Oh(ErrorCode.D3006);
data.tableInfo.newTable = data.tableInfo.table;
await Create(linkid, data);
}
return await _dataBaseManager.GetDataTablePage(tenantLink, dbSql.ToString(), input.currentPage, input.pageSize);
}
/// <summary>
/// 字段列表.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="tableName">表名.</param>
/// <param name="type">字段类型.</param>
/// <returns></returns>
[HttpGet("{linkId}/Tables/{tableName}/Fields")]
public async Task<dynamic> GetFieldList(string linkId, string tableName, [FromQuery] string type)
{
var link = await _dbLinkService.GetInfo(linkId);
if (string.IsNullOrEmpty(tableName)) return new PageResult();
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var data = _dataBaseManager.GetFieldList(tenantLink, tableName).Adapt<List<TableFieldOutput>>();
if (type.Equals("1"))
{
data.ForEach(item =>
{
item.field = item.field.ReplaceRegex("^f_", string.Empty).ParseToPascalCase().ToLowerCase();
});
}
return new { list = data };
}
/// <summary>
/// 信息.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="tableName">主键值.</param>
/// <returns></returns>
[HttpGet("{linkId}/Table/{tableName}")]
public async Task<dynamic> GetInfo(string linkId, string tableName)
{
var link = await _dbLinkService.GetInfo(linkId);
if (string.IsNullOrEmpty(tableName)) return new PageResult();
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var output = _dataBaseManager.GetDataBaseTableInfo(tenantLink, tableName);
var data = _dataBaseManager.GetData(tenantLink, tableName);
output.hasTableData = data.Rows.Count > 0;
return output;
}
/// <summary>
/// 获取数据库表字段下拉框列表(弃用).
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="tableName">表名.</param>
/// <returns></returns>
[HttpGet("{linkId}/Tables/{tableName}/Fields/Selector")]
public async Task<dynamic> SelectorData(string linkId, string tableName)
{
var link = await _dbLinkService.GetInfo(linkId);
if (string.IsNullOrEmpty(tableName)) return new PageResult();
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var data = _dataBaseManager.GetDBTableList(tenantLink).FindAll(m => m.table == tableName).Adapt<List<DatabaseTableFieldsSelectorOutput>>();
return new { list = data };
}
/// <summary>
/// 导出.
/// </summary>
/// <param name="linkId">连接ID.</param>
/// <param name="tableName">表名称.</param>
/// <returns></returns>
[HttpGet("{linkId}/Table/{tableName}/Action/Export")]
public async Task<dynamic> ActionsExport(string linkId, string tableName)
{
var link = await _dbLinkService.GetInfo(linkId);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var data = _dataBaseManager.GetDataBaseTableInfo(tenantLink, tableName);
var jsonStr = data.ToJsonString();
return await _fileManager.Export(jsonStr, data.tableInfo.table, ExportFileType.bdb);
}
#endregion
#region POST
/// <summary>
/// 删除.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="tableName">表名.</param>
/// <returns></returns>
[HttpDelete("{linkId}/Table/{tableName}")]
[UnitOfWork]
public async Task Delete(string linkId, string tableName)
{
if (IsSysTable(tableName))
throw Oops.Oh(ErrorCode.D1504);
var link = await _dbLinkService.GetInfo(linkId);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var data = _dataBaseManager.GetData(tenantLink, tableName);
if (data.Rows.Count > 0)
throw Oops.Oh(ErrorCode.D1508);
if (!_dataBaseManager.Delete(tenantLink, tableName))
throw Oops.Oh(ErrorCode.D1500);
}
/// <summary>
/// 新建.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="input">请求参数.</param>
/// <returns></returns>
[HttpPost("{linkId}/Table")]
[UnitOfWork]
public async Task Create(string linkId, [FromBody] DatabaseTableInfoOutput input)
{
var link = await _dbLinkService.GetInfo(linkId);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
if (_dataBaseManager.IsAnyTable(tenantLink, input.tableInfo.newTable))
throw Oops.Oh(ErrorCode.D1503);
var tableInfo = input.tableInfo.Adapt<DbTableModel>();
tableInfo.table = input.tableInfo.newTable;
var tableFieldList = input.tableFieldList.Adapt<List<DbTableFieldModel>>();
if (!await _dataBaseManager.Create(tenantLink, tableInfo, tableFieldList))
throw Oops.Oh(ErrorCode.D1501);
}
/// <summary>
/// 更新.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="input">请求参数.</param>
/// <returns></returns>
[HttpPut("{linkId}/Table")]
[UnitOfWork]
public async Task Update(string linkId, [FromBody] DatabaseTableUpInput input)
{
var link = await _dbLinkService.GetInfo(linkId);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var oldFieldList = _dataBaseManager.GetFieldList(tenantLink, input.tableInfo.table).Adapt<List<TableFieldOutput>>();
oldFieldList = _dataBaseManager.ViewDataTypeConversion(oldFieldList, _dataBaseManager.ToDbType(tenantLink.DbType));
var oldTableInfo = _dataBaseManager.GetDBTableList(tenantLink).Find(m => m.table == input.tableInfo.table).Adapt<DbTableModel>();
var data = _dataBaseManager.GetData(tenantLink, input.tableInfo.table);
if (data.Rows.Count > 0)
throw Oops.Oh(ErrorCode.D1508);
var tableInfo = input.tableInfo.Adapt<DbTableModel>();
tableInfo.table = input.tableInfo.newTable;
if (IsSysTable(tableInfo.table))
throw Oops.Oh(ErrorCode.D1504);
var tableFieldList = input.tableFieldList.Adapt<List<DbTableFieldModel>>();
if (!input.tableInfo.table.Equals(input.tableInfo.newTable) && _dataBaseManager.IsAnyTable(tenantLink, input.tableInfo.newTable))
throw Oops.Oh(ErrorCode.D1503);
if (!await _dataBaseManager.Update(tenantLink, input.tableInfo.table, tableInfo, tableFieldList))
{
await _dataBaseManager.Create(tenantLink, oldTableInfo, oldFieldList.Adapt<List<DbTableFieldModel>>());
throw Oops.Oh(ErrorCode.D1502);
}
}
/// <summary>
/// 更新.
/// </summary>
/// <param name="linkId">连接Id.</param>
/// <param name="input">请求参数.</param>
/// <returns></returns>
[HttpPut("{linkId}/addFields")]
[UnitOfWork]
public async Task AddFields(string linkId, [FromBody] DatabaseTableUpInput input)
{
try
{
var link = await _dbLinkService.GetInfo(linkId);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
_dataBaseManager.AddTableColumn(tenantLink, input.tableInfo.table, input.tableFieldList.Adapt<List<DbTableFieldModel>>());
}
catch (Exception ex)
{
throw Oops.Oh(ErrorCode.D1510);
}
}
/// <summary>
/// 导入.
/// </summary>
/// <param name="linkid"></param>
/// <param name="file"></param>
/// <returns></returns>
[HttpPost("{linkid}/Action/Import")]
public async Task ActionsImport(string linkid, IFormFile file)
{
var fileType = Path.GetExtension(file.FileName).Replace(".", string.Empty);
if (!fileType.ToLower().Equals(ExportFileType.bdb.ToString()))
throw Oops.Oh(ErrorCode.D3006);
var josn = _fileManager.Import(file);
var data = josn.ToObject<DatabaseTableInfoOutput>();
if (data == null || data.tableFieldList == null || data.tableInfo == null)
throw Oops.Oh(ErrorCode.D3006);
data.tableInfo.newTable = data.tableInfo.table;
await Create(linkid, data);
}
/// <summary>
/// 清除表数据
@@ -356,7 +357,7 @@ public class DataBaseService : IDynamicApiController, ITransient
/// <exception cref="ArgumentNullException"></exception>
/// <exception cref="ArgumentException"></exception>
[HttpPost("{linkId}/gen-code")]
public async Task<dynamic> GenerateCode(string linkId,DatabaseTableDataCleanInput input)
public async Task<dynamic> GenerateCode(string linkId, DatabaseTableDataCleanInput input)
{
if (input.TableName.IsNullOrWhiteSpace())
{
@@ -387,9 +388,22 @@ public class DataBaseService : IDynamicApiController, ITransient
var pos = 0;
if ((pos = s.IndexOf("_", StringComparison.Ordinal)) > -1)
{
var first = s.AsSpan().Slice(0, pos).ToString().ToUpperCase();
var second = s.AsSpan().Slice(pos + 1).ToString().ToUpperCase();
return $"{first}{second}";
var separatorStrings = Regex.Split(s, @"_", RegexOptions.Compiled);
if (separatorStrings.Length > 2)
{
var sb = new StringBuilder();
foreach (var item in separatorStrings)
{
sb.Append(item.ToUpperCase());
}
return sb.ToString();
}
else
{
var first = s.AsSpan().Slice(0, pos).ToString().ToUpperCase();
var second = s.AsSpan().Slice(pos + 1).ToString().ToUpperCase();
return $"{first}{second}";
}
}
else
{
@@ -433,9 +447,9 @@ public class DataBaseService : IDynamicApiController, ITransient
/// <param name="table"></param>
/// <returns></returns>
private bool IsSysTable(string table)
{
string[] byoTable =
{
string[] byoTable =
{
"base_appdata",
"base_authorize",
"base_billrule",
@@ -576,28 +590,28 @@ public class DataBaseService : IDynamicApiController, ITransient
"wform_warehousereceiptentry",
"wform_workcontactsheet"
};
return ((IList)byoTable).Contains(table.ToLower());
}
/// <summary>
/// 获取表条数.
/// </summary>
/// <param name="tableList"></param>
private void GetTableCount(List<DatabaseTableListOutput> tableList, DbLinkEntity link)
{
var _sqlSugarClient = _dataBaseManager.ChangeDataBase(link);
foreach (var item in tableList)
{
try
{
item.sum = _sqlSugarClient.Queryable<dynamic>().AS(item.table).Count();
}
catch (Exception ex)
{
item.sum = 0;
}
return ((IList)byoTable).Contains(table.ToLower());
}
}
#endregion
/// <summary>
/// 获取表条数.
/// </summary>
/// <param name="tableList"></param>
private void GetTableCount(List<DatabaseTableListOutput> tableList, DbLinkEntity link)
{
var _sqlSugarClient = _dataBaseManager.ChangeDataBase(link);
foreach (var item in tableList)
{
try
{
item.sum = _sqlSugarClient.Queryable<dynamic>().AS(item.table).Count();
}
catch (Exception ex)
{
item.sum = 0;
}
}
}
#endregion
}