自定义字段低代码配置

2025/6/17 低代码

系统字段低代码自定义配置功能重构,迭代新增需求功能bug修复并优化

======关于一个业务嵌入开发管理高级搜索,页面配置和代码调用如下:=======

1. 列表示例:物料管理→物料列表

·管理员开发管理需要在对应的模块下新增一个单元,此时默认会给标准字段增加进来,开发人员保留列表需要展示以及搜索的字段即可,其他无关字段移除,后续有需要也可以再加进来。

·扩展字段需要自己添加字段;

·自定义类型的字段意思是,针对列表需要返回一些企业名称、用户名称、枚举值等数据库没有的字段,是java代码自己处理的字段,可以在添加自定义字段类型的。

代码方面调用:

①需要将原有get请求的分页列表接口,重构一个post请求的列表接口;

②设置开发管理列表,对应业务的业务编码,用于获取select后面的扩展字段,queryBizCode字段PageDTO中已经增加该字段,各业务的dto有继承SupperDTO或PageDTO都可以set到。

·走Mapper.xml的方式,使用预设高级搜索:

·走myBatis-plus写法使用高级搜索示例:

QueryWrapper<DemandForecast> query = WrappersUtralUtil.queryWrapper(demandForecastDTO,where->{
where.eq("")
})

·说明:where条件里面放固定参数,例如custId、userId、倒序排序等固定参数,其他页面搜索条件,此工具类会做封装,不需要自己再增加参数。

2. 物料管理→发布物料,表单设计方面:

首先,对应的model实体,需要继承BaseModel,如果之前有实体继承了extends Model,则需要改成继承BaseModel,平时在使用myBatis-plus方法时,不要使用mapper里面的方法即可。

①走Mapper.xml写法:

·如果是单个保存方法:

//获取添加的扩展字段拼接sql
WrappersUtralUtil.setInsertFieldNames(product);

${expFieldNames}

${expFieldVals}

·如果是批量添加的方法:

BaseModel baseModel = WrappersUtralUtil.getInsertThExps();

demandMapper.insertBatches(list, baseModel.getExpFieldNames(), baseModel.getExpFieldVals());

②走myBatis-plus写法: 如果是myBatis-plus写法,更简单,则不需要调用该工具类,平时正常的save方法即可。

3. 物料管理→编辑物料: ①走Mapper.xml写法:

//设置修改的参数,拼接sql
WrappersUtralUtil.setUpdateFieldVals(product);

${expFieldUpVals}

②走myBatis-plus写法: 如果是myBatis-plus写法,更简单,则不需要调用该工具类,平时正常的update方法即可。

4. 物料管理→物料详情:

需要传业务编码,用于获取select后面的字段,这个详情一般都是和添加用一个表单,所以传的是使用那个表单的业务编码即可。

<if test="expFields != null and expFields != '' ">
            , ${expFields}
        </if>

=======关于字段下推其他业务,下面以物料字段下推到需求预测模块为例:=======

1、一般业务会遇到选择物料弹窗,这个我们配一个公共的表单,供各业务选择物料的弹窗使用。

这时候点击保存/提交时,可以选择让前端传给你,自己后端通过productId查询也是可以的,只需要通过这个工具进行转换。

第一个参数:来源方对象集合【这个集合肯定要返回扩展字段】

第二个参数:来源方用于和目标方做匹配的字段

第三个参数:目标方对象集合

第四个参数:目标方用于和来源方做匹配的字段

第五个参数:来源方单元标识【admin的开发管理列表有】

第六个参数:目标方单元标识【admin的开发管理列表有】

其他标准字段,建议还是各业务自己set参数值不变,因为上面这个转换工具只会针对绑定的字段进行转换。

保存时,我们基本都是使用model进行传参,所以对应业务的model需要继承BaseModel