导入规则配置
百度已收录

PC页面支持将页面数据导出到excel和将excel数据导入的功能。其中导入功能支持在导入前做数据校验(如:非空和合法性),支持对导入的值做数据转换(如:用户姓名转换成用户id)。

导入时如果需要进行数据校验或数据转换,则需要提前配置导入规则,导入规则包括转换规则和校验规则,通过转换规则进行名称到值的转换,通过校验规则校验值的必填及合法性。

导入规则配置路径:应用管理->应用开发->打开一个应用->页面模型->新增或打开列表页面->列表显示tab页签->导入规则配置,如下图所示:

一、 规则配置

1、转换规则

【静态选项名称转code】

手工添加名称和值得对应关系,如下图所示:

通过配置该映射关系将名称转换为值。

【数据字典名称转code】

通过数据字典进行名称和值的转换,如下图所示:

【用户名称转换id】

根据用户表用户名称转换成用户id。

【部门名称转id】

根据部门表部门名称转换成部门id。

【数据库表字段转换】

用于该字段从其他表取值,通过配置其他表名称字段和值字段的对应关系转换,如下图所示:

【通过自定义类转换】

如果以上都无法满足需求,可以在自定义实现类中进行转换,如下图所示:

【自定义转换】:配置自定义实现类的springBean名称。

自定义实现类需要继承接口:com.yuncheng.viewengine.ext.CustomImportExt.java

接口代码如下所示:

package com.yuncheng.viewengine.ext;

import java.util.Map;

public interface CustomImportExt {
    /**
     * 自定义导入规则
     * @param prepareData 外围公共对象,可以存放全局使用的对象,作用于整个整个校验过程
     * @param object      初始值
     * @return 转换后的值
     */
    Object execute(Map<String, Object> prepareData, Object object);

    /**
     * 返回校验规则的中文描述,用于生成导入模板的提示语
     *
     * @return 中文描述
     */
    String parseMessage();
}

接口方法说明:

【execute】:名称转值逻辑代码

【parseMessage】:导入模板“转换规则”页签中该列的提示信息,方便用户录入数据参考。

2、校验规则

配置导入时的校验规则,如下图所示:

可以启用多个校验规则,【提示信息】配置校验不通过的提示信息。

其中自定义校验通过自定义实现类进行规则校验,自定义类配置实现类的spingBean名称。

自定义实现类需要继承接口:com.yuncheng.viewengine.ext.CustomImportExt.java

接口代码如下所示:

package com.yuncheng.viewengine.ext;

import java.util.Map;

public interface CustomCheckExt {

    /**
     * 自定义导入校验
     *
     * @param prepareData 外围公共对象,可以存放全局使用的对象,作用于整个整个校验过程
     * @param object      初始值
     * @param key         导入数据对应字段的Key
     * @param label       导入数据对应字段的Label
     * @param id          导入的数据主键值
     * @param tableName   导入的数据库表名
     * @return 校验是否通过,返回 ok 标识通过,返回其他信息标识错误信息
     */
    String check(Map<String, Object> prepareData, Object object, String key, String label, String id, String tableName);

    /**
     * 返回校验规则的中文描述,用于生成导入模板的提示语
     *
     * @return 中文描述
     */
    String parseMessage();
}

接口方法说明:

【check】:校验逻辑,校验通过返回”ok”,校验失败则返回错误信息。

【parseMessage】:导入模板“校验规则”页签中该列的提示信息,方便用户录入数据参考。

二、 使用示例

本例以“出差管理”模块导入为例演示导入配置。

1、导入规则配置

打开 应用管理->应用开发菜单

单击“出差管理”应用,选择页面模型

编辑“出差管理列表页面”,配置导入规则:

【出差人】列转换规则配置为“用户名称转ID”:

【出差人】列校验规则选择必填校验:

【出差人部门】列使转换规则配置为“数据库字段转换”,如下图所示数据库比较选择sys_org(部门表)

源字段选择org_name,目标字段选择id

【出差人部门】列校验规则选择必填校验:

【项目名称】列转换规则配置为“通过自定义类转换”:

自定义转换类代码如下:

package com.yuncheng;

import com.yuncheng.viewengine.ext.CustomImportExt;
import org.springframework.stereotype.Service;
import java.util.Map;

/**
 * 导入规则自定义类demo
 */
@Service
public class CustomImportExtDemo implements CustomImportExt {
    @Override
    public Object execute(Map<String, Object> prepareData, Object object) {
        if(null!=object){
            if(object.toString().indexOf("项目")<0){
                return object + "项目";
            }else{
                return object;
            }
        }else{
            return object;
        }
    }

    @Override
    public String parseMessage() {
        return "项目名称后面会自动加上'项目'两个字";
    }
}

【项目名称】列校验规则选择必填校验:

【出差经费支持】列转换规则配置为“数据字典名称转Code”:

2、运行效果

切换到前台,打开出差管理-出差查询模块:

单击“导入”按钮,打开导入界面:

单击“下载导入模板”按钮,下载模板。

打开模板文件,导入模板分三个页签,如下图所示 在“出差管理列表”页签中录入数据,“转换规则”和“校验规则”页签显示规则配置的内容供用户参考。

在导入模板中录入数据:

注:

1、主键列没有值执行新增操作,有值则执行修改操作

2、日期列格式为“yyyy-MM-dd”

选择导入模板文件或者拖动模板文件到导入窗口中会自动执行导入处理,导入成功后查询导入的数据:

导入失败会弹出提示窗口,点击下载 查看失败原因:

失败日志如下: