乱码注意
1、把tables.vue等另存为utf-8格式
内置占位符
sbTableLine.Replace("{{comments}}", sbCommentLines.ToString()); // 列备注占位符
sbTableLine.Replace("{{indexs}}", sbIndexLines.ToString()); // 列索引占位符
sbTableLine.Replace("{{primarys}}", sbPrimarysLines.ToString()); // 列主键占位符
sbTableLine.Replace("{{defaults}}", sbDefaultsLines.ToString()); // 默认值占位符
sbTableLine.Replace("{{struct-params}}", sbStructParmsLines.ToString().TrimEnd(',')); // 构造函数占位符
sbTableLine.Replace("{{struct-tostrings}}", sbStructToStringsLines.ToString().TrimStart(',')); // 重新构造函数
sbTableLine.Replace("{{struct-sets}}", sbStructSetsLines.ToString()); // 构造函数值重写
sbTableLine.Replace("{{db_name}}", conn.DatabaseName); // 数据库名
sbTableLine.Replace("{{database_name}}", conn.DatabaseName); // 数据库名
sbTableLine.Replace("{{table_comment}}", table.TableComment ?? tableL); // 小写下划线表名
sbTableLine.Replace("{{table_name}}", tableL); // 小写下划线表名
sbTableLine.Replace("{{table_name_upper_line}}", tableLU); // 大写下划线表名
sbTableLine.Replace("{{table_name_lowner_line}}", tableL); // 小写下划线表名
sbTableLine.Replace("{{table_name_lowner}}", tableL);// 小写下划线
sbTableLine.Replace("{{table_name_upper}}", tableC); // 大写驼峰
sbTableLine.Replace("{{table_name_class}}", tableC); // 类名
sbTableLine.Replace("{{table_name_field}}", tableF); //小写驼峰表名
sbTableLine.Replace("{{table_name_hline}}", tableH); // 横杆连接
sbTableLine.Replace("{{table_field}}", tableF); //小写驼峰表名
sbTableLine.Replace("{{table_name_suffix}}", tableLU.Contains("_") ? tableL.Split('_').First<string>() : "common"); // 大写下划线表名
sbTableLine.Replace("{{module_name}}", conn.ModuleName); // 模块目录
sbTableLine.Replace("{{module_api}}", conn.ModuleApi); // 后端api 前缀
sbTableLine.Replace("{{module_middle}}", conn.ModuleMiddle); // 中间件 前缀
sbTableLine.Replace("{{module_front}}", conn.ModuleFront); // 中间件 前缀
sbTableLine.Replace("{{owner_id}}", ownerId); //所有者
sbTableLine.Replace("{{sys_id}}", sysId); //系统
sbTableLine.Replace("{{namespace_name}}", conn.NamespaceName); //命名空间名称
sbTableLine.Replace("{{tablespace_name}}", conn.TablespaceName); //表空间
sbTableLine.Replace("{{tablespace_module}}", conn.NamespaceMoudle); //模块名
sbTableLine.Replace("{{tablespace_module_point}}", conn.NamespaceMoudlePoint); //模块名
sbTableLine.Replace("{{package_name}}", conn.PackageName); //java包名称
sbTableLine.Replace("{{package_module}}", conn.PackageModule); //java包模块名称
sbTableLine.Replace("{{package_module_point}}", conn.PackageModulePoint); //java包模块名称
sbTableLine.Replace("{{table_conn_name}}", conn.ConnName); //ConnName
sbTableLine.Replace("{{tablespace_name}}", conn.TablespaceName); //表空间
sbTableLine.Replace("{{file_author}}", conn.Author ?? "ai"); //自动生成
sbTableLine.Replace("{{file_datetime}}", DateTimeUtil.Now().ToString()); //自动生成
sbTableLine.Replace("{{file_date}}", DateTimeUtil.Now().ToString("yyyy-MM-dd")); //自动生成
sbTableLine.Replace("{{file_time}}", DateTimeUtil.Now().ToString("HH:mm")); //自动生成
sbTableLine.Replace("{{columns-data-form}}", sbColumnsDataFormLines.ToString()); // 表单数据
sbTableLine.Replace("{{columns-data-rule}}", sbColumnsDataRuleLines.ToString()); // 规则数据
sbTableLine.Replace("{{columns-data-table}}", sbColumnsDataTableLines.ToString()); // 表格数据
sbTableLine.Replace("{{columns-data-where}}", sbColumnsDataWhereLines.ToString()); // 条件数据
sbTableLine.Replace("{{columns-data-submit}}", sbColumnsDataSubmitLines.ToString()); // 提交数据模板
sbTableLine.Replace("{{columns-tl-form}}", sbColumnsTlFormLines.ToString()); // 表单模板
sbTableLine.Replace("{{columns-tl-table}}", sbColumnsTlTableLines.ToString()); //表格列模板
sbTableLine.Replace("{{columns-tl-where}}", sbColumnsTlWhereLines.ToString()); // 搜索列模板
sbTableLine.Replace("{{columns-data-datetime-start-end}}", sbColumnsDatetimeSeLines.ToString()); // 开始时间和结束时间条件模板
sbTableLine.Replace("{{columns-data-snowflake-id}}", sbColumnsSnowflakeLines.ToString()); // 雪花ID设置值模板
基础占位符
var lstCurToColumns = lstColumns.Where(temp => ((temp.TbName ?? temp.TableName).ToLower() == table.Name.ToLower()));
var lstTitles = string.Join(',', lstCurToColumns.Select(x => $"'{x.Title}'"));
var lstFields = string.Join(',', lstCurToColumns.Select(x => $"'{x.Field}'"));
var lstNames = string.Join(',', lstCurToColumns.Select(x => $"{x.ColumnName ?? x.Name}"));
var lstValues = string.Join(',', lstCurToColumns.Select(x => $"@{x.ColumnName ?? x.Name}"));
var lstUpdates = string.Join(',', lstCurToColumns.Select(x => $"{x.ColumnName ?? x.Name}=@{x.ColumnName ?? x.Name}"));
var lstParams = string.Join(',', lstCurToColumns.Select(x => "#{item." + (x.Field) + "}"));
sbTableLine.Replace("{{excel_headers}}", lstTitles); // excel列头 'field'
sbTableLine.Replace("{{excel_fields}}", lstFields); // excel列 'value'
sbTableLine.Replace("{{columns_insert_names}}", lstNames); // 列新增名称 column_name
sbTableLine.Replace("{{columns_insert_values}}", lstValues); // 列值参数 @filed1
sbTableLine.Replace("{{columns_update_sets}}", lstUpdates); // 列更新值 column1=@filed1
sbTableLine.Replace("{{columns_select_names}}", lstNames); // 列查询名称 column_name
sbTableLine.Replace("{{columns_insert_params}}", lstParams); // 列值参数 @filed1
sbTableLine.Replace("{{columns}}", sbColumnLines.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-primarys}}", sbColumnPrimarysLines.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 只有主键
sbTableLine.Replace("{{columns-primarys-no}}", sbColumnPrimarysNoLines.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 无主键
sbTableLine.Replace("{{columns-second}}", sbColumnLinesSecond.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-third}}", sbColumnLinesThird.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-four}}", sbColumnLinesFour.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-query}}", sbColumnLinesQuery.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
模板占位符
sbTableLine.Replace("{{columns-update}}", sbColumnLinesUpdate.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-update-1}}", sbColumnLinesUpdate1.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-update-2}}", sbColumnLinesUpdate2.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-insert}}", sbColumnLinesInsert.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-insert-values}}", sbColumnLinesInsertValues.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-insert-1}}", sbColumnLinesInsert1.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-insert-1-values}}", sbColumnLinesInsert1Values.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-insert-2}}", sbColumnLinesInsert2.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-insert-2-values}}", sbColumnLinesInsert2Values.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-insert-3}}", sbColumnLinesInsert3.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-insert-3-values}}", sbColumnLinesInsert3Values.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-delete}}", sbColumnLinesDelete.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-delete-1}}", sbColumnLinesDelete1.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-delete-2}}", sbColumnLinesDelete2.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-export}}", sbColumnLinesExport.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-export-1}}", sbColumnLinesExport1.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-export-2}}", sbColumnLinesExport2.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-import}}", sbColumnLinesImport.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-import-1}}", sbColumnLinesImport1.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-import-2}}", sbColumnLinesImport2.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
bo/api/v3/bi/db/aicode/built-in-setting (后端模板)
http://localhost:5900/bo/api/v3/bi/db/aicode/built-in-setting?ignore=true&ownerId=howso&sysId&mediaType=text
ownerId=rg 改成所属项目
mediaType=text 接口输出类型 zip/text
{
"setting":{
"namespaceName":"",
"packageName":"",
"moduleName":"gzyj",
"moduleMiddle":"",
"moduleFront":"",
"targetDbType": "MySql",
"tablespaceName": "geop_app",
"connName": "ConnBsDemo",
"databaseName": "rg_bs_demo",
"author": "cbg",
"tableOutPath":"~/App_Temp/howso/AiCode/fn-zq/ConnBsDemo/geop_base",
"tableNames": [
{
"tableName": "gzyj_fault_msg_log",
"disable":false,
"viewTypes":{
"idtest":"identity",
"id":"snowflake"
},
"viewTitles": {
"id": "自增编号"
}
}
]
},
"data":[
{
"template": "fn-zq-geop-base-db2-service-biz-impl",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/service/impl/{{table_name_upper}}ServiceBizImpl.java"
},
{
"template": "fn-zq-geop-base-db2-dto",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/dto/{{table_name_upper}}Dto.java"
},
{
"template": "fn-zq-geop-base-db2-entity",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/entity/{{table_name_upper}}.java"
},
{
"template": "fn-zq-geop-base-db2-vo",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/vo/{{table_name_upper}}Vo.java"
},
{
"template": "fn-zq-geop-base-db2-vo-json",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/vo/{{table_name_upper}}VoJson.java"
},
{
"template": "fn-zq-geop-base-db2-vexcel",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/vexcel/{{table_name_upper}}VExcel.java"
},
{
"template": "fn-zq-geop-base-db2-mapper",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/dao/{{table_name_upper}}Mapper.java"
},
{
"template": "fn-zq-geop-base-db2-resources-mapper",
"suffix": "xml",
"tableOutPath": "{{table_out_path}}/src/main/resources/mapper/mysql/{{table_name_upper}}Mapper.xml"
},
{
"template": "fn-zq-geop-base-db2-service",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/service/I{{table_name_upper}}Service.java"
},
{
"template": "fn-zq-geop-base-db2-service-impl",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/service/impl/{{table_name_upper}}ServiceImpl.java"
},
{
"template": "fn-zq-geop-base-db2-service-biz",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/service/I{{table_name_upper}}ServiceBiz.java"
},
{
"template": "fn-zq-geop-base-db2-vo-mid",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/vo/{{table_name_upper}}VoMid.java"
},
{
"template": "fn-zq-geop-base-db2-middleware",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/middleware/I{{table_name_upper}}Middleware.java"
},
{
"template": "fn-zq-geop-base-db2-middleware-impl",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/middleware/impl/{{table_name_upper}}MiddlewareImpl.java"
},
{
"template": "fn-zq-geop-base-db2-controller",
"suffix": "java",
"tableOutPath": "{{table_out_path}}/src/main/java/com/funo/unif/develop/controller/{{table_name_upper}}Controller.java"
}
]
}
bo/api/v3/bi/db/aicode/built-in-setting (前端模板)
http://localhost:5900/bo/api/v3/bi/db/aicode/built-in-setting?ignore=true&ownerId=howso&sysId&mediaType=text
ownerId=rg 改成所属项目
mediaType=text 接口输出类型 zip/text
{
"setting":{
"namespaceName":"",
"packageName":"",
"moduleName":"gzyj",
"moduleMiddle":"",
"moduleFront":"",
"targetDbType": "MySql",
"tablespaceName": "geop_app",
"connName": "ConnBsDemo",
"databaseName": "rg_bs_demo",
"author": "cbg",
"moduleApi":"VUE_APP_FAULT_WARNING_API",
"tableOutPath":"~/App_Temp/howso/AiCode/fn-zq/ConnBsDemo/vue-uniframe-uccenter",
"tableNames": [
{
"tableName": "gzyj_fault_msg_log",
"disable":false,
"viewTypes": {
"response": "select"
}
}
]
},
"data":[
{
"template": "fn-zq-vue-uniframe-uccenter-db2-vue-manager",
"suffix": "vue",
"tableOutPath": "{{table_out_path}}/src/views/{{module_name}}/{{table_name_hline}}/manager.vue"
},
{
"template": "fn-zq-vue-uniframe-uccenter-db2-vue-route",
"suffix": "js",
"tableOutPath": "{{table_out_path}}/src/router/{{module_name}}/{{table_name_field}}.js"
},
{
"template": "fn-zq-vue-uniframe-uccenter-db2-vue-detail",
"suffix": "vue",
"tableOutPath": "{{table_out_path}}/src/views/{{module_name}}/{{table_name_hline}}/detail.vue"
},
{
"template": "fn-zq-vue-uniframe-uccenter-db2-vue-add",
"suffix": "vue",
"tableOutPath": "{{table_out_path}}/src/views/{{module_name}}/{{table_name_hline}}/add.vue"
},
{
"template": "fn-zq-vue-uniframe-uccenter-db2-vue-edit",
"suffix": "vue",
"tableOutPath": "{{table_out_path}}/src/views/{{module_name}}/{{table_name_hline}}/edit.vue"
},
{
"template": "fn-zq-vue-uniframe-uccenter-db2-vue-components-index",
"suffix": "vue",
"tableOutPath": "{{table_out_path}}/src/views/{{module_name}}/{{table_name_hline}}/components/index.vue"
},
{
"template": "fn-zq-vue-uniframe-uccenter-db2-vue-components-save-or-view",
"suffix": "vue",
"tableOutPath": "{{table_out_path}}/src/views/{{module_name}}/{{table_name_hline}}/components/save-or-view.vue"
},
{
"template": "fn-zq-vue-uniframe-uccenter-db2-vue-api",
"suffix": "js",
"tableOutPath": "{{table_out_path}}/src/api/{{module_name}}/{{table_name_field}}.js"
},
{
"template": "fn-zq-vue-uniframe-uccenter-db2-vue-style",
"suffix": "scss",
"tableOutPath": "{{table_out_path}}/src/views/{{module_name}}/{{table_name_hline}}/index.scss"
},
{
"template": "fn-zq-vue-uniframe-uccenter-db2-vue-method",
"suffix": "js",
"tableOutPath": "{{table_out_path}}/src/views/{{module_name}}/{{table_name_hline}}/method.js"
}
]
}
bo/api/v3/bi/db/aicode/built-in
http://localhost:5900//bo/api/v3/bi/db/aicode/built-in?ignore=true
[
{
"connName":"ConnBo",
"databaseName":"tosoft_auth_bo",
"tableOutPath":"~/App_Temp/{{table_owner_id}}/AiCode/db2appid/{{table_conn_name}}/{{table_name_hline}}.sql",
"outPath":"~/App_Temp/{{global_owner_id}}/AiCode/db2appid/{{global_conn_name}}/all.sql",
"tableNames":[{
"tableName":"bo_job"
}]
}
]
[
{
"connName":"ConnBo",
"databaseName":"tosoft_auth_bo",
"tableNames":[]
}
]
sbOutPath.Replace("{{table_name_lowner}}", tableL);
sbOutPath.Replace("{{table_name_class}}", tableC);
sbOutPath.Replace("{{table_name_field}}", tableF);
sbOutPath.Replace("{{table_name_hline}}", tableH);
sbOutPath.Replace("{{table_owner_id}}", ownerId);
sbOutPath.Replace("{{table_sys_id}}", sysId);
if (!string.IsNullOrEmpty(conn.OutPath))
{
StringBuilder sbOutPath = new StringBuilder(conn.OutPath);
sbOutPath.Replace("{{global_owner_id}}", ownerId);
sbOutPath.Replace("{{global_sys_id}}", sysId);
sbOutPath.Replace("{{global_conn_name}}", conn.ConnName);
FileUtil.CreateFileAndContentAsync(sbOutPath.ToString(), sbDbSql.ToString(), encoding);
}
/bo/api/v3/bi/db/aicode/all
/bo/api/v3/bi/db/aicode/all?ignore=true&ownerId=tosoft&sysId&mediaType=text&suffix=sql
[
{
"template":"db2appid",
"suffix":"sql",
"databasePos":[
{
"connName":"ConnBo",
"databaseName":"tosoft_auth_bo",
"tableOutPath":"~/App_Temp/{{table_owner_id}}/AiCode/db2appid/{{table_conn_name}}/{{table_name_hline}}.sql",
"outPath":"~/App_Temp/{{global_owner_id}}/AiCode/db2appid/{{global_conn_name}}/all.sql",
"tableNames":[{
"tableName":"bo_job"
}]
}, {
"connName":"ConnBs",
"databaseName":"tosoft_auth_bs",
"tableOutPath":"~/App_Temp/{{table_owner_id}}/AiCode/db2appid/{{table_conn_name}}/{{table_name_hline}}.sql",
"outPath":"~/App_Temp/{{global_owner_id}}/AiCode/db2appid/{{global_conn_name}}/all.sql",
"tableNames":[]
}
]
}
]
列模板替换规则
一、列模板1 {{columns}}
columns-primarys-identity.java 主键、自增、数值类型
columns-ty-{viewtypes} 注意:{viewtypes}替换后面值 datetime、lookup、select、switch、image、file、identity、lonlat、textbox、richbox、map、json
columns-varchar(数据库类型+主键)-primarys.java
columns-primarys.java
columns-datetime(数据库类型+必填)-required
columns-datetime(数据库类型)
columns-required
columns
二、列模板2 {{columns-second}}
columns-second-primarys-identity.java 主键、自增、数值类型
columns-second-ty-{viewtypes} 注意:{viewtypes}替换后面值 datetime、lookup、select、switch、image、file、identity、lonlat、textbox、richbox、map、json
columns-second-varchar(数据库类型+主键)-primarys.java
columns-second-primarys.java
columns-second-datetime(数据库类型+必填)-required
columns-second-datetime(数据库类型)
columns-second-required
columns-second
三、列模板3 {{columns-third}}
columns-third-primarys-identity.java 主键、自增、数值类型
columns-third-ty-{viewtypes} 注意:{viewtypes}替换后面值 datetime、lookup、select、switch、image、file、identity、lonlat、textbox、richbox、map、json
columns-third-varchar(数据库类型+主键)-primarys.java
columns-third-primarys.java
columns-third-datetime(数据库类型+必填)-required
columns-third-datetime(数据库类型)
columns-third-required
columns-third
四、列模板4 {{columns-four}}
columns-four-primarys-identity.java 主键、自增、数值类型
columns-four-ty-{viewtypes} 注意:{viewtypes}替换后面值 datetime、lookup、select、switch、image、file、identity、lonlat、textbox、richbox、map、json
columns-four-varchar(数据库类型+主键)-primarys.java
columns-four-primarys.java
columns-four-datetime(数据库类型+必填)-required
columns-four-datetime(数据库类型)
columns-four-required
columns-four
五、列模板5 {{columns-insert}}
columns-insert-primarys-identity.java 主键、自增、数值类型
columns-insert-ty-{viewtypes} 注意:{viewtypes}替换后面值 datetime、lookup、select、switch、image、file、identity、lonlat、textbox、richbox、map、json
columns-insert-varchar(数据库类型+主键)-primarys.java
columns-insert-primarys.java
columns-insert-datetime(数据库类型+必填)-required
columns-insert-datetime(数据库类型)
columns-insert-required
columns-insert
六、列模板6 {{columns-update}}
columns-update-primarys-identity.java 主键、自增、数值类型
columns-update-ty-{viewtypes} 注意:{viewtypes}替换后面值 datetime、lookup、select、switch、image、file、identity、lonlat、textbox、richbox、map、json
columns-update-varchar(数据库类型+主键)-primarys.java
columns-update-primarys.java
columns-update-datetime(数据库类型+必填)-required
columns-update-datetime(数据库类型)
columns-update-required
columns-update
七、列模板7 {{columns-delete}}
columns-delete-primarys-identity.java 主键、自增、数值类型
columns-delete-ty-{viewtypes} 注意:{viewtypes}替换后面值 datetime、lookup、select、switch、image、file、identity、lonlat、textbox、richbox、map、json
columns-delete-varchar(数据库类型+主键)-primarys.java
columns-delete-primarys.java
columns-delete-datetime(数据库类型+必填)-required
columns-delete-datetime(数据库类型)
columns-delete-required
columns-delete
八、列模板8 {{columns-export}}
columns-export-primarys-identity.java 主键、自增、数值类型
columns-export-ty-{viewtypes} 注意:{viewtypes}替换后面值 datetime、lookup、select、switch、image、file、identity、lonlat、textbox、richbox、map、json
columns-export-varchar(数据库类型+主键)-primarys.java
columns-export-primarys.java
columns-export-datetime(数据库类型+必填)-required
columns-export-datetime(数据库类型)
columns-export-required
columns-export
九、列模板9 {{columns-import}}
columns-import-primarys-identity.java 主键、自增、数值类型
columns-import-ty-{viewtypes} 注意:{viewtypes}替换后面值 datetime、lookup、select、switch、image、file、identity、lonlat、textbox、richbox、map、json
columns-import-varchar(数据库类型+主键)-primarys.java
columns-import-primarys.java
columns-import-datetime(数据库类型+必填)-required
columns-import-datetime(数据库类型)
columns-import-required
columns-import
十、列模板9 {{columns-query}}
columns-query-primarys-identity.java 主键、自增、数值类型
columns-query-ty-{viewtypes} 注意:{viewtypes}替换后面值 datetime、lookup、select、switch、image、file、identity、lonlat、textbox、richbox、map、json
columns-query-varchar(数据库类型+主键)-primarys.java
columns-query-primarys.java
columns-query-datetime(数据库类型+必填)-required
columns-query-datetime(数据库类型)
columns-query-required
columns-query
sbTableLine.Replace("{{excel_headers}}", lstTitles); // excel列头 'field'
sbTableLine.Replace("{{excel_fields}}", lstFields); // excel列 'value'
sbTableLine.Replace("{{columns_insert_names}}", lstNames); // 列新增名称 column_name
sbTableLine.Replace("{{columns_insert_values}}", lstValues); // 列值参数 @filed1
sbTableLine.Replace("{{columns_update_sets}}", lstUpdates); // 列更新值 column1=@filed1
sbTableLine.Replace("{{columns_select_names}}", lstNames); // 列查询名称 column_name
StringBuilder sbColumnLine = new StringBuilder();
string primary = colunm.IsPrimary == true ? "primarys" : "primarys-no-default";
//主键 默认类型
string columnVirPrimaryF = $"~/App_Data/Templates/AiCode/{template}/columns-{subTemlate}-{primary}.{suffix}";
string columnSqlPrimaryF = null;
//主键 自定义类型
string columnVirDataTypePrimaryF = $"~/App_Data/Templates/AiCode/{template}/columns-{subTemlate}-{colunm.DataType.ToString().ToLower()}-{primary}.{suffix}";
string columnSqlDataTypePrimaryF = null;
//根据数据类型
string columnVirDataTypeF = $"~/App_Data/Templates/AiCode/{template}/columns-{subTemlate}-{colunm.DataType.ToString().ToLower()}.{suffix}";
string columnSqlDataTypeF = null;
//根据必填
string required = colunm.IsRequired == true ? "required" : "required-no";
string columnVirIsRequiredF = $"~/App_Data/Templates/AiCode/{template}/columns-{subTemlate}-{required}.{suffix}";
string columnSqlIsRequiredF = null;
//根据必填 和 类型
string columnVirRD = $"~/App_Data/Templates/AiCode/{template}/columns-{subTemlate}-{colunm.DataType.ToString().ToLower()}-{required}.{suffix}";
string columnSqlRDF = null;
换行和不换行
1、列里面以 ! 开头表示不换行(使用时候会忽略!)
2、默认换行
全局表格参数配置
StringBuilder sbTableLine = new StringBuilder();
var tableLU = table.Name.ToUpper();
var tableL = table.Name.ToLower();
var tableH = table.Name.ToLower().Replace("_", "-");
var tableC = RegexUtil.ConvertDownLine2CamelCase(table.Name.ToLower(), false);
sbTableLine.Append(tableSqlF);
var lstTitles = string.Join(',', lstColumns.Select(x => $"'{x.Title}'"));
var lstFields = string.Join(',', lstColumns.Select(x => $"'{x.Field}'"));
var lstNames = string.Join(',', lstColumns.Select(x => $"{x.ColumnName ?? x.Name}"));
var lstValues = string.Join(',', lstColumns.Select(x => $"@{x.ColumnName ?? x.Name}"));
var lstUpdates = string.Join(',', lstColumns.Select(x => $"{x.ColumnName ?? x.Name}=@{x.ColumnName ?? x.Name}"));
sbTableLine.Replace("{{columns-data-datetime-start-end}}", sbColumnsDatetimeSeLines.ToString()); // 开始时间和结束时间条件模板
sbTableLine.Replace("{{columns-data-snowflake-id}}", sbColumnsSnowflakeLines.ToString());
// 雪花ID设置值模板(字符串对应模板 columns-data-snowflake-id-string)
// 雪花ID设置值模板(整数型对应模板 columns-data-snowflake-id-long)
sbTableLine.Replace("{{excel_headers}}", lstTitles); // excel列头 'field'
sbTableLine.Replace("{{excel_fields}}", lstFields); // excel列 'value'
sbTableLine.Replace("{{columns_insert_names}}", lstNames); // 列新增名称 column_name
sbTableLine.Replace("{{columns_insert_values}}", lstValues); // 列值参数 @filed1
sbTableLine.Replace("{{columns_update_sets}}", lstUpdates); // 列更新值 column1=@filed1
sbTableLine.Replace("{{columns}}", sbColumnLines.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-primarys}}", sbColumnPrimarysLines.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 只有主键
sbTableLine.Replace("{{columns-primarys-no}}", sbColumnPrimarysNoLines.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 无主键
sbTableLine.Replace("{{columns-second}}", sbColumnLinesSecond.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-third}}", sbColumnLinesThird.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-four}}", sbColumnLinesFour.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-update}}", sbColumnLinesUpdate.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-insert}}", sbColumnLinesInsert.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-delete}}", sbColumnLinesDelete.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-export}}", sbColumnLinesExport.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-import}}", sbColumnLinesImport.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{comments}}", sbCommentLines.ToString()); // 列备注占位符
sbTableLine.Replace("{{indexs}}", sbIndexLines.ToString()); // 列索引占位符
sbTableLine.Replace("{{primarys}}", sbPrimarysLines.ToString()); // 列主键占位符
sbTableLine.Replace("{{defaults}}", sbDefaultsLines.ToString()); // 默认值占位符
sbTableLine.Replace("{{struct-params}}", sbStructParmsLines.ToString().TrimEnd(',')); // 构造函数占位符
sbTableLine.Replace("{{struct-tostrings}}", sbStructToStringsLines.ToString().TrimStart(',')); // 重新构造函数
sbTableLine.Replace("{{struct-sets}}", sbStructSetsLines.ToString()); // 构造函数值重写
sbTableLine.Replace("{{db_name}}", conn.DatabaseName); // 数据库名
sbTableLine.Replace("{{database_name}}", conn.DatabaseName); // 数据库名
sbTableLine.Replace("{{table_comment}}", table.TableComment ?? tableL); // 小写下划线表名
sbTableLine.Replace("{{table_name}}", tableL); // 小写下划线表名
sbTableLine.Replace("{{table_name_upper_line}}", tableLU); // 大写下划线表名
sbTableLine.Replace("{{table_name_lowner_line}}", tableL); // 小写下划线表名
sbTableLine.Replace("{{table_name_lowner}}", tableL);// 小写下划线
sbTableLine.Replace("{{table_name_upper}}", tableC); // 大写驼峰
sbTableLine.Replace("{{table_name_class}}", tableC); // 类名
sbTableLine.Replace("{{table_name_field}}", tableF); //小写驼峰表名
sbTableLine.Replace("{{table_name_hline}}", tableH); // 横杆连接
sbTableLine.Replace("{{table_field}}", tableF); //小写驼峰表名
sbTableLine.Replace("{{table_name_suffix}}", tableLU.Contains("_") ? tableL.Split('_').First<string>() : "common"); // 大写下划线表名
sbTableLine.Replace("{{module_name}}", conn.ModuleName); // 模块目录
sbTableLine.Replace("{{module_front}}", conn.ModuleFront); // 前端 前缀
sbTableLine.Replace("{{module_api}}", conn.ModuleApi); // 后端api 前缀
sbTableLine.Replace("{{module_middle}}", conn.ModuleMiddle); // 中间件 前缀
sbTableLine.Replace("{{owner_id}}", ownerId); //所有者
sbTableLine.Replace("{{sys_id}}", sysId); //系统
sbTableLine.Replace("{{namespace_name}}", conn.NamespaceName); //命名空间名称
sbTableLine.Replace("{{tablespace_name}}", conn.TablespaceName); //表空间
sbTableLine.Replace("{{tablespace_module}}", conn.NamespaceMoudle); //模块名
sbTableLine.Replace("{{tablespace_module_point}}", conn.NamespaceMoudlePoint); //模块名
sbTableLine.Replace("{{package_name}}", conn.PackageName); //java包名称
sbTableLine.Replace("{{table_conn_name}}", conn.ConnName); //java包名称
sbTableLine.Replace("{{tablespace_name}}", conn.TablespaceName); //表空间
sbTableLine.Replace("{{file_author}}", conn.Author ?? "ai"); //自动生成
sbTableLine.Replace("{{file_datetime}}", DateTimeUtil.Now().ToString()); //自动生成
sbTableLine.Replace("{{file_date}}", DateTimeUtil.Now().ToString("yyyy-MM-dd")); //自动生成
sbTableLine.Replace("{{file_time}}", DateTimeUtil.Now().ToString("HH:mm")); //自动生成
sbTableLine.Replace("{{columns-data-form}}", sbColumnsDataFormLines.ToString()); // 表单数据
sbTableLine.Replace("{{columns-data-rule}}", sbColumnsDataRuleLines.ToString()); // 规则数据
sbTableLine.Replace("{{columns-data-table}}", sbColumnsDataTableLines.ToString()); // 表格数据
sbTableLine.Replace("{{columns-data-where}}", sbColumnsDataWhereLines.ToString()); // 条件数据
sbTableLine.Replace("{{columns-data-submit}}", sbColumnsDataSubmitLines.ToString()); // 提交数据模板
sbTableLine.Replace("{{columns-tl-form}}", sbColumnsTlFormLines.ToString()); // 表单模板
sbTableLine.Replace("{{columns-tl-table}}", sbColumnsTlTableLines.ToString()); //表格列模板
sbTableLine.Replace("{{columns-tl-where}}", sbColumnsTlWhereLines.ToString()); // 搜索列模板
tables.sql
sbTableLine.Replace("{{columns}}", sbColumnLines.ToString());
sbTableLine.Replace("{{db_name}}", conn.DatabaseName);
sbTableLine.Replace("{{table_name}}", table.Name.ToLower());
sbTableLine.Replace("{{table_field}}", RegexUtil.ConvertDownLine2CamelCase(table.Name));
sbSql.Replace("{{owner_id}}", ownerId);
sbSql.Replace("{{sys_id}}", sysId);
columns.sql
sbColumnLine.Replace("{{column_index}}", index.ToString());// 列索引,从1开始
sbColumnLine.Replace("{{column_index_0}}", (index - 1).ToString());// 列索引,从0开始
sbColumnLine.Replace("{{column_name}}", colunm.Name.ToLower());// 字段名称 小写
sbColumnLine.Replace("{{column_name_line_lower}}", colunm.Name.ToLower());// 字段名称 小写
sbColumnLine.Replace("{{column_name_line_upper}}", colunm.Name.ToUpper());// 字段名称 大写
sbColumnLine.Replace("{{column_title}}", colunm.Title.Replace("\r", " ").Replace("\n", " ").Replace("\\\r", " ").Replace("\\\\n", " "));// 字段标题
sbColumnLine.Replace("{{column_title_db}}", colunm.TitleDb.Replace("\r", " ").Replace("\n", " ").Replace("\\\r", " ").Replace("\\\\n", " "));// 原始数据库备注
sbColumnLine.Replace("{{column_field}}", colunm.FieldLowerCase);// RegexUtil.ConvertDownLine2CamelCase(colunm.Name.ToLower()));// 小写驼峰
sbColumnLine.Replace("{{column_field_upper}}", colunm.FieldUpperCase);// RegexUtil.ConvertDownLine2CamelCase(colunm.Name.ToLower(), false)); //大写驼峰
sbColumnLine.Replace("{{column_data_type}}", colunm.DataType); //数据库类型
sbColumnLine.Replace("{{column_max_length}}", colunm.MaxLength?.ToString()); //长度
sbColumnLine.Replace("{{column_is_primary}}", colunm.IsPrimary == true ? "1" : "0"); //是否主键
sbColumnLine.Replace("{{column_is_null}}", colunm.IsNullValue == true ? "1" : "0"); // 是否为空
sbColumnLine.Replace("{{column_is_null_db}}", colunm.IsNullValue == true ? "not null" : ""); // 是否为空 带括号
sbColumnLine.Replace("{{column_is_required}}", colunm.IsRequired == true ? "1" : "0"); //是否必填
sbColumnLine.Replace("{{column_required_text}}", colunm.IsRequired == true ? "require" : ""); //是否必填 required
sbColumnLine.Replace("{{column_required_rule}}", colunm.IsRequired == true ? "required: true," : ""); //是否必填 rule required: true
代码说明
\rg3-pf\RG3.BO.BI.DB\Controller\DbAiCodeController.cs
private void ConvertTemplate(string columnSqlF, DatabasePo conn, SqlColumn colunm, StringBuilder sbColumnLine, int index = 0)
{
var dataTypeL = colunm.DataType.ToLower();
// var bizDataType = _configuration.GetValue<string>($"databaseMappingTypeNet:{dataTypeL}:bizDataType") ?? colunm.DataType;
sbColumnLine.Append(columnSqlF);
sbColumnLine.Replace("{{column_index}}", index.ToString());// 列索引,从1开始
sbColumnLine.Replace("{{column_index_0}}", (index-1).ToString());// 列索引,从0开始
sbColumnLine.Replace("{{column_name}}", colunm.Name.ToLower());// 字段名称 小写
sbColumnLine.Replace("{{column_name_line_lower}}", colunm.Name.ToLower());// 字段名称 小写
sbColumnLine.Replace("{{column_name_line_upper}}", colunm.Name.ToUpper());// 字段名称 大写
sbColumnLine.Replace("{{column_title}}", colunm.Title.Replace("\r", " ").Replace("\n", " ").Replace("\\\r", " ").Replace("\\\\n", " "));// 字段标题
sbColumnLine.Replace("{{column_field}}", colunm.FieldLowerCase);// RegexUtil.ConvertDownLine2CamelCase(colunm.Name.ToLower()));// 小写驼峰
sbColumnLine.Replace("{{column_field_upper}}", colunm.FieldUpperCase);// RegexUtil.ConvertDownLine2CamelCase(colunm.Name.ToLower(), false)); //大写驼峰
sbColumnLine.Replace("{{column_data_type}}", colunm.DataType); //数据库类型
if (dataTypeL == "int" || dataTypeL == "long" || dataTypeL == "double" || dataTypeL == "float")
{
sbColumnLine.Replace("{{column_max_db_text}}", $""); //带括号长度
}
else if (dataTypeL == "decimal")
{
sbColumnLine.Replace("{{column_max_db_text}}", $"({colunm.MaxLength},{colunm.ColDecimal})"); //带括号长度
}
else if (colunm.MaxLength > 10000)
{
sbColumnLine.Replace("{{column_max_db_text}}", ""); //带括号长度
}
else
{
sbColumnLine.Replace("{{column_max_db_text}}", colunm.MaxLength > 0 ? $"({colunm.MaxLength})" : ""); //带括号长度
}
sbColumnLine.Replace("{{column_max_length}}", colunm.MaxLength?.ToString()); //长度
sbColumnLine.Replace("{{column_is_primary}}", colunm.IsPrimary == true ? "1" : "0"); //是否主键
sbColumnLine.Replace("{{column_is_null}}", colunm.IsNullValue == true ? "1" : "0"); // 是否为空
sbColumnLine.Replace("{{column_is_null_db}}", colunm.IsNullValue == true ? "not null" : ""); // 是否为空 带括号
sbColumnLine.Replace("{{column_is_required}}", colunm.IsRequired == true ? "1" : "0"); //是否必填
sbColumnLine.Replace("{{column_required_text}}", colunm.IsRequired == true ? "required" : ""); //是否必填 required
sbColumnLine.Replace("{{column_required_rule}}", colunm.IsRequired == true ? "required: true," : ""); //是否必填 rule required: true
#region 数据类型转换处理
sbColumnLine.Replace("{{column_type_database}}", colunm.DataType); //数据库数据类型
sbColumnLine.Replace("{{column_type_net}}", _configuration.GetValue<string>($"databaseMappingTypeNet:{dataTypeL}:bizDataType") ?? colunm.DataType); //.netcore数据类型
sbColumnLine.Replace("{{column_type_java}}", _configuration.GetValue<string>($"databaseMappingTypeJava:{dataTypeL}:bizDataType") ?? colunm.DataType); //java数据类型
sbColumnLine.Replace("{{column_type_javasript}}", _configuration.GetValue<string>($"databaseMappingTypeJavascript:{dataTypeL}:bizDataType") ?? colunm.DataType); //javascript数据类型
sbColumnLine.Replace("{{column_typescript_type}}", _configuration.GetValue<string>($"databaseMappingTypeTypeScript:{dataTypeL}:bizDataType") ?? colunm.DataType); //typescript数据类型
sbColumnLine.Replace("{{column_type_golang}}", _configuration.GetValue<string>($"databaseMappingTypeGoLang:{dataTypeL}:bizDataType") ?? colunm.DataType); //golang数据类型
sbColumnLine.Replace("{{column_type_rust}}", _configuration.GetValue<string>($"databaseMappingTypeRust:{dataTypeL}:bizDataType") ?? colunm.DataType); //rust数据类型
sbColumnLine.Replace("{{column_type_ios}}", _configuration.GetValue<string>($"databaseMappingTypeIos:{dataTypeL}:bizDataType") ?? colunm.DataType); //iso数据类型
sbColumnLine.Replace("{{column_type_andriod}}", _configuration.GetValue<string>($"databaseMappingTypeAndriod:{dataTypeL}:bizDataType") ?? colunm.DataType); //andriod数据类型
sbColumnLine.Replace("{{column_type_chh}}", _configuration.GetValue<string>($"databaseMappingTypeChh:{dataTypeL}:bizDataType") ?? colunm.DataType); //c++数据类型
sbColumnLine.Replace("{{column_type_db}}", _configuration.GetValue<string>($"databaseMappingType{conn.TargetDbType}:{dataTypeL}:bizDataType") ?? colunm.DataType); //mysql 2 oracle
sbColumnLine.Replace("{{column_type_jdbc}}", _configuration.GetValue<string>($"databaseMappingJdbcType{conn.TargetDbType}:{dataTypeL}:bizDataType") ?? colunm.DataType); //mysql 2 oracle
#endregion 数据类型转换处理
}
private async Task SetColumnTemplate(string template, string suffix, Encoding encoding, string columnSqlF, DatabasePo conn, StringBuilder sbColumnLines, int index, SqlColumn colunm,string subTemlate="")
{
StringBuilder sbColumnLine = new StringBuilder();
string primary = colunm.IsPrimary == true ? "primarys" : "primarys-no-default";
//主键 默认类型
string columnVirPrimaryF = $"~/App_Data/Templates/AiCode/{template}/columns-{subTemlate}-{primary}.{suffix}";
string columnSqlPrimaryF = null;
//主键 自定义类型
string columnVirDataTypePrimaryF = $"~/App_Data/Templates/AiCode/{template}/columns-{subTemlate}-{colunm.DataType.ToString().ToLower()}-{primary}.{suffix}";
string columnSqlDataTypePrimaryF = null;
//根据数据类型
string columnVirDataTypeF = $"~/App_Data/Templates/AiCode/{template}/columns-{subTemlate}-{colunm.DataType.ToString().ToLower()}.{suffix}";
string columnSqlDataTypeF = null;
//根据必填
string required = colunm.IsRequired == true ? "required" : "required-no";
string columnVirIsRequiredF = $"~/App_Data/Templates/AiCode/{template}/columns-{subTemlate}-{required}.{suffix}";
string columnSqlIsRequiredF = null;
//根据必填 和 类型
string columnVirRD = $"~/App_Data/Templates/AiCode/{template}/columns-{subTemlate}-{colunm.DataType.ToString().ToLower()}-{required}.{suffix}";
string columnSqlRDF = null;
bool isDefaultT = true;
if (FileUtil.ExistsFilesByVirPath(columnVirDataTypePrimaryF))
{
columnSqlDataTypePrimaryF = await FileUtil.ReadFileAndContentByVirUrlAsync(columnVirDataTypePrimaryF, encoding);
isDefaultT = string.IsNullOrWhiteSpace(columnSqlDataTypePrimaryF);
if (!string.IsNullOrWhiteSpace(columnSqlDataTypePrimaryF)) ConvertTemplate(columnSqlDataTypePrimaryF, conn, colunm, sbColumnLine, index);
}
else if (FileUtil.ExistsFilesByVirPath(columnVirPrimaryF))
{
columnSqlPrimaryF = await FileUtil.ReadFileAndContentByVirUrlAsync(columnVirPrimaryF, encoding);
isDefaultT = string.IsNullOrWhiteSpace(columnSqlPrimaryF);
if (!string.IsNullOrWhiteSpace(columnSqlPrimaryF)) ConvertTemplate(columnSqlPrimaryF, conn, colunm, sbColumnLine, index);
}
else if (FileUtil.ExistsFilesByVirPath(columnVirRD))
{
columnSqlRDF = await FileUtil.ReadFileAndContentByVirUrlAsync(columnVirRD, encoding);
isDefaultT = string.IsNullOrWhiteSpace(columnSqlRDF);
if (!string.IsNullOrWhiteSpace(columnSqlRDF)) ConvertTemplate(columnSqlRDF, conn, colunm, sbColumnLine, index);
}
else if (FileUtil.ExistsFilesByVirPath(columnVirIsRequiredF))
{
columnSqlIsRequiredF = await FileUtil.ReadFileAndContentByVirUrlAsync(columnVirIsRequiredF, encoding);
isDefaultT = !string.IsNullOrWhiteSpace(columnSqlIsRequiredF);
if (!string.IsNullOrWhiteSpace(columnSqlIsRequiredF)) ConvertTemplate(columnSqlIsRequiredF, conn, colunm, sbColumnLine, index);
}
else if (FileUtil.ExistsFilesByVirPath(columnVirDataTypeF))
{
columnSqlDataTypeF = await FileUtil.ReadFileAndContentByVirUrlAsync(columnVirDataTypeF, encoding);
isDefaultT = string.IsNullOrWhiteSpace(columnSqlDataTypeF);
if (!string.IsNullOrWhiteSpace(columnSqlDataTypeF)) ConvertTemplate(columnSqlDataTypeF, conn, colunm, sbColumnLine, index);
}
//使用默认的模板
if (isDefaultT)
{
ConvertTemplate(columnSqlF, conn, colunm, sbColumnLine, index);
}
sbColumnLines.AppendLine(sbColumnLine.ToString());
}
文件输出参数
StringBuilder sbTableLine = new StringBuilder();
var tableLU = table.Name.ToUpper();
var tableL = table.Name.ToLower();
var tableH = table.Name.ToLower().Replace("_", "-");
var tableC = RegexUtil.ConvertDownLine2CamelCase(table.Name.ToLower(), false);
sbTableLine.Append(tableSqlF);
var lstTitles = string.Join(',', lstColumns.Select(x => $"'{x.Title}'"));
var lstFields = string.Join(',', lstColumns.Select(x => $"'{x.Field}'"));
var lstNames = string.Join(',', lstColumns.Select(x => $"{x.ColumnName ?? x.Name}"));
var lstValues = string.Join(',', lstColumns.Select(x => $"@{x.ColumnName ?? x.Name}"));
var lstUpdates = string.Join(',', lstColumns.Select(x => $"{x.ColumnName ?? x.Name}=@{x.ColumnName ?? x.Name}"));
sbTableLine.Replace("{{excel_headers}}", lstTitles); // excel列头 'field'
sbTableLine.Replace("{{excel_fields}}", lstFields); // excel列 'value'
sbTableLine.Replace("{{columns_insert_names}}", lstNames); // 列新增名称 column_name
sbTableLine.Replace("{{columns_insert_values}}", lstValues); // 列值参数 @filed1
sbTableLine.Replace("{{columns_update_sets}}", lstUpdates); // 列更新值 column1=@filed1
sbTableLine.Replace("{{columns}}", sbColumnLines.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-primarys}}", sbColumnPrimarysLines.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 只有主键
sbTableLine.Replace("{{columns-primarys-no}}", sbColumnPrimarysNoLines.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 无主键
sbTableLine.Replace("{{columns-second}}", sbColumnLinesSecond.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{columns-third}}", sbColumnLinesThird.ToString().TrimEnd(',').TrimEnd(",\r\n".ToCharArray())); // 列文件占位符
sbTableLine.Replace("{{comments}}", sbCommentLines.ToString()); // 列备注占位符
sbTableLine.Replace("{{indexs}}", sbIndexLines.ToString()); // 列索引占位符
sbTableLine.Replace("{{primarys}}", sbPrimarysLines.ToString()); // 列主键占位符
sbTableLine.Replace("{{defaults}}", sbDefaultsLines.ToString()); // 默认值占位符
sbTableLine.Replace("{{struct-params}}", sbStructParmsLines.ToString().TrimEnd(',')); // 构造函数占位符
sbTableLine.Replace("{{struct-tostrings}}", sbStructToStringsLines.ToString().TrimStart(',')); // 重新构造函数
sbTableLine.Replace("{{struct-sets}}", sbStructSetsLines.ToString()); // 构造函数值重写
sbTableLine.Replace("{{db_name}}", conn.DatabaseName); // 数据库名
sbTableLine.Replace("{{database_name}}", conn.DatabaseName); // 数据库名
sbTableLine.Replace("{{table_comment}}", table.TableComment ?? tableL); // 小写下划线表名
sbTableLine.Replace("{{table_name}}", tableL); // 小写下划线表名
sbTableLine.Replace("{{table_name_upper_line}}", tableLU); // 大写下划线表名
sbTableLine.Replace("{{table_name_lowner_line}}", tableL); // 小写下划线表名
sbTableLine.Replace("{{table_name_lowner}}", tableL);// 小写下划线
sbTableLine.Replace("{{table_name_upper}}", tableC); // 大写驼峰
sbTableLine.Replace("{{table_name_class}}", tableC); // 类名
sbTableLine.Replace("{{table_name_field}}", tableF); //小写驼峰表名
sbTableLine.Replace("{{table_name_hline}}", tableH); // 横杆连接
sbTableLine.Replace("{{table_field}}", tableF); //小写驼峰表名
sbTableLine.Replace("{{table_name_suffix}}", tableLU.Contains("_") ? tableL.Split('_').First<string>() : "common"); // 大写下划线表名
sbTableLine.Replace("{{owner_id}}", ownerId); //所有者
sbTableLine.Replace("{{sys_id}}", sysId); //系统
sbTableLine.Replace("{{namespace_name}}", conn.NamespaceName); //命名空间名称
sbTableLine.Replace("{{tablespace_name}}", conn.TablespaceName); //表空间
sbTableLine.Replace("{{tablespace_module}}", conn.NamespaceMoudle); //模块名
sbTableLine.Replace("{{tablespace_module_point}}", conn.NamespaceMoudlePoint); //模块名
sbTableLine.Replace("{{package_name}}", conn.PackageName); //java包名称
sbTableLine.Replace("{{package_module}}", conn.PackageModule); //java包模块名称
sbTableLine.Replace("{{package_module_point}}", conn.PackageModulePoint); //java包模块名称
sbTableLine.Replace("{{table_conn_name}}", conn.ConnName); //java包名称
sbTableLine.Replace("{{tablespace_name}}", conn.TablespaceName); //表空间
sbTableLine.Replace("{{file_author}}", conn.Author ?? "ai"); //自动生成
sbTableLine.Replace("{{file_datetime}}", DateTimeUtil.Now().ToString()); //自动生成
sbTableLine.Replace("{{file_date}}", DateTimeUtil.Now().ToString("yyyy-MM-dd")); //自动生成
sbTableLine.Replace("{{file_time}}", DateTimeUtil.Now().ToString("HH:mm")); //自动生成
sbTableLine.Replace("{{columns-select-method}}", sbColumnSelectMethodLines.ToString()); // 维数据 初始化数据方法
sbTableLine.Replace("{{columns-select-data}}", sbColumnSelectDataLines.ToString()); // 维数据
sbTableLine.Replace("{{columns-select-form-method}}", sbColumnSelectMethodLines.ToString()); // 维数据 初始化数据方法
sbTableLine.Replace("{{columns-select-form-data}}", sbColumnSelectDataLines.ToString()); // 维数据
sbTableLine.Replace("{{columns-select-table-method}}", sbColumnSelectMethodLines.ToString()); // 维数据 初始化数据方法
sbTableLine.Replace("{{columns-select-table-data}}", sbColumnSelectDataLines.ToString()); // 维数据
sbTableLine.Replace("{{columns-select-method}}", sbColumnSelectMethodLines.ToString()); // 维数据 初始化数据方法
sbTableLine.Replace("{{columns-select-data}}", sbColumnSelectDataLines.ToString()); // 维数据
sbTableLine.Replace("{{columns-select-form-method}}", sbColumnSelectFormMethodLines.ToString()); // 维数据 初始化数据方法
sbTableLine.Replace("{{columns-select-form-data}}", sbColumnSelectFormDataLines.ToString()); // 维数据
sbTableLine.Replace("{{columns-select-table-method}}", sbColumnSelectTableMethodLines.ToString()); // 维数据 初始化数据方法
sbTableLine.Replace("{{columns-select-table-data}}", sbColumnSelectTableDataLines.ToString()); // 维数据
#region 主键模板 表格里面主键
if (lstCurPrimarys.Any())
{
foreach (var colunm in lstCurPrimarys)
{
ConvertTemplate(primarysSqlF, conn, colunm, sbTableLine);
}
}
#endregion 主键模板
#region 输出代码到对应文件
if (!string.IsNullOrEmpty(conn.TableOutPath))
{
StringBuilder sbOutPath = new StringBuilder(conn.TableOutPath);
sbOutPath.Replace("{{table_name_lowner_line}}", tableL);// 小写下划线
sbOutPath.Replace("{{table_name_suffix}}", tableLU.Contains("_") ? tableL.Split('_').First<string>() : "common"); // 大写下划线表名
sbOutPath.Replace("{{table_name_upper_line}}", tableLU); // 大写下划线表名
sbOutPath.Replace("{{table_name_lowner_line}}", tableL);// 小写下划线
sbOutPath.Replace("{{table_name_lowner}}", tableL);// 小写下划线
sbOutPath.Replace("{{table_name_class}}", tableC); // 类名,大写驼峰
sbOutPath.Replace("{{table_name_upper}}", tableC); // 大写驼峰
sbOutPath.Replace("{{table_name_field}}", tableF);// 小写驼峰
sbOutPath.Replace("{{table_name_hline}}", tableH);// 横杆 -
sbOutPath.Replace("{{owner_id}}", ownerId); //项目所有者
sbOutPath.Replace("{{table_owner_id}}", ownerId); //项目所有者
sbOutPath.Replace("{{table_sys_id}}", sysId); //系统ID
sbOutPath.Replace("{{table_conn_name}}", conn.ConnName);// 数据库连接串
sbOutPath.Replace("{{conn_date_dir}}", connDateDir); //文件夹目录
sbOutPath.Replace("{{namespace_name}}", conn.NamespaceName); //命名空间名称
sbOutPath.Replace("{{package_name}}", conn.PackageName); //java包名称
sbOutPath.Replace("{{tablespace_name}}", conn.TablespaceName); //表空间
sbOutPath.Replace("{{tablespace_module}}", conn.NamespaceMoudle); //模块名
sbOutPath.Replace("{{tablespace_module_point}}", conn.NamespaceMoudlePoint); //模块名
sbOutPath.Replace("{{tablespace_name}}", conn.TablespaceName); //表空间
sbOutPath.Replace("{{owner_id}}", ownerId); //项目所有者
sbOutPath.Replace("{" + ownerId + "}", ownerId); //项目所有者
lstTableOut.Add(new DataKeyValue { Key = sbOutPath.ToString(), Value = conn.ConnName });
FileUtil.CreateFileAndContentAsync(sbOutPath.ToString(), sbTableLine.ToString(), encoding);
}
#endregion 输出代码到对应文件
sbSql.AppendLine(sbTableLine.ToString());
sbDbSql.AppendLine(sbTableLine.ToString());
}
#region 输出代码到对应文件
if (!string.IsNullOrEmpty(conn.OutPath))
{
StringBuilder sbOutPath = new StringBuilder(conn.OutPath);
sbOutPath.Replace("{{global_owner_id}}", ownerId);
sbOutPath.Replace("{{global_sys_id}}", sysId);
sbOutPath.Replace("{{global_conn_name}}", conn.ConnName);
sbOutPath.Replace("{{table_conn_name}}", conn.ConnName);// 数据库连接串
sbOutPath.Replace("{{table_owner_id}}", ownerId);// 数据库连接串
sbOutPath.Replace("{{conn_date_dir}}", connDateDir); //文件夹目录
sbOutPath.Replace("{{owner_id}}", ownerId); //项目所有者
sbOutPath.Replace("{" + ownerId + "}", ownerId); //项目所有者
dkv.Key = sbOutPath.ToString();
lstTableOut.Add(new DataKeyValue { Key = sbOutPath.ToString(), Value = conn.ConnName });
FileUtil.CreateFileAndContentAsync(sbOutPath.ToString(), sbDbSql.ToString(), encoding);
}
#endregion 输出代码到对应文件
文档更新时间: 2024-07-02 20:46 作者:admin