基于若依的ruoyi-nbcio流程管理系统一种简单的动态表单模拟测试实现(一)

更多ruoyi-nbcio功能请看演示系统

gitee源代码地址

前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio

演示地址:RuoYi-Nbcio后台管理系统

更多nbcio-boot功能请看演示系统

gitee源代码地址

后端代码: https://gitee.com/nbacheng/nbcio-boot

前端代码:https://gitee.com/nbacheng/nbcio-vue.git

在线演示(包括H5) : http://122.227.135.243:9888

为了实现在线表单关联数据库的实现与模拟,先进行一些基本的表单测试。

1、后端使用gen模块里的表与表列方法获取相应信息

列出可以选择的表

java 复制代码
/**
     * 查询代码生成列表
     */
    @SaCheckPermission("tool:gen:list")
    @GetMapping("/list")
    public TableDataInfo<GenTable> genList(GenTable genTable, PageQuery pageQuery) {
        return genTableService.selectPageGenTableList(genTable, pageQuery);
    }

@Override
    public TableDataInfo<GenTable> selectPageGenTableList(GenTable genTable, PageQuery pageQuery) {
        Page<GenTable> page = baseMapper.selectPage(pageQuery.build(), this.buildGenTableQueryWrapper(genTable));
        return TableDataInfo.build(page);
    }

    private QueryWrapper<GenTable> buildGenTableQueryWrapper(GenTable genTable) {
        Map<String, Object> params = genTable.getParams();
        QueryWrapper<GenTable> wrapper = Wrappers.query();
        wrapper.like(StringUtils.isNotBlank(genTable.getTableName()), "lower(table_name)", StringUtils.lowerCase(genTable.getTableName()))
            .like(StringUtils.isNotBlank(genTable.getTableComment()), "lower(table_comment)", StringUtils.lowerCase(genTable.getTableComment()))
            .between(params.get("beginTime") != null && params.get("endTime") != null,
                "create_time", params.get("beginTime"), params.get("endTime"));
        return wrapper;
    }

列出可以选择的列名

java 复制代码
/**
     * 查询数据表字段列表
     *
     * @param tableName 表名
     */
    @SaCheckPermission("tool:gen:list")
    @GetMapping(value = "/columnByName/{tableName}")
    public TableDataInfo<GenTableColumn> columnListByTableName(@PathVariable(value = "tableName") String tableName) {
        TableDataInfo<GenTableColumn> dataInfo = new TableDataInfo<>();
        List<GenTableColumn> list = genTableService.selectGenTableColumnListByTableName(tableName);
        dataInfo.setRows(list);
        dataInfo.setTotal(list.size());
        return dataInfo;
    }

@Override
	public List<GenTableColumn> selectGenTableColumnListByTableName(String tableName) {
		
		GenTable table = baseMapper.selectGenTableByName(tableName);
		if(ObjectUtils.isNotEmpty(table) ) {
			long tableId = table.getTableId();
			return genTableColumnMapper.selectList(new LambdaQueryWrapper<GenTableColumn>()
	            .eq(GenTableColumn::getTableId, tableId)
	            .orderByAsc(GenTableColumn::getSort));
		}
		return null;
	}

根据表名动态获取数据

java 复制代码
/**
     * 根据主表名动态获取表数据
     * @param tableName 主表名称
     */
    @SaCheckPermission("workflow:form:query")
    @GetMapping(value = "/getData/{tableName}")
    public R<List<Map>> getData(@NotNull(message = "表名不能为空") @PathVariable("tableName") String tableName) {
        return R.ok(formService.getDataByTableName(tableName));
    }

@Override
	public List<Map> getDataByTableName(@NotNull(message = "表名不能为空") String tableName) {
		return baseMapper.getDataByTableName(tableName);
	}


public interface WfFormMapper extends BaseMapperPlus<WfFormMapper, WfForm, WfFormVo> {

    List<WfFormVo> selectFormVoList(@Param(Constants.WRAPPER) Wrapper<WfForm> queryWrapper);
    @Select("SELECT * FROM ${tableName}")
    List<Map> getDataByTableName(@Param("tableName") String tableName);
}
相关推荐
道可到13 分钟前
淘宝面试原题 Java 面试通关笔记 02|从编译到运行——Java 背后的计算模型(面试可复述版)
java·后端·面试
DKPT19 分钟前
JVM如何管理直接内存?
java·笔记·学习
SimonKing20 分钟前
GitHub 标星 370k!免费编程资源大合集,从此自学不花一分钱
java·后端·程序员
kfepiza31 分钟前
Java的任务调度框架之Quartz 笔记250930
java·java ee
自由的疯32 分钟前
Java(32位)基于JNative的DLL函数调用方法
java·后端·架构
咖啡Beans36 分钟前
SpringBoot+Ehcache使用示例
java·spring boot
自由的疯39 分钟前
Java 使用Jackson进行深拷贝:优化与最佳实践
java·后端·架构
毕设源码-郭学长44 分钟前
【开题答辩全过程】以 springboot+美食电子商城的设计与实现为例,包含答辩的问题和答案
java·eclipse·美食
王嘉俊92544 分钟前
Kafka 和 RabbitMQ 使用:消息队列的强大工具
java·分布式·中间件·kafka·消息队列·rabbitmq·springboot
渣哥1 小时前
事务没生效还以为成功了?Spring 事务失效的雷区你中招了吗?
java