1.业务场景

我们在数据列表进行execl导入时,一般在execl中只输入用户或者部门及下拉框的姓名中文名,那我们这么实现呢?

2.业务逻辑

在我们平台中下拉框,用户,部门等相关的属性字段已json格式{“label”:”白板/白板笔”,”value”:”0”}的方式展示数据,那么像这些字段在我们数据库中分别已两个字段是存储我们的lable,value值,两个字段都存储了值表单上才能回显。

3.实现方案

在我们的数据列表有‘execl配置’功能

利用脚本配置可实现数据导入之前可通过‘脚本配置’可以对导入的,每一行删数据进行处理

实现下拉框,当我的下拉框的数据项是存储在数据字典中的

import com.redxun.common.base.entity.JsonResult;
import com.redxun.common.utils.SpringUtil;
import com.redxun.feign.sys.SystemClient;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
          import java.util.Map;
         //对每一行进行判断处理
          JsonResult handRow(Map<String,Object> data){
 //调用system服务接口
              SystemClient systemClient=SpringUtil.getBean(SystemClient.class);
              //查询指定数据字典的数据项
              JSONArray array=systemClient.getDicByKey("LCJD");
              for(Object obj:array){
                  JSONObject json=(JSONObject)obj;
                  //判断excel中输入的名称和数据项的名称一致
                  if(json.getString("name").equals(data.get("F_AAA"))){
                      //将名称覆盖为标识键
                      data.put("F_AAA",json.getString("value"));
                  }
              }
            //return JsonResult.Fail("出错原因");
            return JsonResult.Success();
          }
          //对读取的数据进行处理
          JsonResult beforeInsert(List<Map<String,Object>> data){
            //return JsonResult.Fail("出错原因");
            return JsonResult.Success();
          }

处理用户或者部门,有多少个部门和用户字段就循环多少个

import com.redxun.common.base.entity.JsonResult;
import com.redxun.common.tool.BeanUtil;
import com.redxun.common.tool.StringUtils;
import com.redxun.common.utils.SpringUtil;
import com.redxun.dto.user.OsUserDto;
import com.redxun.feign.OsUserClient;

import java.util.Map;
import java.util.List;
import java.util.ArrayList;
//对每一行进行判断处理
JsonResult handRow(Map<String,Object> data){
    //return JsonResult.Fail("出错原因");
    return JsonResult.Success();
}
//对读取的数据进行处理
JsonResult beforeInsert(List<Map<String,Object>> data){
    OsUserClient osUserClient = SpringUtil.getBean(OsUserClient.class);
    for (int i = 0; i < data.size(); i++) {
        Map<String, Object> map = data.get(i);
        if(map==null){
            return JsonResult.Success();
        }
        //公司
        if(StringUtils.isNotEmpty(map.get("GSMC_NAME"))){    
            List<String> groupList = osUserClient.getGroupIdByGroupName(map.get("GSMC_NAME"));
            if(BeanUtil.isNotEmpty(groupList) && groupList.size()==1){
                map.put("GSMC",groupList.get(0));
            }
        }
    }
    return JsonResult.Success();
}
文档更新时间: 2022-06-24 15:18   作者:zhuyunyun