部门接口加上扩展属性

This commit is contained in:
2023-04-23 16:43:22 +08:00
parent db3aca5590
commit 3657f83184
7 changed files with 994 additions and 978 deletions

View File

@@ -26,6 +26,7 @@ namespace JNPF.Common.Core.Manager;
/// </summary> /// </summary>
public class DataBaseManager : IDataBaseManager, ITransient public class DataBaseManager : IDataBaseManager, ITransient
{ {
const int PGNAMESPACE = 2200;
/// <summary> /// <summary>
/// 初始化客户端. /// 初始化客户端.
/// </summary> /// </summary>
@@ -513,9 +514,10 @@ WHERE pcolumn.table_name='{0}' ORDER BY ordinal_position";
var dbType = link.DbType; var dbType = link.DbType;
var sql = DBTableSql(dbType); var sql = DBTableSql(dbType);
var modelList = _sqlSugarClient.Ado.SqlQuery<DynamicDbTableModel>(sql).ToList(); //var modelList = _sqlSugarClient.Ado.SqlQuery<DynamicDbTableModel>(sql).ToList();
return modelList.Select(x => new DatabaseTableListOutput { table = x.F_TABLE, tableName = x.F_TABLENAME, sum = x.F_SUM.ParseToInt() }).ToList(); var modelList = _sqlSugarClient.Ado.SqlQuery<DatabaseTableListOutput>(sql).ToList();
//return modelList.Adapt<List<DatabaseTableListOutput>>(); //return modelList.Select(x => new DatabaseTableListOutput { table = x.F_TABLE, tableName = x.F_TABLENAME, sum = x.F_SUM.ParseToInt() }).ToList();
return modelList;
} }
/// <summary> /// <summary>
@@ -824,27 +826,27 @@ WHERE pcolumn.table_name='{0}' ORDER BY ordinal_position";
{ {
case "sqlserver": case "sqlserver":
//sb.Append(@"DECLARE @TABLEINFO TABLE ( NAME VARCHAR(50) , SUMROWS VARCHAR(11) , RESERVED VARCHAR(50) , DATA VARCHAR(50) , INDEX_SIZE VARCHAR(50) , UNUSED VARCHAR(50) , PK VARCHAR(50) ) DECLARE @TABLENAME TABLE ( NAME VARCHAR(50) ) DECLARE @NAME VARCHAR(50) DECLARE @PK VARCHAR(50) INSERT INTO @TABLENAME ( NAME ) SELECT O.NAME FROM SYSOBJECTS O , SYSINDEXES I WHERE O.ID = I.ID AND O.XTYPE = 'U' AND I.INDID < 2 ORDER BY I.ROWS DESC , O.NAME WHILE EXISTS ( SELECT 1 FROM @TABLENAME ) BEGIN SELECT TOP 1 @NAME = NAME FROM @TABLENAME DELETE @TABLENAME WHERE NAME = @NAME DECLARE @OBJECTID INT SET @OBJECTID = OBJECT_ID(@NAME) SELECT @PK = COL_NAME(@OBJECTID, COLID) FROM SYSOBJECTS AS O INNER JOIN SYSINDEXES AS I ON I.NAME = O.NAME INNER JOIN SYSINDEXKEYS AS K ON K.INDID = I.INDID WHERE O.XTYPE = 'PK' AND PARENT_OBJ = @OBJECTID AND K.ID = @OBJECTID INSERT INTO @TABLEINFO ( NAME , SUMROWS , RESERVED , DATA , INDEX_SIZE , UNUSED ) EXEC SYS.SP_SPACEUSED @NAME UPDATE @TABLEINFO SET PK = @PK WHERE NAME = @NAME END SELECT F.NAME AS F_TABLE,ISNULL(P.TDESCRIPTION,F.NAME) AS F_TABLENAME, F.RESERVED AS F_SIZE, RTRIM(F.SUMROWS) AS F_SUM, F.PK AS F_PRIMARYKEY FROM @TABLEINFO F LEFT JOIN ( SELECT NAME = CASE WHEN A.COLORDER = 1 THEN D.NAME ELSE '' END , TDESCRIPTION = CASE WHEN A.COLORDER = 1 THEN ISNULL(F.VALUE, '') ELSE '' END FROM SYSCOLUMNS A LEFT JOIN SYSTYPES B ON A.XUSERTYPE = B.XUSERTYPE INNER JOIN SYSOBJECTS D ON A.ID = D.ID AND D.XTYPE = 'U' AND D.NAME <> 'DTPROPERTIES' LEFT JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID WHERE A.COLORDER = 1 AND F.MINOR_ID = 0 ) P ON F.NAME = P.NAME WHERE 1 = 1 ORDER BY F_TABLE"); //sb.Append(@"DECLARE @TABLEINFO TABLE ( NAME VARCHAR(50) , SUMROWS VARCHAR(11) , RESERVED VARCHAR(50) , DATA VARCHAR(50) , INDEX_SIZE VARCHAR(50) , UNUSED VARCHAR(50) , PK VARCHAR(50) ) DECLARE @TABLENAME TABLE ( NAME VARCHAR(50) ) DECLARE @NAME VARCHAR(50) DECLARE @PK VARCHAR(50) INSERT INTO @TABLENAME ( NAME ) SELECT O.NAME FROM SYSOBJECTS O , SYSINDEXES I WHERE O.ID = I.ID AND O.XTYPE = 'U' AND I.INDID < 2 ORDER BY I.ROWS DESC , O.NAME WHILE EXISTS ( SELECT 1 FROM @TABLENAME ) BEGIN SELECT TOP 1 @NAME = NAME FROM @TABLENAME DELETE @TABLENAME WHERE NAME = @NAME DECLARE @OBJECTID INT SET @OBJECTID = OBJECT_ID(@NAME) SELECT @PK = COL_NAME(@OBJECTID, COLID) FROM SYSOBJECTS AS O INNER JOIN SYSINDEXES AS I ON I.NAME = O.NAME INNER JOIN SYSINDEXKEYS AS K ON K.INDID = I.INDID WHERE O.XTYPE = 'PK' AND PARENT_OBJ = @OBJECTID AND K.ID = @OBJECTID INSERT INTO @TABLEINFO ( NAME , SUMROWS , RESERVED , DATA , INDEX_SIZE , UNUSED ) EXEC SYS.SP_SPACEUSED @NAME UPDATE @TABLEINFO SET PK = @PK WHERE NAME = @NAME END SELECT F.NAME AS F_TABLE,ISNULL(P.TDESCRIPTION,F.NAME) AS F_TABLENAME, F.RESERVED AS F_SIZE, RTRIM(F.SUMROWS) AS F_SUM, F.PK AS F_PRIMARYKEY FROM @TABLEINFO F LEFT JOIN ( SELECT NAME = CASE WHEN A.COLORDER = 1 THEN D.NAME ELSE '' END , TDESCRIPTION = CASE WHEN A.COLORDER = 1 THEN ISNULL(F.VALUE, '') ELSE '' END FROM SYSCOLUMNS A LEFT JOIN SYSTYPES B ON A.XUSERTYPE = B.XUSERTYPE INNER JOIN SYSOBJECTS D ON A.ID = D.ID AND D.XTYPE = 'U' AND D.NAME <> 'DTPROPERTIES' LEFT JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID WHERE A.COLORDER = 1 AND F.MINOR_ID = 0 ) P ON F.NAME = P.NAME WHERE 1 = 1 ORDER BY F_TABLE");
sb.Append(@"SELECT s.Name F_TABLE, Convert(nvarchar(max), tbp.value) as F_TABLENAME, b.ROWS F_SUM FROM sysobjects s LEFT JOIN sys.extended_properties as tbp ON s.id = tbp.major_id and tbp.minor_id = 0 AND ( tbp.Name = 'MS_Description' OR tbp.Name is null ) LEFT JOIN sysindexes AS b ON s.id = b.id WHERE s.xtype IN('U') AND (b.indid IN (0, 1))"); sb.Append(@"SELECT s.Name 'table', Convert(nvarchar(max), tbp.value) as tableName, b.ROWS sum FROM sysobjects s LEFT JOIN sys.extended_properties as tbp ON s.id = tbp.major_id and tbp.minor_id = 0 AND ( tbp.Name = 'MS_Description' OR tbp.Name is null ) LEFT JOIN sysindexes AS b ON s.id = b.id WHERE s.xtype IN('U') AND (b.indid IN (0, 1))");
break; break;
case "oracle": case "oracle":
//sb.Append(@"SELECT DISTINCT COL.TABLE_NAME AS F_TABLE,TAB.COMMENTS AS F_TABLENAME,0 AS F_SIZE,NVL(T.NUM_ROWS,0)AS F_SUM,COLUMN_NAME AS F_PRIMARYKEY FROM USER_CONS_COLUMNS COL INNER JOIN USER_CONSTRAINTS CON ON CON.CONSTRAINT_NAME=COL.CONSTRAINT_NAME INNER JOIN USER_TAB_COMMENTS TAB ON TAB.TABLE_NAME=COL.TABLE_NAME INNER JOIN USER_TABLES T ON T.TABLE_NAME=COL.TABLE_NAME WHERE CON.CONSTRAINT_TYPE NOT IN('C','R')ORDER BY COL.TABLE_NAME"); //sb.Append(@"SELECT DISTINCT COL.TABLE_NAME AS F_TABLE,TAB.COMMENTS AS F_TABLENAME,0 AS F_SIZE,NVL(T.NUM_ROWS,0)AS sum,COLUMN_NAME AS F_PRIMARYKEY FROM USER_CONS_COLUMNS COL INNER JOIN USER_CONSTRAINTS CON ON CON.CONSTRAINT_NAME=COL.CONSTRAINT_NAME INNER JOIN USER_TAB_COMMENTS TAB ON TAB.TABLE_NAME=COL.TABLE_NAME INNER JOIN USER_TABLES T ON T.TABLE_NAME=COL.TABLE_NAME WHERE CON.CONSTRAINT_TYPE NOT IN('C','R')ORDER BY COL.TABLE_NAME");
sb.Append(@"SELECT table_name F_TABLE , (select COMMENTS from user_tab_comments where t.table_name=table_name ) as F_TABLENAME, T.NUM_ROWS F_SUM from user_tables t where table_name!='HELP' AND table_name NOT LIKE '%$%' AND table_name NOT LIKE 'LOGMNRC_%' AND table_name!='LOGMNRP_CTAS_PART_MAP' AND table_name!='LOGMNR_LOGMNR_BUILDLOG' AND table_name!='SQLPLUS_PRODUCT_PROFILE'"); sb.Append(@"SELECT table_name table , (select COMMENTS from user_tab_comments where t.table_name=table_name ) as tableName, T.NUM_ROWS sum from user_tables t where table_name!='HELP' AND table_name NOT LIKE '%$%' AND table_name NOT LIKE 'LOGMNRC_%' AND table_name!='LOGMNRP_CTAS_PART_MAP' AND table_name!='LOGMNR_LOGMNR_BUILDLOG' AND table_name!='SQLPLUS_PRODUCT_PROFILE'");
break; break;
case "mysql": case "mysql":
//sb.Append(@"SELECT T1.*,(SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.`COLUMNS`WHERE TABLE_SCHEMA=DATABASE()AND TABLE_NAME=T1.F_TABLE AND COLUMN_KEY='PRI')F_PRIMARYKEY FROM(SELECT TABLE_NAME F_TABLE,0 F_SIZE,TABLE_ROWS F_SUM,(SELECT IF(LENGTH(TRIM(TABLE_COMMENT))<1,TABLE_NAME,TABLE_COMMENT))F_TABLENAME FROM INFORMATION_SCHEMA.`TABLES`WHERE TABLE_SCHEMA=DATABASE())T1 ORDER BY T1.F_TABLE"); //sb.Append(@"SELECT T1.*,(SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.`COLUMNS`WHERE TABLE_SCHEMA=DATABASE()AND TABLE_NAME=T1.F_TABLE AND COLUMN_KEY='PRI')F_PRIMARYKEY FROM(SELECT TABLE_NAME F_TABLE,0 F_SIZE,TABLE_ROWS F_SUM,(SELECT IF(LENGTH(TRIM(TABLE_COMMENT))<1,TABLE_NAME,TABLE_COMMENT))F_TABLENAME FROM INFORMATION_SCHEMA.`TABLES`WHERE TABLE_SCHEMA=DATABASE())T1 ORDER BY T1.F_TABLE");
sb.Append(@"select TABLE_NAME as F_TABLE,TABLE_ROWS as F_SUM ,TABLE_COMMENT as F_TABLENAME from information_schema.tables where TABLE_SCHEMA=(select database()) AND TABLE_TYPE='BASE TABLE'"); sb.Append(@"select TABLE_NAME as `table`,TABLE_ROWS as sum ,TABLE_COMMENT as tableName from information_schema.tables where TABLE_SCHEMA=(select database()) AND TABLE_TYPE='BASE TABLE'");
break; break;
case "dm8": case "dm8":
case "dm": case "dm":
sb.Append(@"SELECT table_name F_TABLE , (select COMMENTS from user_tab_comments where t.table_name=table_name ) as F_TABLENAME, T.NUM_ROWS F_SUM from user_tables t where table_name!='HELP' AND table_name NOT LIKE '%$%' AND table_name NOT LIKE 'LOGMNRC_%' AND table_name!='LOGMNRP_CTAS_PART_MAP' AND table_name!='LOGMNR_LOGMNR_BUILDLOG' AND table_name!='SQLPLUS_PRODUCT_PROFILE'"); sb.Append(@"SELECT table_name table , (select COMMENTS from user_tab_comments where t.table_name=table_name ) as tableName, T.NUM_ROWS sum from user_tables t where table_name!='HELP' AND table_name NOT LIKE '%$%' AND table_name NOT LIKE 'LOGMNRC_%' AND table_name!='LOGMNRP_CTAS_PART_MAP' AND table_name!='LOGMNR_LOGMNR_BUILDLOG' AND table_name!='SQLPLUS_PRODUCT_PROFILE'");
break; break;
case "kdbndp": case "kdbndp":
case "kingbasees": case "kingbasees":
sb.Append(@"select a.relname F_TABLE,a.n_live_tup F_SUM,b.description F_TABLENAME from sys_stat_user_tables a left outer join sys_description b on a.relid = b.objoid where a.schemaname='public' and b.objsubid='0'"); sb.Append(@"select a.relname table,a.n_live_tup sum,b.description tableName from sys_stat_user_tables a left outer join sys_description b on a.relid = b.objoid where a.schemaname='public' and b.objsubid='0'");
break; break;
case "postgresql": case "postgresql":
//modified by PhilPan 2023-04-12,修复大小写错误 //modified by PhilPan 2023-04-12,修复大小写错误
sb.Append(@"select cast(relname as varchar) as F_TABLE, cast(reltuples as varchar) as F_SUM, cast(obj_description(relfilenode,'pg_class') as varchar) as F_TABLENAME from pg_class c inner join pg_namespace n on n.oid = c.relnamespace and nspname='public' inner join pg_tables z on z.tablename=c.relname where relkind = 'r' and relname not like 'pg_%' and relname not like 'sql_%' and schemaname='public' order by relname"); sb.Append(@"SELECT relname as table,reltuples as sum,obj_description(relfilenode,'pg_class') as tableName FROM pg_class c INNER JOIN pg_namespace n ON n.oid=c.relnamespace AND nspname='public' WHERE c.relkind='r' ORDER BY relname");
break; break;
default: default:
throw new Exception("不支持"); throw new Exception("不支持");

View File

@@ -1,4 +1,5 @@
using JNPF.DependencyInjection; using JNPF.DependencyInjection;
using JNPF.Systems.Entitys.Model.Organize;
namespace JNPF.Systems.Entitys.Dto.Department; namespace JNPF.Systems.Entitys.Dto.Department;
@@ -38,6 +39,11 @@ public class DepartmentCrInput
/// </summary> /// </summary>
public string description { get; set; } public string description { get; set; }
/// <summary>
/// 扩展属性.
/// </summary>
public string propertyJson { get; set; }
/// <summary> /// <summary>
/// 排序码. /// 排序码.
/// </summary> /// </summary>

View File

@@ -43,6 +43,11 @@ public class DepartmentInfoOutput
/// </summary> /// </summary>
public string managerId { get; set; } public string managerId { get; set; }
/// <summary>
/// 部门详情.
/// </summary>
public string propertyJson { get; set; }
/// <summary> /// <summary>
/// 排序码. /// 排序码.
/// </summary> /// </summary>

View File

@@ -44,16 +44,16 @@ public class SystemMapper : IRegister
.Map(dest => dest.IsPrimarykey, src => src.primaryKey) .Map(dest => dest.IsPrimarykey, src => src.primaryKey)
.Map(dest => dest.IsNullable, src => src.allowNull == 1) .Map(dest => dest.IsNullable, src => src.allowNull == 1)
.Map(dest => dest.DefaultValue, src => src.defaults); .Map(dest => dest.DefaultValue, src => src.defaults);
config.ForType<DynamicDbTableModel, DbTableModel>() //config.ForType<DynamicDbTableModel, DbTableModel>()
.Map(dest => dest.table, src => src.F_TABLE) // .Map(dest => dest.table, src => src.F_TABLE)
.Map(dest => dest.tableName, src => src.F_TABLENAME) // .Map(dest => dest.tableName, src => src.F_TABLENAME)
.Map(dest => dest.size, src => src.F_SIZE) // .Map(dest => dest.size, src => src.F_SIZE)
.Map(dest => dest.sum, src => int.Parse(src.F_SUM)) // .Map(dest => dest.sum, src => int.Parse(src.F_SUM))
.Map(dest => dest.primaryKey, src => src.F_PRIMARYKEY); // .Map(dest => dest.primaryKey, src => src.F_PRIMARYKEY);
config.ForType<DynamicDbTableModel, DatabaseTableListOutput>() //config.ForType<DynamicDbTableModel, DatabaseTableListOutput>()
.Map(dest => dest.table, src => src.F_TABLE.IsNullOrEmpty() ? string.Empty : src.F_TABLE) // .Map(dest => dest.table, src => src.F_TABLE.IsNullOrEmpty() ? string.Empty : src.F_TABLE)
.Map(dest => dest.tableName, src => src.F_TABLENAME.IsNullOrEmpty() ? string.Empty : src.F_TABLENAME) // .Map(dest => dest.tableName, src => src.F_TABLENAME.IsNullOrEmpty() ? string.Empty : src.F_TABLENAME)
.Map(dest => dest.sum, src => int.Parse(src.F_SUM)); // .Map(dest => dest.sum, src => int.Parse(src.F_SUM));
config.ForType<DbTableInfo, DatabaseTableListOutput>() config.ForType<DbTableInfo, DatabaseTableListOutput>()
.Map(dest => dest.table, src => src.Name) .Map(dest => dest.table, src => src.Name)
.Map(dest => dest.tableName, src => src.Description); .Map(dest => dest.tableName, src => src.Description);

View File

@@ -2,34 +2,34 @@
namespace JNPF.Systems.Entitys.Model.DataBase; namespace JNPF.Systems.Entitys.Model.DataBase;
/// <summary> ///// <summary>
/// 表列表实体. ///// 表列表实体.
/// </summary> ///// </summary>
[SuppressSniffer] //[SuppressSniffer]
public class DynamicDbTableModel //public class DynamicDbTableModel
{ //{
/// <summary> // /// <summary>
/// 表名. // /// 表名.
/// </summary> // /// </summary>
public string? F_TABLE { get; set; } // public string? F_TABLE { get; set; }
/// <summary> // /// <summary>
/// 表说明. // /// 表说明.
/// </summary> // /// </summary>
public string? F_TABLENAME { get; set; } // public string? F_TABLENAME { get; set; }
/// <summary> // /// <summary>
/// 大小. // /// 大小.
/// </summary> // /// </summary>
public string? F_SIZE { get; set; } // public string? F_SIZE { get; set; }
/// <summary> // /// <summary>
/// 总数. // /// 总数.
/// </summary> // /// </summary>
public string? F_SUM { get; set; } // public string? F_SUM { get; set; }
/// <summary> // /// <summary>
/// 主键. // /// 主键.
/// </summary> // /// </summary>
public string? F_PRIMARYKEY { get; set; } // public string? F_PRIMARYKEY { get; set; }
} //}

View File

@@ -95,7 +95,10 @@ public class DataBaseService : IDynamicApiController, ITransient
//tables = tables.Where((x, i) => tables.FindIndex(z => z.Name == x.Name) == i).ToList(); //tables = tables.Where((x, i) => tables.FindIndex(z => z.Name == x.Name) == i).ToList();
//var output = tables.Adapt<List<DatabaseTableListOutput>>(); //var output = tables.Adapt<List<DatabaseTableListOutput>>();
if (!string.IsNullOrEmpty(input.keyword)) 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()))); {
var keyword = input.keyword.ToLower();
tables = tables.FindAll(d => d.table.ToLower().Contains(keyword) || (d.tableName.IsNotEmptyOrNull() && d.tableName.ToLower().Contains(keyword)));
}
if (tenantLink.DbType.ToLower().Equals("dm")) if (tenantLink.DbType.ToLower().Equals("dm"))
{ {
GetTableCount(tables, tenantLink); GetTableCount(tables, tenantLink);

View File

@@ -318,7 +318,7 @@ public class DbLinkService : IDbLinkService, IDynamicApiController, ITransient
[NonAction] [NonAction]
public async Task<DbLinkEntity> GetInfo(string id) public async Task<DbLinkEntity> GetInfo(string id)
{ {
return await _repository.AsSugarClient().CopyNew().Queryable<DbLinkEntity>().FirstAsync(m => m.Id == id && m.DeleteMark == null); return await _repository.AsSugarClient().Queryable<DbLinkEntity>().FirstAsync(m => m.Id == id && m.DeleteMark == null);
} }
#endregion #endregion
} }