From 915a3934275801b9ec1f7b74e52e28c85ebe7630 Mon Sep 17 00:00:00 2001 From: l90215 Date: Thu, 24 Jul 2025 12:36:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD-=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=8F=96=E6=95=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/generator/domain/SchemaField.java | 5 ++ .../generator/domain/bo/SchemaFieldBo.java | 6 ++ .../generator/domain/vo/SchemaFieldVo.java | 5 ++ .../generator/service/SchemaFieldService.java | 7 ++- .../service/impl/SchemaFieldServiceImpl.java | 61 ++++++++++++------- 5 files changed, 60 insertions(+), 24 deletions(-) diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/SchemaField.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/SchemaField.java index ac537baf..c683a92a 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/SchemaField.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/SchemaField.java @@ -34,6 +34,11 @@ public class SchemaField extends BaseEntity { */ private Long schemaId; + /** + * 模型名称 + */ + private String schemaName; + /** * 字段名称 */ diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/bo/SchemaFieldBo.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/bo/SchemaFieldBo.java index 942be612..491d8d2d 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/bo/SchemaFieldBo.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/bo/SchemaFieldBo.java @@ -33,6 +33,12 @@ public class SchemaFieldBo extends BaseEntity { @NotNull(message = "模型ID不能为空", groups = {AddGroup.class, EditGroup.class}) private Long schemaId; + /** + * 模型名称 + */ + @NotNull(message = "模型名称不能为空", groups = {AddGroup.class, EditGroup.class}) + private String schemaName; + /** * 字段名称 */ diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/vo/SchemaFieldVo.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/vo/SchemaFieldVo.java index 1de9e5be..7897d87b 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/vo/SchemaFieldVo.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/domain/vo/SchemaFieldVo.java @@ -33,6 +33,11 @@ public class SchemaFieldVo implements Serializable { */ private Long schemaId; + /** + * 模型名称 + */ + private String schemaName; + /** * 字段名称 */ diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/service/SchemaFieldService.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/service/SchemaFieldService.java index 86ce68ee..1714ee50 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/service/SchemaFieldService.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/service/SchemaFieldService.java @@ -57,9 +57,10 @@ public interface SchemaFieldService { Object getMetaDataByTableName(String tableName); /** - * @param schemaId - * @param tableName - * @return + * 根据表名批量插入字段 + * + * @param schemaId 模型ID + * @param tableName 表名 */ boolean batchInsertFieldsByTableName(Long schemaId, String tableName); } \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/service/impl/SchemaFieldServiceImpl.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/service/impl/SchemaFieldServiceImpl.java index f663009f..df085fd4 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/service/impl/SchemaFieldServiceImpl.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/service/impl/SchemaFieldServiceImpl.java @@ -180,6 +180,7 @@ public class SchemaFieldServiceImpl implements SchemaFieldService { result.put("tableName", schema.getTableName()); result.put("tableComment", schema.getComment()); result.put("className", toCamelCase(schema.getTableName(), true)); + // result.put("className", StrUtil.toCamelCase(schema.getTableName())); result.put("tableCamelName", StrUtil.toCamelCase(schema.getTableName())); result.put("functionName", schema.getName()); result.put("schemaName", schema.getName()); @@ -194,7 +195,7 @@ public class SchemaFieldServiceImpl implements SchemaFieldService { Map pkColumn = new HashMap<>(); pkColumn.put("columnName", pkField.getCode()); pkColumn.put("columnComment", pkField.getName()); - pkColumn.put("javaField", toCamelCase(pkField.getCode(), false)); + pkColumn.put("javaField", StrUtil.toCamelCase(pkField.getCode())); pkColumn.put("javaType", getJavaType(pkField.getType())); result.put("pkColumn", pkColumn); } @@ -205,16 +206,17 @@ public class SchemaFieldServiceImpl implements SchemaFieldService { Map column = new HashMap<>(); column.put("columnName", field.getCode()); column.put("columnComment", field.getName()); - column.put("javaField", toCamelCase(field.getCode(), false)); + column.put("javaField", StrUtil.toCamelCase(field.getCode())); column.put("javaType", getJavaType(field.getType())); column.put("htmlType", field.getHtmlType()); - column.put("isPk", "1".equals(field.getIsPk())); - column.put("isRequired", "1".equals(field.getIsRequired())); - column.put("isInsert", "1".equals(field.getIsInsert())); - column.put("isEdit", "1".equals(field.getIsEdit())); - column.put("isList", "1".equals(field.getIsList())); - column.put("isQuery", "1".equals(field.getIsQuery())); - column.put("component", getComponentType(field.getHtmlType())); + column.put("isPk", field.getIsPk()); + column.put("isRequired", field.getIsRequired()); + column.put("isInsert", field.getIsInsert()); + column.put("isEdit", field.getIsEdit()); + column.put("isList", field.getIsList()); + column.put("isQuery", field.getIsQuery()); + column.put("component", getComponentType(field.getHtmlType(), field.getQueryType())); + column.put("queryType", field.getQueryType()); column.put("remark", field.getRemark()); columns.add(column); } @@ -231,8 +233,11 @@ public class SchemaFieldServiceImpl implements SchemaFieldService { if (CollUtil.isEmpty(columnInfos)) { return false; } + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SchemaField::getSchemaName, tableName); + lqw.eq(SchemaField::getStatus, "0"); // 检查是否已存在字段数据 - List existingFields = queryListBySchemaId(schemaId); + List existingFields = baseMapper.selectVoList(lqw); if (CollUtil.isNotEmpty(existingFields)) { // 如果已存在字段,则不重复插入 return true; @@ -243,8 +248,9 @@ public class SchemaFieldServiceImpl implements SchemaFieldService { for (Map columnInfo : columnInfos) { SchemaField field = new SchemaField(); field.setSchemaId(schemaId); + field.setSchemaName(tableName); field.setName((String) columnInfo.get("columnComment")); - field.setCode((String) columnInfo.get("columnName")); + field.setCode(StrUtil.toCamelCase((String) columnInfo.get("columnName"))); field.setType((String) columnInfo.get("dataType")); field.setLength(Integer.valueOf(String.valueOf(columnInfo.get("columnSize")))); field.setIsPk((Boolean) columnInfo.get("isPrimaryKey") ? "1" : "0"); @@ -283,8 +289,12 @@ public class SchemaFieldServiceImpl implements SchemaFieldService { String type = dbType.toLowerCase(); if (type.contains("text") || type.contains("longtext")) { return "textarea"; - } else if (type.contains("date") || type.contains("time")) { + } else if ("datetime".equals(type) || "timestamp".equals(type)) { return "datetime"; + } else if ("date".equals(type)) { + return "date"; + } else if ("time".equals(type)) { + return "time"; } else if (type.contains("bit") || type.contains("boolean")) { return "radio"; } else { @@ -341,19 +351,28 @@ public class SchemaFieldServiceImpl implements SchemaFieldService { /** * 获取组件类型 */ - private String getComponentType(String htmlType) { + private String getComponentType(String htmlType, String queryType) { if (StringUtils.isBlank(htmlType)) { - return "input"; + return "Input"; + } + + // 如果是范围查询且为日期时间类型,使用 RangePicker + if ("BETWEEN".equals(queryType) && + ("datetime".equals(htmlType) || "date".equals(htmlType) || "time".equals(htmlType))) { + return "RangePicker"; } return switch (htmlType) { - case "textarea" -> "textarea"; - case "select" -> "select"; - case "radio" -> "radio"; - case "checkbox" -> "checkbox"; - case "datetime" -> "datetime"; - case "date" -> "date"; - default -> "input"; + case "textarea" -> "Textarea"; + case "select" -> "Select"; + case "radio" -> "RadioGroup"; + case "checkbox" -> "CheckboxGroup"; + case "datetime", "date" -> "DatePicker"; + case "time" -> "TimePicker"; + case "imageUpload" -> "ImageUpload"; + case "fileUpload" -> "FileUpload"; + case "editor" -> "Editor"; + default -> "Input"; }; }