Java EasyExcel 导入代码

Java EasyExcel 导入代码

导入方法

/*** 仓库库位导入** @param req* @param res* @param files* @throws Exception*/@RequestMapping(value = {"/import/line_store_locs"}, method = {RequestMethod.POST})@ResponseBodypublic void importStoreLoc(HttpServletRequest req, HttpServletResponse res, @RequestParam("file") MultipartFile[] files) throws Exception {//获取文件流List<LineStoreLocMode> tempList = new ArrayList<>();if (files != null && files.length != 0) {//获取文件流EasyExcel.read(files[0].getInputStream(), LineStoreLocMode.class, new PageReadListener<LineStoreLocMode>(dataList -> {for (LineStoreLocMode demoData : dataList) {tempList.add(demoData);}})).sheet().doRead();}if (ValueUtil.isEmpty(tempList)) {return;}// 仓库Query query = new Query();List<LineStore> lineStoreList = this.selectList("line_stores", query, LineStore.class);// 型号尺寸List<ModelSize> modelSizeList = this.selectList("model_sizes", query, ModelSize.class);List<LineStoreLoc> locList = new ArrayList<>();for(LineStoreLocMode vo : tempList){List<String> modelList = new ArrayList<>();if(vo.getModelSizeStr().contains("、")){String[] modelSizeArr = vo.getModelSizeStr().split("、");modelList = Arrays.asList(modelSizeArr);}else {modelList.add(vo.getModelSizeStr());}for(String modelName : modelList){LineStoreLoc lineStoreLoc = new LineStoreLoc();LineStore lineStore  = lineStoreList.stream().filter(e -> vo.getStoreName().equals(e.getName())).collect(Collectors.toList()).get(0);lineStoreLoc.setLineStoreId(lineStore.getId());   // 仓库lineStoreLoc.setSegment2Id(vo.getSegment2Id());   // 库区编码lineStoreLoc.setSegment3Id(vo.getSegment3Id());   // 库区名称lineStoreLoc.setName(vo.getName());     // 库位编码lineStoreLoc.setDescription(vo.getDescription());       // 库位名称lineStoreLoc.setProdSubcatName(vo.getProdSubcatName());  // 产品小分类lineStoreLoc.setWarehouseCapcity(vo.getWarehouseCapcity());     // 仓库容量lineStoreLoc.setCapcityUnit(vo.getCapcityUnit());    // 容量单位lineStoreLoc.setSegment1Id(vo.getSegment1Id());     // 备注ModelSize modelSize = modelSizeList.stream().filter(e -> modelName.equals(e.getName())).collect(Collectors.toList()).get(0);lineStoreLoc.setModelSizeId(modelSize.getId());   // 型号尺寸locList.add(lineStoreLoc);}}// 数据插入insertData(locList);}

50条插入一次的方法

private void insertData(List<LineStoreLoc> matCrList){// 每次只插入100条数据List<LineStoreLoc> insertInfoList = new ArrayList<>();int i = 0;for(LineStoreLoc vo : matCrList){insertInfoList.add(vo);i++;if(i >= 50){this.insertBatch(insertInfoList);i = 0;insertInfoList.clear();}}// 剩余条数全部保存this.insertBatch(insertInfoList);}

接收数据的实体

package xyz.xmes.cust.monitorsystem.model;import com.alibaba.excel.annotation.ExcelProperty;/*** @Description: 仓库库位管理导入* @Date: Create in 18:44 2023/12/27*/
public class LineStoreLocMode {@ExcelProperty("仓库编码")private String storeName;       // 关联到 LINE_STORES 中查询 Id@ExcelProperty("库区编码")private String segment2Id;@ExcelProperty("库区名称")private String segment3Id;@ExcelProperty("库位编码")private String name;@ExcelProperty("库位名称")private String description;@ExcelProperty("产品小分类")private String prodSubcatName;     // 不用拆分@ExcelProperty("型号尺寸")private String modelSizeStr;    // 需要拆分@ExcelProperty("仓库容量")private String warehouseCapcity;@ExcelProperty("容量单位")private String capcityUnit;@ExcelProperty("备注")private String segment1Id;public String getStoreName() {return storeName;}public void setStoreName(String storeName) {this.storeName = storeName;}public String getSegment2Id() {return segment2Id;}public void setSegment2Id(String segment2Id) {this.segment2Id = segment2Id;}public String getSegment3Id() {return segment3Id;}public void setSegment3Id(String segment3Id) {this.segment3Id = segment3Id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public String getProdSubcatName() {return prodSubcatName;}public void setProdSubcatName(String prodSubcatName) {this.prodSubcatName = prodSubcatName;}public String getModelSizeStr() {return modelSizeStr;}public void setModelSizeStr(String modelSizeStr) {this.modelSizeStr = modelSizeStr;}public String getWarehouseCapcity() {return warehouseCapcity;}public void setWarehouseCapcity(String warehouseCapcity) {this.warehouseCapcity = warehouseCapcity;}public String getCapcityUnit() {return capcityUnit;}public void setCapcityUnit(String capcityUnit) {this.capcityUnit = capcityUnit;}public String getSegment1Id() {return segment1Id;}public void setSegment1Id(String segment1Id) {this.segment1Id = segment1Id;}
}

Postman 上传文件

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

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

相关文章

MySQL 索引、事务与存储引擎

MySQL 索引 索引的概念 索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址&#xff08;类似于C语言的链表通过指针指向数据记录的内存地址&#xff09;。使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是先通过索引…

一种适合企业的大体量数据迁移方式

在企业进行数字化转型的过程中&#xff0c;数据迁移是一项至关重要的任务。无论是从旧系统到新系统、从本地数据中心到云端&#xff0c;还是在不同云服务提供商之间进行数据迁移&#xff0c;数据的顺利转移对业务的成功至关重要。 然而&#xff0c;随着数据体量的不断增加&…

[SWPUCTF 2021 新生赛]sql

[SWPUCTF 2021 新生赛]sql wp 输入 1 正常回显&#xff1a; ?wllm1 返回&#xff1a; Want Me? Cross the Waf Your Login name:xxx Your Password:yyy输入单引号引发报错&#xff1a; ?wllm1 返回&#xff1a; Want Me? Cross the Waf You have an error in your SQL s…

ios环境搭建_xcode安装及运行源码

目录 1 xcode 介绍 2 xcode 下载 3 xocde 运行ios源码 1 xcode 介绍 Xcode 是运行在操作系统Mac OS X上的集成开发工具&#xff08;IDE&#xff09;&#xff0c;由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计&#xff0…

为什么IDEA建议去掉StringBuilder,而要使用“+”拼接字符串

在字符串拼接时应该都见过下面这种提示&#xff1a; 大家普遍认知中&#xff0c;字符串拼接要用StringBuilder&#xff0c;那为什么idea会建议你是用呢&#xff0c;那到底StringBuilder和有什么具体区别呢&#xff0c;我们一起来探究一下。 普通拼接 普通的几个字符串拼接成一…

0基础学习VR全景平台篇第132篇:曝光三要素—快门速度

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 经过前面两节课的学习我们认识了曝光三要素中的感光度和光圈&#xff0c;这节课我们将一同去了解影响曝光的最后一个要素——快门速度。 (曝光三要素&#xff1a;感光度、光圈、…

YOLOv8算法优化:解决YOLOv8无法打印计算量(GFLOPs)的问题点

💡💡💡本文内容:解决YOLOv8无法打印计算量的问题点 💡💡💡本文提供:1)训练阶段自动打印计算量;2)提供离线打印计算量的代码; 1.计算量介绍 FLOPS:注意S是大写,是 “每秒所执行的浮点运算次数”(floating-point operations per second)的缩写。它常被用…

低信噪比环境下的语音端点检测

端点检测技术 是 语音信号处理 的关键技术之一为提高低信噪比环境下端点检测的准确率和稳健性&#xff0c;提出了一种非平稳噪声抑制和调制域谱减结合功率 归一化 倒谱距离的端点检测算法 1 端点检测 1-1 定义 定义&#xff1a;在 存在背景噪声 的情况下检测出 语音的起始点和…

2022年全球软件质量效能大会(QECon北京站2022)-核心PPT资料下载

一、峰会简介 当前&#xff0c;新一轮科技革命和产业变革正在重塑全球经济格局&#xff0c;以云计算为代表的新一代信息技术创新活跃&#xff0c;与实体经济深度融合&#xff0c;推动泛在连接、数据驱动、智能引领的数字经济新形式孕育而生。 新兴技术的出现给测试乃至整个软…

Vue(一):Vue 入门与 Vue 指令

Vue 01. Vue 快速上手 1.1 Vue 的基本概念 用于 构建用户界面 的 渐进性 框架 构建用户界面&#xff1a;基于数据去渲染用户看到的界面渐进式&#xff1a;不需要学习全部的语法就能完成一些功能&#xff0c;学习是循序渐进的框架&#xff1a;一套完整的项目解决方案&#x…

ftp服务器(hcia)

原理 客户端 对服务器的访问 传输和下载数据 FTP (File Transfer Protocol)–21端口 FTP传输文件有两种方法: 浏览器 软件 SFTP(Secure File Transfer Protocol)–22端口 SFTP增加了一个安全层&#xff0c;SFTP会把数据加密后进行传输&#xff0c;但更安全带来副…

VSCode 如何安装插件的历史版本

背景 在日常开发过程中&#xff0c;我们可能会遇到新版VSCode插件存在问题&#xff0c;无法正常工作的情况。这种情况下&#xff0c;一种可行的解决方案就是安装插件的历史版本。VSCode 插件默认安装的都是插件最新的版本&#xff0c;例如下面 vscode-styled-compoents 插件 本…

Kubeadmin实现k8s集群:

Kubeadmin来快速搭建一个k8s集群&#xff1a; 二进制搭建适合大集群&#xff0c;50台以上的主机&#xff0c; 但是kubeadm更适合中小企业的业务集群 环境&#xff1a; Master&#xff1a;20.0.0.71 2核4G 或者4核8G docker kubelet kubectl flannel Node1&#xff1a;20.…

ROS MoveIt!

MoveIt!是一个用于ROS的开源运动规划库&#xff0c;提供多种功能&#xff0c;包括用于运动规划的快速逆运动学分析、用于操纵的高级算法、机械手控制、动力学、控制器和运动规划。&#xff08;通过提供一个GUI来协助MoveIt!所需的各种设置&#xff0c;它允许使用RViz进行视觉反…

TCP 滑动窗口

滑动窗口&#xff08;Sliding window&#xff09;是一种流量控制技术。早期的网络通信中&#xff0c;通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况&#xff0c;同时发送数据&#xff0c;导致中间节点阻塞掉包&#xff0c;谁也发不了数据&#xff0…

RustDesk连接客户端提示key不匹配 Key Mismatch无法连接(已解决)

环境: RustDesk1.1.9 服务端docker部署 问题描述: RustDesk连接客户端提示key不匹配 Key Mismatch无法连接 解决方案: 1.docker部署RustDesk服务检查配置 networks:rustdesk-net:external: falsevolumes:hbbr:hbbs:services:hbbs:container_name: rustdesk-hbbsport…

Python入门-字符串Str

字符串 字符串 是Python中的 不可变 数据类型 1.字符串相关处理方法 大小写转换 # 大小写转换 s1HelloWorld new_s2s1.lower() print(s1,new_s2)new_s3s1.upper() print(new_s3)结果&#xff1a; D:\Python_Home\venv\Scripts\python.exe D:\Python_Home\chap6\示例6-1字符…

C#高级 01.Net多线程

一.基本概念 1.什么是线程&#xff1f; 线程是操作系统中能独立运行的最小单位&#xff0c;也是程序中能并发执行的一段指令序列线程是进程的一部分&#xff0c;一个进程可以包含多个线程&#xff0c;这些线程共享进程资源进程有线程入口&#xff0c;也可以创建更多的线程 2.…

关于Zoom ZTP和AudioCodes Ltd桌面电话缺陷暴露,导致用户遭受窃听的动态情报

一、基本内容 近期SySS安全研究员发布分析报告显示&#xff0c;Zoom的零接触&#xff08;ZTP&#xff09;和AudioCodes Ltd桌面电话配置功能中发现高危漏洞&#xff0c;可以获得对设备的完全远程控制并不受限制的访问可以被武器化&#xff0c;以窃听房间或电话、通过设备并攻击…

华为鸿蒙(HarmonyOS)介绍

华为鸿蒙&#xff08;HarmonyOS&#xff09;介绍 华为鸿蒙&#xff08;HarmonyOS&#xff09;是一款由华为自主研发的操作系统&#xff0c;旨在为各种智能设备提供一种统一、高效、安全的解决方案。鸿蒙系统基于微内核架构&#xff0c;可以应用于多种类型的设备&#xff0c;鸿…