Merge branch 'master' of gitee.com:youlaiorg/youlai-boot

This commit is contained in:
ray
2024-08-01 00:28:32 +08:00
5 changed files with 30 additions and 16 deletions

View File

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

View File

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

View File

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

View File

@@ -1,13 +1,11 @@
package com.youlai.system.service.impl; 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.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.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.RedisKeyConstants; import com.youlai.system.common.constant.RedisKeyConstants;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.converter.SysConfigConverter; import com.youlai.system.converter.SysConfigConverter;
import com.youlai.system.model.form.ConfigForm; import com.youlai.system.model.form.ConfigForm;
import com.youlai.system.model.query.ConfigPageQuery; 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()); Page<SysConfig> page = new Page<>(configPageQuery.getPageNum(), configPageQuery.getPageSize());
String keywords = configPageQuery.getKeywords(); String keywords = configPageQuery.getKeywords();
LambdaQueryWrapper<SysConfig> query = new LambdaQueryWrapper<SysConfig>() LambdaQueryWrapper<SysConfig> query = new LambdaQueryWrapper<SysConfig>()
.and(StrUtil.isNotBlank(keywords), .and(StringUtils.isNotBlank(keywords),
q -> q.like(StrUtil.isNotBlank(keywords), SysConfig::getConfigKey, keywords) q -> q.like(SysConfig::getConfigKey, keywords)
.or() .or()
.like(StrUtil.isNotBlank(keywords), SysConfig::getConfigName, keywords) .like(SysConfig::getConfigName, keywords)
); );
Page<SysConfig> pageList = this.page(page, query); Page<SysConfig> pageList = this.page(page, query);
return sysConfigConverter.convertToPageVo(pageList); return sysConfigConverter.convertToPageVo(pageList);
@@ -104,7 +102,7 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
"配置键已存在"); "配置键已存在");
SysConfig sysConfig = sysConfigConverter.toEntity(configForm); SysConfig sysConfig = sysConfigConverter.toEntity(configForm);
sysConfig.setUpdateBy(SecurityUtils.getUserId()); 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 != "") #if($fieldConfig.dictType != "")
<dictionary v-model="formData.$fieldConfig.fieldName" code="$fieldConfig.dictType" /> <dictionary v-model="formData.$fieldConfig.fieldName" code="$fieldConfig.dictType" />
#else #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="1" :value="1" label="下拉项1"/>
<el-option :key="2" :value="2" label="下拉项2"/> <el-option :key="2" :value="2" label="下拉项2"/>
<el-option :key="3" :value="3" label="下拉项3"/> <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 v-for="option in $fieldConfig.options" :key="option.value" :label="option.value">{{ option.label }}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
#elseif($fieldConfig.formType == "INPUT_NUMBER") #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") #elseif($fieldConfig.formType == "SWITCH")
<el-switch v-model="queryParams.$fieldConfig.fieldName" /> <el-switch v-model="queryParams.$fieldConfig.fieldName" />
#elseif($fieldConfig.formType == "TEXT_AREA") #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") #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") #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 #end
</el-form-item> </el-form-item>
#end #end