diff --git a/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplController.java b/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplController.java index e537710..39d8838 100644 --- a/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplController.java +++ b/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplController.java @@ -1,15 +1,24 @@ package com.njzscloud.common.gen; -import cn.hutool.core.map.MapUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.core.util.ZipUtil; import com.njzscloud.common.core.tuple.Tuple3; +import com.njzscloud.common.core.utils.Mime; import com.njzscloud.common.core.utils.R; import com.njzscloud.common.gen.support.Generator; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.common.mvc.util.ServletUtil; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; import java.util.List; import java.util.Map; @@ -52,22 +61,39 @@ public class TplController { } @PostMapping("/generate") - public R generate(@RequestParam("tplName") String tplName, + public void generate(@RequestParam("tplNames") String[] tplNames, @RequestParam("tableName") String tableName, - @RequestBody(required = false) Map data) { - Tuple3 res = Generator.generate(tplName, tableName, data); - return R.success(MapUtil.builder() - .put("dir", res.get_0()) - .put("filename", res.get_1()) - .put("content", res.get_2()) - .build()); + @RequestBody(required = false) Map data, + HttpServletResponse response) { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + String[] paths = new String[tplNames.length]; + InputStream[] ins = new InputStream[tplNames.length]; + for (int i = 0; i < tplNames.length; i++) { + String tplName = tplNames[i]; + Tuple3 res = Generator.generate(tplName, tableName, data); + String res0 = res.get_0(); + String res1 = res.get_1(); + String res2 = res.get_2(); + StringBuilder pathBuilder = new StringBuilder(); + if (StrUtil.isNotBlank(res0)) { + pathBuilder.append(res0); + if (!res0.endsWith("/")) pathBuilder.append("/"); + } + if (StrUtil.isNotBlank(res1)) pathBuilder.append(res1); + else pathBuilder.append(IdUtil.fastSimpleUUID()).append(".txt"); + paths[i] = pathBuilder.toString(); + ins[i] = new ByteArrayInputStream(res2.getBytes()); + } + ZipUtil.zip(out, paths, ins); + + ServletUtil.download(response, out.toByteArray(), Mime.ZIP, DateTime.now() + ".zip"); } /** * 详情 */ @GetMapping("/detail") - public R detail(@RequestParam Long id) { + public R detail(@RequestParam("id") Long id) { return R.success(tplService.detail(id)); } @@ -80,23 +106,6 @@ public class TplController { } } -/* -站点 -{ -strategy:all、specify, -objs:【】 -} -产品 -{ -strategy:all、specify, -objs:【】 -} -用户 -{ - strategy: None | All | Specify, - objs: long[] -} - */ diff --git a/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplEntity.java b/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplEntity.java index 05872aa..9109420 100644 --- a/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplEntity.java +++ b/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplEntity.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.njzscloud.common.gen.contant.TplCategory; import com.njzscloud.common.gen.support.Tpl; import com.njzscloud.common.mp.support.handler.j.JsonTypeHandler; import lombok.Getter; @@ -35,11 +34,6 @@ public class TplEntity { */ private String tplName; - /** - * 模板类型; 字典编码:tpl_category - */ - private TplCategory tplCategory; - /** * 模板内容 */ diff --git a/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplService.java b/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplService.java index 88f758a..e02e9b2 100644 --- a/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplService.java +++ b/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/TplService.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njzscloud.common.core.ex.Exceptions; -import com.njzscloud.common.gen.contant.TplCategory; import com.njzscloud.common.gen.support.TemplateEngine; import com.njzscloud.common.gen.support.Tpl; import com.njzscloud.common.mp.support.PageParam; @@ -34,8 +33,6 @@ public class TplService extends ServiceImpl implements ISe public void add(TplEntity tplEntity) { String tplName = tplEntity.getTplName(); Assert.notBlank(tplName, () -> Exceptions.clierr("模板名称不能为空")); - TplCategory tplCategory = tplEntity.getTplCategory(); - Assert.notNull(tplCategory, () -> Exceptions.clierr("模板类型不能为空")); boolean exists = this.exists(Wrappers.lambdaQuery(TplEntity.class).eq(TplEntity::getTplName, tplName)); Assert.isFalse(exists, () -> Exceptions.clierr("模板:{} 已存在", tplName)); Tpl tpl = tplEntity.getTpl(); @@ -59,8 +56,6 @@ public class TplService extends ServiceImpl implements ISe public void modify(TplEntity tplEntity) { String tplName = tplEntity.getTplName(); Assert.notBlank(tplName, () -> Exceptions.clierr("模板名称不能为空")); - TplCategory tplCategory = tplEntity.getTplCategory(); - Assert.notNull(tplCategory, () -> Exceptions.clierr("模板类型不能为空")); Long id = tplEntity.getId(); boolean exists = this.exists(Wrappers.lambdaQuery(TplEntity.class) .eq(TplEntity::getTplName, tplName) diff --git a/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/support/Btl.java b/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/support/Btl.java index 720fea9..888ceb5 100644 --- a/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/support/Btl.java +++ b/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/support/Btl.java @@ -9,10 +9,11 @@ import java.util.Map; public final class Btl { public static final Function toCamelCase = (Object[] paras, Context ctx) -> StrUtil.toCamelCase(paras[0].toString()); + public static final Function toDashCase = (Object[] paras, Context ctx) -> StrUtil.toSymbolCase(paras[0].toString(), '-'); public static final Function upperFirst = (Object[] paras, Context ctx) -> StrUtil.upperFirst(paras[0].toString()); public static final Function isBlank = (Object[] paras, Context ctx) -> StrUtil.isBlank(paras[0].toString()); public static final Function subAfter = (Object[] paras, Context ctx) -> StrUtil.subAfter(paras[0].toString(), paras[1].toString(), false); - public static final Function sqlDataTypeMap = new Function() { + public static final Function javaType = new Function() { private final Map> map = MapUtil.>builder() .put("DEFAULT", MapUtil.builder().put("importStatement", "").put("dataType", "").build()) .put("VARCHAR", MapUtil.builder().put("importStatement", "").put("dataType", "String").build()) @@ -25,7 +26,7 @@ public final class Btl { .put("MEDIUMINT", MapUtil.builder().put("importStatement", "").put("dataType", "Integer").build()) .put("INT", MapUtil.builder().put("importStatement", "").put("dataType", "Integer").build()) .put("BIGINT", MapUtil.builder().put("importStatement", "").put("dataType", "Long").build()) - .put("DOUBLE", MapUtil.builder().put("importStatement", "").put("dataType", "DOUBLE").build()) + .put("DOUBLE", MapUtil.builder().put("importStatement", "").put("dataType", "Double").build()) .put("DECIMAL", MapUtil.builder().put("importStatement", "import java.math.BigDecimal;").put("dataType", "BigDecimal").build()) .put("DATE", MapUtil.builder().put("importStatement", "import java.time.LocalDate;").put("dataType", "LocalDate").build()) .put("TIME", MapUtil.builder().put("importStatement", "import java.time.LocalTime;").put("dataType", "LocalTime").build()) @@ -37,4 +38,30 @@ public final class Btl { return map.getOrDefault(paras[0].toString().toUpperCase(), map.get("DEFAULT")); } }; + + public static final Function tsType = new Function() { + private final Map> map = MapUtil.>builder() + .put("DEFAULT", MapUtil.builder().put("dataType", "").build()) + .put("VARCHAR", MapUtil.builder().put("dataType", "string").build()) + .put("CHAR", MapUtil.builder().put("dataType", "string").build()) + .put("LONGTEXT", MapUtil.builder().put("dataType", "string").build()) + .put("TEXT", MapUtil.builder().put("dataType", "string").build()) + .put("BIT", MapUtil.builder().put("dataType", "boolean").build()) + .put("TINYINT", MapUtil.builder().put("dataType", "number").build()) + .put("SMALLINT", MapUtil.builder().put("dataType", "number").build()) + .put("MEDIUMINT", MapUtil.builder().put("dataType", "number").build()) + .put("INT", MapUtil.builder().put("dataType", "number").build()) + .put("BIGINT", MapUtil.builder().put("dataType", "string").build()) + .put("DOUBLE", MapUtil.builder().put("dataType", "number").build()) + .put("DECIMAL", MapUtil.builder().put("dataType", "string").build()) + .put("DATE", MapUtil.builder().put("dataType", "string").build()) + .put("TIME", MapUtil.builder().put("dataType", "string").build()) + .put("DATETIME", MapUtil.builder().put("dataType", "string").build()) + .build(); + + @Override + public Object call(Object[] paras, Context ctx) { + return map.getOrDefault(paras[0].toString().toUpperCase(), map.get("DEFAULT")); + } + }; } diff --git a/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/support/TemplateEngine.java b/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/support/TemplateEngine.java index 3d684e7..4f02387 100644 --- a/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/support/TemplateEngine.java +++ b/njzscloud-common/njzscloud-common-gen/src/main/java/com/njzscloud/common/gen/support/TemplateEngine.java @@ -27,10 +27,12 @@ public class TemplateEngine { Configuration cfg = Configuration.defaultConfiguration(); getTemplate_ = new GroupTemplate(LOADER, cfg); getTemplate_.registerFunction("toCamelCase", Btl.toCamelCase); + getTemplate_.registerFunction("toDashCase", Btl.toDashCase); getTemplate_.registerFunction("upperFirst", Btl.upperFirst); getTemplate_.registerFunction("isBlank", Btl.isBlank); getTemplate_.registerFunction("subAfter", Btl.subAfter); - getTemplate_.registerFunction("sqlDataTypeMap", Btl.sqlDataTypeMap); + getTemplate_.registerFunction("javaType", Btl.javaType); + getTemplate_.registerFunction("tsType", Btl.tsType); getTemplate_.setErrorHandler(TemplateEngine::processException); } catch (IOException e) { getTemplate_ = null; diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/controller.btl b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/controller.btl similarity index 88% rename from njzscloud-common/njzscloud-common-gen/src/main/resources/templates/controller.btl rename to njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/controller.btl index 8855e1d..feb0f69 100644 --- a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/controller.btl +++ b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/controller.btl @@ -6,9 +6,9 @@ var entityInstance = entityName + "Entity"; var serviceClass = upperFirst(entityName) + "Service"; var serviceInstance = entityName + "Service"; var mapperClass = upperFirst(entityName) + "Mapper"; -var baseUrl = table.name; +var baseUrl = isBlank(prefix) ? table.name : subAfter(table.name, prefix); %> -package ${basePackage}.controller; +package ${basePackage}.${moduleName}.controller; import lombok.extern.slf4j.Slf4j; import lombok.RequiredArgsConstructor; @@ -16,8 +16,8 @@ import org.springframework.web.bind.annotation.*; import com.njzscloud.common.core.utils.R; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; -import ${basePackage}.entity.${entityClass}; -import ${basePackage}.service.${serviceClass}; +import ${basePackage}.${moduleName}.pojo.entity.${entityClass}; +import ${basePackage}.${moduleName}.service.${serviceClass}; /** * ${table.comment} diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/entity.btl b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/entity.btl similarity index 85% rename from njzscloud-common/njzscloud-common-gen/src/main/resources/templates/entity.btl rename to njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/entity.btl index 3defff6..6486dcc 100644 --- a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/entity.btl +++ b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/entity.btl @@ -6,9 +6,9 @@ var entityInstance = entityName + "Entity"; var serviceClass = upperFirst(entityName) + "Service"; var serviceInstance = entityName + "Service"; var mapperClass = upperFirst(entityName) + "Mapper"; -var baseUrl = table.name; +var baseUrl = isBlank(prefix) ? table.name : subAfter(table.name, prefix); %> -package ${basePackage}.entity; +package ${basePackage}.${moduleName}.entity; import lombok.Getter; import lombok.Setter; @@ -34,8 +34,8 @@ ${map.importStatement} public class ${entityClass} { <% -for(column in table.columns){ - var map = sqlDataTypeMap(column.dataType); +for(column in table.columns) { + var map = javaType(column.dataType); %> /** * ${column.comment} @@ -44,7 +44,7 @@ for(column in table.columns){ @TableId(type = IdType.ASSIGN_ID) <%}%> <%if(column.name == "creator_id" || column.name == "create_time"){%> - @TableId(type = IdType.ASSIGN_ID) + @TableId(fill = FieldFill.INSERT) <%}else if(column.name == "modifier_id" || column.name == "modify_time"){%> @TableField(fill = FieldFill.INSERT_UPDATE) <%}else if(column.name == "deleted"){%> diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/mapper.btl b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/mapper.btl similarity index 77% rename from njzscloud-common/njzscloud-common-gen/src/main/resources/templates/mapper.btl rename to njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/mapper.btl index 2e28cdc..f0d8650 100644 --- a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/mapper.btl +++ b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/mapper.btl @@ -6,13 +6,13 @@ var entityInstance = entityName + "Entity"; var serviceClass = upperFirst(entityName) + "Service"; var serviceInstance = entityName + "Service"; var mapperClass = upperFirst(entityName) + "Mapper"; -var baseUrl = table.name; +var baseUrl = isBlank(prefix) ? table.name : subAfter(table.name, prefix); %> -package ${basePackage}.mapper; +package ${basePackage}.${moduleName}.mapper; import org.apache.ibatis.annotations.Mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import ${basePackage}.entity.${entityClass}; +import ${basePackage}.${moduleName}.pojo.entity.${entityClass}; /** * ${table.comment} diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/mapper_xml.btl b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/mapper_xml.btl similarity index 78% rename from njzscloud-common/njzscloud-common-gen/src/main/resources/templates/mapper_xml.btl rename to njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/mapper_xml.btl index 2590e5c..12b9bf4 100644 --- a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/mapper_xml.btl +++ b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/mapper_xml.btl @@ -6,9 +6,9 @@ var entityInstance = entityName + "Entity"; var serviceClass = upperFirst(entityName) + "Service"; var serviceInstance = entityName + "Service"; var mapperClass = upperFirst(entityName) + "Mapper"; -var baseUrl = table.name; +var baseUrl = isBlank(prefix) ? table.name : subAfter(table.name, prefix); %> - + diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/service.btl b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/service.btl similarity index 88% rename from njzscloud-common/njzscloud-common-gen/src/main/resources/templates/service.btl rename to njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/service.btl index 2572aa5..127dca2 100644 --- a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/service.btl +++ b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/java/service.btl @@ -6,9 +6,9 @@ var entityInstance = entityName + "Entity"; var serviceClass = upperFirst(entityName) + "Service"; var serviceInstance = entityName + "Service"; var mapperClass = upperFirst(entityName) + "Mapper"; -var baseUrl = table.name; +var baseUrl = isBlank(prefix) ? table.name : subAfter(table.name, prefix); %> -package ${basePackage}.service; +package ${basePackage}.${moduleName}.service; import java.util.List; import lombok.extern.slf4j.Slf4j; @@ -20,8 +20,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; -import ${basePackage}.entity.${entityClass}; -import ${basePackage}.mapper.${mapperClass}; +import ${basePackage}.${moduleName}.pojo.entity.${entityClass}; +import ${basePackage}.${moduleName}.mapper.${mapperClass}; /** * ${table.comment} diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/tpl.json b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/tpl.json index 6cb9982..428058a 100644 --- a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/tpl.json +++ b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/tpl.json @@ -1,10 +1,114 @@ { - "tplName": "Service", - "tplCategory": "Service", - "tpl": { - "dir": "", - "filename": "", - "content": "<%\nvar entityName = toCamelCase(isBlank(prefix) ? table.name : subAfter(table.name, prefix));\nvar controllerClass = upperFirst(entityName) + \"Controller\";\nvar entityClass = upperFirst(entityName) + \"Entity\";\nvar entityInstance = entityName + \"Entity\";\nvar serviceClass = upperFirst(entityName) + \"Service\";\nvar serviceInstance = entityName + \"Service\";\nvar mapperClass = upperFirst(entityName) + \"Mapper\";\nvar baseUrl = entityName + \"Service\";\n%>\npackage ${basePackage}.service;\n\nimport lombok.extern.slf4j.Slf4j;\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.stereotype.Service;\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport com.njzscloud.common.mp.support.PageParam;\nimport com.njzscloud.common.mp.support.PageResult;\nimport java.util.List;\nimport org.springframework.transaction.annotation.Transactional;\nimport ${basePackage}.entity.${entityClass};\nimport ${basePackage}.mapper.${mapperClass};\n\n/**\n * ${table.comment}\n */\n@Slf4j\n@Service\n@RequiredArgsConstructor\npublic class ${serviceClass} extends ServiceImpl<${mapperClass}, ${entityClass}> implements IService<${entityClass}> {\n\n /**\n * 新增\n */\n public void add(${entityClass} ${entityInstance}) {\n this.save(${entityInstance});\n }\n\n /**\n * 修改\n */\n public void modify(${entityClass} ${entityInstance}) {\n this.updateById(${entityInstance});\n }\n\n /**\n * 删除\n */\n @Transactional(rollbackFor = Exception.class)\n public void del(List ids) {\n this.removeBatchByIds(ids);\n }\n\n /**\n * 详情\n */\n public ${entityClass} detail(Long id) {\n return this.getById(id);\n }\n\n /**\n * 分页查询\n */\n public PageResult<${entityClass}> paging(PageParam pageParam, ${entityClass} ${entityInstance}) {\n return PageResult.of(this.page(pageParam.toPage(), Wrappers.<${entityClass}>query(${entityInstance})));\n }\n}\n" - }, - "modelData": {} + "ts": [ + { + "modelData": { + "moduleName": "", + "subModuleName": "" + }, + "tplName": "page.vue", + "tpl": { + "dir": "${moduleName}<%if(subModuleName != null){%>/${subModuleName}<%}%>", + "filename": "${pageVueName}", + "content": "" + } + }, + { + "modelData": { + "moduleName": "", + "subModuleName": "" + }, + "tplName": "form.vue", + "tpl": { + "dir": "${moduleName}<%if(subModuleName != null){%>/${subModuleName}<%}%>", + "filename": "${formVueName}", + "content": "" + } + }, + { + "modelData": { + "moduleName": "", + "subModuleName": "" + }, + "tplName": "page.ts", + "tpl": { + "dir": "${moduleName}<%if(subModuleName != null){%>/${subModuleName}<%}%>", + "filename": "${pageTsName}", + "content": "" + } + }, + { + "modelData": { + "moduleName": "", + "subModuleName": "" + }, + "tplName": "api.ts", + "tpl": { + "dir": "${moduleName}<%if(subModuleName != null){%>/${subModuleName}<%}%>", + "filename": "${apiTsName}", + "content": "" + } + }, + { + "modelData": { + "moduleName": "", + "subModuleName": "" + }, + "tplName": "d.ts", + "tpl": { + "dir": "${moduleName}<%if(subModuleName != null){%>/${subModuleName}<%}%>", + "filename": "${dTsName}", + "content": "" + } + } + ], + "java": [ + { + "modelData": { + "basePackage": "", + "moduleName": "" + }, + "tplName": "entity.java", + "tpl": { + "dir": "pojo/entity", + "filename": "${upperFirst(toCamelCase(isBlank(prefix) ? table.name : subAfter(table.name, prefix)))}Entity.java", + "content": "" + } + }, + { + "modelData": {}, + "tplName": "mapper.java", + "tpl": { + "dir": "mapper", + "filename": "${upperFirst(toCamelCase(isBlank(prefix) ? table.name : subAfter(table.name, prefix)))}Mapper.java", + "content": "" + } + }, + { + "modelData": {}, + "tplName": "mapper.xml", + "tpl": { + "dir": "", + "filename": "${upperFirst(toCamelCase(isBlank(prefix) ? table.name : subAfter(table.name, prefix)))}Mapper.xml", + "content": "" + } + }, + { + "modelData": {}, + "tplName": "service.java", + "tpl": { + "dir": "service", + "filename": "${upperFirst(toCamelCase(isBlank(prefix) ? table.name : subAfter(table.name, prefix)))}Service.java", + "content": "" + } + }, + { + "modelData": {}, + "tplName": "controller.java", + "tpl": { + "dir": "controller", + "filename": "${upperFirst(toCamelCase(isBlank(prefix) ? table.name : subAfter(table.name, prefix)))}Controller.java", + "content": "" + } + } + ] } diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/tpl_update.json b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/tpl_update.json deleted file mode 100644 index 4957a26..0000000 --- a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/tpl_update.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "id": "1947531036271337474", - "tpl": { - "dir": "", - "filename": "", - "content": "<%\nvar entityName = toCamelCase(isBlank(prefix) ? table.name : subAfter(table.name, prefix));\nvar controllerClass = upperFirst(entityName) + \"Controller\";\nvar entityClass = upperFirst(entityName) + \"Entity\";\nvar entityInstance = entityName + \"Entity\";\nvar serviceClass = upperFirst(entityName) + \"Service\";\nvar serviceInstance = entityName + \"Service\";\nvar baseUrl = entityName + \"Service\";\n%>\npackage ${basePackage}.entity;\n\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.experimental.Accessors;\nimport com.baomidou.mybatisplus.annotation.*;\nimport lombok.ToString;\n<%for(column in table.columns) {\n var map = sqlDataTypeMap(column.dataType);\n%>\n<%if(!isBlank(map.importStatement)){%>\n${map.importStatement}\n<%}%>\n<%}%>\n\n/**\n * ${table.comment}\n */\n@Getter\n@Setter\n@ToString\n@Accessors(chain = true)\n@TableName(\"${table.name}\")\npublic class ${entityClass} {\n\n<%\nfor(column in table.columns){\n var map = sqlDataTypeMap(column.dataType);\n%>\n /**\n * ${column.comment}\n */\n <%if(column.primaryKey){%>\n @TableId(type = IdType.ASSIGN_ID)\n <%}%>\n <%if(column.name == \"creator_id\" || column.name == \"create_time\"){%>\n @TableId(type = IdType.ASSIGN_ID)\n <%}else if(column.name == \"modifier_id\" || column.name == \"modify_time\"){%>\n @TableField(fill = FieldFill.INSERT_UPDATE)\n <%}else if(column.name == \"deleted\"){%>\n @TableLogic\n <%}%>\n private ${map.dataType} ${toCamelCase(column.name)};\n\n<%}%>\n}\n" - } -} diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/api.btl b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/api.btl new file mode 100644 index 0000000..2c49def --- /dev/null +++ b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/api.btl @@ -0,0 +1,34 @@ +<% +var ulc = isBlank(prefix) ? table.name : subAfter(table.name, prefix); +var lcc = toCamelCase(ulc); +var ucc = upperFirst(lcc); +var dc = toDashCase(lcc); + +var pageVueName = ucc + "vue"; +var formVueName = ucc + "Form.vue"; +var pageTsName = dc + ".ts"; +var apiTsName = dc + "-api.ts"; +var dTsName = dc + ".d.ts"; +%> +import { + get, + post +} from '@/common/utils/http-util.ts' + +export default { + paging(data: ${ucc}Types.Search${ucc}Param) { + return get>('/${ulc}/paging', data) + }, + detail(id: string) { + return get<${ucc}Types.Search${ucc}Result>('/${ulc}/detail', {id}) + }, + add(data: ${ucc}Types.Add${ucc}Param) { + return post('/${ulc}/add', data) + }, + modify(data: ${ucc}Types.Modify${ucc}Param) { + return post('/${ulc}/modify', data) + }, + del(ids: string[]) { + return post('/${ulc}/del', ids) + }, +} diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/d.btl b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/d.btl new file mode 100644 index 0000000..9bbab11 --- /dev/null +++ b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/d.btl @@ -0,0 +1,57 @@ +<% +var ulc = isBlank(prefix) ? table.name : subAfter(table.name, prefix); +var lcc = toCamelCase(ulc); +var ucc = upperFirst(lcc); +var dc = toDashCase(lcc); + +var pageVueName = ucc + "vue"; +var formVueName = ucc + "Form.vue"; +var pageTsName = dc + ".ts"; +var apiTsName = dc + "-api.ts"; +var dTsName = dc + ".d.ts"; +%> +export {} + +declare global { + namespace ${ucc}Types { + interface Search${ucc}Param extends G.PageParam { + <% + for(column in table.columns) { + var map = tsType(column.dataType); + %> + // ${column.comment} + ${toCamelCase(column.name)}?: ${map.dataType} + <%}%> + } + + interface Search${ucc}Result { + <% + for(column in table.columns) { + var map = tsType(column.dataType); + %> + // ${column.comment} + ${toCamelCase(column.name)}?: ${map.dataType} + <%}%> + } + + interface Add${ucc}Param { + <% + for(column in table.columns) { + var map = tsType(column.dataType); + %> + // ${column.comment} + ${toCamelCase(column.name)}?: ${map.dataType} + <%}%> + } + + interface Modify${ucc}Param { + <% + for(column in table.columns) { + var map = tsType(column.dataType); + %> + // ${column.comment} + ${toCamelCase(column.name)}?: ${map.dataType} + <%}%> + } + } +} diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/form_vue.btl b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/form_vue.btl new file mode 100644 index 0000000..57b7bff --- /dev/null +++ b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/form_vue.btl @@ -0,0 +1,100 @@ +<% +var ulc = isBlank(prefix) ? table.name : subAfter(table.name, prefix); +var lcc = toCamelCase(ulc); +var ucc = upperFirst(lcc); +var dc = toDashCase(lcc); + +var pageVueName = ucc + "vue"; +var formVueName = ucc + "Form.vue"; +var pageTsName = dc + ".ts"; +var apiTsName = dc + "-api.ts"; +var dTsName = dc + ".d.ts"; +%> + + + + + diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/page.btl b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/page.btl new file mode 100644 index 0000000..9617fc2 --- /dev/null +++ b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/page.btl @@ -0,0 +1,15 @@ +<% +var ulc = isBlank(prefix) ? table.name : subAfter(table.name, prefix); +var lcc = toCamelCase(ulc); +var ucc = upperFirst(lcc); +var dc = toDashCase(lcc); + +var pageVueName = ucc + "vue"; +var formVueName = ucc + "Form.vue"; +var pageTsName = dc + ".ts"; +var apiTsName = dc + "-api.ts"; +var dTsName = dc + ".d.ts"; +%> +export default { + component: () => import('@/pages/${moduleName}<%if(subModuleName != null){%>/${subModuleName}<%}%>/${pageVueName}'), +} as RouterTypes.RouteConfig diff --git a/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/page_vue.btl b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/page_vue.btl new file mode 100644 index 0000000..8cecdbf --- /dev/null +++ b/njzscloud-common/njzscloud-common-gen/src/main/resources/templates/ts/page_vue.btl @@ -0,0 +1,207 @@ +<% +var ulc = isBlank(prefix) ? table.name : subAfter(table.name, prefix); +var lcc = toCamelCase(ulc); +var ucc = upperFirst(lcc); +var dc = toDashCase(lcc); + +var pageVueName = ucc + "vue"; +var formVueName = ucc + "Form.vue"; +var pageTsName = dc + ".ts"; +var apiTsName = dc + "-api.ts"; +var dTsName = dc + ".d.ts"; +%> + + + + + diff --git a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/support/TaskHandle.java b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/support/TaskHandle.java index 3a70fa2..6f79bce 100644 --- a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/support/TaskHandle.java +++ b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/support/TaskHandle.java @@ -140,6 +140,7 @@ public class TaskHandle implements Runnable { taskStatus = TaskStatus.Error; taskScheduleRecodeService.end(this); log.error("任务执行失败:{},任务处理函数不存在:{}", taskName, fn); + return; } this.logInfo("开始执行"); boolean exec = fnHandle.exec(); @@ -147,6 +148,8 @@ public class TaskHandle implements Runnable { taskStatus = exec ? TaskStatus.Completed : TaskStatus.Error; taskScheduleRecodeService.end(this); this.logInfo("执行完成"); + } catch (Exception e) { + log.error("错误:任务执行失败", e); } finally { ThreadContext.remove("CURRENT_TASK"); }