Commit 1287ce90e33e3f8c70cad82aad85db19df4ce5a0

Authored by YunaiV
2 parents 987d49c6 5faf6ea5

Merge branch 'master-jdk17' of https://github.com/YunaiV/ruoyi-vue-pro into master-jdk17

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 { @@ -42,7 +42,7 @@ public class BpmOALeaveDO extends BaseDO {
42 /** 42 /**
43 * 请假类型 43 * 请假类型
44 */ 44 */
45 - private String type; 45 + private Integer type;
46 /** 46 /**
47 * 原因 47 * 原因
48 */ 48 */
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenBuilder.java
@@ -117,8 +117,10 @@ public class CodegenBuilder { @@ -117,8 +117,10 @@ public class CodegenBuilder {
117 table.setBusinessName(toCamelCase(subAfter(tableName, '_', false)).toLowerCase()); 117 table.setBusinessName(toCamelCase(subAfter(tableName, '_', false)).toLowerCase());
118 // 驼峰 + 首字母大写;第一步,第一个 _ 前缀的后面,作为 class 名字;第二步,驼峰命名 118 // 驼峰 + 首字母大写;第一步,第一个 _ 前缀的后面,作为 class 名字;第二步,驼峰命名
119 table.setClassName(upperFirst(toCamelCase(subAfter(tableName, '_', false)))); 119 table.setClassName(upperFirst(toCamelCase(subAfter(tableName, '_', false))));
  120 + // 处理表注释中的特殊字符,避免生成的代码编译错误(先转义,再去掉"表"字)
  121 + String tableComment = sanitizeColumnComment(table.getTableComment());
120 // 去除结尾的表,作为类描述 122 // 去除结尾的表,作为类描述
121 - table.setClassComment(StrUtil.removeSuffixIgnoreCase(table.getTableComment(), "表")); 123 + table.setClassComment(StrUtil.removeSuffixIgnoreCase(tableComment, "表"));
122 table.setTemplateType(CodegenTemplateTypeEnum.ONE.getType()); 124 table.setTemplateType(CodegenTemplateTypeEnum.ONE.getType());
123 } 125 }
124 126
@@ -128,6 +130,8 @@ public class CodegenBuilder { @@ -128,6 +130,8 @@ public class CodegenBuilder {
128 for (CodegenColumnDO column : columns) { 130 for (CodegenColumnDO column : columns) {
129 column.setTableId(tableId); 131 column.setTableId(tableId);
130 column.setOrdinalPosition(index++); 132 column.setOrdinalPosition(index++);
  133 + // 处理字段注释中的特殊字符,避免生成的代码编译错误
  134 + column.setColumnComment(sanitizeColumnComment(column.getColumnComment()));
131 // 特殊处理:Byte => Integer 135 // 特殊处理:Byte => Integer
132 if (Byte.class.getSimpleName().equals(column.getJavaType())) { 136 if (Byte.class.getSimpleName().equals(column.getJavaType())) {
133 column.setJavaType(Integer.class.getSimpleName()); 137 column.setJavaType(Integer.class.getSimpleName());
@@ -216,5 +220,18 @@ public class CodegenBuilder { @@ -216,5 +220,18 @@ public class CodegenBuilder {
216 column.setExample(randomEle(new String[]{"你猜", "随便", "你说的对"})); 220 column.setExample(randomEle(new String[]{"你猜", "随便", "你说的对"}));
217 } 221 }
218 } 222 }
219 - 223 +
  224 + /**
  225 + * 清理字段注释中的特殊字符
  226 + * 将英文引号替换为中文引号,避免生成的代码出现语法错误
  227 + *
  228 + * @param comment 原始字段注释
  229 + * @return 清理后的字段注释
  230 + */
  231 + private String sanitizeColumnComment(String comment) {
  232 + if (StrUtil.isEmpty(comment)) {
  233 + return comment;
  234 + }
  235 + return comment.replace("\"", "\u201c").replace("\"", "\u201d").replace("'", "\u2018").replace("'", "\u2019");
  236 + }
220 } 237 }