You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
5.5 KiB
168 lines
5.5 KiB
3 weeks ago
|
using ReZero.Excel;
|
||
|
using SqlSugar;
|
||
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Data;
|
||
|
using System.DirectoryServices.Protocols;
|
||
|
using System.Linq;
|
||
|
using System.Text;
|
||
|
using System.Text.RegularExpressions;
|
||
|
using System.Threading.Tasks;
|
||
|
|
||
|
namespace ReZero.SuperAPI
|
||
|
{
|
||
|
public partial class MethodApi
|
||
|
{
|
||
|
public bool TestDb(long Id)
|
||
|
{
|
||
|
SqlSugarClient? db = App.GetDbById(Id);
|
||
|
if (db == null)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return db.Ado.IsValidConnection();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public object CreateDb(long dbId)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
SqlSugarClient? db = App.GetDbById(dbId);
|
||
|
db!.DbMaintenance.CreateDatabase();
|
||
|
return true;
|
||
|
}
|
||
|
catch (Exception ex)
|
||
|
{
|
||
|
return ex.Message;
|
||
|
}
|
||
|
}
|
||
|
public object GetImportTables(long databaseId, string tableName)
|
||
|
{
|
||
|
var db = App.GetDbById(databaseId);
|
||
|
var entitys = App.Db.Queryable<ZeroEntityInfo>()
|
||
|
.Where(it => it.IsDeleted == false)
|
||
|
.Where(it => it.DataBaseId == databaseId).ToList();
|
||
|
var tables = db!.DbMaintenance.GetTableInfoList(false).Where(it => !it.Name.ToLower().StartsWith("zero_")).ToList();
|
||
|
var result = tables
|
||
|
.OrderBy(it => it.Name)
|
||
|
.Where(it => !entitys.Any(s => s.DbTableName!.EqualsCase(it.Name))).ToList();
|
||
|
if (!string.IsNullOrEmpty(tableName))
|
||
|
{
|
||
|
result = result.Where(it => it.Name.ToLower().Contains(tableName.ToLower())).ToList();
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
public object GetUserInfo()
|
||
|
{
|
||
|
return null;
|
||
|
}
|
||
|
public object GetTables(long databaseId, string tableName)
|
||
|
{
|
||
|
var db = App.GetDbById(databaseId);
|
||
|
var entitys = App.Db.Queryable<ZeroEntityInfo>()
|
||
|
.Where(it => it.IsDeleted == false)
|
||
|
.WhereIF(!string.IsNullOrEmpty(tableName), it => it.DbTableName!.ToLower().Contains(tableName.ToLower()))
|
||
|
.Where(it => it.DataBaseId == databaseId).ToList()
|
||
|
.Where(it => !it.DbTableName!.ToLower().StartsWith("zero_"));
|
||
|
var result = entitys.Select(it => new DbTableInfo()
|
||
|
{
|
||
|
Id = it.Id,
|
||
|
Name = it.ClassName,
|
||
|
Description = it.Description
|
||
|
})
|
||
|
.OrderBy(it=>it.Name).ToList();
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
public object ExecuetSql(long databaseId, string sql)
|
||
|
{
|
||
|
var db = App.GetDbById(databaseId);
|
||
|
sql = sql + string.Empty;
|
||
|
if (db!.CurrentConnectionConfig.DbType == SqlSugar.DbType.Oracle && sql.Contains(";") && !sql.ToLower().Contains("begin"))
|
||
|
{
|
||
|
var sqls = sql.Split(';');
|
||
|
List<object> result = new List<object>();
|
||
|
foreach (var item in sqls)
|
||
|
{
|
||
|
if (!string.IsNullOrEmpty(item.Trim().Replace("\r", "").Replace("\n", "")))
|
||
|
{
|
||
|
result.Add(GetObject(item, db));
|
||
|
}
|
||
|
}
|
||
|
if (result.Count == 1)
|
||
|
{
|
||
|
return result.FirstOrDefault();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return result;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
var result = GetObject(sql, db);
|
||
|
return result;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public byte[] ExecuetSqlReturnExcel(long databaseId, string sql)
|
||
|
{
|
||
|
var db = App.GetDbById(databaseId);
|
||
|
sql = sql + string.Empty;
|
||
|
DataSet result = new DataSet();
|
||
|
if (db!.CurrentConnectionConfig.DbType == SqlSugar.DbType.Oracle && sql.Contains(";") && !sql.ToLower().Contains("begin"))
|
||
|
{
|
||
|
var sqls = sql.Split(';');
|
||
|
foreach (var item in sqls)
|
||
|
{
|
||
|
if (!string.IsNullOrEmpty(item.Trim().Replace("\r", "").Replace("\n", "")))
|
||
|
{
|
||
|
result.Tables.Add(db.Ado.GetDataTable(sql));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
result = db!.Ado.GetDataSetAll(sql);
|
||
|
}
|
||
|
var bytes= DataTableToExcel.ExportExcel(result, nameof(ExecuetSqlReturnExcel));
|
||
|
return bytes;
|
||
|
}
|
||
|
|
||
|
private static object GetObject(string sql, SqlSugarClient? db)
|
||
|
{
|
||
|
if (sql.ToLower().Contains("select"))
|
||
|
{
|
||
|
var ds = db!.Ado.GetDataSetAll(sql);
|
||
|
if (ds.Tables.Count == 1)
|
||
|
{
|
||
|
return ds.Tables[0];
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return ds;
|
||
|
}
|
||
|
}
|
||
|
else if (db!.CurrentConnectionConfig.DbType == SqlSugar.DbType.SqlServer && sql.ToLower().Contains("go"))
|
||
|
{
|
||
|
return db!.Ado.ExecuteCommandWithGo(sql);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return db!.Ado.ExecuteCommand(sql) + " affected rows";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
public static bool ClearAllInternalCache()
|
||
|
{
|
||
|
var cc = new CacheCenter();
|
||
|
cc.ClearAllInternalCache();
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
}
|