feat: 新增代码字段拖动排序

新增代码字段拖动排序功能
优化代码生成前端vue页面的部分内容
This commit is contained in:
Theo
2024-08-01 00:00:00 +08:00
parent d1c93e39cf
commit e6598df288
5 changed files with 30 additions and 16 deletions

View File

@@ -48,6 +48,11 @@ public class GenFieldConfig extends BaseEntity {
*/
private String fieldName;
/**
* 字段排序
*/
private Integer fieldSort;
/**
* 字段类型
*/

View File

@@ -57,6 +57,9 @@ public class GenConfigForm {
@Schema(description = "字段名")
private String fieldName;
@Schema(description = "字段排序")
private Integer fieldSort;
@Schema(description = "字段类型")
private String fieldType;

View File

@@ -35,6 +35,7 @@ import org.springframework.stereotype.Service;
import java.io.File;
import java.util.*;
import java.util.stream.Collectors;
/**
* 数据库服务实现类
@@ -112,9 +113,11 @@ public class GeneratorServiceImpl implements GeneratorService {
if (CollectionUtil.isNotEmpty(tableColumns)) {
// 查询字段生成配置
List<GenFieldConfig> fieldConfigList = genFieldConfigService.list(
new LambdaQueryWrapper<>(GenFieldConfig.class)
new LambdaQueryWrapper<GenFieldConfig>()
.eq(GenFieldConfig::getConfigId, genConfig.getId())
.orderByAsc(GenFieldConfig::getFieldSort)
);
Integer maxSort = fieldConfigList.stream().map(GenFieldConfig::getFieldSort).max(Integer::compareTo).orElseGet(() -> 0);
for (ColumnMetaData tableColumn : tableColumns) {
// 根据列名获取字段生成配置
String columnName = tableColumn.getColumnName();
@@ -122,7 +125,9 @@ public class GeneratorServiceImpl implements GeneratorService {
.filter(item -> StrUtil.equals(item.getColumnName(), columnName))
.findFirst()
.orElseGet(() -> createDefaultFieldConfig(tableColumn));
if (genFieldConfig.getFieldSort() == null){
genFieldConfig.setFieldSort(++maxSort);
}
// 根据列类型设置字段类型
String fieldType = genFieldConfig.getFieldType();
if (StrUtil.isBlank(fieldType)) {
@@ -132,8 +137,9 @@ public class GeneratorServiceImpl implements GeneratorService {
genFieldConfigs.add(genFieldConfig);
}
}
GenConfigForm configFormData = genConfigConverter.toGenConfigForm(genConfig, genFieldConfigs);
return configFormData;
//对genFieldConfigs按照fieldSort排序
genFieldConfigs = genFieldConfigs.stream().sorted(Comparator.comparing(GenFieldConfig::getFieldSort)).collect(Collectors.toList());
return genConfigConverter.toGenConfigForm(genConfig, genFieldConfigs);
}
@@ -218,6 +224,8 @@ public class GeneratorServiceImpl implements GeneratorService {
List<GenFieldConfig> fieldConfigs = genFieldConfigService.list(new LambdaQueryWrapper<GenFieldConfig>()
.eq(GenFieldConfig::getConfigId, genConfig.getId())
.orderByAsc(GenFieldConfig::getFieldSort)
);
Assert.isTrue(CollectionUtil.isNotEmpty(fieldConfigs), "未找到字段生成配置");

View File

@@ -1,13 +1,11 @@
package com.youlai.system.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.RedisKeyConstants;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.converter.SysConfigConverter;
import com.youlai.system.model.form.ConfigForm;
import com.youlai.system.model.query.ConfigPageQuery;
@@ -53,10 +51,10 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
Page<SysConfig> page = new Page<>(configPageQuery.getPageNum(), configPageQuery.getPageSize());
String keywords = configPageQuery.getKeywords();
LambdaQueryWrapper<SysConfig> query = new LambdaQueryWrapper<SysConfig>()
.and(StrUtil.isNotBlank(keywords),
q -> q.like(StrUtil.isNotBlank(keywords), SysConfig::getConfigKey, keywords)
.and(StringUtils.isNotBlank(keywords),
q -> q.like(SysConfig::getConfigKey, keywords)
.or()
.like(StrUtil.isNotBlank(keywords), SysConfig::getConfigName, keywords)
.like(SysConfig::getConfigName, keywords)
);
Page<SysConfig> pageList = this.page(page, query);
return sysConfigConverter.convertToPageVo(pageList);
@@ -104,7 +102,7 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
"配置键已存在");
SysConfig sysConfig = sysConfigConverter.toEntity(configForm);
sysConfig.setUpdateBy(SecurityUtils.getUserId());
return this.update(sysConfig, new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getId,id));
return this.updateById(sysConfig);
}
/**

View File

@@ -11,7 +11,7 @@
#if($fieldConfig.dictType != "")
<dictionary v-model="formData.$fieldConfig.fieldName" code="$fieldConfig.dictType" />
#else
<el-select v-model="formData.$fieldConfig.fieldName" placeholder="'请选择$fieldConfig.fieldComment">
<el-select v-model="formData.$fieldConfig.fieldName" placeholder="请选择$fieldConfig.fieldComment">
<el-option :key="1" :value="1" label="下拉项1"/>
<el-option :key="2" :value="2" label="下拉项2"/>
<el-option :key="3" :value="3" label="下拉项3"/>
@@ -26,15 +26,15 @@
<el-checkbox v-for="option in $fieldConfig.options" :key="option.value" :label="option.value">{{ option.label }}</el-checkbox>
</el-checkbox-group>
#elseif($fieldConfig.formType == "INPUT_NUMBER")
<el-input-number v-model="queryParams.$fieldConfig.fieldName" :placeholder="$fieldConfig.fieldComment" />
<el-input-number v-model="queryParams.$fieldConfig.fieldName" placeholder="$fieldConfig.fieldComment" />
#elseif($fieldConfig.formType == "SWITCH")
<el-switch v-model="queryParams.$fieldConfig.fieldName" />
#elseif($fieldConfig.formType == "TEXT_AREA")
<el-input type="textarea" v-model="queryParams.$fieldConfig.fieldName" :placeholder="$fieldConfig.fieldComment" />
<el-input type="textarea" v-model="queryParams.$fieldConfig.fieldName" placeholder="$fieldConfig.fieldComment" />
#elseif($fieldConfig.formType == "DATE_TIME")
<el-date-picker v-model="queryParams.$fieldConfig.fieldName" type="datetime" :placeholder="$fieldConfig.fieldComment" />
<el-date-picker v-model="queryParams.$fieldConfig.fieldName" type="datetime" placeholder="$fieldConfig.fieldComment" />
#elseif($fieldConfig.formType == "DATE")
<el-date-picker v-model="queryParams.$fieldConfig.fieldName" type="date" :placeholder="$fieldConfig.fieldComment" />
<el-date-picker v-model="queryParams.$fieldConfig.fieldName" type="date" placeholder="$fieldConfig.fieldComment" />
#end
</el-form-item>
#end