This commit is contained in:
2023-05-31 10:19:05 +08:00
parent 1b65a7a9e5
commit 9c621c75cd
238 changed files with 9905 additions and 4034 deletions

View File

@@ -1,11 +1,7 @@
using System.ArrayExtensions;
using System.Collections;
using System.ComponentModel.DataAnnotations.Schema;
using System.Collections;
using System.Data;
using System.Text;
using System.Text.RegularExpressions;
using JNPF.Common.Configuration;
using JNPF.Common.Contracts;
using JNPF.Common.Core.Manager;
using JNPF.Common.Core.Manager.Files;
using JNPF.Common.Dtos.DataBase;
@@ -26,8 +22,6 @@ using Mapster;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using NPOI.SS.Formula.Functions;
using Org.BouncyCastle.Asn1.Cms;
using SqlSugar;
namespace JNPF.Systems;
@@ -101,30 +95,41 @@ public class DataBaseService : IDynamicApiController, ITransient
/// <param name="input">过滤条件.</param>
/// <returns></returns>
[HttpGet("{id}/Tables")]
public async Task<dynamic> GetList(string id, [FromQuery] KeywordInput input)
public async Task<dynamic> GetList(string id, [FromQuery] PageInputBase 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))
try
{
var keyword = input.keyword.ToLower();
tables = tables.FindAll(d => d.table.ToLower().Contains(keyword) || (d.tableName.IsNotEmptyOrNull() && d.tableName.ToLower().Contains(keyword)));
var link = await _dbLinkService.GetInfo(id);
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
var tables = _dataBaseManager.GetTableInfos(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))
output = output.FindAll(d => d.table.ToLower().Contains(input.keyword.ToLower()) || (d.tableName.IsNotEmptyOrNull() && d.tableName.ToLower().Contains(input.keyword.ToLower())));
return PageResult<DatabaseTableListOutput>.SqlSugarPageResult(new SqlSugarPagedList<DatabaseTableListOutput>()
{
list = output.OrderBy(x => x.table).Skip((input.currentPage - 1) * input.pageSize).Take(input.pageSize).OrderBy(x => x.table).ToList(),
pagination = new Pagination()
{
CurrentPage = input.currentPage,
PageSize = input.pageSize,
Total = output.Count
}
});
}
if (tenantLink.DbType.ToLower().Equals("dm"))
catch (Exception ex)
{
GetTableCount(tables, tenantLink);
return PageResult<DatabaseTableListOutput>.SqlSugarPageResult(new SqlSugarPagedList<DatabaseTableListOutput>()
{
list = new List<DatabaseTableListOutput>(),
pagination = new Pagination()
{
CurrentPage = input.currentPage,
PageSize = input.pageSize,
Total = 0
}
});
}
return new { list = tables.OrderBy(x => x.table).ToList() };
//try
//{
//}
//catch (Exception ex)
//{
// return new { list = new List<DatabaseTableListOutput>() };
//}
}
/// <summary>
@@ -186,8 +191,7 @@ public class DataBaseService : IDynamicApiController, ITransient
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;
output.hasTableData = _dataBaseManager.IsAnyData(tenantLink, tableName);
return output;
}
@@ -262,6 +266,8 @@ public class DataBaseService : IDynamicApiController, ITransient
var tenantLink = link ?? _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
if (_dataBaseManager.IsAnyTable(tenantLink, input.tableInfo.newTable))
throw Oops.Oh(ErrorCode.D1503);
if (input.tableInfo.newTable.Length >= 30) throw Oops.Oh(ErrorCode.D1514);
if (input.tableFieldList.Any(x => x.field.Length >= 30)) throw Oops.Oh(ErrorCode.D1515);
var tableInfo = input.tableInfo.Adapt<DbTableModel>();
tableInfo.table = input.tableInfo.newTable;
var tableFieldList = input.tableFieldList.Adapt<List<DbTableFieldModel>>();
@@ -280,10 +286,12 @@ public class DataBaseService : IDynamicApiController, ITransient
public async Task Update(string linkId, [FromBody] DatabaseTableUpInput input)
{
var link = await _dbLinkService.GetInfo(linkId);
if (input.tableInfo.newTable.Length >= 30) throw Oops.Oh(ErrorCode.D1514);
if (input.tableFieldList.Any(x => x.field.Length >= 30)) throw Oops.Oh(ErrorCode.D1515);
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 oldTableInfo = _dataBaseManager.GetTableInfos(tenantLink).Find(m => m.Name == input.tableInfo.table).Adapt<DbTableModel>();
var data = _dataBaseManager.GetData(tenantLink, input.tableInfo.table);
if (data.Rows.Count > 0)
throw Oops.Oh(ErrorCode.D1508);
@@ -313,6 +321,7 @@ public class DataBaseService : IDynamicApiController, ITransient
{
try
{
if (input.tableFieldList.Any(x => x.field.Length >= 30)) throw Oops.Oh(ErrorCode.D1515);
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>>());
@@ -631,7 +640,7 @@ public class DataBaseService : IDynamicApiController, ITransient
{"tool_", "Tnb.EquipMgr.Entities" },
{"qc_", "Tnb.QcMgr.Entities" },
};
var allTables = sugar.DbMaintenance.GetTableInfoList().WhereIF(!string.IsNullOrEmpty(tbName), t=>t.Name == tbName);
var allTables = sugar.DbMaintenance.GetTableInfoList().WhereIF(!string.IsNullOrEmpty(tbName), t => t.Name == tbName);
foreach (var tbl in allTables)
{
var prefix = tbl.Name.Split('_')[0] + "_";