优化代码生成同步

This commit is contained in:
不做码农 2023-05-03 18:39:01 +08:00
parent 4e628e58db
commit 01b304634e
3 changed files with 54 additions and 24 deletions

View File

@ -103,10 +103,6 @@ namespace ZR.Admin.WebApi.Controllers
{ {
var tableInfo = GenTableService.GetGenTableInfo(tableId); var tableInfo = GenTableService.GetGenTableInfo(tableId);
var tables = GenTableService.GetGenTableAll(); var tables = GenTableService.GetGenTableAll();
if (tableInfo != null)
{
tableInfo.Columns = GenTableColumnService.GenTableColumns(tableId);
}
return SUCCESS(new { info = tableInfo, tables }); return SUCCESS(new { info = tableInfo, tables });
} }
@ -232,7 +228,6 @@ namespace ZR.Admin.WebApi.Controllers
throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空"); throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空");
} }
var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId); var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId);
genTableInfo.Columns = GenTableColumnService.GenTableColumns(dto.TableId);
dto.DbType = AppSettings.GetAppConfig("gen:dbType", 0); dto.DbType = AppSettings.GetAppConfig("gen:dbType", 0);
dto.GenTable = genTableInfo; dto.GenTable = genTableInfo;
@ -258,7 +253,6 @@ namespace ZR.Admin.WebApi.Controllers
throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空"); throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空");
} }
var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId); var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId);
genTableInfo.Columns = GenTableColumnService.GenTableColumns(dto.TableId);
dto.DbType = AppSettings.GetAppConfig("gen:dbType", 0); dto.DbType = AppSettings.GetAppConfig("gen:dbType", 0);
dto.GenTable = genTableInfo; dto.GenTable = genTableInfo;
@ -299,13 +293,14 @@ namespace ZR.Admin.WebApi.Controllers
{ {
if (string.IsNullOrEmpty(tableName) || tableId <= 0) throw new CustomException("参数错误"); if (string.IsNullOrEmpty(tableName) || tableId <= 0) throw new CustomException("参数错误");
GenTable table = GenTableService.GetGenTableInfo(tableId); GenTable table = GenTableService.GetGenTableInfo(tableId);
if (table == null) { throw new CustomException("原表不存在"); } if (table == null) { throw new CustomException("同步数据失败,原表结构不存在"); }
table.Update_by = HttpContext.GetName();
List<DbColumnInfo> dbColumnInfos = _CodeGeneraterService.GetColumnInfo(table.DbName, tableName); List<DbColumnInfo> dbColumnInfos = _CodeGeneraterService.GetColumnInfo(table.DbName, tableName);
List<GenTableColumn> dbTableColumns = CodeGeneratorTool.InitGenTableColumn(table, dbColumnInfos); List<GenTableColumn> dbTableColumns = CodeGeneratorTool.InitGenTableColumn(table, dbColumnInfos);
GenTableService.SynchDb(tableId, table, dbTableColumns); bool result = GenTableService.SynchDb(tableId, table, dbTableColumns);
return SUCCESS(true); return SUCCESS(result);
} }
} }
} }

View File

@ -51,11 +51,15 @@ namespace ZR.Service.System
public GenTable GetGenTableInfo(long tableId) public GenTable GetGenTableInfo(long tableId)
{ {
GenTable info = GetId(tableId); GenTable info = GetId(tableId);
if (info != null && !info.SubTableName.IsEmpty()) if (info != null)
{
info.Columns = GenTableColumnService.GenTableColumns(tableId);
if (!info.SubTableName.IsEmpty())
{ {
info.SubTable = Queryable().Where(f => f.TableName == info.SubTableName).First(); info.SubTable = Queryable().Where(f => f.TableName == info.SubTableName).First();
info.SubTable.Columns = GenTableColumnService.GenTableColumns(info.SubTable.TableId); info.SubTable.Columns = GenTableColumnService.GenTableColumns(info.SubTable.TableId);
} }
}
return info; return info;
} }
@ -118,32 +122,62 @@ namespace ZR.Service.System
/// 同步数据库 /// 同步数据库
/// </summary> /// </summary>
/// <param name="tableId">表id</param> /// <param name="tableId">表id</param>
/// <param name="dbTableColumns"></param>
/// <param name="genTable"></param> /// <param name="genTable"></param>
public void SynchDb(long tableId, GenTable genTable, List<GenTableColumn> dbTableColumns) /// <param name="dbTableColumns">数据库表最新列初始化信息集合</param>
public bool SynchDb(long tableId, GenTable genTable, List<GenTableColumn> dbTableColumns)
{ {
List<GenTableColumn> tableColumns = GenTableColumnService.GenTableColumns(tableId); List<string> tableColumnNames = genTable.Columns.Select(f => f.ColumnName).ToList();//老列明
List<string> tableColumnNames = tableColumns.Select(f => f.ColumnName).ToList(); List<string> dbTableColumneNames = dbTableColumns.Select(f => f.ColumnName).ToList();//新列明
List<string> dbTableColumneNames = dbTableColumns.Select(f => f.ColumnName).ToList();
List<GenTableColumn> insertColumns = new(); List<GenTableColumn> insertColumns = new();
List<GenTableColumn> updateColumns = new();
foreach (var column in dbTableColumns) foreach (var column in dbTableColumns)
{ {
if (!tableColumnNames.Contains(column.ColumnName)) if (!tableColumnNames.Contains(column.ColumnName))
{ {
insertColumns.Add(column); 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.Update_time = DateTime.Now;
column.Update_by = genTable.Update_by;
if (column.IsList)
{
column.DictType = prevColumn.DictType;
column.QueryType = prevColumn.QueryType;
}
if (column.ColumnComment.IsEmpty())
{
column.ColumnComment = prevColumn.ColumnComment;
}
updateColumns.Add(column);
}
} }
bool result = UseTran2(() => bool result = UseTran2(() =>
{
if (insertColumns.Count > 0)
{ {
GenTableColumnService.Insert(insertColumns); GenTableColumnService.Insert(insertColumns);
}
if (updateColumns.Count > 0)
{
GenTableColumnService.UpdateGenTableColumn(updateColumns);
}
List<GenTableColumn> delColumns = tableColumns.FindAll(column => !dbTableColumneNames.Contains(column.ColumnName)); List<GenTableColumn> delColumns = genTable.Columns.FindAll(column => !dbTableColumneNames.Contains(column.ColumnName));
if (delColumns != null && delColumns.Count > 0) if (delColumns != null && delColumns.Count > 0)
{ {
GenTableColumnService.Delete(delColumns.Select(f => f.ColumnId).ToList()); GenTableColumnService.Delete(delColumns.Select(f => f.ColumnId).ToList());
} }
}); });
return result;
} }
} }
@ -211,7 +245,7 @@ namespace ZR.Service.System
public int UpdateGenTableColumn(List<GenTableColumn> tableColumn) public int UpdateGenTableColumn(List<GenTableColumn> tableColumn)
{ {
return Context.Updateable(tableColumn) return Context.Updateable(tableColumn)
.WhereColumns(it => new { it.ColumnId, it.TableId }) .WhereColumns(it => new { it.ColumnId })
.UpdateColumns(it => new .UpdateColumns(it => new
{ {
it.ColumnComment, it.ColumnComment,
@ -229,9 +263,9 @@ namespace ZR.Service.System
it.DictType, it.DictType,
it.Update_by, it.Update_by,
it.Remark, it.Remark,
it.IsSort, it.IsSort,//
it.IsExport, it.IsExport,
it.AutoFillType it.AutoFillType,
}) })
.ExecuteCommand(); .ExecuteCommand();
} }

View File

@ -1,4 +1,5 @@
using System.Collections.Generic; using SqlSugar;
using System.Collections.Generic;
using ZR.Model; using ZR.Model;
using ZR.Model.System.Generate; using ZR.Model.System.Generate;
@ -14,7 +15,7 @@ namespace ZR.Service.System.IService
int DeleteGenTableByTbName(string tableName); int DeleteGenTableByTbName(string tableName);
PagedInfo<GenTable> GetGenTables(GenTable genTable, PagerInfo pagerInfo); PagedInfo<GenTable> GetGenTables(GenTable genTable, PagerInfo pagerInfo);
GenTable GetGenTableInfo(long tableId); GenTable GetGenTableInfo(long tableId);
void SynchDb(long tableId, GenTable genTable, List<GenTableColumn> dbTableColumns); bool SynchDb(long tableId, GenTable genTable, List<GenTableColumn> genTableColumns);
List<GenTable> GetGenTableAll(); List<GenTable> GetGenTableAll();
int UpdateGenTable(GenTable genTable); int UpdateGenTable(GenTable genTable);
} }