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.
72 lines
4.3 KiB
72 lines
4.3 KiB
using SqlSugar; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Data; |
|
using System.Linq; |
|
using System.Text; |
|
using ReZero.Excel; |
|
|
|
namespace ReZero.SuperAPI |
|
{ |
|
public partial class MethodApi |
|
{ |
|
public byte[] ExportEntities(long databaseId,long[] tableIds) |
|
{ |
|
List<ExcelData> datatables = new List<ExcelData>(); |
|
var db = App.Db; |
|
var datas = db.Queryable<ZeroEntityInfo>() |
|
.OrderBy(it=>it.DbTableName) |
|
.Where(it=>it.DataBaseId==databaseId) |
|
.WhereIF(tableIds.Any(), it => tableIds.Contains(it.Id)) |
|
.Includes(it => it.ZeroEntityColumnInfos).ToList(); |
|
foreach (var item in datas) |
|
{ |
|
var currentDb = App.GetDbById(databaseId)!; |
|
var columnInfos = currentDb.DbMaintenance.GetColumnInfosByTableName(item.DbTableName, false); |
|
DataTable dt = new DataTable(); |
|
dt.Columns.Add(TextHandler.GetCommonText("列名", "Field name")); |
|
dt.Columns.Add(TextHandler.GetCommonText("列描述", "Column description")); |
|
dt.Columns.Add(TextHandler.GetCommonText("列类型", "Column type")); |
|
dt.Columns.Add(TextHandler.GetCommonText("实体类型", "Entity type")); |
|
dt.Columns.Add(TextHandler.GetCommonText("主键", "Primary key")); |
|
dt.Columns.Add(TextHandler.GetCommonText("自增", "Auto increment")); |
|
dt.Columns.Add(TextHandler.GetCommonText("可空", "Nullable")); |
|
dt.Columns.Add(TextHandler.GetCommonText("长度", "Length")); |
|
dt.Columns.Add(TextHandler.GetCommonText("精度", "Precision")); |
|
dt.Columns.Add(TextHandler.GetCommonText("默认值", "Default value")); |
|
dt.Columns.Add(TextHandler.GetCommonText("表名", "Table name")); |
|
dt.Columns.Add(TextHandler.GetCommonText("表描述", "Table description")); |
|
foreach (var it in columnInfos!) |
|
{ |
|
var dr = dt.NewRow(); |
|
dr[TextHandler.GetCommonText("列名", "Field name")] = it.DbColumnName; |
|
dr[TextHandler.GetCommonText("列描述", "Column description")] = it.ColumnDescription?? item.ZeroEntityColumnInfos.FirstOrDefault(x => x.DbColumnName!.EqualsCase(it.DbColumnName!))?.Description; ; |
|
dr[TextHandler.GetCommonText("列类型", "Column type")] = it.DataType; |
|
if (db.CurrentConnectionConfig.DbType == SqlSugar.DbType.Oracle) |
|
{ |
|
dr[TextHandler.GetCommonText("列类型", "Column type")] = it.OracleDataType; |
|
} |
|
dr[TextHandler.GetCommonText("实体类型", "Entity type")] = it.PropertyType; |
|
dr[TextHandler.GetCommonText("表名", "Table name")] = item.DbTableName; |
|
dr[TextHandler.GetCommonText("表描述", "Table description")] = item.Description ?? item.Description; |
|
dr[TextHandler.GetCommonText("主键", "Primary key")] = it.IsPrimarykey ? "yes" : ""; |
|
dr[TextHandler.GetCommonText("自增", "Auto increment")] = it.IsIdentity ? "yes" : ""; |
|
dr[TextHandler.GetCommonText("可空", "Nullable")] = it.IsNullable ? "yes" : ""; |
|
dr[TextHandler.GetCommonText("长度", "Length")] = it.Length; |
|
dr[TextHandler.GetCommonText("精度", "Precision")] = it.DecimalDigits; |
|
|
|
dt.Rows.Add(dr); |
|
} |
|
dt.TableName = item.DbTableName; |
|
if (dt.Rows.Count == 0) |
|
{ |
|
var dr = dt.NewRow(); |
|
dr[TextHandler.GetCommonText("列名", "Field name")]= TextHandler.GetCommonText("表还没有创建需要到实体管理点同步", "The table has not yet been created and needs to be synchronized to the entity management point"); |
|
dt.Rows.Add(dr); |
|
} |
|
datatables.Add(new ExcelData() { DataTable=dt, TableDescrpition=item.Description??"-" }); |
|
} |
|
return ReZero.Excel.DataTableToExcel.ExportExcel(datatables.ToArray(), $"{DateTime.Now.ToString("实体文档.xlsx")}",navName:TextHandler.GetCommonText("表名","Table name")); |
|
} |
|
} |
|
}
|
|
|