基于若依的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);
}
相关推荐
金銀銅鐵3 分钟前
[Java] 以 IntStream 为例,浅析 Stream 的实现
java·后端
曳渔1 小时前
UDP/TCP套接字编程简单实战指南
java·开发语言·网络·网络协议·tcp/ip·udp
hqxstudying2 小时前
JAVA项目中邮件发送功能
java·开发语言·python·邮件
最初的↘那颗心2 小时前
Java HashMap深度解析:原理、实现与最佳实践
java·开发语言·面试·hashmap·八股文
小兔兔吃萝卜2 小时前
Spring 创建 Bean 的 8 种主要方式
java·后端·spring
亲爱的马哥2 小时前
重磅更新 | 填鸭表单TDuckX2.9发布!
java
Java中文社群2 小时前
26届双非上岸记!快手之战~
java·后端·面试
whitepure2 小时前
万字详解Java中的面向对象(二)——设计模式
java·设计模式
whitepure2 小时前
万字详解Java中的面向对象(一)——设计原则
java·后端
2301_793086873 小时前
SpringCloud 02 服务治理 Nacos
java·spring boot·spring cloud