尚医通 (十九) --------- 数据字典导出与导入

news2025/7/9 4:09:57

目录

  • 一、数据字典导出
    • 1. 导出接口封装
    • 2. 在 service-cmn 模块添加 service 方法
    • 3. 在 service-cmn 模块添加 controller 方法
    • 4. 测试
    • 5. 导出前端实现
  • 二、数据字典导入
    • 1. 导入接口封装
    • 2. 导入前端实现


一、数据字典导出

1. 导出接口封装

A、在 model 模块添加导出实体

在 model 模块查看实体:com.fancy.yygh.vo.cmn.DictEeVo

package com.fancy.yygh.vo.cmn;

@Data
public class DictEeVo {

	@ExcelProperty(value = "id",index = 0)
	private Long id;
	
	@ExcelProperty(value = "上级id",index = 1)
	private Long parentId;
	
	@ExcelProperty(value = "名称",index = 2)
	private String name;
	
	@ExcelProperty(value = "值",index = 3)
	private String value;
	
	@ExcelProperty(value = "编码",index = 4)
	private String dictCode;

}

2. 在 service-cmn 模块添加 service 方法

A、在 DictService 类添加接口

/**
 * 导出
 * @param response
*/
void exportData(HttpServletResponse response);

B、在 DictServiceImpl 类添加接口实现类

@Override
public void exportData(HttpServletResponse response) {
	try {
		response.setContentType("application/vnd.ms-excel");
		response.setCharacterEncoding("utf-8");
		// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
		String fileName = URLEncoder.encode("数据字典", "UTF-8");
		response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx");
		
		List<Dict> dictList = dictMapper.selectList(null);
		List<DictEeVo> dictVoList = new ArrayList<>(dictList.size());
		for(Dict dict : dictList) {
			DictEeVo dictVo = new DictEeVo();
			BeanUtils.copyBean(dict, dictVo, DictEeVo.class);
			dictVoList.add(dictVo);
		}
	
		EasyExcel.write(response.getOutputStream(), DictEeVo.class).sheet("数据字典").doWrite(dictVoList);
	} catch (IOException e) {
		e.printStackTrace();
	}
}

说明:直接复制示例代码中的“web中的写”,改造即可

3. 在 service-cmn 模块添加 controller 方法

在 DictController 类添加方法

@ApiOperation(value="导出")
@GetMapping(value = "/exportData")
public void exportData(HttpServletResponse response) {
	dictService.exportData(response);
}

4. 测试

直接通过浏览器导出数据:http://localhost:8202/admin/cmn/dict/exportData

5. 导出前端实现

A、列表页面添加导出按钮

src/views/cmn/dict/list.vue

<div class="el-toolbar">
	<div class="el-toolbar-body" style="justify-content: flex-start;">
		<el-button type="primary" @click="exportData"><i class="fa fa-plus"/> 导出</el-button>
	</div>
</div>

B、添加导出方法

exportData() {
	window.location.href = 'http://localhost:8202/admin/cmn/dict/exportData'
}

C、测试

在这里插入图片描述

二、数据字典导入

1. 导入接口封装

A、创建回调监听器

public class DictListener extends AnalysisEventListener<DictEeVo> {

    private DictMapper dictMapper;
    public DictListener(DictMapper dictMapper) {
        this.dictMapper = dictMapper;
    }

    //一行一行读取
    @Override
    public void invoke(DictEeVo dictEeVo, AnalysisContext analysisContext) {
        //调用方法添加数据库
        Dict dict = new Dict();
        BeanUtils.copyProperties(dictEeVo,dict);
        dictMapper.insert(dict);
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }
}

B、在 service-cmn 模块添加 service 方法

//导入数据字典
@Override
public void importDictData(MultipartFile file) {
    try {
        EasyExcel.read(file.getInputStream(),DictEeVo.class,new DictListener(baseMapper)).sheet().doRead();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

C、在 service-cmn 模块添加 controller 方法

在 DictController 类添加方法

@ApiOperation(value = "导入")
@PostMapping("importData")
public Result importData(MultipartFile file) {
	dictService.importData(file);
	return Result.ok();
}

2. 导入前端实现

A、列表页面添加导入按钮

src/views/cmn/dict/list.vue

<el-button type="primary" @click="importData"><i class="fa fa-plus"/> 导入</el-button>

说明:按钮位置与导出并列

B、添加导入弹出层

 <el-dialog title="导入" :visible.sync="dialogImportVisible" width="480px">
    <el-form label-position="right" label-width="170px">
        <el-form-item label="文件">
            <el-upload
                :multiple="false"
                :on-success="onUploadSuccess"
                :action="'http://localhost:8202/admin/cmn/dict/importData'"
                class="upload-demo">
                <el-button size="small" type="primary">点击上传</el-button>
                <div slot="tip" class="el-upload__tip">只能上传xls文件, 且不超过500kb</div>
            </el-upload>
        </el-form-item>
    </el-form>
    <div slot="footer" class="dialog-footer">
        <el-button @click="dialogImportVisible = false">取消</el-button>
    </div>
</el-dialog>

C、添加弹出可见模型

// 定义数据
data() {
	return {
		list: [],
		listLoading: true,
		dialogImportVisible: false
	}
}

D、添加方法

importData() {
	this.dialogImportVisible = true
},

onUploadSuccess(response, file) {
	this.$message.info('上传成功')
	this.dialogImportVisible = false
  	this.fetchData()
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/9448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文解析】Deep Generative Models on 3D Representations: A Survey

文章目录内容组织结构3 FUNDAMENTALS3.1 Deep Generative ModelsGenerative Adversarial Networks.Variational AutoencodersNormalizing Flows.Diffusion ModelsEnergy-based model.3.2 3D RepresentationsVoxel gridsPoint cloudsMeshesNeural fieldsHybrid representation.4…

读《高性能MySQL》笔记---索引

索引是存储引擎用于快速找到记录的的一种数据结构。 索引的优点 索引大大减少服务器需要扫描的数据量。索引帮助服务器避免排序和临时表。索引将随机IO变为顺序IO。 说明&#xff1a; 顺序IO&#xff1a;是指读写操作的访问地址连续。在顺序IO访问中&#xff0c;HDD所需的磁…

生产环境日志还用notepad++?难怪定位慢,UltraEdit了解一下!

最近这两天运营部门反馈有会员的会员卡开卡时间与相关页面显示的开卡时间不一致&#xff0c;需要定位确定哪个时间是准确的。对于线上数据异常问题一定要谨慎处理&#xff0c;因为很有可能会是用户的某些非常规操作导致部分场景漏测。 对于这种数据异常的业务问题&#xff…

顺序存储二叉数(Java)

1、顺序存储二叉数 从存储角度来看&#xff0c;我们之前讲的树在存储结构上不是顺序存储的&#xff0c;都是非线性的存储结构&#xff0c;所以我们可以从数组的角度来分析&#xff0c;数组和树可以相互转换&#xff0c;数组可以转换成树&#xff0c;树也可以转换成数组&#x…

吗咿呀嘿-用js来搞个简单的人脸识别

缘起 “蚂蚁呀嘿&#xff0c;蚂蚁呀呼&#xff0c;蚂蚁呀哈” 相信最近好多人的朋友圈或者抖音都被类似视频刷过屏&#xff01; 类似的效果最早是在2020年初&#xff0c;那个时候大家应该还都记得&#xff0c;几乎所有的人都因为疫情原因被迫线上办公&#xff01; 工作当然离不…

mybatisPlus

第十一章&#xff1a;Mybatis_plus 第1节&#xff1a;简介 本章节主要介绍mybatisPlus是mybatis的增强工具&#xff0c;只做增强不做改变&#xff0c;不会对mybatis产生任何影响。它的主要优势具有无侵入、损耗小、强大的CRUD操作、支持 Lambda 形式调用、支持 ActiveRecord模…

向毕业妥协系列之机器学习笔记:无监督学习-异常检测

目录 一.发现异常事件 二.高斯正态分布 三.异常检测算法 四.开发与评估异常检测系统 五.异常检测与监督学习对比 六.选择使用什么特征 一.发现异常事件 下图的例子是飞机发动机的制造&#xff0c;有很多特征&#xff0c;我们为了方便讲解取其中的两个特征&#xff1a;发…

基于JavaWeb的小区物业管理系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

(1)paddle---在anaconda中安装paddle环境

1、 创建一个anaconda的环境 (1)创建 conda create --name chenpaddle_cp310 python=3.10 如果要删除 conda remove -n chenpaddle_cp310 --all (2)查看现有环境 conda env list #查看现有环境 2、安装 paddlepaddle (1)查看自己安装的cuda版本 nvidia-smi 发现…

java计算机毕业设计ssm+vue工商学院办公用品管理信息系统

项目介绍 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时…

Linux内存管理知识总结(一)

以下源代码来自 linux-5.10.3 内核代码&#xff0c;主要以 x86-32 为例 Linux 内存管理是一个很复杂的“工程”&#xff0c;它不仅仅是对物理内存的管理&#xff0c;也涉及到虚拟内存管理、内存交换和内存回收等 物理内存的探测 Linux 内核通过 detect_memory()函数实现对物…

2021年认证杯SPSSPRO杯数学建模B题(第一阶段)依巴谷星表中的毕星团求解全过程文档及程序

2021年认证杯SPSSPRO杯数学建模 B题 依巴谷星表中的毕星团 原题再现&#xff1a; 依巴谷卫星&#xff08;High Precision Parallax Collecting Satellite&#xff0c;缩写为 Hip-parcos&#xff09;&#xff0c;全称为“依巴谷高精度视差测量卫星”&#xff0c;是欧洲空间局发…

Java培训:重试实现高可用方案

1、背景介绍 随着互联网的发展项目中的业务功能越来越复杂&#xff0c;有一些基础服务我们不可避免的会去调用一些第三方的接口或者公司内其他项目中提供的服务&#xff0c;但是远程服务的健壮性和网络稳定性都是不可控因素。在测试阶段可能没有什么异常情况&#xff0c;但上…

Kubernetes存储机制认识

前言&#xff1a; 在Kubernetes系统中&#xff0c;将对容器应用所需的存储资源抽象为存储卷&#xff08;Volume&#xff09;。Volume是与Pod绑定的&#xff08;独立于容器&#xff09;与Pod具有相同生命周期的资源对象。 可以将Volume的内容理解为目录或文件&#xff0c;容器…

Sqoop Hook

环境: ambari大数据平台 sqoop版本1.4.7 hive版本3.1.0 Atlas版本2.2.0 Atlas使用官网给的sqoop hook 具体安装步骤 1、官网安装步骤:https://atlas.apache.org/#/HookSqoop 2、其他安装步骤:https://www.freesion.com/article/45701353391/ 根据以上两个安装的步骤可以解决…

Oracle LiveLabs实验:Automatic Partitioning in Autonomous Database

概述 此实验申请地址在这里。 实验帮助在这里。 此实验预估完成时间100分钟。 关于自治数据库自动分区的帮助文档&#xff0c;请参见这里。 这个实验设计得很好&#xff0c;推荐。 介绍 关于本研讨会 自治数据库中的自动分区分析您的应用程序工作负载&#xff0c;并自动…

使用Ubuntu演示介绍,Linux下安装和配置Redis、配置远程连接redis(保姆级教学)

安装redis 1、先在官网下载好Redis的安装包 Redis 官网&#xff1a;https://redis.io/ Redis 在线测试&#xff1a;http://try.redis.io/ Redis菜鸟教程&#xff1a; https://www.runoob.com/redis/redis-tutorial.html 2、把下载好的安装包放在Ubantu的共享文件夹下 3、Linu…

电商行业少不了的营销方式——邮件营销

邮件营销可以贯穿到客户购买商品的整个流程中&#xff0c;帮助企业以低成本的引流方式获取较高的销售额。邮件营销不同于其他营销方式&#xff0c;如果你获取了客户的邮件信息&#xff0c;可以和客户保持长期的联系&#xff0c;为品牌积累一定的客户资源。这种方式除了能够提升…

Ubuntu20.04.4 LTS正确安装方案及问题解决

Ubuntu20.04.4 LTS报错解决方案1. 开启系统功能支持2. 升级wsl3. 重新打开Ubuntu,输入用户名和密码完成安装4. 其它报错参考1. 开启系统功能支持 打开搜索,输入功能,进入启用或关闭Windows功能 开启适用于Linux的Windows子系统与虚拟机平台 注意: 这两个都得开, 不然会报错 …

MySQL索引理解

目录 什么是索引? 索引的好处 思考一个小问题, 索引这么好, 那是不是越多越好? 索引分类 索引的创建和删除 explain字段解释 索引底层数据结构 区分MyISAM和InnoDB存储引擎来再认知聚簇非聚簇索引 什么是索引? 索引: 类似于目录的帮助快速检索数据的一种数据结构. 辅…