Java EasyExcel 导入代码

news/2024/11/8 20:54:39/

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.ppmy.cn/news/1287159.html

相关文章

机器学习之BP神经网络精讲(Backpropagation Neural Network(附案例代码))

概念 BP神经网络(Backpropagation Neural Network)是一种常见的人工神经网络,它通过反向传播算法来训练网络,调整连接权重以最小化预测输出与实际输出之间的误差。这种网络结构包含输入层、隐藏层和输出层,使用梯度下降算法来优化权重。 结构: BP神经网络(Backpropag…

【HarmonyOS】ArkTS语言介绍与组件方式运用

从今天开始&#xff0c;博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”&#xff0c;对于刚接触这项技术的小伙伴在学习鸿蒙开发之前&#xff0c;有必要先了解一下鸿蒙&#xff0c;从你的角度来讲&#xff0c;你认为什么是鸿蒙呢&#xff1f;它出现的意义又是…

轻量封装WebGPU渲染系统示例<55>- 顶点数据更新

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/VertexUpdateTest.ts 当前示例运行效果: ​​​​​​​ 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下: export class VertexUpdateTest {pr…

Element-Ui树形数据懒加载,删除到最后一个空数组不刷新问题

使用elemenui树形删除数据的时候刷新页面&#xff0c;我在网上找了好多方法&#xff0c;要么没用&#xff0c;要么都是部分代码&#xff0c;自己又看不懂&#xff0c;不得不硬着头皮看源码&#xff0c;发现了有个方法可以刷新。 使用elemenui树形删除数据的时候刷新页面。源码里…

【PHP】函数array_reduce()使用场景

目录 1.计算数组中所有元素的和 2.计算数组中所有元素的乘积 3.将多个字符串连接在一起 4.对数组中的元素进行逻辑计算 5.取出第一个满足条件的数组&#xff0c;筛选有用数组 6.array_reduce()函数的基本语法&#xff1a; array_reduce 函数通常用于对数组中的元素进行累…

数据结构 模拟实现LinkedList单向不循环链表

目录 一、链表的简单介绍 二、链表的接口 三、链表的方法实现 &#xff08;1&#xff09;display方法 &#xff08;2&#xff09;size得到单链表的长度方法 &#xff08;3&#xff09;addFirst头插方法 &#xff08;4&#xff09;addLast尾插方法 &#xff08;5&#xf…

Windows搭建RTSP视频流服务(EasyDarWin服务器版)

文章目录 引言1、安装FFmpeg2、安装EasyDarWin3、实现本地\虚拟摄像头推流服务4、使用VLC或PotPlayer可视化播放器播放视频5、RTSP / RTMP系列文章 引言 RTSP和RTMP视频流的区别 RTSP &#xff08;Real-Time Streaming Protocol&#xff09;实时流媒体协议。 RTSP定义流格式&am…

模型部署之——ONNX模型转RKNN

提示&#xff1a;这里可以添加学习目标 提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、加载Docker镜像二、转换脚本 一、加载Docker镜像 加载rknn官方提供的基于x86架构下模型转换的镜像文件&#xff0c;生成…