若依代码生成自带导入功能

2023-11-09

1 修改ruoyi-generator下resources下vm.java.controller

  • 导入
import java.io.InputStream;
import org.springframework.web.multipart.MultipartFile;
  • 新增下载模板接口
/**
     * 下载模板
     */
    @PostMapping("/importTemplate")
    public void importTemplate(HttpServletResponse response)
    {
        ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
        util.importTemplateExcel(response, "${functionName}数据");
    }
  • 新增导入数据
    /**
     * 导入数据
     */
    @Log(title = "${functionName}", businessType = BusinessType.IMPORT)
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:import')")
    @PostMapping("/importData")
    public AjaxResult importData(MultipartFile file) throws Exception
    {
        ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
        InputStream inputStream = file.getInputStream();
        List<${ClassName}> list = util.importExcel(inputStream );
        inputStream.close();
        int count = ${className}Service.batchInsert${ClassName}(list);
        return AjaxResult.success("导入成功" + count + "条信息!");
    }

2 修改ruoyi-generator下resources下vm.java.service

  • 新增方法
/**
     * 批量新增${functionName}
     *
     * @param ${className}s ${functionName}List
     * @return 结果
     */
    public int batchInsert${ClassName}(List<${ClassName}> ${className}s);

3 修改ruoyi-generator下resources下vm.java.serviceImpl

  • 导入
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.util.CollectionUtils;
  • 注入
	@Autowired
    private SqlSessionFactory sqlSessionFactory;
  • 新增批量新增方法
/**
     * 批量新增${functionName}
     *
     * @param ${className}s ${functionName}List
     * @return 结果
     */
    @Override
    public int batchInsert${ClassName}(List<${ClassName}> ${className}s)
    {
        SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
        int count = 0;
        if (!CollectionUtils.isEmpty(${className}s)) {
            try {
                for (int i = 0; i < ${className}s.size(); i++) {
                    int row = ${className}Mapper.insert${ClassName}(${className}s.get(i));
                    // 防止内存溢出,没100次提交一次,并清除缓存
                    boolean bool = (i >0 && i%3 == 0) || i == ${className}s.size() - 1;
                    if (bool){
                        sqlSession.commit();
                        sqlSession.clearCache();
                    }
                    count = i + 1;
                }
            }catch (Exception e){
                e.printStackTrace();
                // 没有提交的数据可以回滚
                sqlSession.rollback();
            }finally {
                sqlSession.close();
                return count;
            }
        }
        return count;
    }

4 修改vue下index.vue.vm文件

  • 新增方法
/** 下载模板操作 */
    importTemplate() {
      this.download('${moduleName}/${businessName}/importTemplate', {
      }, `template_#[[${new Date().getTime()}]]#.xlsx`)
    },
    /** 导入按钮操作 */
    handleImport() {
      this.upload.title = "${functionName}导入";
      this.upload.open = true;
    },
    // 文件上传中处理
    handleFileUploadProgress(event, file, fileList) {
      this.upload.isUploading = true;
    },
    // 文件上传成功处理
    handleFileSuccess(response, file, fileList) {
      this.upload.open = false;
      this.upload.isUploading = false;
      this.$refs.upload.clearFiles();
      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
      this.getList();
    },
    // 提交上传文件
    submitFileForm() {
      this.$refs.upload.submit();
    }
  • 新增data
// 导入参数
      upload: {
        // 是否显示弹出层(导入)
        open: false,
        // 弹出层标题(导入)
        title: "",
        // 是否禁用上传
        isUploading: false,
        // 设置上传的请求头部
        headers: { Authorization: "Bearer " + getToken() },
        // 上传的地址
        url: process.env.VUE_APP_BASE_API + "/${moduleName}/${businessName}/importData"
      },
  • 新增对话框
<!-- 导入对话框 -->
    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
      <el-upload
          ref="upload"
          :limit="1"
          accept=".xlsx, .xls"
          :headers="upload.headers"
          :action="upload.url + '?updateSupport=' + upload.updateSupport"
          :disabled="upload.isUploading"
          :on-progress="handleFileUploadProgress"
          :on-success="handleFileSuccess"
          :auto-upload="false"
          drag
      >
        <i class="el-icon-upload"></i>
        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
        <div class="el-upload__tip text-center" slot="tip">
          <span>仅允许导入xls、xlsx格式文件。</span>
          <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
        </div>
      </el-upload>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitFileForm">确 定</el-button>
        <el-button @click="upload.open = false">取 消</el-button>
      </div>
    </el-dialog>
  • 导入token
import {getToken} from "@/utils/auth";
  • 新增导入按钮
	<el-col :span="1.5">
        <el-button
            type="warning"
            plain
            icon="el-icon-upload2"
            size="mini"
            @click="handleImport"
            v-hasPermi="['${moduleName}:${businessName}:import']"
        >导入</el-button>
      </el-col>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

若依代码生成自带导入功能 的相关文章

随机推荐

  • YiOVE书源:不只是书源,还有对书源的一些预处理,比如提前查看书源数量,以及包含哪些小说站

    引言 我是一个小说爱好者 阅读APP更是其中的效果斐然的不错宝器 平时自己也会收集一些书源 但是在这过程中产生了一些需求 比如 书源的数目是多少 书源链接还有效吗 于是 自己基于Flask写了一个程序 可以解决以上需求 并且可以在网页端显示
  • JqGrid完整例子

    之前写过一篇过于ajax异步加载jqgrid的文章 那个只是一个特殊的情况 如果创建不同数据库表的jqgrid 必须分别写servlet dao层和连接池 很麻烦 今天我写了一个万能的写法 客官只要在前台js中写入表格名称和字段名称即可实现
  • java 中秒杀逻辑

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 考虑要点 二 预减库存 三 秒杀超卖 四 排它锁是什么 前言 什么是秒杀 是一种高并发的技术 许多电商网站都是采用这样的技术应对突发流量的问题 一 考虑要
  • tensorflow提示缺少cudnn64_7.dll

    解决思路 下载一个 https developer nvidia com rdp cudnn download 下载后的压缩包有三个文件 把三个文件添加到对应的地方即可
  • Linux ping www.baidu.com时报错 Name or service not known原因

    一般是你配置的ens33的IPADDR跟虚拟机网络编辑器里的网段不一样 编辑 虚拟网络编辑器 NAT模式 NET设置 这里可以更改net设置里的参数 vi etc sysconfig network scripts ifcfg ens33
  • 红外寻迹原理以及STM32 GPIO的输入检测

    红外寻迹原理以及GPIO的输入检测 一 红外寻迹原理 采用YL 70 红外寻迹壁障模块 红外发射管 透明 发出红外光 如果红外光照在浅色平面 则红外光被反射 并且被红外接收管 黑色 接收 同时对应的输出接口输出低电平 0 红外主板上对应的L
  • 数据压缩实验五:JPEG文件解码实验分析

    一 实验原理 1 JPEG编码原理 JPEG 是Joint Photographic Experts Group 联合图像专家小组 的缩写 是第一个国际图像压缩标准 jpeg jpg是最常用的图像文件格式 是一种有损压缩格式 JPEG 编码
  • linux命令行常用的移动操作

    linux命令行常用的移动操作 1 光标快速切换到行尾行首 Ctrl a 行首 Ctrl e 行尾 2 删除至行尾 Ctrl k 3 删除命令行的命令 Del 删除属光标所在处的字符 Ctrl d 删除光标所在处的字符 BACKSPACE或
  • PAT乙级 1010 一元多项式求导 (25分)

    1010 一元多项式求导 25分 设计函数求一元多项式的导数 注 x n n为整数 的一阶导数为nxn 1 输入格式 以指数递降方式输入多项式非零项系数和指数 绝对值均为不超过 1000 的整数 数字间以空格分隔 输出格式 以与输入相同的格
  • 如何搭建一台属于自己的服务器

    对于新手小白来说 我推荐使用大厂们的服务器 比如阿里云 腾讯云等 这种不仅有强大的大厂背景支持 且不用担心维护 界面功能友好完善 非常适合新手小白 我使用的是腾讯云 所以接下来以腾讯云为例讲解 服务器类型的选择 个人用户的话推荐大家使用 轻
  • 图文详解MOS管的米勒效应

    如下是一个NMOS的开关电路 触发信号VG1设置DC电平2V 方波 振幅2V 频率50Hz T2的开启电压2V 所以MOS管T2会以周期T 20ms进行开启和截止状态的切换 首先仿真Vgs和Vds的波形 会看到Vgs 2V的时候有一个小平台
  • Java自动化测试语言高级之Iterator

    Java自动化测试语言高级之Iterator 文章目录 Java自动化测试语言高级之Iterator Java Iterator 迭代器 Java Iterator 迭代器 Java Iterator 迭代器 不是一个集合 它是一种用于访问
  • shell 字符串数组的使用

    ex 简单例子 str h ee h i h ed0llo for s in str do echo s done PS 最开始折腾好久 是因为我写了一个str6 5 这样的变量 导致 一直报错 还以为是 数组声明方式有问题 我想调用另一个
  • 正点原子IMX6ULL开发板通过网络修改系统时间

    设置时区 开发板系统为正点原子出厂系统 通过网络获取时间 需要设置开发板时区 首先使用date指令查看系统当前时区 此时系统的时区为UTC 世界协调时 这个时候直接通过网络获取时间 得到的时间是UTC时区下的时间 需要先将系统的时区设置为中
  • matlab如何实现不同的值显示不同的颜色

    举例一 一 视图 二 代码 作者 CoderMan 链接 https www zhihu com question 503639152 answer 2257427351 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载
  • 二进制算法_本地二进制模式算法:其背后的数学❗️

    二进制算法 介绍 Introduction The main idea behind LBP is to describe the neighborhood of image elements using binary codes This
  • C++全局变量的初始化过程

    全局变量在main 前完成初始化 调用构造函数 在调用构造函数前 全局变量已分配空间 内存全0 多个全局变量的初始化 按照代码编译的顺序 注意 全局变量被访问前可能它还没有调用构造函数初始化 如果一个项目中 多个dll都用到一个全局变量在共
  • 开发过程中数据库使用反引号

    开发遇到的反引号 不使用会报错 反引号是为了区分MySQL的保留字与普通字符而引入的符号 index insert into sys menu menu name pid index url values 章节测测 2 kk
  • ajax无刷新登陆原理,基于Ajax技术实现无刷新用户登录功能

    感兴趣的小伙伴 下面一起跟随编程之家 jb51 cc的小编两巴掌来看看吧 代码如下 JScript 文件 function userslogon var userName document getElementById txtuserNam
  • 若依代码生成自带导入功能

    文章目录 1 修改ruoyi generator下resources下vm java controller 2 修改ruoyi generator下resources下vm java service 3 修改ruoyi generator下