乱码注意

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