init
This commit is contained in:
269
DOAN.ServiceCore/Services/GenTableService.cs
Normal file
269
DOAN.ServiceCore/Services/GenTableService.cs
Normal file
@@ -0,0 +1,269 @@
|
||||
using Infrastructure.Attribute;
|
||||
using DOAN.Model;
|
||||
using DOAN.Model.System.Generate;
|
||||
|
||||
namespace DOAN.ServiceCore.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// 代码生成表
|
||||
/// </summary>
|
||||
[AppService(ServiceType = typeof(IGenTableService), ServiceLifetime = LifeTime.Transient)]
|
||||
public class GenTableService : BaseService<GenTable>, IGenTableService
|
||||
{
|
||||
private IGenTableColumnService GenTableColumnService;
|
||||
public GenTableService(IGenTableColumnService genTableColumnService)
|
||||
{
|
||||
GenTableColumnService = genTableColumnService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除表
|
||||
/// </summary>
|
||||
/// <param name="tableIds">需要删除的表id</param>
|
||||
/// <returns></returns>
|
||||
public int DeleteGenTableByIds(long[] tableIds)
|
||||
{
|
||||
Delete(f => tableIds.Contains(f.TableId));
|
||||
return GenTableColumnService.DeleteGenTableColumn(tableIds);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除表根据表名
|
||||
/// </summary>
|
||||
/// <param name="tableName"></param>
|
||||
/// <returns></returns>
|
||||
public int DeleteGenTableByTbName(string tableName)
|
||||
{
|
||||
return Delete(f => f.TableName == tableName) ? 1 : 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取表信息
|
||||
/// </summary>
|
||||
/// <param name="tableId"></param>
|
||||
/// <returns></returns>
|
||||
public GenTable GetGenTableInfo(long tableId)
|
||||
{
|
||||
GenTable info = GetId(tableId);
|
||||
if (info != null)
|
||||
{
|
||||
info.Columns = GenTableColumnService.GenTableColumns(tableId);
|
||||
if (!info.SubTableName.IsEmpty())
|
||||
{
|
||||
info.SubTable = Queryable().Where(f => f.TableName == info.SubTableName).First();
|
||||
info.SubTable.Columns = GenTableColumnService.GenTableColumns(info.SubTable.TableId);
|
||||
}
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有代码生成表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<GenTable> GetGenTableAll()
|
||||
{
|
||||
return GetAll();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询代码生成表信息
|
||||
/// </summary>
|
||||
/// <param name="genTable"></param>
|
||||
/// <param name="pagerInfo"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<GenTable> GetGenTables(GenTable genTable, PagerInfo pagerInfo)
|
||||
{
|
||||
var predicate = Expressionable.Create<GenTable>();
|
||||
predicate = predicate.AndIF(genTable.TableName.IfNotEmpty(), it => it.TableName.Contains(genTable.TableName));
|
||||
|
||||
return GetPages(predicate.ToExpression(), pagerInfo, x => x.TableId, OrderByType.Desc);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 插入代码生成表
|
||||
/// </summary>
|
||||
/// <param name="table"></param>
|
||||
/// <returns></returns>
|
||||
public int ImportGenTable(GenTable table)
|
||||
{
|
||||
table.Create_time = DateTime.Now;
|
||||
//导入前删除现有表
|
||||
//DeleteGenTableByIds(new long[] { table.TableId });
|
||||
DeleteGenTableByTbName(table.TableName);
|
||||
|
||||
return Insertable(table).IgnoreColumns(ignoreNullColumn: true).ExecuteReturnIdentity();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取表数据
|
||||
/// </summary>
|
||||
/// <param name="tableNames"></param>
|
||||
/// <returns></returns>
|
||||
public List<GenTable> SelectDbTableListByNamess(string[] tableNames)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public int UpdateGenTable(GenTable genTable)
|
||||
{
|
||||
var db = Context;
|
||||
genTable.Update_time = db.GetDate();
|
||||
return db.Updateable(genTable).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 同步数据库
|
||||
/// </summary>
|
||||
/// <param name="tableId">表id</param>
|
||||
/// <param name="genTable"></param>
|
||||
/// <param name="dbTableColumns">数据库表最新列初始化信息集合</param>
|
||||
public bool SynchDb(long tableId, GenTable genTable, List<GenTableColumn> dbTableColumns)
|
||||
{
|
||||
List<string> tableColumnNames = genTable.Columns.Select(f => f.ColumnName).ToList();//老列明
|
||||
List<string> dbTableColumneNames = dbTableColumns.Select(f => f.ColumnName).ToList();//新列明
|
||||
|
||||
List<GenTableColumn> insertColumns = new();
|
||||
List<GenTableColumn> updateColumns = new();
|
||||
foreach (var column in dbTableColumns)
|
||||
{
|
||||
if (!tableColumnNames.Contains(column.ColumnName))
|
||||
{
|
||||
insertColumns.Add(column);
|
||||
}
|
||||
else
|
||||
{
|
||||
GenTableColumn prevColumn = genTable.Columns.Find(f => f.ColumnName == column.ColumnName);
|
||||
column.ColumnId = prevColumn.ColumnId;
|
||||
column.IsEdit = prevColumn.IsEdit;
|
||||
column.AutoFillType = prevColumn.AutoFillType;
|
||||
column.Sort = prevColumn.Sort;
|
||||
column.IsExport = prevColumn.IsExport;
|
||||
column.IsSort = prevColumn.IsSort;
|
||||
column.IsQuery = prevColumn.IsQuery;
|
||||
column.IsList = prevColumn.IsList;
|
||||
column.HtmlType = prevColumn.HtmlType;
|
||||
column.Update_time = DateTime.Now;
|
||||
column.Update_by = genTable.Update_by;
|
||||
column.ColumnComment = prevColumn.ColumnComment;
|
||||
column.Remark = prevColumn.Remark;
|
||||
|
||||
if (column.IsList)
|
||||
{
|
||||
column.DictType = prevColumn.DictType;
|
||||
column.QueryType = prevColumn.QueryType;
|
||||
}
|
||||
updateColumns.Add(column);
|
||||
}
|
||||
}
|
||||
var result = UseTran(() =>
|
||||
{
|
||||
if (insertColumns.Count > 0)
|
||||
{
|
||||
GenTableColumnService.Insert(insertColumns);
|
||||
}
|
||||
if (updateColumns.Count > 0)
|
||||
{
|
||||
GenTableColumnService.UpdateGenTableColumn(updateColumns);
|
||||
}
|
||||
|
||||
List<GenTableColumn> delColumns = genTable.Columns.FindAll(column => !dbTableColumneNames.Contains(column.ColumnName));
|
||||
if (delColumns != null && delColumns.Count > 0)
|
||||
{
|
||||
GenTableColumnService.Delete(delColumns.Select(f => f.ColumnId).ToList());
|
||||
}
|
||||
});
|
||||
return result.IsSuccess;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 代码生成表列
|
||||
/// </summary>
|
||||
[AppService(ServiceType = typeof(IGenTableColumnService), ServiceLifetime = LifeTime.Transient)]
|
||||
public class GenTableColumnService : BaseService<GenTableColumn>, IGenTableColumnService
|
||||
{
|
||||
/// <summary>
|
||||
/// 删除表字段
|
||||
/// </summary>
|
||||
/// <param name="tableId"></param>
|
||||
/// <returns></returns>
|
||||
public int DeleteGenTableColumn(long tableId)
|
||||
{
|
||||
return Deleteable().Where(f => new long[] { tableId }.Contains(f.TableId)).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据表id批量删除表字段
|
||||
/// </summary>
|
||||
/// <param name="tableId"></param>
|
||||
/// <returns></returns>
|
||||
public int DeleteGenTableColumn(long[] tableId)
|
||||
{
|
||||
return Deleteable().Where(f => tableId.Contains(f.TableId)).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据表名删除字段
|
||||
/// </summary>
|
||||
/// <param name="tableName"></param>
|
||||
/// <returns></returns>
|
||||
public int DeleteGenTableColumnByTableName(string tableName)
|
||||
{
|
||||
return Deleteable().Where(f => f.TableName == tableName).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取表所有字段
|
||||
/// </summary>
|
||||
/// <param name="tableId"></param>
|
||||
/// <returns></returns>
|
||||
public List<GenTableColumn> GenTableColumns(long tableId)
|
||||
{
|
||||
return Queryable().Where(f => f.TableId == tableId).OrderBy(x => x.Sort).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 插入表字段
|
||||
/// </summary>
|
||||
/// <param name="tableColumn"></param>
|
||||
/// <returns></returns>
|
||||
public int InsertGenTableColumn(List<GenTableColumn> tableColumn)
|
||||
{
|
||||
return Context.Insertable(tableColumn).IgnoreColumns(x => new { x.Remark }).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 批量更新表字段
|
||||
/// </summary>
|
||||
/// <param name="tableColumn"></param>
|
||||
/// <returns></returns>
|
||||
public int UpdateGenTableColumn(List<GenTableColumn> tableColumn)
|
||||
{
|
||||
return Context.Updateable(tableColumn)
|
||||
.WhereColumns(it => new { it.ColumnId })
|
||||
.UpdateColumns(it => new
|
||||
{
|
||||
it.ColumnComment,
|
||||
it.CsharpField,
|
||||
it.CsharpType,
|
||||
it.IsQuery,
|
||||
it.IsEdit,
|
||||
it.IsInsert,
|
||||
it.IsList,
|
||||
it.QueryType,
|
||||
it.HtmlType,
|
||||
it.IsRequired,
|
||||
it.Sort,
|
||||
it.Update_time,
|
||||
it.DictType,
|
||||
it.Update_by,
|
||||
it.Remark,
|
||||
it.IsSort,//
|
||||
it.IsExport,
|
||||
it.AutoFillType,
|
||||
})
|
||||
.ExecuteCommand();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user