Merge branch 'develop'

This commit is contained in:
ray
2024-07-31 07:48:29 +08:00
6 changed files with 96 additions and 39 deletions

View File

@@ -40,7 +40,7 @@ public class GenFieldConfig extends BaseEntity {
/** /**
* 字段长度 * 字段长度
*/ */
private String columnLength; private Integer maxLength;
/** /**
* 字段名称 * 字段名称

View File

@@ -75,6 +75,9 @@ public class GenConfigForm {
@Schema(description = "是否必填") @Schema(description = "是否必填")
private Integer isRequired; private Integer isRequired;
@Schema(description = "最大长度")
private Integer maxLength;
@Schema(description = "表单类型") @Schema(description = "表单类型")
private FormTypeEnum formType; private FormTypeEnum formType;

View File

@@ -140,18 +140,19 @@ public class GeneratorServiceImpl implements GeneratorService {
/** /**
* 创建默认字段配置 * 创建默认字段配置
* *
* @param tableColumn 表字段元数据 * @param columnMetaData 表字段元数据
* @return * @return
*/ */
private GenFieldConfig createDefaultFieldConfig(ColumnMetaData tableColumn) { private GenFieldConfig createDefaultFieldConfig(ColumnMetaData columnMetaData) {
GenFieldConfig fieldConfig = new GenFieldConfig(); GenFieldConfig fieldConfig = new GenFieldConfig();
fieldConfig.setColumnName(tableColumn.getColumnName()); fieldConfig.setColumnName(columnMetaData.getColumnName());
fieldConfig.setColumnType(tableColumn.getDataType()); fieldConfig.setColumnType(columnMetaData.getDataType());
fieldConfig.setFieldComment(tableColumn.getColumnComment()); fieldConfig.setFieldComment(columnMetaData.getColumnComment());
fieldConfig.setFieldName(StrUtil.toCamelCase(tableColumn.getColumnName())); fieldConfig.setFieldName(StrUtil.toCamelCase(columnMetaData.getColumnName()));
fieldConfig.setIsRequired("YES".equals(tableColumn.getIsNullable()) ? 1 : 0); fieldConfig.setIsRequired("YES".equals(columnMetaData.getIsNullable()) ? 1 : 0);
fieldConfig.setFormType(FormTypeEnum.INPUT); fieldConfig.setFormType(FormTypeEnum.INPUT);
fieldConfig.setQueryType(QueryTypeEnum.EQ); fieldConfig.setQueryType(QueryTypeEnum.EQ);
fieldConfig.setMaxLength(columnMetaData.getCharacterMaximumLength());
return fieldConfig; return fieldConfig;
} }
@@ -316,13 +317,27 @@ public class GeneratorServiceImpl implements GeneratorService {
bindMap.put("businessName", genConfig.getBusinessName()); bindMap.put("businessName", genConfig.getBusinessName());
bindMap.put("fieldConfigs", fieldConfigs); bindMap.put("fieldConfigs", fieldConfigs);
boolean hasLocalDateTime = false;
boolean hasBigDecimal = false;
boolean hasRequiredField = false;
for (GenFieldConfig fieldConfig : fieldConfigs) { for (GenFieldConfig fieldConfig : fieldConfigs) {
bindMap.put("hasLocalDateTime", "LocalDateTime".equals(fieldConfig.getFieldType())); if ("LocalDateTime".equals(fieldConfig.getFieldType())) {
bindMap.put("hasBigDecimal", "BigDecimal".equals(fieldConfig.getFieldType())); hasLocalDateTime = true;
bindMap.put("hasRequiredField", ObjectUtil.equals(fieldConfig.getIsRequired(), 1)); }
if ("BigDecimal".equals(fieldConfig.getFieldType())) {
hasBigDecimal = true;
}
if (ObjectUtil.equals(fieldConfig.getIsRequired(), 1)) {
hasRequiredField = true;
}
fieldConfig.setTsType(JavaTypeEnum.getTsTypeByJavaType(fieldConfig.getFieldType())); fieldConfig.setTsType(JavaTypeEnum.getTsTypeByJavaType(fieldConfig.getFieldType()));
} }
bindMap.put("hasLocalDateTime", hasLocalDateTime);
bindMap.put("hasBigDecimal", hasBigDecimal);
bindMap.put("hasRequiredField", hasRequiredField);
TemplateEngine templateEngine = TemplateUtil.createEngine(new TemplateConfig("templates", TemplateConfig.ResourceMode.CLASSPATH)); TemplateEngine templateEngine = TemplateUtil.createEngine(new TemplateConfig("templates", TemplateConfig.ResourceMode.CLASSPATH));
Template template = templateEngine.getTemplate(templateConfig.getTemplatePath()); Template template = templateEngine.getTemplate(templateConfig.getTemplatePath());
String content = template.render(bindMap); String content = template.render(bindMap);

View File

@@ -33,6 +33,9 @@ public class ${entityName}Form implements Serializable {
#if($fieldConfigs) #if($fieldConfigs)
#foreach($fieldConfig in ${fieldConfigs}) #foreach($fieldConfig in ${fieldConfigs})
#if($fieldConfig.isShowInForm) #if($fieldConfig.isShowInForm)
#if("$!fieldConfig.fieldComment" != "")
@Schema(description = "${fieldConfig.fieldComment}")
#end
#if($fieldConfig.isRequired) #if($fieldConfig.isRequired)
#if($fieldConfig.fieldType == 'String') #if($fieldConfig.fieldType == 'String')
@NotBlank(message = "$fieldConfig.fieldComment不能为空") @NotBlank(message = "$fieldConfig.fieldComment不能为空")
@@ -40,10 +43,11 @@ public class ${entityName}Form implements Serializable {
@NotNull(message = "$fieldConfig.fieldComment不能为空") @NotNull(message = "$fieldConfig.fieldComment不能为空")
#end #end
#end #end
#if("$!fieldConfig.fieldComment" != "") #if($fieldConfig.maxLength)
@Schema(description = "${fieldConfig.fieldComment}") @Size(max=$fieldConfig.maxLength, message="$fieldConfig.fieldComment长度不能超过${fieldConfig.maxLength}个字符")
#end #end
private ${fieldConfig.fieldType} ${fieldConfig.fieldName}; private ${fieldConfig.fieldType} ${fieldConfig.fieldName};
#end #end
#end #end
#end #end

View File

@@ -157,9 +157,6 @@
const queryParams = reactive<${entityName}PageQuery>({ const queryParams = reactive<${entityName}PageQuery>({
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
keywords: '',
name: '',
code: '',
}); });
// $!{businessName}表格数据 // $!{businessName}表格数据
@@ -170,16 +167,19 @@
title: "", title: "",
visible: false, visible: false,
}); });
// $!{businessName}表单
const formData = reactive<${entityName}Form>({
keywords: '',
name: '',
code: '',
});
// $!{businessName}表单数据
const formData = reactive<${entityName}Form>({});
// $!{businessName}表单校验规则
const rules = reactive({ const rules = reactive({
name: [{ required: true, message: "请输入$!{businessName}名称", trigger: "blur" }], #if($fieldConfigs)
code: [{ required: true, message: "请输入$!{businessName}编码", trigger: "blur" }], #foreach($fieldConfig in ${fieldConfigs})
#if($fieldConfig.isShowInForm && $fieldConfig.isRequired)
${fieldConfig.fieldName}: [{ required: true, message: "请输入${fieldConfig.fieldComment}", trigger: "blur" }],
#end
#end
#end
}); });
/** 查询$!{businessName} */ /** 查询$!{businessName} */
@@ -194,6 +194,7 @@
loading.value = false; loading.value = false;
}); });
} }
/** 重置$!{businessName}查询 */ /** 重置$!{businessName}查询 */
function handleResetQuery() { function handleResetQuery() {
queryFormRef.value!.resetFields(); queryFormRef.value!.resetFields();

View File

@@ -5,25 +5,59 @@
<!-- 获取${businessName}分页列表 --> <!-- 获取${businessName}分页列表 -->
<select id="get${entityName}Page" resultType="${package}.model.vo.${entityName}VO"> <select id="get${entityName}Page" resultType="${package}.model.vo.${entityName}VO">
SELECT SELECT
* #if($fieldConfigs)
#set ($fields = [])
#foreach($fieldConfig in ${fieldConfigs})
#if($fieldConfig.isShowInList)
#set ($discard = $fields.add(${fieldConfig.columnName}))
#end
#end
#foreach($field in $fields)
${field}#if($foreach.hasNext),#end
#end
#end
FROM FROM
${tableName} ${tableName}
<where> <where>
is_deleted = 0 #if($fieldConfigs)
<if test='queryParams.keywords!=null and queryParams.keywords.trim() neq ""'> #foreach($fieldConfig in ${fieldConfigs})
AND ( #if($fieldConfig.isShowInQuery)
name LIKE CONCAT('%',#{queryParams.keywords},'%') <if test="queryParams.${fieldConfig.fieldName} != null">
) #set ($queryType = ${fieldConfig.queryType})
#if($queryType == "EQ")
AND ${fieldConfig.columnName} = #{queryParams.${fieldConfig.fieldName}}
#elseif($queryType == "LIKE")
AND ${fieldConfig.columnName} LIKE CONCAT('%', #{queryParams.${fieldConfig.fieldName}}, '%')
#elseif($queryType == "IN")
<if test="queryParams.${fieldConfig.fieldName}.size() > 0">
AND ${fieldConfig.columnName} IN <foreach collection="queryParams.${fieldConfig.fieldName}" item="item" open="(" close=")" separator=",">#{item}</foreach>
</if> </if>
<if test="queryParams.startTime != null"> #elseif($queryType == "BETWEEN")
AND create_time &gt;= #{queryParams.startTime} #if(${fieldConfig.fieldType} == "LocalDateTime")
</if> AND ${fieldConfig.columnName} BETWEEN STR_TO_DATE(#{queryParams.${fieldConfig.fieldName}Start}, '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE(#{queryParams.${fieldConfig.fieldName}End}, '%Y-%m-%d %H:%i:%s')
<if test="queryParams.endTime != null"> #else
AND create_time &lt;= #{queryParams.endTime} AND ${fieldConfig.columnName} BETWEEN #{queryParams.${fieldConfig.fieldName}Start} AND #{queryParams.${fieldConfig.fieldName}End}
#end
#elseif($queryType == "GT")
AND ${fieldConfig.columnName} > #{queryParams.${fieldConfig.fieldName}}
#elseif($queryType == "GE")
AND ${fieldConfig.columnName} >= #{queryParams.${fieldConfig.fieldName}}
#elseif($queryType == "LT")
AND ${fieldConfig.columnName} &lt; #{queryParams.${fieldConfig.fieldName}}
#elseif($queryType == "LE")
AND ${fieldConfig.columnName} &lt;= #{queryParams.${fieldConfig.fieldName}}
#elseif($queryType == "NE")
AND ${fieldConfig.columnName} != #{queryParams.${fieldConfig.fieldName}}
#elseif($queryType == "LIKE_LEFT")
AND ${fieldConfig.columnName} LIKE CONCAT('%', #{queryParams.${fieldConfig.fieldName}})
#elseif($queryType == "LIKE_RIGHT")
AND ${fieldConfig.columnName} LIKE CONCAT(#{queryParams.${fieldConfig.fieldName}}, '%')
#end
</if> </if>
#end
#end
#end
</where> </where>
ORDER BY
create_time DESC
</select> </select>
</mapper> </mapper>