Excel导入预览与下载

在这里插入图片描述

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


Excel导入预览与下载

preview

  • Controller
 @PostMapping("preview")@ApiOperation("上传拒付预警预览")public Result<List<ResChargebackWarnPreview>> preview(@RequestParam(name = "file", required = false) MultipartFile file) {return Result.succ(chargebackWarnService.analysisUploadFile(file, true).getList());}
  • Service
@PostMapping("preview")
@ApiOperation("上传拒付预警预览")
public Result<List<ResChargebackWarnPreview>> preview(@RequestParam(name = "file", required = false) MultipartFile file) {// 上传拒付预警预览的API接口// 接收一个名为"file"的可选的MultipartFile类型的请求参数return Result.succ(chargebackWarnService.analysisUploadFile(file, true).getList());
}public ResChargebackWarnUpload analysisUploadFile(MultipartFile file, boolean isPreview) {// 解析上传的文件并进行拒付预警分析// 返回一个ResChargebackWarnUpload对象// 创建一个用于拼接错误信息的StringJoiner对象StringJoiner joiner = new StringJoiner("<br/>");// 创建一个ResChargebackWarnUpload对象ResChargebackWarnUpload res = new ResChargebackWarnUpload();// 创建一个空的TransactionChargebackWarn列表,用于存储拒付预警数据List<TransactionChargebackWarn> chargebackWarns = new ArrayList<>();// 创建用于存储预览成功和预览错误数据的列表List<ResChargebackWarnPreview> previewSuccess = new ArrayList<>();List<ResChargebackWarnPreview> previewError = new ArrayList<>();// 创建一个ChargebackWarnFile列表,用于存储解析后的文件数据List<ChargebackWarnFile> list;try {// 使用Lombok的@Cleanup注解自动关闭输入流@CleanupInputStream inputStream = file.getInputStream();// 获取上传文件的原始文件名,并转换为小写String filename = file.getOriginalFilename().toLowerCase();// 检查文件名是否包含"拒付"关键字,如果不包含则抛出异常if (!(filename.contains("拒付"))) {throw new ManageException("请传入正确的 拒付 文件上传模板");}// 解析上传的拒付预警文件,将其转换为ChargebackWarnFile对象列表list = analysisChargebackWarnFile(ChargebackWarnFile.class, inputStream);// 遍历ChargebackWarnFile对象列表for (ChargebackWarnFile bean : list) {ResChargebackWarnPreview preview;// 如果当前数据存在错误,则将错误信息添加到joiner中,并创建一个ResChargebackWarnPreview对象添加到previewError列表中if (bean.isError()) {joiner.add(bean.getIndex() + ": " + bean.getErrorMessage());preview = new ResChargebackWarnPreview(bean.getIndex(), bean.getErrorMessage());previewError.add(preview);} else {// 如果当前数据没有错误,则根据数据的不同情况进行处理,并创建一个TransactionChargebackWarn对象添加到chargebackWarns列表中// 同时创建一个ResChargebackWarnPreview对象添加到previewSuccess列表中// ...}}// 根据isPreview参数判断是否执行导入操作if (!isPreview) {// 如果不是预览操作,检查是否存在预览错误数据,如果存在则抛出异常if (!previewError.isEmpty()) {throw new ManageException("该文件内包含错误数据,不可进行导入");}// 执行导入操作,将chargebackWarns列表中的数据保存到数据库中// ...}} catch (IOException e) {e.printStackTrace();}// 设置ResChargebackWarnUpload对象的属性值res.setChargebackWarns(chargebackWarns);// 根据预览错误数据是否为空,设置ResChargebackWarnUpload对象的其他属性值if (!previewError.isEmpty()) {res.setList(previewError);res.setPreviewTotal(previewError.size());} else {res.setList(previewSuccess);res.setPreviewTotal(previewSuccess.size());}res.setMessage(joiner.toString());return res;
}public <T extends ChargebackWarnFile> List<ChargebackWarnFile> analysisChargebackWarnFile(Class<T> clazz, InputStream is) {// 解析拒付预警文件并转换为ChargebackWarnFile对象列表// 返回ChargebackWarnFile对象列表// 使用ExcelTools工具类将Excel文件转换为指定类型的对象列表List<T> list = ExcelTools.excelToList(clazz, is);// 创建一个ChargebackWarnFile列表,用于存储解析后的文件数据List<ChargebackWarnFile> files = new ArrayList<>();// 遍历ChargebackWarnFile对象列表for (int i = 0; i < list.size(); i++) {int index = i + 1;T bean = list.get(i);try {// 对当前数据进行各种验证和处理// ...// 将验证通过的数据封装为ChargebackWarnFile对象,并添加到files列表中// ...} catch (Exception e) {// 如果验证或处理过程中出现异常,则创建一个带有错误信息的ChargebackWarnFile对象,并添加到files列表中files.add(new ChargebackWarnFile(index, e.getMessage()));}}return files;
}

download

  • Controller
 @GetMapping("download")@ApiOperation("拒付预警列表下载")public void download(@Validated ChargebackWarnQuery query) {try {ExcelTools.download(httpServletResponse, ChargebackWarnDownload.class, chargebackWarnService.listChargebackWarnDownload(query), "ChargebackWarns");} catch (IOException e) {throw new RuntimeException(e);}}
  • Service
   public List<ChargebackWarnDownload> listChargebackWarnDownload(ChargebackWarnQuery query) {List<TransactionChargebackWarn> list = transactionChargebackWarnRepo.list(MSearchTools.createQueryWrapper(TransactionChargebackWarn.class, query));return list.stream().map(ChargebackWarnDownload::orderOf).collect(Collectors.toList());}

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


在这里插入图片描述

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

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

相关文章

CFS三层靶机

参考博客&#xff1a; CFS三层内网靶场渗透记录【详细指南】 - FreeBuf网络安全行业门户 CFS三层靶机搭建及其内网渗透【附靶场环境】 | TeamsSix CFS三层网络环境靶场实战 - PANDA墨森 - 博客园 (cnblogs.com) CFS三层靶机实战--内网横向渗透 - 知乎 (zhihu.com) CFS靶机…

使用正点原子i.mx6ull加载字符驱动模块chrdevbase

搞了整整两天才整好&#xff01;踩了不少坑&#xff0c;记录一下 0. 操作基础 操作前需要设置好如下配置 1.开发板和ubuntu能够互相ping通 2.开发板的SD卡中安装好uboot&#xff0c;我用的V2.4版本的&#xff0c;其他版本应该也行 3.准备材料 01_chrdevbase文件 linux-im…

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核内存管理-静态内存

目录 一、内存管理二、静态内存2.1、静态内存运行机制2.2、静态内存开发流程2.3、静态内存接口2.4、实例2.5、代码分析&#xff08;待续...&#xff09;坚持就有收货 一、内存管理 内存管理模块管理系统的内存资源&#xff0c;它是操作系统的核心模块之一&#xff0c;主要包括…

蓝桥杯每日一题------背包问题(三)

前言 之前求的是在特点情况下选择一些物品让其价值最大&#xff0c;这里求的是方案数以及具体的方案。 背包问题求方案数 既然要求方案数&#xff0c;那么就需要一个新的数组来记录方案数。动态规划步骤如下&#xff0c; 定义dp数组 第一步&#xff1a;缩小规模。考虑n个物品…

Spring Boot 笔记 017 创建接口_新增文章

1.1实体类增加校验注释 1.1.1 自定义校验 1.1.1.1 自定义注解 package com.geji.anno;import com.geji.validation.StateValidation; import jakarta.validation.Constraint; import jakarta.validation.Payload; import jakarta.validation.constraints.NotEmpty;import jav…

Qt:自定义信号,信号emit,传参问题,信号槽与moc

一、自定义信号&#xff0c;信号emit 1、自定义信号 在头文件中 加入signals&#xff1a; 就可以编写信号 2、emit emit的作用是通知信号发生 二、跨UI控件传参 每次按Dialog添加按钮主控件数字会增长 // .h private slots:void on_btnAdd_clicked(); signals:void sign…

《区块链公链数据分析简易速速上手小册》第8章:实战案例研究(2024 最新版)

文章目录 8.1 案例分析&#xff1a;投资决策支持8.1.1 基础知识8.1.2 重点案例&#xff1a;股票市场趋势预测准备工作实现步骤步骤1: 加载和准备数据步骤2: 特征工程步骤3: 训练模型步骤4: 评估模型 结论 8.1.3 拓展案例 1&#xff1a;基于情感分析的投资策略准备工作实现步骤步…

C# winfrom中NPOI操作EXCEL

前言 1.整个Excel表格叫做工作表&#xff1a;WorkBook&#xff08;工作薄&#xff09;&#xff0c;包含的叫页&#xff08;工作表&#xff09;&#xff1a;Sheet&#xff1b;行&#xff1a;Row&#xff1b;单元格Cell。 2.忘了告诉大家npoi是做什么的了&#xff0c;npoi 能够读…

每日五道java面试题之java基础篇(八)

目录&#xff1a; 第一题.CopyOnWriteArrayList的底层原理是怎样的第二题.Java中有哪些类加载器第三题. 说说类加载器双亲委派模型第四题. GC如何判断对象可以被回收第五题.JVM中哪些是线程共享区 第一题.CopyOnWriteArrayList的底层原理是怎样的 ⾸先CopyOnWriteArrayList内部…

游戏开发的编程算不算是IT行业中难度最大的?

游戏开发的编程算不算是IT行业中难度最大的&#xff1f; 游戏作为当今数字娱乐领域中最引人入胜的产品之一&#xff0c;其背后所依托的程序开发能力也备受关注。作为游戏开发过程中的“幕后英雄”&#xff0c;编程工作的难易程度直接影响到游戏的质量体验和开发效率。 关于游…

Python dict函数

Python中的字典&#xff08;dict&#xff09;是一种非常重要且灵活的数据结构&#xff0c;它提供了键值对的存储和访问机制。字典函数&#xff08;dict()&#xff09;作为创建字典的工具之一&#xff0c;可以从多种数据结构中创建字典对象。在本文中&#xff0c;将深入探讨dict…

算法刷题:有效三角形个数

有效三角形个数 .题目链接题目详情算法原理补充知识点双指针:对撞指针 我的答案 . 题目链接 有效三角形个数 题目详情 算法原理 补充知识点 有效三角形需要满足的条件: ab>cac>bbc>a 其实在满足1的时候,c是最大的,那么2和3是显然成立的,因此我们可以这样解题: 对…

华为OD机试 - 分配土地( Python C C++ JavaGo JS PHP)

题目描述 从前有个村庄&#xff0c;村民们在各种田地上插上小旗子&#xff0c;每个旗子上都标识了一个数字。现在&#xff0c;村民们想要找出一个包含相同数字的最小矩形区域&#xff0c;并将这块土地分配给对村庄做出巨大贡献的村民。我们需要找出这个矩形区域的最大面积。 …

分享个CSDN自定义模块模板

在开了会员或升级为博客专家后&#xff0c;才有这个自定义模块的权限 当然这也是为了有很多粉丝的博主更方便的推广一些业务场景展示的橱窗 自定义模块管理 下面就列下我使用的自定义模块相关的代码 <marquee><b><font color"#8A2BE2">不</…

[WinForm开源]概率计算器 - Genshin Impact(V1.0)

创作目的&#xff1a;为方便旅行者估算自己拥有的纠缠之缘能否达到自己的目的&#xff0c;作者使用C#开发了一款小型软件供旅行者参考使用。 创作说明&#xff1a;此软件所涉及到的一切概率与规则完全按照游戏《原神》(V4.4.0)内公示的概率与规则&#xff08;包括保底机制&…

猫头虎分享已解决Bug || DNS解析问题(DNS Resolution Issue):DNSLookupFailure, DNSResolveError

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

大学生必备搜题软件推荐?找题不再难!好用的大学搜题工具推荐 #媒体#职场发展

在快节奏的大学生活中&#xff0c;合理利用这些日常学习工具&#xff0c;能够让你事半功倍&#xff0c;提高学习效率。 1.茱莉亚公开课 茱莉亚公开课APP不是一款针对所有人的应用&#xff0c;是针对对艺术有特殊爱好和艺术领域的人 茱莉亚音乐学院里面都是世界著名的茱莉亚音…

Vulhub kali 环境安装教程

进入 root 权限 sudo su 更新软件 apt-get update 安装 HTTPS 协议和 CA 证书 apt-get install -y apt-transport-https ca-certificates 安装 docker apt install docker.io 查看 docker 是否安装完成 docker -v 安装 pip apt-get install python3-pip 安装 docker-compose do…

Linux第57步_“linux系统镜像”和“根文件系统”重新打包小结

实时总结是很重要的&#xff0c;时间久了&#xff0c;可能会遗忘。下面是“linux系统镜像”和“根文件系统”重新打包小结。 1、linux系统镜像重新打包 在第1次完成linux系统镜像打包后&#xff0c;再重新打包就很容易了 将“bootfs”重新打包 准备打包文件: 输入“cd /ho…

(10)Hive的相关概念——文件格式和数据压缩

目录 一、文件格式 1.1 列式存储和行式存储 1.1.1 行存储的特点 1.1.2 列存储的特点 1.2 TextFile 1.3 SequenceFile 1.4 Parquet 1.5 ORC 二、数据压缩 2.1 数据压缩-概述 2.1.1 压缩的优点 2.1.2 压缩的缺点 2.2 Hive中压缩配置 2.2.1 开启Map输出阶段压缩&…