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 上传文件

相关文章:
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 …...
2024,5G-A风起,中兴通讯破浪
对于通信圈而言,2024年最关键的里程碑,当属3GPP R18版本即将冻结。作为5G国际标准化组织,3GPP的意义是推动成员公司、工作组和技术规范的研究,让5G发展更有章法。 放眼整个5G技术的演进,其实大致分为两个阶段。第一阶段…...
SuperMap Hi-Fi 3D SDK for Unity矢量面贴地贴模型
作者:kele 一、背景 SuperMap Hi-Fi 3D SDK(2023 11i) for Unity推出新功能:支持矢量面同时贴地形图层和模型图层,并且能实现数据点击查询属性、更改初始填充颜色、初始边框线颜色、选中填充颜色、选中边框线颜色、控…...
【DB2】Maxlocks和防止锁升级
数据库在对行操作的时候,为了避免多个作业互相覆盖影响数据准确性,在进行操作(尤其是写操作)的时候会上锁,同一时间只有一个作业可以修改数值 对行上锁,为了记录锁的信息,所以会占用一定的内存…...
网工内推 | 网络服务工程师,HCIE认证优先,带薪年假,年终奖
01 高凌信息 招聘岗位:服务工程师(珠海) 职责描述: 1、负责华为数通(交换机、路由器)、IT(服务器、存储)等任一或多个产品领域的项目实施交付; 2、独立完成华为数通&…...
TrustZone之可信固件
Trusted Firmware是Armv8-A设备的安全世界软件的开源参考实现。Trusted Firmware为SoC开发人员和OEM提供了一个符合相关Arm规格(包括TBBR和SMCC)的参考Trusted代码库。 以下图表显示了Trusted Firmware的结构: SMC调度程序处理传入的SMC。SMC…...
Visual Studio 2013 中创建一个基于 Qt 的动态链接库:并在MFC DLL程序中使用
在本地已经安装好 Qt 的情况下,按照以下步骤在 Visual Studio 2013 中创建一个基于 Qt 的动态链接库: 一、新建 Qt 项目: 在 Visual Studio 中,选择 “文件” -> “新建” -> “项目…”。在 “新建项目” 对话框中&#…...
云计算:OpenStack 配置云主机实例的资源实现内网互通
目录 一、实验 1. 环境 2.配置项目及用户 3.配置规格实例与镜像 4.配置VPC 5. 配置安全组 6. 创建云主机 cs_01 (cirros系统) 7.创建云主机 cs_02 (cirros系统) 一、实验 1. 环境 (1)宿主机 表1…...
Android原生实现单选
六年前写的一个控件,一直没有时间总结,趁年底不怎么忙,整理一下之前写过的组件。供大家一起参考学习。废话不多说,先上图。 一、效果图 实现思路使用的是radioGroup加radiobutton组合方式。原理就是通过修改RadioButton 的backgr…...
为什么需要对数值类型的特征做归一化?
对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。最常用的方法有以下两种: (1)线性函数归一化(Min-Max Scaling) 它对原始数据进行线性变换,使结果映射到【0,1】的范围&…...
ARM 点灯
.text .global _start _start: led1设置GPIOE时钟使能 RCC_MP_AHB4ENSETR[4]->1 0X50000A28LDR R0,0X50000A28 指定寄存器地址LDR R1,[R0] 将寄存器数值取出来放在R1中ORR R1,R1,#(0x1<<4) 将第4位设置为1STR R1,[R0] 将修改后的值写回去设置PE10为输出 GPIOE…...
CamSim相机模拟器:极大加速图像处理开发与验证过程
随着图像处理技术的不断发展,相机模拟在图像处理开发和验证中扮演着越来越重要的角色。相机模拟能够模拟真实相机的成像过程,提供高质量的图像输入,使开发人员能够更好地评估和调整图像处理算法。本文将探讨如何通过相机模拟来加速图像处理的…...
Google Ad帐号被封?代理IP和电子邮件可能是原因
海外广告投放工作中,账号是非常重要的环节。与在Facebook上运行广告相比,运行Google Ads在代理选择方面通常没有那么严格,因为 Google 对 IP 使用并不那么严格。但是,这并不意味着您可以不加考虑地使用任何代理IP。在本文中&#…...
EfficientNet
时间:2019 EfficicentNet网络简介 EfficientNet:Rethinking Model Scaling for Convolutional Neural Networkshttps://arxiv.org/abs/1905.11946,这篇论文是Google在2019年发表的文章。 EfficientNet这篇论文,作者同时关于输入分辨率,网络…...
百度每天20%新增代码由AI生成,Comate SaaS服务8000家客户 采纳率超40%
12月28日,由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT深度学习开发者大会2023在北京召开。百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰现场公布了飞桨文心五载十届最新生态成果,文心一言最新用户规模破1亿,截…...
产品管理-学习笔记-版本的划分
版本号说明【X.Y.Z_修饰词】 版本号定义原则X表示大版本号,一般当产品出现重大更新、调整、不再向后兼容的情况时我们会在X上加1Y表示功能更新,在产品原有的基础上增加、修改部分功能,且并不影响产品的整体流程或业务Z表示小修改,…...
编程笔记 html5cssjs 004 我的第一个页面
编程笔记 html5&css&js 004 我的第一个页面 一、基本结构二、HTML标签三、HTML元素四、HTML属性五、编写第一个网页六、使用VSCODE小结 开始编写网页,并且使用第一个网页成为一个母板,用于完成后续内容的学习。有一个基本要求,显示结…...
为实体服务器配置Ubuntu
简介 我们在使用虚拟机时,直接在网上找到镜像然后下载到本地,在VMware创建实例时将该iso文件作为镜像源然后进行基础配置就可以轻松安装配置好Linux虚拟机。 在为实体服务器安装Linux系统,同样的,我们也需要镜像源(即…...
单例模式的双重检查锁定是什么?
单例模式的双重检查锁定是什么? 单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。双重检查锁定(Double-Checked Locking)是一种在单例模式中使用的性能优化技术。 在传统的单例模式…...
hyper-v ubuntu 3节点 k8s集群搭建
前奏 搭建一主二从的k8s集群,如图所示,准备3台虚拟机。 不会创建的同学,可以看我上上篇博客:https://blog.csdn.net/dawnto/article/details/135086252 和上篇博客:https://blog.csdn.net/dawnto/article/details/135…...
告别抓包烦恼:用Mitmproxy + Python脚本自动解密App接口数据(保姆级实战)
移动端App接口数据解密实战:Mitmproxy与Python自动化逆向分析 在移动应用安全测试和逆向工程领域,App与服务器之间的加密通信一直是分析人员的重点攻克对象。当面对一个网络请求被深度加密的App时,传统抓包工具往往只能展示一堆"乱码&qu…...
别只盯着TPS!用JMeter汇总报告做一次完整的性能瓶颈分析实战
别只盯着TPS!用JMeter汇总报告做一次完整的性能瓶颈分析实战 在性能测试领域,JMeter的汇总报告(Summary Report)是最常用的监听器之一,但很多测试工程师往往只关注其中的TPS(每秒事务数)指标&am…...
TensorFlow GPU内存分配失败怎么办?教你一招避坑
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 TensorFlow GPU内存分配失败的终极解决方案:一招避坑指南 目录 TensorFlow GPU内存分配失败的终极解决方案࿱…...
32dB增益+79%效率:HT20340S在工业射频能源中的高能效设计
HT20340S:400W LDMOS宽带射频功率放大器在大功率射频能量应用、工业加热、等离子体激励以及宽带通信等领域,功率放大器(PA)的性能直接决定了系统的发射效率与作用距离。当需要在10MHz至300MHz的宽带范围内实现数百瓦的连续波输出时…...
零基础想学挖漏洞?普通人也能看懂的网络安全入门学习路线(建议收藏)
很多人对网络安全的第一印象:黑客、代码、入侵、黑框代码疯狂滚动、随手就能让ATM吐钱,随手一个漏洞几千上万,日进斗金!!! 但真实情况是:90%零基础新人不会挖漏洞,不是天赋不够&…...
SAP PP实战指南:从零到一掌握BOM创建、群组BOM配置与CS01核心操作
1. BOM基础概念与核心价值 物料清单(Bill of Materials,简称BOM)是制造业的DNA图谱,它用结构化数据描述产品从原材料到成品的完整演化路径。我第一次接触SAP PP模块时,项目经理指着屏幕上的BOM结构说:"…...
Perplexity营养分析准确率跃升至92.4%(临床营养师实测验证版)
更多请点击: https://codechina.net 第一章:Perplexity营养饮食查询 Perplexity 是一款基于大语言模型的实时问答引擎,其核心优势在于可直接引用权威来源(如 USDA FoodData Central、WHO 营养指南、PubMed 文献等)进…...
【Python自动化】PyAutoGUI构建游戏稳定性测试守护脚本
1. PyAutoGUI在游戏测试中的核心价值 游戏稳定性测试往往需要长时间运行,人工值守既低效又容易遗漏异常。PyAutoGUI作为Python的GUI自动化利器,能完美模拟鼠标键盘操作,配合进程监控和图像识别,构建724小时无人值守的测试环境。我…...
初创公司利用taotoken token plan在ai原型开发期控制成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创公司利用 Taotoken Token Plan 在 AI 原型开发期控制成本 对于一家处于产品原型快速迭代阶段的 AI 初创公司而言,技…...
vue-fastapi-admin项目扩展与二次开发:插件化架构设计思路
vue-fastapi-admin项目扩展与二次开发:插件化架构设计思路 【免费下载链接】vue-fastapi-admin ⭐️ 基于 FastAPIVue3Naive UI 的现代化轻量管理平台 A modern and lightweight management platform based on FastAPI, Vue3, and Naive UI. 项目地址: https://gi…...
