若依原始的导出功能,如果导出项中包含数据字典,会直接导出数据字典的键,需要手动替换。

用到一个若依提供的工具类,hm-common/src/main/java/com/hm/common/utils/DictUtils.java

里面提供了各种关于数据字典的数据获取方法。

改造过程:

先修改controller:

/**
 * 导出本地图片列表
 */
@PreAuthorize("@ss.hasPermi('manage:localpic:export')")
@Log(title = "本地图片", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, Localpic localpic)
{
    List<Localpic> list = localpicService.selectLocalpicList(localpic);
    ExcelUtil<Localpic> util = new ExcelUtil<Localpic>(Localpic.class);
    // 把list里面的数据字典替换为字典
    List<Localpic> listed = localpicService.generateExportData(list);
    util.exportExcel(response, listed, "本地图片数据");
}

这边把数据库里查询到的数组过了一遍手,用localpicService的generateExportData处理了一下。

在service接口里面创建对应的接口。

/**
 * 把字典的key换成value
 * @param list
 * @return List<Localpic>
 */
List<Localpic> generateExportData(List<Localpic> list);

主要去Serviceimpl去实现。

/**
 * 把字典的key换成value
 * @param list
 * @return List<Localpic>
 */
@Override
public List<Localpic> generateExportData(List<Localpic> list) {
    for (Localpic localpic : list) {
        // 获取图片类型
        String picType = localpic.getPicType();
        String picTypeValue = DictUtils.getDictLabel("manage_pic_type", picType);
        localpic.setPicType(picTypeValue);
    }
    return list;
}

这边用到了DictUtils.getDictLabel方法,输入String dictType(数据字典类型), String dictValue(字典的键),返回dictLabel(字典值)