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,6 +146,11 @@ | ||
| 146 | #end | 146 | #end |
| 147 | #end | 147 | #end |
| 148 | #end | 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 | </el-table> | 154 | </el-table> |
| 150 | </el-form> | 155 | </el-form> |
| 151 | <el-row justify="center" class="mt-3"> | 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 | \ No newline at end of file | 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,7 +178,7 @@ public class CodegenEngineTest extends BaseMockitoUnitTest { | ||
| 178 | } | 178 | } |
| 179 | 179 | ||
| 180 | @Test | 180 | @Test |
| 181 | - public void testExecute_vue3_masterSub() { | 181 | + public void testExecute_vue3_masterNormal() { |
| 182 | // 准备请求参数 | 182 | // 准备请求参数 |
| 183 | // 主表 | 183 | // 主表 |
| 184 | CodegenTableDO table = new CodegenTableDO().setScene(CodegenSceneEnum.ADMIN.getScene()).setParentMenuId(888L) | 184 | CodegenTableDO table = new CodegenTableDO().setScene(CodegenSceneEnum.ADMIN.getScene()).setParentMenuId(888L) |
| @@ -461,6 +461,290 @@ public class CodegenEngineTest extends BaseMockitoUnitTest { | @@ -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 | private void assertPathContentEquals(String path, Map<String, String> result, String key) { | 748 | private void assertPathContentEquals(String path, Map<String, String> result, String key) { |
| 465 | String pathContent = ResourceUtil.readUtf8Str("codegen/" + path); | 749 | String pathContent = ResourceUtil.readUtf8Str("codegen/" + path); |
| 466 | String valueContent = result.get(key); | 750 | String valueContent = result.get(key); |