Java EasyExcel 导入代码

Java EasyExcel 导入代码

导入方法

/**
     * 仓库库位导入
     *
     * @param req
     * @param res
     * @param files
     * @throws Exception
     */
    @RequestMapping(value = {"/import/line_store_locs"}, method = {RequestMethod.POST})
    @ResponseBody
    public 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 上传文件

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工具系列:TimeGPT_(8)使用不规则时间戳进行时间序列预测

文章目录 介绍不规则时间戳的单变量时间预测不规则时间戳的外生变量时间预测 介绍 在处理时间序列数据时&#xff0c;时间戳的频率是一个关键因素&#xff0c;可以对预测结果产生重大影响。像每日、每周或每月这样的常规频率很容易处理。然而&#xff0c;像工作日这样的不规则…

Linux磁盘与文件系统管理

在linux系统中使用硬盘 建立分区 安装文件系统 挂载 磁盘的数据结构 磁盘&#xff1a;扇区固定大小&#xff0c;每个扇区4k。磁盘会进行磨损&#xff0c;损失生命周期。 扇区 磁道 柱面 磁盘接口类型 ide SATA SAS SCSI SCSI 设备类型 块设备&#xff1a;block …

2024年HTML+CSS+JS 网页版烟花代码

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 直接跳到末尾 获取完整源码 在线体验地址&…

分支指令的方向预测

对于分支指令来说,它的方向只有两个:发生跳转(taken)和不发生跳转(nottaken),因此可以用1 和0 来表示。 很多分支指令的方向是有规律可循的。 方式一&#xff1a;last-outcom prediction 其准确度&#xff0c;无法接受&#xff1b; 方式二&#xff1a;基于两位饱和计数器的分…

模式识别与机器学习-SVM(线性支持向量机)

线性支持向量机 线性支持向量机间隔距离学习的对偶算法算法:线性可分支持向量机学习算法线性可分支持向量机例子 谨以此博客作为复习期间的记录 线性支持向量机 在以上四条线中&#xff0c;都可以作为分割平面&#xff0c;误差率也都为0。但是那个分割平面效果更好呢&#xff1…

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

一、峰会简介 近年来&#xff0c;以云计算、移动互联网、物联网、工业互联网、人工智能、大数据及区块链等新一代信息技术构建的智能化应用和产品出现爆发式增长&#xff0c;突破了对于软件形态的传统认知&#xff0c;正以各种展现方式诠释着对新型智能软件的定义。这也使得对…

open_vins 安装(ubuntu18.04 opencv3.2.0)

openvins官网 Getting Started Installation Guide (ROS1 and ROS2) | OpenVINS Ubuntu 18.04 ROS 1 Melodic (uses OpenCV 3.2) 这里他指的是ros1 melodic&#xff0c;他们用的opencv3.2测试过。 open_vins 官方给的组合Ubuntu 18.04 ROS 1 Melodic (uses OpenCV 3.2) Ub…

IDEA 开发中常用的快捷键

目录 Ctrl 的快捷键 Alt 的快捷键 Shift 的快捷键 Ctrl Alt 的快捷键 Ctrl Shift 的快捷键 其他的快捷键 Ctrl 的快捷键 Ctrl F 在当前文件进行文本查找 &#xff08;必备&#xff09; Ctrl R 在当前文件进行文本替换 &#xff08;必备&#xff09; Ctrl Z 撤…

奇富科技跻身国际AI学术顶级会议ICASSP 2024,AI智能感知能力迈入新纪元

近日&#xff0c;2024年IEEE声学、语音与信号处理国际会议ICASSP 2024&#xff08;2024 IEEE International Conference on Acoustics, Speech, and Signal Processing&#xff09;宣布录用奇富科技关于语音情感计算的最新研究成果论文“MS-SENet: Enhancing Speech Emotion Re…

PHP的Laravel加一个小页面出现问题(whereRaw的用法)

1.权限更新问题 因为是已经有样例了所以html和php页面很快写出来了 然后就是页面写完了路由不知道在哪写&#xff0c;后来想起来之前有要开权限来着&#xff0c;试了一下&#xff0c;还是不行&#xff0c;不过方向是对了 这是加的路由&#xff0c;不过需要在更新一下权限 这…

知识库问答LangChain+LLM的二次开发:商用时的典型问题及其改进方案

前言 如之前的文章所述&#xff0c;我司下半年成立大模型项目团队之后&#xff0c;我虽兼管整个项目团队&#xff0c;但为让项目的推进效率更高&#xff0c;故分成了三大项目组 第一项目组由霍哥带头负责类似AIGC模特生成系统第二项目组由阿荀带头负责论文审稿GPT以及AI agen…

在 Windows 中安装 SQLite 数据库

在 Windows 上安装 SQLite 步骤1 请访问 SQLite 下载页面&#xff0c;从 Windows 区下载预编译的二进制文件 ​ 步骤2 您需要下载 sqlite-dll-win-x64-3440200.zip 和 sqlite-tools-win-x64-3440200.zip 压缩文件 步骤3 创建文件夹 C:\Program Files\SQLite&#xff0c;并在…

PHP的Laravel的数据库迁移

1.默认迁移文件 2.数据库迁移 在终端输入以下代码 php artisan migrate 我的报错啦&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 数据库里面只有两张表&#xff0c;实际上应该有四张的&#xff01;&#xff01;&#xff01; 解决方法&#xff1a; 反正表已…

Modbus RTU转Modbus TCP模块,RS232/485转以太网模块,YL102 多功能串口服务器模块

特点&#xff1a; ● Modbus RTU协议自动转换成Mobus TCP协议 ● 100M高速网卡&#xff0c;10/100M 自适应以太网接口 ● 支持 AUTO MDI/MDIX&#xff0c;可使用交叉网线或平行网线连接 ● RS232波特率从300到256000可设置 ● 工作方式可选择TCP Server, TCP Client, U…

【Leetcode】重排链表、旋转链表、反转链表||

目录 &#x1f4a1;重排链表 题目描述 方法一&#xff1a; 方法二&#xff1a; &#x1f4a1;旋转链表 题目描述 方法&#xff1a; &#x1f4a1;反转链表|| 题目描述 方法&#xff1a; &#x1f4a1;总结 &#x1f4a1;重排链表 题目描述 给定一个单链表 L 的头节…

位移贴图、凹凸贴图和法线贴图之间的差异

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 这三种类型的贴图中的每一种都会在几何体表面上创建看起来像其他分辨…

uniApp中uView组件库的丰富布局方法

目录 基本使用 #分栏间隔 #混合布局 #分栏偏移 #对齐方式 API #Row Props #Col Props #Row Events #Col Events UniApp的uView组件库是一个丰富的UI组件库&#xff0c;提供了各种常用的UI组件和布局方法&#xff0c;帮助开发者快速构建美观、灵活的界面。下面给你写一…

(windows2012共享文件夹和防火墙设置

windows2012共享文件夹和防火墙设置 1.windows2012文件夹共享1.共享和高级共享的区别![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0d815cc6862a4c7a99be11442fb5d950.png#pic_center) 2.windows的防火墙设置1.防火墙设置8080端口让tomot可以在主机可以访问1.新建…

Switch语句与链接—计算机系统基础

实验内容&#xff1a;修改二进制可重定位目标文件“phase1.o”中相关节的内容&#xff08;注意不允许修改.text节和重定位节的内容&#xff09;&#xff0c;使其与main.o模块如下链接后运行时输出目标字符串“123456789” gcc -no-pie -o linkbomb main.o phase1.o ./linkbomb…

Pandas的datetime数据类型

Python的datetime对象 Python内置了datetime对象&#xff0c;可以在datetime库中找到 from datetime import datetime now datetime.now() now 还可以手动创建datetime t2 datetime(2023,4,21) now-t2 # datetime.timedelta(days251, seconds31427, microseconds546921)将…