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.

73 lines
4.3 KiB

3 weeks ago
 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"));
}
}
}