feat: 更新代码生成功能-优化取数逻辑

This commit is contained in:
l90215
2025-07-24 12:36:26 +08:00
parent de323d8c45
commit 915a393427
5 changed files with 60 additions and 24 deletions

View File

@@ -34,6 +34,11 @@ public class SchemaField extends BaseEntity {
*/ */
private Long schemaId; private Long schemaId;
/**
* 模型名称
*/
private String schemaName;
/** /**
* 字段名称 * 字段名称
*/ */

View File

@@ -33,6 +33,12 @@ public class SchemaFieldBo extends BaseEntity {
@NotNull(message = "模型ID不能为空", groups = {AddGroup.class, EditGroup.class}) @NotNull(message = "模型ID不能为空", groups = {AddGroup.class, EditGroup.class})
private Long schemaId; private Long schemaId;
/**
* 模型名称
*/
@NotNull(message = "模型名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String schemaName;
/** /**
* 字段名称 * 字段名称
*/ */

View File

@@ -33,6 +33,11 @@ public class SchemaFieldVo implements Serializable {
*/ */
private Long schemaId; private Long schemaId;
/**
* 模型名称
*/
private String schemaName;
/** /**
* 字段名称 * 字段名称
*/ */

View File

@@ -57,9 +57,10 @@ public interface SchemaFieldService {
Object getMetaDataByTableName(String tableName); Object getMetaDataByTableName(String tableName);
/** /**
* @param schemaId * 根据表名批量插入字段
* @param tableName *
* @return * @param schemaId 模型ID
* @param tableName 表名
*/ */
boolean batchInsertFieldsByTableName(Long schemaId, String tableName); boolean batchInsertFieldsByTableName(Long schemaId, String tableName);
} }

View File

@@ -180,6 +180,7 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
result.put("tableName", schema.getTableName()); result.put("tableName", schema.getTableName());
result.put("tableComment", schema.getComment()); result.put("tableComment", schema.getComment());
result.put("className", toCamelCase(schema.getTableName(), true)); result.put("className", toCamelCase(schema.getTableName(), true));
// result.put("className", StrUtil.toCamelCase(schema.getTableName()));
result.put("tableCamelName", StrUtil.toCamelCase(schema.getTableName())); result.put("tableCamelName", StrUtil.toCamelCase(schema.getTableName()));
result.put("functionName", schema.getName()); result.put("functionName", schema.getName());
result.put("schemaName", schema.getName()); result.put("schemaName", schema.getName());
@@ -194,7 +195,7 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
Map<String, Object> pkColumn = new HashMap<>(); Map<String, Object> pkColumn = new HashMap<>();
pkColumn.put("columnName", pkField.getCode()); pkColumn.put("columnName", pkField.getCode());
pkColumn.put("columnComment", pkField.getName()); 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())); pkColumn.put("javaType", getJavaType(pkField.getType()));
result.put("pkColumn", pkColumn); result.put("pkColumn", pkColumn);
} }
@@ -205,16 +206,17 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
Map<String, Object> column = new HashMap<>(); Map<String, Object> column = new HashMap<>();
column.put("columnName", field.getCode()); column.put("columnName", field.getCode());
column.put("columnComment", field.getName()); 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("javaType", getJavaType(field.getType()));
column.put("htmlType", field.getHtmlType()); column.put("htmlType", field.getHtmlType());
column.put("isPk", "1".equals(field.getIsPk())); column.put("isPk", field.getIsPk());
column.put("isRequired", "1".equals(field.getIsRequired())); column.put("isRequired", field.getIsRequired());
column.put("isInsert", "1".equals(field.getIsInsert())); column.put("isInsert", field.getIsInsert());
column.put("isEdit", "1".equals(field.getIsEdit())); column.put("isEdit", field.getIsEdit());
column.put("isList", "1".equals(field.getIsList())); column.put("isList", field.getIsList());
column.put("isQuery", "1".equals(field.getIsQuery())); column.put("isQuery", field.getIsQuery());
column.put("component", getComponentType(field.getHtmlType())); column.put("component", getComponentType(field.getHtmlType(), field.getQueryType()));
column.put("queryType", field.getQueryType());
column.put("remark", field.getRemark()); column.put("remark", field.getRemark());
columns.add(column); columns.add(column);
} }
@@ -231,8 +233,11 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
if (CollUtil.isEmpty(columnInfos)) { if (CollUtil.isEmpty(columnInfos)) {
return false; return false;
} }
LambdaQueryWrapper<SchemaField> lqw = Wrappers.lambdaQuery();
lqw.eq(SchemaField::getSchemaName, tableName);
lqw.eq(SchemaField::getStatus, "0");
// 检查是否已存在字段数据 // 检查是否已存在字段数据
List<SchemaFieldVo> existingFields = queryListBySchemaId(schemaId); List<SchemaFieldVo> existingFields = baseMapper.selectVoList(lqw);
if (CollUtil.isNotEmpty(existingFields)) { if (CollUtil.isNotEmpty(existingFields)) {
// 如果已存在字段,则不重复插入 // 如果已存在字段,则不重复插入
return true; return true;
@@ -243,8 +248,9 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
for (Map<String, Object> columnInfo : columnInfos) { for (Map<String, Object> columnInfo : columnInfos) {
SchemaField field = new SchemaField(); SchemaField field = new SchemaField();
field.setSchemaId(schemaId); field.setSchemaId(schemaId);
field.setSchemaName(tableName);
field.setName((String) columnInfo.get("columnComment")); 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.setType((String) columnInfo.get("dataType"));
field.setLength(Integer.valueOf(String.valueOf(columnInfo.get("columnSize")))); field.setLength(Integer.valueOf(String.valueOf(columnInfo.get("columnSize"))));
field.setIsPk((Boolean) columnInfo.get("isPrimaryKey") ? "1" : "0"); field.setIsPk((Boolean) columnInfo.get("isPrimaryKey") ? "1" : "0");
@@ -283,8 +289,12 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
String type = dbType.toLowerCase(); String type = dbType.toLowerCase();
if (type.contains("text") || type.contains("longtext")) { if (type.contains("text") || type.contains("longtext")) {
return "textarea"; return "textarea";
} else if (type.contains("date") || type.contains("time")) { } else if ("datetime".equals(type) || "timestamp".equals(type)) {
return "datetime"; return "datetime";
} else if ("date".equals(type)) {
return "date";
} else if ("time".equals(type)) {
return "time";
} else if (type.contains("bit") || type.contains("boolean")) { } else if (type.contains("bit") || type.contains("boolean")) {
return "radio"; return "radio";
} else { } 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)) { 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) { return switch (htmlType) {
case "textarea" -> "textarea"; case "textarea" -> "Textarea";
case "select" -> "select"; case "select" -> "Select";
case "radio" -> "radio"; case "radio" -> "RadioGroup";
case "checkbox" -> "checkbox"; case "checkbox" -> "CheckboxGroup";
case "datetime" -> "datetime"; case "datetime", "date" -> "DatePicker";
case "date" -> "date"; case "time" -> "TimePicker";
default -> "input"; case "imageUpload" -> "ImageUpload";
case "fileUpload" -> "FileUpload";
case "editor" -> "Editor";
default -> "Input";
}; };
} }