✨ 支持Oracle库、Oracle库代码生成完善
This commit is contained in:
parent
9be0036b4e
commit
9f587711f0
@ -190,7 +190,6 @@ namespace ZR.Admin.WebApi.Controllers
|
|||||||
return ToResponse(ResultCode.CUSTOM_ERROR, "导入数据失败");
|
return ToResponse(ResultCode.CUSTOM_ERROR, "导入数据失败");
|
||||||
}
|
}
|
||||||
var path = Path.Combine(WebHostEnvironment.WebRootPath, "data.xlsx");
|
var path = Path.Combine(WebHostEnvironment.WebRootPath, "data.xlsx");
|
||||||
//var sheetNames = MiniExcel.GetSheetNames(path);
|
|
||||||
SeedDataService seedDataService = new();
|
SeedDataService seedDataService = new();
|
||||||
var result = seedDataService.InitSeedData(path, clean);
|
var result = seedDataService.InitSeedData(path, clean);
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
Console.ForegroundColor = ConsoleColor.Red;
|
||||||
|
|||||||
@ -153,6 +153,7 @@ namespace ZR.Admin.WebApi.Controllers
|
|||||||
{
|
{
|
||||||
throw new CustomException("表不能为空");
|
throw new CustomException("表不能为空");
|
||||||
}
|
}
|
||||||
|
var dbType = AppSettings.GetAppConfig(GenConstants.Gen_conn_dbType, 0);
|
||||||
string[] tableNames = tables.Split(',', StringSplitOptions.RemoveEmptyEntries);
|
string[] tableNames = tables.Split(',', StringSplitOptions.RemoveEmptyEntries);
|
||||||
int result = 0;
|
int result = 0;
|
||||||
foreach (var tableName in tableNames)
|
foreach (var tableName in tableNames)
|
||||||
@ -160,15 +161,18 @@ namespace ZR.Admin.WebApi.Controllers
|
|||||||
var tabInfo = _CodeGeneraterService.GetTableInfo(dbName, tableName);
|
var tabInfo = _CodeGeneraterService.GetTableInfo(dbName, tableName);
|
||||||
if (tabInfo != null)
|
if (tabInfo != null)
|
||||||
{
|
{
|
||||||
|
List<OracleSeq> seqs = new();
|
||||||
GenTable genTable = CodeGeneratorTool.InitTable(dbName, HttpContext.GetName(), tableName, tabInfo?.Description);
|
GenTable genTable = CodeGeneratorTool.InitTable(dbName, HttpContext.GetName(), tableName, tabInfo?.Description);
|
||||||
genTable.TableId = GenTableService.ImportGenTable(genTable);
|
genTable.TableId = GenTableService.ImportGenTable(genTable);
|
||||||
|
if (dbType == 3)
|
||||||
|
{
|
||||||
|
seqs = _CodeGeneraterService.GetAllOracleSeqs(dbName);
|
||||||
|
}
|
||||||
if (genTable.TableId > 0)
|
if (genTable.TableId > 0)
|
||||||
{
|
{
|
||||||
//保存列信息
|
//保存列信息
|
||||||
List<DbColumnInfo> dbColumnInfos = _CodeGeneraterService.GetColumnInfo(dbName, tableName);
|
List<DbColumnInfo> dbColumnInfos = _CodeGeneraterService.GetColumnInfo(dbName, tableName);
|
||||||
List<GenTableColumn> genTableColumns = CodeGeneratorTool.InitGenTableColumn(genTable, dbColumnInfos);
|
List<GenTableColumn> genTableColumns = CodeGeneratorTool.InitGenTableColumn(genTable, dbColumnInfos, seqs);
|
||||||
|
|
||||||
GenTableColumnService.DeleteGenTableColumnByTableName(tableName);
|
GenTableColumnService.DeleteGenTableColumnByTableName(tableName);
|
||||||
GenTableColumnService.InsertGenTableColumn(genTableColumns);
|
GenTableColumnService.InsertGenTableColumn(genTableColumns);
|
||||||
genTable.Columns = genTableColumns;
|
genTable.Columns = genTableColumns;
|
||||||
@ -264,10 +268,11 @@ namespace ZR.Admin.WebApi.Controllers
|
|||||||
//自定义路径
|
//自定义路径
|
||||||
if (genTableInfo.GenType == "1")
|
if (genTableInfo.GenType == "1")
|
||||||
{
|
{
|
||||||
|
var genPath = genTableInfo.GenPath;
|
||||||
string tempPath = WebHostEnvironment.ContentRootPath;
|
string tempPath = WebHostEnvironment.ContentRootPath;
|
||||||
var parentPath = tempPath[..tempPath.LastIndexOf(@"\")];
|
var parentPath = tempPath[..tempPath.LastIndexOf(@"\")];
|
||||||
//代码生成文件夹路径
|
//代码生成文件夹路径
|
||||||
dto.GenCodePath = genTableInfo.GenPath.IsEmpty() ? parentPath : genTableInfo.GenPath;
|
dto.GenCodePath = (genPath.IsEmpty() || genPath.Equals("/")) ? parentPath : genTableInfo.GenPath;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,15 +1,16 @@
|
|||||||
using Infrastructure;
|
using Infrastructure;
|
||||||
using Infrastructure.Extensions;
|
using Infrastructure.Extensions;
|
||||||
using Infrastructure.Helper;
|
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using SqlSugar.IOC;
|
using SqlSugar.IOC;
|
||||||
using System.Reflection;
|
|
||||||
using ZR.Admin.WebApi.Framework;
|
using ZR.Admin.WebApi.Framework;
|
||||||
using ZR.Model;
|
using ZR.Model;
|
||||||
using ZR.Model.System;
|
using ZR.Model.System;
|
||||||
|
|
||||||
namespace ZR.Admin.WebApi.Extensions
|
namespace ZR.Admin.WebApi.Extensions
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// sqlsugar 数据处理
|
||||||
|
/// </summary>
|
||||||
public static class DbExtension
|
public static class DbExtension
|
||||||
{
|
{
|
||||||
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
||||||
@ -63,9 +64,9 @@ namespace ZR.Admin.WebApi.Extensions
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
if(Configuration["InitDb"].ParseToBool() == true && environment.IsDevelopment())
|
if (Configuration["InitDb"].ParseToBool() == true && environment.IsDevelopment())
|
||||||
{
|
{
|
||||||
InitDb();
|
InitTable.InitDb();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +102,6 @@ namespace ZR.Admin.WebApi.Extensions
|
|||||||
logger.Info(log);
|
logger.Info(log);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
db.GetConnectionScope(configId).Aop.OnError = (ex) =>
|
db.GetConnectionScope(configId).Aop.OnError = (ex) =>
|
||||||
{
|
{
|
||||||
var pars = db.Utilities.SerializeObject(((SugarParameter[])ex.Parametres).ToDictionary(it => it.ParameterName, it => it.Value));
|
var pars = db.Utilities.SerializeObject(((SugarParameter[])ex.Parametres).ToDictionary(it => it.ParameterName, it => it.Value));
|
||||||
@ -109,10 +109,10 @@ namespace ZR.Admin.WebApi.Extensions
|
|||||||
string sql = "【错误SQL】" + UtilMethods.GetSqlString(config.DbType, ex.Sql, (SugarParameter[])ex.Parametres) + "\r\n";
|
string sql = "【错误SQL】" + UtilMethods.GetSqlString(config.DbType, ex.Sql, (SugarParameter[])ex.Parametres) + "\r\n";
|
||||||
logger.Error(ex, $"{sql}\r\n{ex.Message}\r\n{ex.StackTrace}");
|
logger.Error(ex, $"{sql}\r\n{ex.Message}\r\n{ex.StackTrace}");
|
||||||
};
|
};
|
||||||
|
|
||||||
db.GetConnectionScope(configId).Aop.DataExecuting = (oldValue, entiyInfo) =>
|
db.GetConnectionScope(configId).Aop.DataExecuting = (oldValue, entiyInfo) =>
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
db.GetConnectionScope(configId).CurrentConnectionConfig.MoreSettings = new ConnMoreSettings()
|
db.GetConnectionScope(configId).CurrentConnectionConfig.MoreSettings = new ConnMoreSettings()
|
||||||
{
|
{
|
||||||
IsAutoRemoveDataCache = true
|
IsAutoRemoveDataCache = true
|
||||||
@ -122,20 +122,6 @@ namespace ZR.Admin.WebApi.Extensions
|
|||||||
DataInfoCacheService = cache,
|
DataInfoCacheService = cache,
|
||||||
EntityService = (c, p) =>
|
EntityService = (c, p) =>
|
||||||
{
|
{
|
||||||
p.DbTableName = p.DbTableName.FirstLowerCase();
|
|
||||||
p.DbColumnName = p.DbColumnName.FirstLowerCase();
|
|
||||||
|
|
||||||
if (db.GetConnectionScope(configId).CurrentConnectionConfig.DbType == DbType.PostgreSQL)
|
|
||||||
{
|
|
||||||
if (p.DataType != null && p.DataType.Contains("nvarchar"))
|
|
||||||
{
|
|
||||||
p.DataType = "text";
|
|
||||||
}
|
|
||||||
if (c.Name == nameof(SysMenu.IsCache) || c.Name == nameof(SysMenu.IsFrame))
|
|
||||||
{
|
|
||||||
p.DataType = "char(1)";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (p.IsPrimarykey == true)//主键不能为null
|
if (p.IsPrimarykey == true)//主键不能为null
|
||||||
{
|
{
|
||||||
p.IsNullable = false;
|
p.IsNullable = false;
|
||||||
@ -148,26 +134,46 @@ namespace ZR.Admin.WebApi.Extensions
|
|||||||
{
|
{
|
||||||
p.IsNullable = true;
|
p.IsNullable = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config.DbType == DbType.PostgreSQL)
|
||||||
|
{
|
||||||
|
if (c.Name == nameof(SysMenu.IsCache) || c.Name == nameof(SysMenu.IsFrame))
|
||||||
|
{
|
||||||
|
p.DataType = "char(1)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#region 兼容Oracle
|
||||||
|
if (config.DbType == DbType.Oracle)
|
||||||
|
{
|
||||||
|
if (p.IsIdentity == true)
|
||||||
|
{
|
||||||
|
if (p.EntityName == nameof(SysUser))
|
||||||
|
{
|
||||||
|
p.OracleSequenceName = "SEQ_SYS_USER_USERID";
|
||||||
|
}
|
||||||
|
else if (p.EntityName == nameof(SysRole))
|
||||||
|
{
|
||||||
|
p.OracleSequenceName = "SEQ_SYS_ROLE_ROLEID";
|
||||||
|
}
|
||||||
|
else if (p.EntityName == nameof(SysDept))
|
||||||
|
{
|
||||||
|
p.OracleSequenceName = "SEQ_SYS_DEPT_DEPTID";
|
||||||
|
}
|
||||||
|
else if (p.EntityName == nameof(SysMenu))
|
||||||
|
{
|
||||||
|
p.OracleSequenceName = "SEQ_SYS_MENU_MENUID";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
p.OracleSequenceName = "SEQ_ID";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建db、表
|
|
||||||
/// </summary>
|
|
||||||
public static void InitDb()
|
|
||||||
{
|
|
||||||
var db = DbScoped.SugarScope;
|
|
||||||
//建库:如果不存在创建数据库存在不会重复创建
|
|
||||||
db.DbMaintenance.CreateDatabase();// 注意 :Oracle和个别国产库需不支持该方法,需要手动建库
|
|
||||||
|
|
||||||
var baseType = typeof(SysBase);
|
|
||||||
var entityes = AssemblyUtils.GetAllTypes().Where(p => !p.IsAbstract && p != baseType && p.GetCustomAttribute<SugarTable>() != null).ToArray();
|
|
||||||
|
|
||||||
//23个表
|
|
||||||
db.CodeFirst.InitTables(entityes);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static object GetParsValue(SugarParameter x)
|
private static object GetParsValue(SugarParameter x)
|
||||||
{
|
{
|
||||||
if (x.DbType == System.Data.DbType.String || x.DbType == System.Data.DbType.DateTime || x.DbType == System.Data.DbType.String)
|
if (x.DbType == System.Data.DbType.String || x.DbType == System.Data.DbType.DateTime || x.DbType == System.Data.DbType.String)
|
||||||
|
|||||||
53
ZR.Admin.WebApi/Extensions/InitTable.cs
Normal file
53
ZR.Admin.WebApi/Extensions/InitTable.cs
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
using SqlSugar.IOC;
|
||||||
|
using ZR.Model.Models;
|
||||||
|
using ZR.Model.System;
|
||||||
|
using ZR.Model.System.Generate;
|
||||||
|
|
||||||
|
namespace ZR.Admin.WebApi.Extensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 初始化表
|
||||||
|
/// </summary>
|
||||||
|
public class InitTable
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 创建db、表
|
||||||
|
/// </summary>
|
||||||
|
public static void InitDb()
|
||||||
|
{
|
||||||
|
var db = DbScoped.SugarScope;
|
||||||
|
//建库:如果不存在创建数据库存在不会重复创建
|
||||||
|
db.DbMaintenance.CreateDatabase();// 注意 :Oracle和个别国产库需不支持该方法,需要手动建库
|
||||||
|
|
||||||
|
//var baseType = typeof(SysBase);
|
||||||
|
//var entityes = AssemblyUtils.GetAllTypes().Where(p => !p.IsAbstract && p != baseType && p.GetCustomAttribute<SugarTable>() != null).ToArray();
|
||||||
|
//db.CodeFirst.InitTables(entityes);
|
||||||
|
|
||||||
|
//23个表,建议先使用下面方法初始化表,方便排查问题
|
||||||
|
db.CodeFirst.InitTables(typeof(SysUser));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysRole));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysDept));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysPost));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysFile));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysConfig));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysNotice));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysLogininfor));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysOperLog));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysMenu));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysRoleMenu));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysRoleDept));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysUserRole));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysUserPost));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysTasks));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysTasksLog));
|
||||||
|
db.CodeFirst.InitTables(typeof(CommonLang));
|
||||||
|
db.CodeFirst.InitTables(typeof(GenTable));
|
||||||
|
db.CodeFirst.InitTables(typeof(GenTableColumn));
|
||||||
|
db.CodeFirst.InitTables(typeof(Article));
|
||||||
|
db.CodeFirst.InitTables(typeof(ArticleCategory));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysDictData));
|
||||||
|
db.CodeFirst.InitTables(typeof(SysDictType));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -36,7 +36,7 @@
|
|||||||
"DemoMode": false, //是否演示模式
|
"DemoMode": false, //是否演示模式
|
||||||
"Upload": {
|
"Upload": {
|
||||||
"uploadUrl": "http://localhost:8888", //本地存储资源访问路径
|
"uploadUrl": "http://localhost:8888", //本地存储资源访问路径
|
||||||
"localSavePath": "uploads", //本地上传默认文件存储目录 wwwroot/uploads
|
"localSavePath": "uploads", //本地上传默认文件存储目录 wwwroot/uploads, 如果saveType= 2 (请使用完整路径,比如 /home/resource)
|
||||||
"maxSize": 15, //上传文件大小限制 15M
|
"maxSize": 15, //上传文件大小限制 15M
|
||||||
"notAllowedExt": [ ".bat", ".exe", ".jar", ".js" ]
|
"notAllowedExt": [ ".bat", ".exe", ".jar", ".js" ]
|
||||||
},
|
},
|
||||||
|
|||||||
1
ZR.Admin.WebApi/wwwroot/CodeGenTemplate/sql/Other.txt
Normal file
1
ZR.Admin.WebApi/wwwroot/CodeGenTemplate/sql/Other.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
请勾选 添加菜单 ,将会自动导入菜单到数据库中
|
||||||
Binary file not shown.
@ -50,6 +50,7 @@ namespace ZR.CodeGenerator
|
|||||||
ShowBtnView = dto.GenTable.Options.CheckedBtn.Any(f => f == 5),
|
ShowBtnView = dto.GenTable.Options.CheckedBtn.Any(f => f == 5),
|
||||||
ShowBtnTruncate = dto.GenTable.Options.CheckedBtn.Any(f => f == 6),
|
ShowBtnTruncate = dto.GenTable.Options.CheckedBtn.Any(f => f == 6),
|
||||||
ShowBtnMultiDel = dto.GenTable.Options.CheckedBtn.Any(f => f == 7),
|
ShowBtnMultiDel = dto.GenTable.Options.CheckedBtn.Any(f => f == 7),
|
||||||
|
ViewFileName = dto.GenTable.BusinessName.FirstUpperCase()
|
||||||
};
|
};
|
||||||
var columns = dto.GenTable.Columns;
|
var columns = dto.GenTable.Columns;
|
||||||
|
|
||||||
@ -67,7 +68,7 @@ namespace ZR.CodeGenerator
|
|||||||
GenerateControllers(replaceDto, dto);
|
GenerateControllers(replaceDto, dto);
|
||||||
if (dto.VueVersion == 3)
|
if (dto.VueVersion == 3)
|
||||||
{
|
{
|
||||||
GenerateVue3Views(dto);
|
GenerateVue3Views(replaceDto, dto);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -182,7 +183,7 @@ namespace ZR.CodeGenerator
|
|||||||
replaceDto.VueViewFormHtml = GenerateCurdForm();
|
replaceDto.VueViewFormHtml = GenerateCurdForm();
|
||||||
|
|
||||||
var tpl = JnHelper.ReadTemplate(CodeTemplateDir, fileName);
|
var tpl = JnHelper.ReadTemplate(CodeTemplateDir, fileName);
|
||||||
var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
|
var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{replaceDto.ViewFileName}.vue");
|
||||||
|
|
||||||
generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, tpl.Render()));
|
generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, tpl.Render()));
|
||||||
}
|
}
|
||||||
@ -191,7 +192,7 @@ namespace ZR.CodeGenerator
|
|||||||
/// vue3
|
/// vue3
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="generateDto"></param>
|
/// <param name="generateDto"></param>
|
||||||
private static void GenerateVue3Views(GenerateDto generateDto)
|
private static void GenerateVue3Views(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||||
{
|
{
|
||||||
string fileName = generateDto.GenTable.TplCategory switch
|
string fileName = generateDto.GenTable.TplCategory switch
|
||||||
{
|
{
|
||||||
@ -206,7 +207,7 @@ namespace ZR.CodeGenerator
|
|||||||
tpl.Set("options", generateDto.GenTable?.Options);
|
tpl.Set("options", generateDto.GenTable?.Options);
|
||||||
|
|
||||||
var result = tpl.Render();
|
var result = tpl.Render();
|
||||||
var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
|
var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{replaceDto.ViewFileName}.vue");
|
||||||
generateDto.GenCodes.Add(new GenCode(16, "index.vue", fullPath, result));
|
generateDto.GenCodes.Add(new GenCode(16, "index.vue", fullPath, result));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -240,21 +241,13 @@ namespace ZR.CodeGenerator
|
|||||||
/// <param name="generateDto"></param>
|
/// <param name="generateDto"></param>
|
||||||
public static void GenerateSql(GenerateDto generateDto)
|
public static void GenerateSql(GenerateDto generateDto)
|
||||||
{
|
{
|
||||||
var tempName = "";
|
string tempName = generateDto.DbType switch
|
||||||
switch (generateDto.DbType)
|
|
||||||
{
|
{
|
||||||
case 0:
|
0 => "MySqlTemplate",
|
||||||
tempName = "MySqlTemplate";
|
1 => "SqlTemplate",
|
||||||
break;
|
4 => "PgSql",
|
||||||
case 1:
|
_ => "Other",
|
||||||
tempName = "SqlTemplate";
|
};
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
tempName = "PgSql";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
var tpl = JnHelper.ReadTemplate(CodeTemplateDir, Path.Combine("sql", $"{tempName}.txt"));
|
var tpl = JnHelper.ReadTemplate(CodeTemplateDir, Path.Combine("sql", $"{tempName}.txt"));
|
||||||
tpl.Set("parentId", generateDto.GenTable?.Options?.ParentMenuId ?? 0);
|
tpl.Set("parentId", generateDto.GenTable?.Options?.ParentMenuId ?? 0);
|
||||||
var result = tpl.Render();
|
var result = tpl.Render();
|
||||||
@ -315,18 +308,8 @@ namespace ZR.CodeGenerator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return tableName.UnderScoreToCamelCase();
|
//return tableName.UnderScoreToCamelCase();
|
||||||
}
|
return tableName.ConvertToPascal("_");
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取前端标签名
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="columnDescription"></param>
|
|
||||||
/// <param name="columnName"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static string GetLabelName(string columnDescription, string columnName)
|
|
||||||
{
|
|
||||||
return string.IsNullOrEmpty(columnDescription) ? columnName : columnDescription;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -343,7 +326,7 @@ namespace ZR.CodeGenerator
|
|||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
return "";
|
return str;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,8 +340,8 @@ namespace ZR.CodeGenerator
|
|||||||
sDatatype = sDatatype.ToLower();
|
sDatatype = sDatatype.ToLower();
|
||||||
string sTempDatatype = sDatatype switch
|
string sTempDatatype = sDatatype switch
|
||||||
{
|
{
|
||||||
"int" or "number" or "integer" or "smallint" or "int4" or "int8" or "int2" => "int",
|
"int" or "integer" or "smallint" or "int4" or "int8" or "int2" => "int",
|
||||||
"bigint" => "long",
|
"bigint" or "number" => "long",
|
||||||
"tinyint" => "byte",
|
"tinyint" => "byte",
|
||||||
"numeric" or "real" or "float" => "float",
|
"numeric" or "real" or "float" => "float",
|
||||||
"decimal" or "numer(8,2)" or "numeric" => "decimal",
|
"decimal" or "numer(8,2)" or "numeric" => "decimal",
|
||||||
@ -389,8 +372,8 @@ namespace ZR.CodeGenerator
|
|||||||
DbName = dbName,
|
DbName = dbName,
|
||||||
BaseNameSpace = "ZR.",//导入默认命名空间前缀
|
BaseNameSpace = "ZR.",//导入默认命名空间前缀
|
||||||
ModuleName = "business",//导入默认模块名
|
ModuleName = "business",//导入默认模块名
|
||||||
ClassName = GetClassName(tableName).FirstUpperCase(),
|
ClassName = GetClassName(tableName),
|
||||||
BusinessName = tableName.UnderScoreToCamelCase().FirstUpperCase(),
|
BusinessName = GetClassName(tableName),
|
||||||
FunctionAuthor = AppSettings.GetConfig(GenConstants.Gen_author),
|
FunctionAuthor = AppSettings.GetConfig(GenConstants.Gen_author),
|
||||||
TableName = tableName,
|
TableName = tableName,
|
||||||
TableComment = desc,
|
TableComment = desc,
|
||||||
@ -412,12 +395,13 @@ namespace ZR.CodeGenerator
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="genTable"></param>
|
/// <param name="genTable"></param>
|
||||||
/// <param name="dbColumnInfos"></param>
|
/// <param name="dbColumnInfos"></param>
|
||||||
public static List<GenTableColumn> InitGenTableColumn(GenTable genTable, List<DbColumnInfo> dbColumnInfos)
|
/// <param name="seqs"></param>
|
||||||
|
public static List<GenTableColumn> InitGenTableColumn(GenTable genTable, List<DbColumnInfo> dbColumnInfos, List<OracleSeq> seqs = null)
|
||||||
{
|
{
|
||||||
List<GenTableColumn> genTableColumns = new();
|
List<GenTableColumn> genTableColumns = new();
|
||||||
foreach (var column in dbColumnInfos)
|
foreach (var column in dbColumnInfos)
|
||||||
{
|
{
|
||||||
genTableColumns.Add(InitColumnField(genTable, column));
|
genTableColumns.Add(InitColumnField(genTable, column, seqs));
|
||||||
}
|
}
|
||||||
return genTableColumns;
|
return genTableColumns;
|
||||||
}
|
}
|
||||||
@ -428,17 +412,26 @@ namespace ZR.CodeGenerator
|
|||||||
/// <param name="genTable"></param>
|
/// <param name="genTable"></param>
|
||||||
/// <param name="column"></param>
|
/// <param name="column"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private static GenTableColumn InitColumnField(GenTable genTable, DbColumnInfo column)
|
private static GenTableColumn InitColumnField(GenTable genTable, DbColumnInfo column, List<OracleSeq> seqs)
|
||||||
{
|
{
|
||||||
|
var dbType = AppSettings.Get<int>(GenConstants.Gen_conn_dbType);
|
||||||
|
var dataType = column.DataType;
|
||||||
|
if (dbType == 3)
|
||||||
|
{
|
||||||
|
dataType = column.OracleDataType;
|
||||||
|
var seqName = $"SEQ_{genTable.TableName}_{column.DbColumnName}";
|
||||||
|
var isIdentity = seqs.Any(f => seqName.Equals(f.SEQUENCE_NAME, StringComparison.CurrentCultureIgnoreCase));
|
||||||
|
column.IsIdentity = isIdentity;
|
||||||
|
}
|
||||||
GenTableColumn genTableColumn = new()
|
GenTableColumn genTableColumn = new()
|
||||||
{
|
{
|
||||||
ColumnName = column.DbColumnName.FirstLowerCase(),
|
ColumnName = column.DbColumnName.FirstLowerCase(),
|
||||||
ColumnComment = column.ColumnDescription,
|
ColumnComment = column.ColumnDescription,
|
||||||
IsPk = column.IsPrimarykey,
|
IsPk = column.IsPrimarykey,
|
||||||
ColumnType = column.DataType,
|
ColumnType = dataType,
|
||||||
TableId = genTable.TableId,
|
TableId = genTable.TableId,
|
||||||
TableName = genTable.TableName,
|
TableName = genTable.TableName,
|
||||||
CsharpType = GetCSharpDatatype(column.DataType),
|
CsharpType = GetCSharpDatatype(dataType),
|
||||||
CsharpField = column.DbColumnName.ConvertToPascal("_"),
|
CsharpField = column.DbColumnName.ConvertToPascal("_"),
|
||||||
IsRequired = !column.IsNullable,
|
IsRequired = !column.IsNullable,
|
||||||
IsIncrement = column.IsIdentity,
|
IsIncrement = column.IsIdentity,
|
||||||
|
|||||||
@ -15,7 +15,7 @@ namespace ZR.CodeGenerator
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// InputDto输入实体是不包含字段
|
/// InputDto输入实体是不包含字段
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly string[] inputDtoNoField = new string[] { "createTime", "updateTime", "addtime", "create_time", "update_time" };
|
public static readonly string[] inputDtoNoField = new string[] { "createTime", "updateTime", "addtime", "create_time", "update_time", "create_by", "update_by" };
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 图片字段
|
/// 图片字段
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -27,7 +27,7 @@ namespace ZR.CodeGenerator
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 单选按钮字段
|
/// 单选按钮字段
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly string[] radioFiled = new string[] { "status", "state", "is"};
|
public static readonly string[] radioFiled = new string[] { "status", "state", "is" };
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
11
ZR.CodeGenerator/Model/OracleSeq.cs
Normal file
11
ZR.CodeGenerator/Model/OracleSeq.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
namespace ZR.CodeGenerator.Model
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Oracle库序列
|
||||||
|
/// </summary>
|
||||||
|
public class OracleSeq
|
||||||
|
{
|
||||||
|
public string SEQUENCE_NAME { get; set; }
|
||||||
|
public long LAST_NUMBER { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -65,5 +65,9 @@ namespace ZR.CodeGenerator.Model
|
|||||||
/// 是否有编辑器
|
/// 是否有编辑器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int ShowEditor { get; set; }
|
public int ShowEditor { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// vue页面文件名
|
||||||
|
/// </summary>
|
||||||
|
public string ViewFileName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using ZR.CodeGenerator.Model;
|
||||||
using ZR.Model;
|
using ZR.Model;
|
||||||
|
|
||||||
namespace ZR.CodeGenerator.Service
|
namespace ZR.CodeGenerator.Service
|
||||||
@ -72,5 +73,18 @@ namespace ZR.CodeGenerator.Service
|
|||||||
{
|
{
|
||||||
return GetSugarDbContext(dbName).DbMaintenance.GetColumnInfosByTableName(tableName, true);
|
return GetSugarDbContext(dbName).DbMaintenance.GetColumnInfosByTableName(tableName, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取Oracle所有序列
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dbName"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public List<OracleSeq> GetAllOracleSeqs(string dbName)
|
||||||
|
{
|
||||||
|
string sql = "SELECT * FROM USER_SEQUENCES";
|
||||||
|
var seqs = GetSugarDbContext(dbName).Ado.SqlQuery<OracleSeq>(sql);
|
||||||
|
|
||||||
|
return seqs.ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,6 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="JinianNet.JNTemplate" Version="2.3.3" />
|
<PackageReference Include="JinianNet.JNTemplate" Version="2.3.3" />
|
||||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview08" />
|
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview10" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -33,7 +33,7 @@ namespace ZR.Model.System
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 文章内容
|
/// 文章内容
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(ColumnDescription = "文章内容", ColumnDataType = "text")]
|
[SugarColumn(ColumnDescription = "文章内容", ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||||
public string Content { get; set; }
|
public string Content { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 作者名
|
/// 作者名
|
||||||
|
|||||||
@ -16,17 +16,26 @@ namespace ZR.Model.System
|
|||||||
[ExcelIgnore]
|
[ExcelIgnore]
|
||||||
public string Create_by { get; set; }
|
public string Create_by { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
[SugarColumn(IsOnlyIgnoreUpdate = true, IsNullable = true)]
|
[SugarColumn(IsOnlyIgnoreUpdate = true, IsNullable = true)]
|
||||||
[JsonProperty(propertyName: "CreateTime")]
|
[JsonProperty(propertyName: "CreateTime")]
|
||||||
[ExcelColumn(Format = "yyyy-MM-dd HH:mm:ss")]
|
[ExcelColumn(Format = "yyyy-MM-dd HH:mm:ss")]
|
||||||
public DateTime Create_time { get; set; } = DateTime.Now;
|
public DateTime Create_time { get; set; } = DateTime.Now;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新人
|
||||||
|
/// </summary>
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[JsonProperty(propertyName: "UpdateBy")]
|
[JsonProperty(propertyName: "UpdateBy")]
|
||||||
[SugarColumn(IsOnlyIgnoreInsert = true, Length = 64, IsNullable = true)]
|
[SugarColumn(IsOnlyIgnoreInsert = true, Length = 64, IsNullable = true)]
|
||||||
[ExcelIgnore]
|
[ExcelIgnore]
|
||||||
public string Update_by { get; set; }
|
public string Update_by { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新时间
|
||||||
|
/// </summary>
|
||||||
//[JsonIgnore]
|
//[JsonIgnore]
|
||||||
[SugarColumn(IsOnlyIgnoreInsert = true, IsNullable = true)]
|
[SugarColumn(IsOnlyIgnoreInsert = true, IsNullable = true)]
|
||||||
[JsonProperty(propertyName: "UpdateTime")]
|
[JsonProperty(propertyName: "UpdateTime")]
|
||||||
|
|||||||
@ -30,7 +30,7 @@ namespace ZR.Model.System
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 公告内容
|
/// 公告内容
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(ColumnName = "notice_content", ColumnDataType = "text")]
|
[SugarColumn(ColumnName = "notice_content", ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||||
public string NoticeContent { get; set; }
|
public string NoticeContent { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 公告状态 (0正常 1关闭)
|
/// 公告状态 (0正常 1关闭)
|
||||||
|
|||||||
@ -72,13 +72,13 @@ namespace ZR.Model.System
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 请求参数
|
/// 请求参数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(Length = 2000)]
|
[SugarColumn(Length = 4000)]
|
||||||
public string OperParam { get; set; }
|
public string OperParam { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 返回参数
|
/// 返回参数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(ColumnDataType = "text")]
|
[SugarColumn(ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||||
public string JsonResult { get; set; }
|
public string JsonResult { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace ZR.Model.System
|
namespace ZR.Model.System
|
||||||
{
|
{
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="MiniExcel" Version="1.30.3" />
|
<PackageReference Include="MiniExcel" Version="1.30.3" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
|
||||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview08" />
|
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview10" />
|
||||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -15,6 +15,6 @@
|
|||||||
<PackageReference Include="MySqlConnector" Version="2.2.6" />
|
<PackageReference Include="MySqlConnector" Version="2.2.6" />
|
||||||
<PackageReference Include="NETCore.Encrypt" Version="2.1.1" />
|
<PackageReference Include="NETCore.Encrypt" Version="2.1.1" />
|
||||||
<PackageReference Include="SqlSugar.IOC" Version="2.0.0" />
|
<PackageReference Include="SqlSugar.IOC" Version="2.0.0" />
|
||||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview08" />
|
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview10" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -49,13 +49,11 @@ namespace ZR.Service.System
|
|||||||
public (string, object, object) InitMenuData(List<SysMenu> data)
|
public (string, object, object) InitMenuData(List<SysMenu> data)
|
||||||
{
|
{
|
||||||
var db = DbScoped.SugarScope;
|
var db = DbScoped.SugarScope;
|
||||||
db.Ado.BeginTran();
|
|
||||||
var x = db.Storageable(data)
|
var x = db.Storageable(data)
|
||||||
.SplitInsert(it => it.NotAny())
|
.SplitInsert(it => it.NotAny())
|
||||||
.WhereColumns(it => it.MenuId)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
|
.WhereColumns(it => it.MenuId)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
|
||||||
.ToStorage();
|
.ToStorage();
|
||||||
var result = x.AsInsertable.OffIdentity().ExecuteCommand();//插入可插入部分;
|
var result = x.AsInsertable.OffIdentity().ExecuteCommand();//插入可插入部分;
|
||||||
db.Ado.CommitTran();
|
|
||||||
|
|
||||||
string msg = $"[菜单数据] 插入{x.InsertList.Count} 错误数据{x.ErrorList.Count} 总共{x.TotalList.Count}";
|
string msg = $"[菜单数据] 插入{x.InsertList.Count} 错误数据{x.ErrorList.Count} 总共{x.TotalList.Count}";
|
||||||
return (msg, x.ErrorList, x.IgnoreList);
|
return (msg, x.ErrorList, x.IgnoreList);
|
||||||
@ -89,7 +87,7 @@ namespace ZR.Service.System
|
|||||||
.SplitInsert(it => it.NotAny())
|
.SplitInsert(it => it.NotAny())
|
||||||
.WhereColumns(it => it.DeptId)
|
.WhereColumns(it => it.DeptId)
|
||||||
.ToStorage();
|
.ToStorage();
|
||||||
var result = x.AsInsertable.ExecuteCommand();
|
var result = x.AsInsertable.OffIdentity().ExecuteCommand();
|
||||||
|
|
||||||
string msg = $"[部门数据] 插入{x.InsertList.Count} 错误数据{x.ErrorList.Count} 总共{x.TotalList.Count}";
|
string msg = $"[部门数据] 插入{x.InsertList.Count} 错误数据{x.ErrorList.Count} 总共{x.TotalList.Count}";
|
||||||
return (msg, x.ErrorList, x.IgnoreList);
|
return (msg, x.ErrorList, x.IgnoreList);
|
||||||
|
|||||||
@ -660,6 +660,8 @@ namespace ZR.Service
|
|||||||
//Insert(menuList);
|
//Insert(menuList);
|
||||||
|
|
||||||
var x = Storageable(menuList)
|
var x = Storageable(menuList)
|
||||||
|
.SplitInsert(it => !it.Any())
|
||||||
|
.SplitUpdate(it => !it.Any())
|
||||||
.WhereColumns(it => new { it.MenuName, it.ParentId })
|
.WhereColumns(it => new { it.MenuName, it.ParentId })
|
||||||
.ToStorage();
|
.ToStorage();
|
||||||
x.AsInsertable.ExecuteCommand();//插入可插入部分;
|
x.AsInsertable.ExecuteCommand();//插入可插入部分;
|
||||||
|
|||||||
46
document/oracle/seq.txt
Normal file
46
document/oracle/seq.txt
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
--通用序列id
|
||||||
|
create sequence SEQ_ID
|
||||||
|
minvalue 1
|
||||||
|
maxvalue 99999999
|
||||||
|
start with 1
|
||||||
|
increment by 1
|
||||||
|
nocache
|
||||||
|
order;
|
||||||
|
|
||||||
|
--角色表序列id
|
||||||
|
create sequence SEQ_SYS_ROLE_ROLEID
|
||||||
|
minvalue 10
|
||||||
|
maxvalue 99999999
|
||||||
|
start with 10
|
||||||
|
increment by 1
|
||||||
|
nocache
|
||||||
|
order;
|
||||||
|
|
||||||
|
--菜单表序列id
|
||||||
|
create sequence SEQ_SYS_MENU_MENUID
|
||||||
|
minvalue 2000
|
||||||
|
maxvalue 99999999
|
||||||
|
start with 2000
|
||||||
|
increment by 1
|
||||||
|
nocache
|
||||||
|
order;
|
||||||
|
|
||||||
|
--用户表序列id
|
||||||
|
create sequence SEQ_SYS_USER_USERID
|
||||||
|
minvalue 100
|
||||||
|
maxvalue 99999999
|
||||||
|
start with 1
|
||||||
|
increment by 100
|
||||||
|
nocache
|
||||||
|
order;
|
||||||
|
|
||||||
|
--部门表序列id
|
||||||
|
create sequence SEQ_SYS_DEPT_DEPTID
|
||||||
|
minvalue 200
|
||||||
|
maxvalue 99999999
|
||||||
|
start with 200
|
||||||
|
increment by 1
|
||||||
|
nocache
|
||||||
|
order;
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user