基于若依框架,实现导入功能

基于若依框架,实现导入功能

我们先在显示界面加入导入按钮

	<a class="btn btn-info" onclick="$.table.importExcel()" shiro:hasPermission="system:student:import">
					<i class="fa fa-upload"></i> 导入
				</a>

再加入一个导入的模板,加入模板就是我们根据模板进行导入需要导入的数据

<script id="importTpl" type="text/template">
	<form enctype="multipart/form-data" class="mt20 mb10">
		<div class="col-xs-offset-1">
			<input type="file" id="file" name="file"/>
			<div class="mt10 pt5">
				<input type="checkbox" id="updateSupport" name="updateSupport" title="如果登录账户已经存在,更新这条数据。"> 是否更新已经存在的用户数据
				&nbsp;	<a onclick="$.table.importTemplate()" class="btn btn-default btn-xs"><i class="fa fa-file-excel-o"></i> 下载模板</a>
			</div>
			<font color="red" class="pull-left mt10">
				提示:仅允许导入“xls”或“xlsx”格式文件!
			</font>
		</div>
	</form>
</script>

向后端请求的路径
在这里插入图片描述

importUrl: prefix + "/importData",  //模板导入
importTemplateUrl: prefix + "/importTemplate", //模板导出
 //信息导入
    @RequiresPermissions("system:student:import")
    @PostMapping("/importData")
    @ResponseBody
    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
    {
        ExcelUtil<SysStudent> util = new ExcelUtil<SysStudent>(SysStudent.class);
        List<SysStudent> studentList = util.importExcel(file.getInputStream());//获取数据
        String operName = ShiroUtils.getSysUser().getLoginName();
        String message = studentService.importStudent(studentList, updateSupport, operName);
        return AjaxResult.success(message);
    }
    @RequiresPermissions("system:student:view")
    @GetMapping("/importTemplate")
    @ResponseBody
    public AjaxResult importTemplate()
    {
        ExcelUtil<SysStudent> util = new ExcelUtil<SysStudent>(SysStudent.class);
        return util.importTemplateExcel("学校用户数据");
    }

在工具类当中定义方法,方便控制层调用
在这里插入图片描述

   private static final Logger log = LoggerFactory.getLogger(SysStudentServiceImpl.class);
  @Override
    public String importStudent(List<SysStudent> studentList, Boolean isUpdateSupport, String operName)
    {
        if (StringUtils.isNull(studentList) || studentList.size() == 0)
        {
            throw new BusinessException("导入用户数据不能为空!");
        }
        int successNum = 0;
        int failureNum = 0;
        StringBuilder successMsg = new StringBuilder();
        StringBuilder failureMsg = new StringBuilder();
        for (SysStudent student : studentList)
        {
            try
            {
                // 验证是否存在这个用户
                SysStudent u = studentMapper.selectStudentByLoginName(student.getStudentName() );
                if (StringUtils.isNull(u))
                {
                    student.setStudentName(student.getStudentName());
                    this.insertStudent(student);
                    successNum++;
                    successMsg.append("<br/>" + successNum + "学校信息" + student.getStudentName() + " 导入成功");
                }
                else if (isUpdateSupport)
                {
                    student.setUpdateBy(operName);
                    this.updateStudent(student);
                    successNum++;
                    successMsg.append("<br/>" + successNum + "学校信息 " + student.getStudentName() + " 更新成功");
                }
                else
                {
                    failureNum++;
                    failureMsg.append("<br/>" + failureNum + "学校信息" + student.getStudentName() + " 已存在");
                }
            }
            catch (Exception e)
            {
                failureNum++;
                String msg = "<br/>" + failureNum + "学校信息" + student.getStudentName() + " 导入失败:";
                failureMsg.append(msg + e.getMessage());
                log.error(msg, e);
            }
        }
        if (failureNum > 0)
        {
            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
            throw new BusinessException(failureMsg.toString());
        }
        else
        {
            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
        }
        return successMsg.toString();
    }

    @Override
    public List<SysStudent> selectStudentByClassCid(Long classCid) {
        return studentMapper.selectStudentByClassCid(classCid);
    }

在这里插入图片描述

selectStudentByLoginName 方法实在Mapper当中调用的

在这里插入图片描述
在Mapper 当中定义这个方法
在这里插入图片描述

 //学生信息导入
    public SysStudent selectStudentByLoginName(String studentName);
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平平常常一般牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值