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 String schemaName;
/**
* 字段名称
*/

View File

@@ -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;
/**
* 字段名称
*/

View File

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

View File

@@ -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);
}

View File

@@ -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<String, Object> 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<String, Object> 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<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)) {
// 如果已存在字段,则不重复插入
return true;
@@ -243,8 +248,9 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
for (Map<String, Object> 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";
};
}