Files
shgx_tz_mes_backend_sync/ZR.Service/System/GenTableService.cs

255 lines
9.0 KiB
C#
Raw Normal View History

2021-09-17 18:19:53 +08:00
using Infrastructure.Attribute;
using Infrastructure.Extensions;
2021-11-28 17:40:43 +08:00
using Newtonsoft.Json;
2021-09-17 18:19:53 +08:00
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using ZR.Common;
2021-11-28 11:11:34 +08:00
using ZR.Model;
2021-09-17 18:19:53 +08:00
using ZR.Model.System.Generate;
2021-09-27 08:06:09 +08:00
using ZR.Repository.System;
2021-09-17 18:19:53 +08:00
using ZR.Service.System.IService;
namespace ZR.Service.System
{
/// <summary>
/// 代码生成表
/// </summary>
[AppService(ServiceType = typeof(IGenTableService), ServiceLifetime = LifeTime.Transient)]
2021-12-04 13:15:57 +08:00
public class GenTableService : BaseService<GenTable>, IGenTableService
2021-09-17 18:19:53 +08:00
{
2021-09-27 08:06:09 +08:00
private GenTableRepository GenTableRepository;
private IGenTableColumnService GenTableColumnService;
2022-03-19 08:04:08 +08:00
public GenTableService(IGenTableColumnService genTableColumnService, GenTableRepository genTableRepository)
{
GenTableColumnService = genTableColumnService;
2021-09-27 08:06:09 +08:00
GenTableRepository = genTableRepository;
}
2021-09-17 18:19:53 +08:00
/// <summary>
/// 删除表
/// </summary>
/// <param name="tableIds">需要删除的表id</param>
2021-09-17 18:19:53 +08:00
/// <returns></returns>
public int DeleteGenTableByIds(long[] tableIds)
2021-09-17 18:19:53 +08:00
{
2021-09-27 08:06:09 +08:00
GenTableRepository.Delete(f => tableIds.Contains(f.TableId));
return GenTableColumnService.DeleteGenTableColumn(tableIds);
}
/// <summary>
/// 删除表根据表名
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public int DeleteGenTableByTbName(string tableName)
{
2022-04-10 12:38:26 +08:00
return GenTableRepository.Delete(f => f.TableName == tableName) ? 1 : 0;
2021-09-17 18:19:53 +08:00
}
/// <summary>
/// 获取表信息
/// </summary>
/// <param name="tableId"></param>
/// <returns></returns>
public GenTable GetGenTableInfo(long tableId)
{
2021-11-28 17:40:43 +08:00
var info = GenTableRepository.GetId(tableId);
SetTableFromOptions(info);
return info;
}
2021-12-13 21:53:48 +08:00
/// <summary>
/// 获取所有代码生成表
/// </summary>
/// <returns></returns>
public List<GenTable> GetGenTableAll()
{
return GenTableRepository.GetAll();
}
2021-11-28 17:40:43 +08:00
/// <summary>
/// 设置代码生成其他参数
/// </summary>
/// <param name="genTable"></param>
private void SetTableFromOptions(GenTable genTable)
{
//附加参数keyvalue格式
if (!string.IsNullOrEmpty(genTable?.Options))
{
Dictionary<string, object> options = JsonConvert.DeserializeObject<Dictionary<string, object>>(genTable.Options);
2021-12-31 21:13:32 +08:00
if (options == null) return;
2021-12-01 21:03:27 +08:00
genTable.ParentMenuId = options.GetValueOrDefault("parentMenuId") ?? null;
2022-04-10 12:38:26 +08:00
2021-12-01 21:03:27 +08:00
genTable.SortType = options.GetValueOrDefault("sortType") ?? "asc";
2021-12-31 21:13:32 +08:00
genTable.SortField = options.GetValueOrDefault("sortField") ?? "";
genTable.TreeParentCode = options.GetValueOrDefault("treeParentCode") ?? "";
genTable.TreeName = options.GetValueOrDefault("treeName") ?? "";
genTable.TreeCode = options.GetValueOrDefault("treeCode") ?? "";
2022-04-10 12:38:26 +08:00
2022-01-06 12:30:09 +08:00
var checkdBtn = options.GetValueOrDefault("checkedBtn") ?? "";
genTable.CheckedBtn = Tools.SpitIntArrary(checkdBtn.ToString());
2022-04-10 12:38:26 +08:00
var permPrefix = options.GetValueOrDefault("permissionPrefix", "");
genTable.PermissionPrefix = permPrefix?.ToString();
}
if (genTable.PermissionPrefix.IsEmpty())
{
genTable.PermissionPrefix = $"{genTable.ModuleName.ToLower()}:{genTable.ClassName.ToLower()}";//权限
2021-11-28 17:40:43 +08:00
}
2021-09-17 18:19:53 +08:00
}
/// <summary>
/// 查询代码生成表信息
/// </summary>
/// <param name="genTable"></param>
/// <param name="pagerInfo"></param>
/// <returns></returns>
2022-04-10 12:38:26 +08:00
public PagedInfo<GenTable> GetGenTables(GenTable genTable, PagerInfo pagerInfo)
2021-09-17 18:19:53 +08:00
{
var predicate = Expressionable.Create<GenTable>();
predicate = predicate.AndIF(genTable.TableName.IfNotEmpty(), it => it.TableName.Contains(genTable.TableName));
2021-12-18 10:56:02 +08:00
return GenTableRepository.GetPages(predicate.ToExpression(), pagerInfo, x => x.TableId, OrderByType.Desc);
2021-09-17 18:19:53 +08:00
}
/// <summary>
/// 插入代码生成表
/// </summary>
/// <param name="table"></param>
/// <returns></returns>
public int ImportGenTable(GenTable table)
2021-09-17 18:19:53 +08:00
{
2021-09-27 08:06:09 +08:00
table.Create_time = DateTime.Now;
//导入前删除现有表
//DeleteGenTableByIds(new long[] { table.TableId });
DeleteGenTableByTbName(table.TableName);
2021-09-27 08:06:09 +08:00
return GenTableRepository.Context.Insertable(table).IgnoreColumns(ignoreNullColumn: true).ExecuteReturnIdentity();
2021-09-17 18:19:53 +08:00
}
/// <summary>
/// 获取表数据
/// </summary>
/// <param name="tableNames"></param>
/// <returns></returns>
public List<GenTable> SelectDbTableListByNamess(string[] tableNames)
{
throw new NotImplementedException();
}
public int UpdateGenTable(GenTable genTable)
{
2021-09-27 08:06:09 +08:00
var db = GenTableRepository.Context;
genTable.Update_time = db.GetDate();
return db.Updateable(genTable).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();
}
2021-12-14 15:41:58 +08:00
/// <summary>
/// 同步数据库
/// </summary>
/// <param name="tableId">表id</param>
/// <param name="dbTableColumns"></param>
/// <param name="genTable"></param>
public void SynchDb(long tableId, GenTable genTable, List<GenTableColumn> dbTableColumns)
{
List<GenTableColumn> tableColumns = GenTableColumnService.GenTableColumns(tableId);
List<string> tableColumnNames = tableColumns.Select(f => f.ColumnName).ToList();
List<string> dbTableColumneNames = dbTableColumns.Select(f => f.ColumnName).ToList();
List<GenTableColumn> insertColumns = new();
foreach (var column in dbTableColumns)
{
if (!tableColumnNames.Contains(column.ColumnName))
{
insertColumns.Add(column);
}
}
GenTableColumnService.Insert(insertColumns);
List<GenTableColumn> delColumns = tableColumns.FindAll(column => !dbTableColumneNames.Contains(column.ColumnName));
2022-04-10 12:38:26 +08:00
if (delColumns != null && delColumns.Count > 0)
2021-12-14 15:41:58 +08:00
{
GenTableColumnService.Delete(delColumns.Select(f => f.ColumnId).ToList());
}
}
2021-09-17 18:19:53 +08:00
}
/// <summary>
/// 代码生成表列
/// </summary>
[AppService(ServiceType = typeof(IGenTableColumnService), ServiceLifetime = LifeTime.Transient)]
2021-12-04 13:15:57 +08:00
public class GenTableColumnService : BaseService<GenTableColumn>, IGenTableColumnService
2021-09-17 18:19:53 +08:00
{
2021-09-27 08:06:09 +08:00
private GenTableColumnRepository GetTableColumnRepository;
2022-03-19 08:04:08 +08:00
public GenTableColumnService(GenTableColumnRepository genTableColumnRepository)
2021-09-27 08:06:09 +08:00
{
GetTableColumnRepository = genTableColumnRepository;
}
2021-09-17 18:19:53 +08:00
/// <summary>
/// 删除表字段
/// </summary>
/// <param name="tableColumn"></param>
/// <returns></returns>
public int DeleteGenTableColumn(long tableId)
{
2021-09-27 08:06:09 +08:00
return GetTableColumnRepository.DeleteGenTableColumn(new long[] { tableId });
}
/// <summary>
/// 根据表id批量删除表字段
/// </summary>
/// <param name="tableId"></param>
/// <returns></returns>
public int DeleteGenTableColumn(long[] tableId)
{
2021-09-27 08:06:09 +08:00
return GetTableColumnRepository.DeleteGenTableColumn(tableId);
}
/// <summary>
/// 根据表名删除字段
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public int DeleteGenTableColumnByTableName(string tableName)
{
2021-09-27 08:06:09 +08:00
return GetTableColumnRepository.DeleteGenTableColumnByTableName(tableName);
2021-09-17 18:19:53 +08:00
}
/// <summary>
/// 获取表所有字段
/// </summary>
/// <param name="tableId"></param>
/// <returns></returns>
public List<GenTableColumn> GenTableColumns(long tableId)
{
2021-09-27 08:06:09 +08:00
return GetTableColumnRepository.GenTableColumns(tableId);
2021-09-17 18:19:53 +08:00
}
/// <summary>
/// 插入表字段
/// </summary>
/// <param name="tableColumn"></param>
/// <returns></returns>
public int InsertGenTableColumn(List<GenTableColumn> tableColumn)
{
2021-09-27 08:06:09 +08:00
return GetTableColumnRepository.InsertGenTableColumn(tableColumn);
}
/// <summary>
/// 批量更新表字段
/// </summary>
/// <param name="tableColumn"></param>
/// <returns></returns>
public int UpdateGenTableColumn(List<GenTableColumn> tableColumn)
{
2021-09-27 08:06:09 +08:00
return GetTableColumnRepository.UpdateGenTableColumn(tableColumn);
2021-09-17 18:19:53 +08:00
}
}
}