Commit a4b1395e929ff13dcdadc18ef76b7fdbc767ba32
1 parent
256c560d
代码生成:主子表(inner)部分模版
Showing
5 changed files
with
407 additions
and
1 deletions
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/components/_column.vm
0 → 100644
| 1 | +## 提供给 baseVO、createVO、updateVO 生成字段 | |
| 2 | + @Schema(description = "${column.columnComment}"#if (!${column.nullable}), requiredMode = Schema.RequiredMode.REQUIRED#end#if ("$!column.example" != ""), example = "${column.example}"#end) | |
| 3 | +#if (!${column.nullable})## 判断 @NotEmpty 和 @NotNull 注解 | |
| 4 | +#if (${column.javaType} == 'String') | |
| 5 | + @NotEmpty(message = "${column.columnComment}不能为空") | |
| 6 | +#else | |
| 7 | + @NotNull(message = "${column.columnComment}不能为空") | |
| 8 | +#end | |
| 9 | +#end | |
| 10 | +#if (${column.javaType} == "LocalDateTime")## 时间类型 | |
| 11 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | |
| 12 | +#end | |
| 13 | + private ${column.javaType} ${column.javaField}; | ... | ... |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/components/form_sub_normal.vue.vm
| ... | ... | @@ -146,6 +146,11 @@ |
| 146 | 146 | #end |
| 147 | 147 | #end |
| 148 | 148 | #end |
| 149 | + <el-table-column align="center" fixed="right" label="操作" width="60"> | |
| 150 | + <template #default="{ $index }"> | |
| 151 | + <el-button @click="handleDelete($index)" link>—</el-button> | |
| 152 | + </template> | |
| 153 | + </el-table-column> | |
| 149 | 154 | </el-table> |
| 150 | 155 | </el-form> |
| 151 | 156 | <el-row justify="center" class="mt-3"> | ... | ... |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/components/list_sub_erp.vue.vm
| 1 | +#set ($subTable = $subTables.get($subIndex))##当前表 | |
| 2 | +#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 | |
| 3 | +#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 | |
| 4 | +#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) | |
| 5 | +#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 | |
| 6 | +#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 | |
| 7 | +<template> | |
| 8 | + <!-- 列表 --> | |
| 9 | + <ContentWrap> | |
| 10 | + <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> | |
| 11 | + #foreach($column in $subColumns) | |
| 12 | + #if ($column.listOperationResult) | |
| 13 | + #set ($dictType=$column.dictType) | |
| 14 | + #set ($javaField = $column.javaField) | |
| 15 | + #set ($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) | |
| 16 | + #set ($comment=$column.columnComment) | |
| 17 | + #if ($column.javaType == "LocalDateTime")## 时间类型 | |
| 18 | + <el-table-column | |
| 19 | + label="${comment}" | |
| 20 | + align="center" | |
| 21 | + prop="${javaField}" | |
| 22 | + :formatter="dateFormatter" | |
| 23 | + width="180px" | |
| 24 | + /> | |
| 25 | + #elseif($column.dictType && "" != $column.dictType)## 数据字典 | |
| 26 | + <el-table-column label="${comment}" align="center" prop="${javaField}"> | |
| 27 | + <template #default="scope"> | |
| 28 | + <dict-tag :type="DICT_TYPE.$dictType.toUpperCase()" :value="scope.row.${column.javaField}" /> | |
| 29 | + </template> | |
| 30 | + </el-table-column> | |
| 31 | + #else | |
| 32 | + <el-table-column label="${comment}" align="center" prop="${javaField}" /> | |
| 33 | + #end | |
| 34 | + #end | |
| 35 | + #end | |
| 36 | + #if ($table.templateType == 11) | |
| 37 | + <el-table-column label="操作" align="center"> | |
| 38 | + <template #default="scope"> | |
| 39 | + <el-button | |
| 40 | + link | |
| 41 | + type="primary" | |
| 42 | + @click="openForm('update', scope.row.id)" | |
| 43 | + v-hasPermi="['${permissionPrefix}:update']" | |
| 44 | + > | |
| 45 | + 编辑 | |
| 46 | + </el-button> | |
| 47 | + <el-button | |
| 48 | + link | |
| 49 | + type="danger" | |
| 50 | + @click="handleDelete(scope.row.id)" | |
| 51 | + v-hasPermi="['${permissionPrefix}:delete']" | |
| 52 | + > | |
| 53 | + 删除 | |
| 54 | + </el-button> | |
| 55 | + </template> | |
| 56 | + </el-table-column> | |
| 57 | + #end | |
| 58 | + </el-table> | |
| 59 | + #if ($table.templateType == 11) | |
| 60 | + <!-- 分页 --> | |
| 61 | + <Pagination | |
| 62 | + :total="total" | |
| 63 | + v-model:page="queryParams.pageNo" | |
| 64 | + v-model:limit="queryParams.pageSize" | |
| 65 | + @pagination="getList" | |
| 66 | + /> | |
| 67 | + #end | |
| 68 | + </ContentWrap> | |
| 69 | +</template> | |
| 70 | + | |
| 71 | +<script setup lang="ts"> | |
| 72 | +const props = defineProps<{ | |
| 73 | + ${subJoinColumn.javaField}: undefined // ${subJoinColumn.columnComment}(主表的关联字段) | |
| 74 | +}>() | |
| 75 | +const loading = ref(true) // 列表的加载中 | |
| 76 | +const list = ref([]) // 列表的数据 | |
| 77 | + | |
| 78 | +/** 查询列表 */ | |
| 79 | +const getList = async () => { | |
| 80 | + loading.value = true | |
| 81 | + try { | |
| 82 | + #if ( $subTable.subJoinMany ) | |
| 83 | + formData.value = await ${simpleClassName}Api.get${subSimpleClassName}ListBy${SubJoinColumnName}(val) | |
| 84 | + #else | |
| 85 | + const data = await ${simpleClassName}Api.get${subSimpleClassName}By${SubJoinColumnName}(val) | |
| 86 | + if (!data) { | |
| 87 | + return | |
| 88 | + } | |
| 89 | + formData.value = data | |
| 90 | + #end | |
| 91 | + } finally { | |
| 92 | + loading.value = false | |
| 93 | + } | |
| 94 | +} | |
| 95 | + | |
| 96 | +/** 初始化 **/ | |
| 97 | +onMounted(() => { | |
| 98 | + getList() | |
| 99 | +}) | |
| 100 | +</script> | |
| 0 | 101 | \ No newline at end of file | ... | ... |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/components/list_sub_inner.vue.vm
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineTest.java
| ... | ... | @@ -178,7 +178,7 @@ public class CodegenEngineTest extends BaseMockitoUnitTest { |
| 178 | 178 | } |
| 179 | 179 | |
| 180 | 180 | @Test |
| 181 | - public void testExecute_vue3_masterSub() { | |
| 181 | + public void testExecute_vue3_masterNormal() { | |
| 182 | 182 | // 准备请求参数 |
| 183 | 183 | // 主表 |
| 184 | 184 | CodegenTableDO table = new CodegenTableDO().setScene(CodegenSceneEnum.ADMIN.getScene()).setParentMenuId(888L) |
| ... | ... | @@ -461,6 +461,290 @@ public class CodegenEngineTest extends BaseMockitoUnitTest { |
| 461 | 461 | } |
| 462 | 462 | } |
| 463 | 463 | |
| 464 | + @Test | |
| 465 | + public void testExecute_vue3_masterInner() { | |
| 466 | + // 准备请求参数 | |
| 467 | + // 主表 | |
| 468 | + CodegenTableDO table = new CodegenTableDO().setScene(CodegenSceneEnum.ADMIN.getScene()).setParentMenuId(888L) | |
| 469 | + .setTableName("infra_demo12_student").setTableComment("学生表") | |
| 470 | + .setModuleName("infra").setBusinessName("demo12").setClassName("InfraDemo11Student") | |
| 471 | + .setClassComment("学生").setAuthor("芋道源码") | |
| 472 | + .setTemplateType(CodegenTemplateTypeEnum.MASTER_INNER.getType()) | |
| 473 | + .setFrontType(CodegenFrontTypeEnum.VUE3.getType()); | |
| 474 | + CodegenColumnDO idColumn = new CodegenColumnDO().setColumnName("id").setDataType(JdbcType.BIGINT.name()) | |
| 475 | + .setId(100L) | |
| 476 | + .setColumnComment("编号").setNullable(false).setPrimaryKey(true).setAutoIncrement(true) | |
| 477 | + .setJavaType("Long").setJavaField("id").setExample("1024") | |
| 478 | + .setCreateOperation(false).setUpdateOperation(true) | |
| 479 | + .setListOperation(false) | |
| 480 | + .setListOperationResult(true); | |
| 481 | + CodegenColumnDO nameColumn = new CodegenColumnDO().setColumnName("name").setDataType(JdbcType.VARCHAR.name()) | |
| 482 | + .setColumnComment("名字").setNullable(false) | |
| 483 | + .setJavaType("String").setJavaField("name").setExample("芋头") | |
| 484 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 485 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.LIKE.getCondition()) | |
| 486 | + .setListOperationResult(true) | |
| 487 | + .setHtmlType(CodegenColumnHtmlTypeEnum.INPUT.getType()); | |
| 488 | + CodegenColumnDO descriptionColumn = new CodegenColumnDO().setColumnName("description").setDataType(JdbcType.VARCHAR.name()) | |
| 489 | + .setColumnComment("简介").setNullable(false) | |
| 490 | + .setJavaType("String").setJavaField("description").setExample("我是介绍") | |
| 491 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 492 | + .setListOperation(false) | |
| 493 | + .setListOperationResult(true) | |
| 494 | + .setHtmlType(CodegenColumnHtmlTypeEnum.TEXTAREA.getType()); | |
| 495 | + CodegenColumnDO birthdayColumn = new CodegenColumnDO().setColumnName("birthday").setDataType(JdbcType.DATE.name()) | |
| 496 | + .setColumnComment("出生日期").setNullable(false) | |
| 497 | + .setJavaType("LocalDateTime").setJavaField("birthday") | |
| 498 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 499 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.EQ.getCondition()) | |
| 500 | + .setListOperationResult(true) | |
| 501 | + .setHtmlType(CodegenColumnHtmlTypeEnum.DATETIME.getType()); | |
| 502 | + CodegenColumnDO sexColumn = new CodegenColumnDO().setColumnName("sex").setDataType(JdbcType.INTEGER.name()) | |
| 503 | + .setColumnComment("性别").setNullable(false) | |
| 504 | + .setJavaType("Integer").setJavaField("sex").setExample("1") | |
| 505 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 506 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.EQ.getCondition()) | |
| 507 | + .setListOperationResult(true) | |
| 508 | + .setHtmlType(CodegenColumnHtmlTypeEnum.SELECT.getType()) | |
| 509 | + .setDictType("system_user_sex"); | |
| 510 | + CodegenColumnDO enabledColumn = new CodegenColumnDO().setColumnName("enabled").setDataType(JdbcType.BOOLEAN.name()) | |
| 511 | + .setColumnComment("是否有效").setNullable(false) | |
| 512 | + .setJavaType("Boolean").setJavaField("enabled").setExample("true") | |
| 513 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 514 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.EQ.getCondition()) | |
| 515 | + .setListOperationResult(true) | |
| 516 | + .setHtmlType(CodegenColumnHtmlTypeEnum.RADIO.getType()) | |
| 517 | + .setDictType("infra_boolean_string"); | |
| 518 | + CodegenColumnDO avatarColumn = new CodegenColumnDO().setColumnName("avatar").setDataType(JdbcType.VARCHAR.name()) | |
| 519 | + .setColumnComment("头像").setNullable(false) | |
| 520 | + .setJavaType("String").setJavaField("avatar").setExample("https://www.iocoder.cn/1.png") | |
| 521 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 522 | + .setListOperation(false) | |
| 523 | + .setListOperationResult(true) | |
| 524 | + .setHtmlType(CodegenColumnHtmlTypeEnum.IMAGE_UPLOAD.getType()); | |
| 525 | + CodegenColumnDO videoColumn = new CodegenColumnDO().setColumnName("video").setDataType(JdbcType.VARCHAR.name()) | |
| 526 | + .setColumnComment("附件").setNullable(true) | |
| 527 | + .setJavaType("String").setJavaField("video").setExample("https://www.iocoder.cn/1.mp4") | |
| 528 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 529 | + .setListOperation(false) | |
| 530 | + .setListOperationResult(true) | |
| 531 | + .setHtmlType(CodegenColumnHtmlTypeEnum.FILE_UPLOAD.getType()); | |
| 532 | + CodegenColumnDO memoColumn = new CodegenColumnDO().setColumnName("memo").setDataType(JdbcType.VARCHAR.name()) | |
| 533 | + .setColumnComment("备注").setNullable(false) | |
| 534 | + .setJavaType("String").setJavaField("memo").setExample("我是备注") | |
| 535 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 536 | + .setListOperation(false) | |
| 537 | + .setListOperationResult(true) | |
| 538 | + .setHtmlType(CodegenColumnHtmlTypeEnum.EDITOR.getType()); | |
| 539 | + CodegenColumnDO createTimeColumn = new CodegenColumnDO().setColumnName("create_time").setDataType(JdbcType.DATE.name()) | |
| 540 | + .setColumnComment("创建时间").setNullable(true) | |
| 541 | + .setJavaType("LocalDateTime").setJavaField("createTime") | |
| 542 | + .setCreateOperation(false).setUpdateOperation(false) | |
| 543 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.BETWEEN.getCondition()) | |
| 544 | + .setListOperationResult(true) | |
| 545 | + .setHtmlType(CodegenColumnHtmlTypeEnum.DATETIME.getType()); | |
| 546 | + List<CodegenColumnDO> columns = Arrays.asList(idColumn, nameColumn, descriptionColumn, birthdayColumn, | |
| 547 | + sexColumn, enabledColumn, avatarColumn, videoColumn, memoColumn, createTimeColumn); | |
| 548 | + | |
| 549 | + // 子表(联系人) | |
| 550 | + CodegenTableDO contactTable = new CodegenTableDO().setScene(CodegenSceneEnum.ADMIN.getScene()) | |
| 551 | + .setTableName("infra_demo12_student_contact").setTableComment("学生联系人表") | |
| 552 | + .setModuleName("infra").setBusinessName("demo12").setClassName("InfraDemo11StudentContact") | |
| 553 | + .setClassComment("学生联系人").setAuthor("芋道源码") | |
| 554 | + .setTemplateType(CodegenTemplateTypeEnum.SUB.getType()) | |
| 555 | + .setFrontType(CodegenFrontTypeEnum.VUE3.getType()) | |
| 556 | + .setSubJoinColumnId(100L).setSubJoinMany(true); | |
| 557 | + CodegenColumnDO contactIdColumn = new CodegenColumnDO().setColumnName("id").setDataType(JdbcType.BIGINT.name()) | |
| 558 | + .setColumnComment("编号").setNullable(false).setPrimaryKey(true).setAutoIncrement(true) | |
| 559 | + .setJavaType("Long").setJavaField("id").setExample("1024") | |
| 560 | + .setCreateOperation(false).setUpdateOperation(true) | |
| 561 | + .setListOperation(false) | |
| 562 | + .setListOperationResult(true); | |
| 563 | + CodegenColumnDO contactStudentIdColumn = new CodegenColumnDO().setColumnName("student_id").setDataType(JdbcType.BIGINT.name()) | |
| 564 | + .setColumnComment("学生编号").setNullable(false).setPrimaryKey(false) | |
| 565 | + .setJavaType("Long").setJavaField("studentId").setExample("2048") | |
| 566 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 567 | + .setListOperation(false) | |
| 568 | + .setListOperationResult(true) | |
| 569 | + .setId(100L); | |
| 570 | + CodegenColumnDO contactNameColumn = new CodegenColumnDO().setColumnName("name").setDataType(JdbcType.VARCHAR.name()) | |
| 571 | + .setColumnComment("名字").setNullable(false) | |
| 572 | + .setJavaType("String").setJavaField("name").setExample("芋头") | |
| 573 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 574 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.LIKE.getCondition()) | |
| 575 | + .setListOperationResult(true) | |
| 576 | + .setHtmlType(CodegenColumnHtmlTypeEnum.INPUT.getType()); | |
| 577 | + CodegenColumnDO contactDescriptionColumn = new CodegenColumnDO().setColumnName("description").setDataType(JdbcType.VARCHAR.name()) | |
| 578 | + .setColumnComment("简介").setNullable(false) | |
| 579 | + .setJavaType("String").setJavaField("description").setExample("我是介绍") | |
| 580 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 581 | + .setListOperation(false) | |
| 582 | + .setListOperationResult(true) | |
| 583 | + .setHtmlType(CodegenColumnHtmlTypeEnum.TEXTAREA.getType()); | |
| 584 | + CodegenColumnDO contactBirthdayColumn = new CodegenColumnDO().setColumnName("birthday").setDataType(JdbcType.DATE.name()) | |
| 585 | + .setColumnComment("出生日期").setNullable(false) | |
| 586 | + .setJavaType("LocalDateTime").setJavaField("birthday") | |
| 587 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 588 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.EQ.getCondition()) | |
| 589 | + .setListOperationResult(true) | |
| 590 | + .setHtmlType(CodegenColumnHtmlTypeEnum.DATETIME.getType()); | |
| 591 | + CodegenColumnDO contactSexColumn = new CodegenColumnDO().setColumnName("sex").setDataType(JdbcType.INTEGER.name()) | |
| 592 | + .setColumnComment("性别").setNullable(false) | |
| 593 | + .setJavaType("Integer").setJavaField("sex").setExample("1") | |
| 594 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 595 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.EQ.getCondition()) | |
| 596 | + .setListOperationResult(true) | |
| 597 | + .setHtmlType(CodegenColumnHtmlTypeEnum.SELECT.getType()) | |
| 598 | + .setDictType("system_user_sex"); | |
| 599 | + CodegenColumnDO contactEnabledColumn = new CodegenColumnDO().setColumnName("enabled").setDataType(JdbcType.BOOLEAN.name()) | |
| 600 | + .setColumnComment("是否有效").setNullable(false) | |
| 601 | + .setJavaType("Boolean").setJavaField("enabled").setExample("true") | |
| 602 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 603 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.EQ.getCondition()) | |
| 604 | + .setListOperationResult(true) | |
| 605 | + .setHtmlType(CodegenColumnHtmlTypeEnum.RADIO.getType()) | |
| 606 | + .setDictType("infra_boolean_string"); | |
| 607 | + CodegenColumnDO contactAvatarColumn = new CodegenColumnDO().setColumnName("avatar").setDataType(JdbcType.VARCHAR.name()) | |
| 608 | + .setColumnComment("头像").setNullable(false) | |
| 609 | + .setJavaType("String").setJavaField("avatar").setExample("https://www.iocoder.cn/1.png") | |
| 610 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 611 | + .setListOperation(false) | |
| 612 | + .setListOperationResult(true) | |
| 613 | + .setHtmlType(CodegenColumnHtmlTypeEnum.IMAGE_UPLOAD.getType()); | |
| 614 | + CodegenColumnDO contactVideoColumn = new CodegenColumnDO().setColumnName("video").setDataType(JdbcType.VARCHAR.name()) | |
| 615 | + .setColumnComment("附件").setNullable(true) | |
| 616 | + .setJavaType("String").setJavaField("video").setExample("https://www.iocoder.cn/1.mp4") | |
| 617 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 618 | + .setListOperation(false) | |
| 619 | + .setListOperationResult(true) | |
| 620 | + .setHtmlType(CodegenColumnHtmlTypeEnum.FILE_UPLOAD.getType()); | |
| 621 | + CodegenColumnDO contactMemoColumn = new CodegenColumnDO().setColumnName("memo").setDataType(JdbcType.VARCHAR.name()) | |
| 622 | + .setColumnComment("备注").setNullable(false) | |
| 623 | + .setJavaType("String").setJavaField("memo").setExample("我是备注") | |
| 624 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 625 | + .setListOperation(false) | |
| 626 | + .setListOperationResult(true) | |
| 627 | + .setHtmlType(CodegenColumnHtmlTypeEnum.EDITOR.getType()); | |
| 628 | + CodegenColumnDO contactCreateTimeColumn = new CodegenColumnDO().setColumnName("create_time").setDataType(JdbcType.DATE.name()) | |
| 629 | + .setColumnComment("创建时间").setNullable(true) | |
| 630 | + .setJavaType("LocalDateTime").setJavaField("createTime") | |
| 631 | + .setCreateOperation(false).setUpdateOperation(false) | |
| 632 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.BETWEEN.getCondition()) | |
| 633 | + .setListOperationResult(true) | |
| 634 | + .setHtmlType(CodegenColumnHtmlTypeEnum.DATETIME.getType()); | |
| 635 | + List<CodegenColumnDO> contactColumns = Arrays.asList(contactIdColumn, contactStudentIdColumn, | |
| 636 | + contactNameColumn, contactDescriptionColumn, contactBirthdayColumn, | |
| 637 | + contactSexColumn, contactEnabledColumn, contactAvatarColumn, contactVideoColumn, contactMemoColumn, contactCreateTimeColumn); | |
| 638 | + | |
| 639 | + // 子表(班主任) | |
| 640 | + CodegenTableDO teacherTable = new CodegenTableDO().setScene(CodegenSceneEnum.ADMIN.getScene()) | |
| 641 | + .setTableName("infra_demo12_student_teacher").setTableComment("学生班主任表") | |
| 642 | + .setModuleName("infra").setBusinessName("demo12").setClassName("InfraDemo11StudentTeacher") | |
| 643 | + .setClassComment("学生班主任").setAuthor("芋道源码") | |
| 644 | + .setTemplateType(CodegenTemplateTypeEnum.SUB.getType()) | |
| 645 | + .setFrontType(CodegenFrontTypeEnum.VUE3.getType()) | |
| 646 | + .setSubJoinColumnId(200L).setSubJoinMany(false); | |
| 647 | + CodegenColumnDO teacherIdColumn = new CodegenColumnDO().setColumnName("id").setDataType(JdbcType.BIGINT.name()) | |
| 648 | + .setColumnComment("编号").setNullable(false).setPrimaryKey(true).setAutoIncrement(true) | |
| 649 | + .setJavaType("Long").setJavaField("id").setExample("1024") | |
| 650 | + .setCreateOperation(false).setUpdateOperation(true) | |
| 651 | + .setListOperation(false) | |
| 652 | + .setListOperationResult(true); | |
| 653 | + CodegenColumnDO teacherStudentIdColumn = new CodegenColumnDO().setColumnName("student_id").setDataType(JdbcType.BIGINT.name()) | |
| 654 | + .setColumnComment("学生编号").setNullable(false).setPrimaryKey(false) | |
| 655 | + .setJavaType("Long").setJavaField("studentId").setExample("2048") | |
| 656 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 657 | + .setListOperation(false) | |
| 658 | + .setListOperationResult(true) | |
| 659 | + .setId(200L); | |
| 660 | + CodegenColumnDO teacherNameColumn = new CodegenColumnDO().setColumnName("name").setDataType(JdbcType.VARCHAR.name()) | |
| 661 | + .setColumnComment("名字").setNullable(false) | |
| 662 | + .setJavaType("String").setJavaField("name").setExample("芋头") | |
| 663 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 664 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.LIKE.getCondition()) | |
| 665 | + .setListOperationResult(true) | |
| 666 | + .setHtmlType(CodegenColumnHtmlTypeEnum.INPUT.getType()); | |
| 667 | + CodegenColumnDO teacherDescriptionColumn = new CodegenColumnDO().setColumnName("description").setDataType(JdbcType.VARCHAR.name()) | |
| 668 | + .setColumnComment("简介").setNullable(false) | |
| 669 | + .setJavaType("String").setJavaField("description").setExample("我是介绍") | |
| 670 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 671 | + .setListOperation(false) | |
| 672 | + .setListOperationResult(true) | |
| 673 | + .setHtmlType(CodegenColumnHtmlTypeEnum.TEXTAREA.getType()); | |
| 674 | + CodegenColumnDO teacherBirthdayColumn = new CodegenColumnDO().setColumnName("birthday").setDataType(JdbcType.DATE.name()) | |
| 675 | + .setColumnComment("出生日期").setNullable(false) | |
| 676 | + .setJavaType("LocalDateTime").setJavaField("birthday") | |
| 677 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 678 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.EQ.getCondition()) | |
| 679 | + .setListOperationResult(true) | |
| 680 | + .setHtmlType(CodegenColumnHtmlTypeEnum.DATETIME.getType()); | |
| 681 | + CodegenColumnDO teacherSexColumn = new CodegenColumnDO().setColumnName("sex").setDataType(JdbcType.INTEGER.name()) | |
| 682 | + .setColumnComment("性别").setNullable(false) | |
| 683 | + .setJavaType("Integer").setJavaField("sex").setExample("1") | |
| 684 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 685 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.EQ.getCondition()) | |
| 686 | + .setListOperationResult(true) | |
| 687 | + .setHtmlType(CodegenColumnHtmlTypeEnum.SELECT.getType()) | |
| 688 | + .setDictType("system_user_sex"); | |
| 689 | + CodegenColumnDO teacherEnabledColumn = new CodegenColumnDO().setColumnName("enabled").setDataType(JdbcType.BOOLEAN.name()) | |
| 690 | + .setColumnComment("是否有效").setNullable(false) | |
| 691 | + .setJavaType("Boolean").setJavaField("enabled").setExample("true") | |
| 692 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 693 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.EQ.getCondition()) | |
| 694 | + .setListOperationResult(true) | |
| 695 | + .setHtmlType(CodegenColumnHtmlTypeEnum.RADIO.getType()) | |
| 696 | + .setDictType("infra_boolean_string"); | |
| 697 | + CodegenColumnDO teacherAvatarColumn = new CodegenColumnDO().setColumnName("avatar").setDataType(JdbcType.VARCHAR.name()) | |
| 698 | + .setColumnComment("头像").setNullable(false) | |
| 699 | + .setJavaType("String").setJavaField("avatar").setExample("https://www.iocoder.cn/1.png") | |
| 700 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 701 | + .setListOperation(false) | |
| 702 | + .setListOperationResult(true) | |
| 703 | + .setHtmlType(CodegenColumnHtmlTypeEnum.IMAGE_UPLOAD.getType()); | |
| 704 | + CodegenColumnDO teacherVideoColumn = new CodegenColumnDO().setColumnName("video").setDataType(JdbcType.VARCHAR.name()) | |
| 705 | + .setColumnComment("附件").setNullable(true) | |
| 706 | + .setJavaType("String").setJavaField("video").setExample("https://www.iocoder.cn/1.mp4") | |
| 707 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 708 | + .setListOperation(false) | |
| 709 | + .setListOperationResult(true) | |
| 710 | + .setHtmlType(CodegenColumnHtmlTypeEnum.FILE_UPLOAD.getType()); | |
| 711 | + CodegenColumnDO teacherMemoColumn = new CodegenColumnDO().setColumnName("memo").setDataType(JdbcType.VARCHAR.name()) | |
| 712 | + .setColumnComment("备注").setNullable(false) | |
| 713 | + .setJavaType("String").setJavaField("memo").setExample("我是备注") | |
| 714 | + .setCreateOperation(true).setUpdateOperation(true) | |
| 715 | + .setListOperation(false) | |
| 716 | + .setListOperationResult(true) | |
| 717 | + .setHtmlType(CodegenColumnHtmlTypeEnum.EDITOR.getType()); | |
| 718 | + CodegenColumnDO teacherCreateTimeColumn = new CodegenColumnDO().setColumnName("create_time").setDataType(JdbcType.DATE.name()) | |
| 719 | + .setColumnComment("创建时间").setNullable(true) | |
| 720 | + .setJavaType("LocalDateTime").setJavaField("createTime") | |
| 721 | + .setCreateOperation(false).setUpdateOperation(false) | |
| 722 | + .setListOperation(true).setListOperationCondition(CodegenColumnListConditionEnum.BETWEEN.getCondition()) | |
| 723 | + .setListOperationResult(true) | |
| 724 | + .setHtmlType(CodegenColumnHtmlTypeEnum.DATETIME.getType()); | |
| 725 | + List<CodegenColumnDO> teacherColumns = Arrays.asList(teacherIdColumn, teacherStudentIdColumn, | |
| 726 | + teacherNameColumn, teacherDescriptionColumn, teacherBirthdayColumn, | |
| 727 | + teacherSexColumn, teacherEnabledColumn, teacherAvatarColumn, teacherVideoColumn, teacherMemoColumn, teacherCreateTimeColumn); | |
| 728 | + | |
| 729 | + // 调用 | |
| 730 | + Map<String, String> result = codegenEngine.execute(table, columns, | |
| 731 | + Arrays.asList(contactTable, teacherTable), Arrays.asList(contactColumns, teacherColumns)); | |
| 732 | + | |
| 733 | + // 构建 zip 包 | |
| 734 | + writeFile(result, "/Users/yunai/test/demo12.zip"); | |
| 735 | + | |
| 736 | + // 断言 | |
| 737 | + assertEquals(27, result.size()); | |
| 738 | + | |
| 739 | + for (Map.Entry<String, String> entry : result.entrySet()) { | |
| 740 | + System.out.println(entry.getKey()); | |
| 741 | + System.out.println(entry.getValue()); | |
| 742 | + System.out.println(""); | |
| 743 | + System.out.println(""); | |
| 744 | + System.out.println(""); | |
| 745 | + } | |
| 746 | + } | |
| 747 | + | |
| 464 | 748 | private void assertPathContentEquals(String path, Map<String, String> result, String key) { |
| 465 | 749 | String pathContent = ResourceUtil.readUtf8Str("codegen/" + path); |
| 466 | 750 | String valueContent = result.get(key); | ... | ... |