diff --git a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java index e75c974..eeec956 100644 --- a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java +++ b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java @@ -42,7 +42,7 @@ public class BpmOALeaveDO extends BaseDO { /** * 请假类型 */ - private String type; + private Integer type; /** * 原因 */ diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenBuilder.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenBuilder.java index 06f0478..4a1897c 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenBuilder.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenBuilder.java @@ -117,8 +117,10 @@ public class CodegenBuilder { table.setBusinessName(toCamelCase(subAfter(tableName, '_', false)).toLowerCase()); // 驼峰 + 首字母大写;第一步,第一个 _ 前缀的后面,作为 class 名字;第二步,驼峰命名 table.setClassName(upperFirst(toCamelCase(subAfter(tableName, '_', false)))); + // 处理表注释中的特殊字符,避免生成的代码编译错误(先转义,再去掉"表"字) + String tableComment = sanitizeColumnComment(table.getTableComment()); // 去除结尾的表,作为类描述 - table.setClassComment(StrUtil.removeSuffixIgnoreCase(table.getTableComment(), "表")); + table.setClassComment(StrUtil.removeSuffixIgnoreCase(tableComment, "表")); table.setTemplateType(CodegenTemplateTypeEnum.ONE.getType()); } @@ -128,6 +130,8 @@ public class CodegenBuilder { for (CodegenColumnDO column : columns) { column.setTableId(tableId); column.setOrdinalPosition(index++); + // 处理字段注释中的特殊字符,避免生成的代码编译错误 + column.setColumnComment(sanitizeColumnComment(column.getColumnComment())); // 特殊处理:Byte => Integer if (Byte.class.getSimpleName().equals(column.getJavaType())) { column.setJavaType(Integer.class.getSimpleName()); @@ -216,5 +220,18 @@ public class CodegenBuilder { column.setExample(randomEle(new String[]{"你猜", "随便", "你说的对"})); } } - + + /** + * 清理字段注释中的特殊字符 + * 将英文引号替换为中文引号,避免生成的代码出现语法错误 + * + * @param comment 原始字段注释 + * @return 清理后的字段注释 + */ + private String sanitizeColumnComment(String comment) { + if (StrUtil.isEmpty(comment)) { + return comment; + } + return comment.replace("\"", "\u201c").replace("\"", "\u201d").replace("'", "\u2018").replace("'", "\u2019"); + } }