feat: 优化删除数据模型也删除模型字段&添加mapper文件注解

This commit is contained in:
l90215
2025-08-05 19:50:29 +08:00
parent d94bcf250e
commit ab9ff52200
45 changed files with 161 additions and 12 deletions

View File

@@ -0,0 +1,22 @@
package org.ruoyi.generator.event;
import lombok.Getter;
import org.springframework.context.ApplicationEvent;
import java.util.Collection;
/**
* 数据模型添加事件
*
* @author ruoyi
*/
@Getter
public class SchemaDeletedEvent extends ApplicationEvent {
private final Collection<Long> schemaIds;
public SchemaDeletedEvent(Object source, Collection<Long> schemaIds) {
super(source);
this.schemaIds = schemaIds;
}
}

View File

@@ -7,6 +7,8 @@ import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Collection;
/**
* 数据模型事件监听器
*
@@ -28,15 +30,36 @@ public class SchemaEventListener {
try {
Long schemaId = event.getSchemaId();
String tableName = event.getTableName();
log.info("开始为数据模型 {} 自动插入字段数据,表名: {}", schemaId, tableName);
log.info("开始为数据模型字段 {} 自动插入字段数据,表名: {}", schemaId, tableName);
boolean success = schemaFieldService.batchInsertFieldsByTableName(schemaId, tableName);
if (success) {
log.info("数据模型 {} 字段数据插入成功", schemaId);
log.info("数据模型字段 {} 字段数据插入成功", schemaId);
} else {
log.warn("数据模型 {} 字段数据插入失败", schemaId);
log.warn("数据模型字段 {} 字段数据插入失败", schemaId);
}
} catch (Exception e) {
log.error("自动插入字段数据失败: {}", e.getMessage(), e);
}
}
/**
* 监听数据模型添加事件,自动插入字段数据
*/
@Async
@EventListener
public void handleSchemaDeletedEvent(SchemaDeletedEvent event) {
try {
Collection<Long> schemaIds = event.getSchemaIds();
log.info("开始为数据模型字段 {} 自动删除字段数据", schemaIds);
boolean success = schemaFieldService.deleteWithValidBySchemaIds(schemaIds, true);
if (success) {
log.info("数据模型字段 {} 字段数据删除成功", schemaIds);
} else {
log.warn("数据模型字段 {} 字段数据删除失败", schemaIds);
}
} catch (Exception e) {
log.error("自动删除字段数据失败: {}", e.getMessage(), e);
}
}
}

View File

@@ -1,8 +1,8 @@
package org.ruoyi.generator.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.velocity.Template;
@@ -10,11 +10,11 @@ import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.ruoyi.common.core.constant.Constants;
import org.ruoyi.generator.config.GenConfig;
import org.ruoyi.generator.domain.vo.SchemaFieldVo;
import org.ruoyi.generator.domain.vo.SchemaVo;
import org.ruoyi.generator.service.IGenTableService;
import org.ruoyi.generator.service.SchemaFieldService;
import org.ruoyi.generator.service.SchemaService;
import org.ruoyi.generator.domain.vo.SchemaFieldVo;
import org.ruoyi.generator.domain.vo.SchemaVo;
import org.ruoyi.generator.util.VelocityInitializer;
import org.ruoyi.generator.util.VelocityUtils;
import org.springframework.stereotype.Service;
@@ -42,7 +42,6 @@ import java.util.Set;
@Service
public class GenTableServiceImpl implements IGenTableService {
private final IdentifierGenerator identifierGenerator;
private final SchemaService schemaService;
private final SchemaFieldService schemaFieldService;
@@ -177,7 +176,7 @@ public class GenTableServiceImpl implements IGenTableService {
// 生成菜单ID
List<Long> menuIds = new ArrayList<>();
for (int i = 0; i < 6; i++) {
menuIds.add(identifierGenerator.nextId(null).longValue());
menuIds.add(IdUtil.getSnowflakeNextId());
}
context.put("menuIds", menuIds);

View File

@@ -28,6 +28,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 数据模型字段Service业务层处理
@@ -168,6 +169,21 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
return queryListBySchemaId(schema.getId());
}
@Override
public Boolean deleteWithValidBySchemaIds(Collection<Long> schemaIds, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
// 先根据Schema ID查询字段列表
List<SchemaField> fields = baseMapper.selectList(Wrappers.lambdaQuery(SchemaField.class)
.eq(SchemaField::getSchemaId, schemaIds));
if (CollUtil.isEmpty(fields)) {
return false;
}
// 再根据字段ID删除
return deleteWithValidByIds(fields.stream().map(SchemaField::getId).collect(Collectors.toList()), false);
}
/**
* 根据表名获取代码生成元数据
*/
@@ -371,8 +387,8 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
}
// 如果是范围查询且为日期时间类型,使用 RangePicker
if ("BETWEEN".equals(queryType) &&
("datetime".equals(htmlType) || "date".equals(htmlType) || "time".equals(htmlType))) {
if ("BETWEEN".equals(queryType) &&
("datetime".equals(htmlType) || "date".equals(htmlType) || "time".equals(htmlType))) {
return "RangePicker";
}

View File

@@ -8,6 +8,7 @@ import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
import org.ruoyi.core.page.PageQuery;
import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.generator.event.SchemaDeletedEvent;
import org.ruoyi.generator.service.SchemaService;
import org.ruoyi.generator.domain.Schema;
import org.ruoyi.generator.domain.bo.SchemaBo;
@@ -114,7 +115,9 @@ public class SchemaServiceImpl implements SchemaService {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
baseMapper.deleteBatchIds(ids);
eventPublisher.publishEvent(new SchemaDeletedEvent(this, ids));
return true;
}
/**

View File

@@ -1,6 +1,7 @@
package org.ruoyi.generator.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.generator.domain.SchemaField;
import org.ruoyi.generator.domain.vo.SchemaFieldVo;
@@ -11,6 +12,7 @@ import org.ruoyi.generator.domain.vo.SchemaFieldVo;
* @author ruoyi
* @date 2024-01-01
*/
@Mapper
public interface SchemaFieldMapper extends BaseMapperPlus<SchemaField, SchemaFieldVo> {
}

View File

@@ -1,5 +1,6 @@
package org.ruoyi.generator.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.generator.domain.SchemaGroup;
import org.ruoyi.generator.domain.vo.SchemaGroupVo;
@@ -10,6 +11,7 @@ import org.ruoyi.generator.domain.vo.SchemaGroupVo;
* @author ruoyi
* @date 2024-01-01
*/
@Mapper
public interface SchemaGroupMapper extends BaseMapperPlus<SchemaGroup, SchemaGroupVo> {
}

View File

@@ -1,6 +1,7 @@
package org.ruoyi.generator.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.generator.domain.Schema;
import org.ruoyi.generator.domain.vo.SchemaVo;
@@ -11,6 +12,7 @@ import org.ruoyi.generator.domain.vo.SchemaVo;
* @author ruoyi
* @date 2024-01-01
*/
@Mapper
public interface SchemaMapper extends BaseMapperPlus<Schema, SchemaVo> {
}

View File

@@ -71,4 +71,14 @@ public interface SchemaFieldService {
* @return 字段列表
*/
List<SchemaFieldVo> queryListByTableName(String tableName);
/**
* 校验并根据数据模型ID批量删除数据模型字段信息
*
* @param schemaIds 数据模型ID列表
* @param isValid 是否校验
* @return 结果
*/
Boolean deleteWithValidBySchemaIds(Collection<Long> schemaIds, Boolean isValid);
}