From e0f78da62e9c07d3785b94fd9a5dcfd490ef7a10 Mon Sep 17 00:00:00 2001 From: zxy Date: Thu, 30 Apr 2026 14:10:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(codegen):=20=E6=B7=BB=E5=8A=A0=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=94=9F=E6=88=90=E5=99=A8=E6=89=B9=E9=87=8F=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mes-module-infra/mes-module-infra-biz/pom.xml | 12 +++++ .../admin/codegen/CodegenController.java | 45 ++++++++++++++++--- .../infra/service/codegen/CodegenService.java | 5 +++ .../service/codegen/CodegenServiceImpl.java | 22 +++++++++ .../src/main/resources/application.yaml | 2 +- .../src/api/infra/codegen/index.ts | 10 +++++ .../codegen/components/GenerateInfoForm.vue | 2 +- .../src/views/infra/codegen/index.vue | 44 +++++++++++++++++- 8 files changed, 133 insertions(+), 9 deletions(-) diff --git a/mes-module-infra/mes-module-infra-biz/pom.xml b/mes-module-infra/mes-module-infra-biz/pom.xml index 33fad24..770136b 100644 --- a/mes-module-infra/mes-module-infra-biz/pom.xml +++ b/mes-module-infra/mes-module-infra-biz/pom.xml @@ -7,6 +7,18 @@ mes-module-infra ${revision} + + + + org.apache.maven.plugins + maven-compiler-plugin + + 16 + 16 + + + + 4.0.0 mes-module-infra-biz jar diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/controller/admin/codegen/CodegenController.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/controller/admin/codegen/CodegenController.java index b9843b5..3a735d0 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/controller/admin/codegen/CodegenController.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/controller/admin/codegen/CodegenController.java @@ -6,10 +6,6 @@ import com.ningxia.yunxi.chemmes.framework.common.pojo.CommonResult; import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils; import com.ningxia.yunxi.chemmes.framework.common.util.servlet.ServletUtils; -import com.ningxia.yunxi.chemmes.module.infra.convert.codegen.CodegenConvert; -import com.ningxia.yunxi.chemmes.module.infra.dal.dataobject.codegen.CodegenColumnDO; -import com.ningxia.yunxi.chemmes.module.infra.dal.dataobject.codegen.CodegenTableDO; -import com.ningxia.yunxi.chemmes.module.infra.service.codegen.CodegenService; import com.ningxia.yunxi.chemmes.module.infra.controller.admin.codegen.vo.CodegenCreateListReqVO; import com.ningxia.yunxi.chemmes.module.infra.controller.admin.codegen.vo.CodegenDetailRespVO; import com.ningxia.yunxi.chemmes.module.infra.controller.admin.codegen.vo.CodegenPreviewRespVO; @@ -17,10 +13,14 @@ import com.ningxia.yunxi.chemmes.module.infra.controller.admin.codegen.vo.Codege import com.ningxia.yunxi.chemmes.module.infra.controller.admin.codegen.vo.table.CodegenTablePageReqVO; import com.ningxia.yunxi.chemmes.module.infra.controller.admin.codegen.vo.table.CodegenTableRespVO; import com.ningxia.yunxi.chemmes.module.infra.controller.admin.codegen.vo.table.DatabaseTableRespVO; -import io.swagger.v3.oas.annotations.tags.Tag; +import com.ningxia.yunxi.chemmes.module.infra.convert.codegen.CodegenConvert; +import com.ningxia.yunxi.chemmes.module.infra.dal.dataobject.codegen.CodegenColumnDO; +import com.ningxia.yunxi.chemmes.module.infra.dal.dataobject.codegen.CodegenTableDO; +import com.ningxia.yunxi.chemmes.module.infra.service.codegen.CodegenService; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; -import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -31,8 +31,10 @@ import javax.validation.Valid; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static com.ningxia.yunxi.chemmes.framework.common.pojo.CommonResult.success; import static com.ningxia.yunxi.chemmes.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @@ -46,6 +48,37 @@ public class CodegenController { @Resource private CodegenService codegenService; + // CodegenController.java 需要添加: + + @Operation(summary = "批量删除数据库的表和字段定义") + @DeleteMapping("/delete-list") + @PreAuthorize("@ss.hasPermission('infra:codegen:delete')") + public CommonResult deleteCodegenList(@RequestBody List tableIds) { + codegenService.deleteCodegenList(tableIds); + return success(true); + } + + + @Operation(summary = "批量下载生成代码") + @GetMapping("/download-list") + @PreAuthorize("@ss.hasPermission('infra:codegen:download')") + public void downloadCodegenList(String tableIds, HttpServletResponse response) throws IOException { + if (tableIds == null || tableIds.isEmpty()) { + throw new IllegalArgumentException("表ID列表不能为空"); + } + String[] split = tableIds.trim().split(","); + //数组转换为List + List list = Arrays.stream(split).map(Long::parseLong).collect(Collectors.toList()); + Map codes = codegenService.generationCodesList(list); + + String[] paths = codes.keySet().toArray(new String[0]); + ByteArrayInputStream[] ins = codes.values().stream().map(IoUtil::toUtf8Stream).toArray(ByteArrayInputStream[]::new); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipUtil.zip(outputStream, paths, ins); + ServletUtils.writeAttachment(response, "codegen-batch.zip", outputStream.toByteArray()); + } + + @GetMapping("/db/table/list") @Operation(summary = "获得数据库自带的表定义列表", description = "会过滤掉已经导入 Codegen 的表") @Parameters({ diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/service/codegen/CodegenService.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/service/codegen/CodegenService.java index e34cbec..44b6bb1 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/service/codegen/CodegenService.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/service/codegen/CodegenService.java @@ -98,4 +98,9 @@ public interface CodegenService { */ List getDatabaseTableList(Long dataSourceConfigId, String name, String comment); + // CodegenService.java 需要添加: + + void deleteCodegenList(List tableIds); + Map generationCodesList(List tableIds); + } diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/service/codegen/CodegenServiceImpl.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/service/codegen/CodegenServiceImpl.java index 6e56d52..846172f 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/service/codegen/CodegenServiceImpl.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/ningxia/yunxi/chemmes/module/infra/service/codegen/CodegenServiceImpl.java @@ -285,4 +285,26 @@ public class CodegenServiceImpl implements CodegenService { return BeanUtils.toBean(tables, DatabaseTableRespVO.class); } + // CodegenServiceImpl.java 需要添加: + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteCodegenList(List tableIds) { + for (Long tableId : tableIds) { + deleteCodegen(tableId); + } + } + @Override + public Map generationCodesList(List tableIds) { + Map allCodes = new LinkedHashMap<>(); + for (Long tableId : tableIds) { + Map codes = generationCodes(tableId); + allCodes.putAll(codes); + } + return allCodes; + } + +// ... existing code ... + + } diff --git a/mes-server/src/main/resources/application.yaml b/mes-server/src/main/resources/application.yaml index 4e101ec..6068df7 100644 --- a/mes-server/src/main/resources/application.yaml +++ b/mes-server/src/main/resources/application.yaml @@ -173,7 +173,7 @@ mes: codegen: base-package: ${mes.info.base-package} db-schemas: ${spring.datasource.dynamic.datasource.master.name} - front-type: 10 # 前端模版的类型,参见 CodegenFrontTypeEnum 枚举类 + front-type: 20 # 前端模版的类型,参见 CodegenFrontTypeEnum 枚举类 error-code: # 错误码相关配置项 - com.ningxia.yunxi.chemmes.module.majoys.enums.ErrorCodeConstants constants-class-list: - com.ningxia.yunxi.chemmes.module.infra.enums.ErrorCodeConstants diff --git a/mes-ui/mes-ui-admin-vue3/src/api/infra/codegen/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/infra/codegen/index.ts index feff57a..f72de38 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/infra/codegen/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/infra/codegen/index.ts @@ -121,3 +121,13 @@ export const createCodegenList = (data) => { export const deleteCodegenTable = (id: number) => { return request.delete({ url: '/infra/codegen/delete?tableId=' + id }) } + +// 批量删除代码生成表定义 +export const deleteCodegenTableList = (ids: number[]) => { + return request.delete({ url: '/infra/codegen/delete-list', data: ids }) +} + +// 批量下载生成代码 +export const downloadCodegenList = (ids: number[]) => { + return request.download({ url: '/infra/codegen/download-list?tableIds=' + ids.join(',') }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/infra/codegen/components/GenerateInfoForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/infra/codegen/components/GenerateInfoForm.vue index 7605174..ccf0da3 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/infra/codegen/components/GenerateInfoForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/infra/codegen/components/GenerateInfoForm.vue @@ -317,7 +317,7 @@ const props = defineProps({ const formRef = ref() const formData = ref({ templateType: null, - frontType: null, + frontType: 20, scene: null, moduleName: '', businessName: '', diff --git a/mes-ui/mes-ui-admin-vue3/src/views/infra/codegen/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/infra/codegen/index.vue index 69c3d12..077a909 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/infra/codegen/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/infra/codegen/index.vue @@ -55,13 +55,32 @@ 导入 + + + 批量删除 + + + + 批量生成代码 + - + +