Java EasyExcel 导入代码

news2025/1/16 1:50:15

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

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

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

相关文章

关于Redis面试题

前言 之前为了准备面试&#xff0c;收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文&#xff1a;https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv Redis 是什么 全名&#xff1a;远程字典服务。这是一个开源的在内存中的数据结构存…

中职网络安全Web2003-2——Web渗透测试

需要环境或换&#xff0c;有问题可以私信我或加Q 1.通过URL访问http://靶机IP/1&#xff0c;对该页面进行渗透测试&#xff0c;将完成后返回的结果内容作为Flag值提交&#xff1b; FLAGflag{htmlcode} 2.通过URL访问http://靶机IP/2&#xff0c;对该页面进行渗透测试&#xff…

设计模式(4)--对象行为(6)--备忘录

1. 意图 在不破坏封装的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。 这样以后可以将该对象恢复到原先保存的状态。 2. 三种角色 原发器(Originator)、备忘录(Memento)、负责人(Caretaker) 3. 优点 3.1 保持了封装边界。屏蔽了原发器的…

汇编语言学习中的Dosbox自动配置方法

学到期末才发现可以自动配置 一、先找到dosbox的下载/安装路径 二、打开其下的Dosbox *.**(这里是版本号) Options.bat 三、在其打开的文件的最下面输入你经常打开dosbox要输入的内容 例如&#xff1a; mount c e:\masm c:

C++day3作业

#include <iostream>using namespace std;class Person {int *age;string &name; public: // Person() // {// }Person(int a,string &b):age(new int(a)),name(b){cout << "Person的有参构造" << endl;}Person(const Person &am…

关于设计模式、Java基础面试题

前言 之前为了准备面试&#xff0c;收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文&#xff1a;https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv 设计模式 单例共有几种写法&#xff1f; 细分起来就有9种&#xff1a;懒汉&#x…

信号与线性系统翻转课堂笔记15——离散LTI系统模型分析

信号与线性系统翻转课堂笔记15——离散LTI系统模型分析 The Flipped Classroom15 of Signals and Linear Systems 对应教材&#xff1a;《信号与线性系统分析&#xff08;第五版&#xff09;》高等教育出版社&#xff0c;吴大正著 一、要点 &#xff08;1&#xff0c;重点&…

Java 基础学习(十八)多线程进阶、网络编程基础

1 并发工具包 1.1 并发工具包概述 1.1.1 什么是并发工具包 Java并发工具包是指java.util.concurrent&#xff08;简称JUC&#xff09;&#xff0c;在Java 5 版本中添加。JUC中包含了大量在并发应用开发中非常实用的工具类。 行业中说的JUC一般包含java.util.concurrent包、…

C# WPF上位机开发(报表导出)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于在工厂上班的小伙伴来说&#xff0c;导出生产数据、生成报表&#xff0c;这是很习以为常的一个工作。之前的文章中&#xff0c;虽然我们也介绍…

【10】ES6:Promise 对象

一、同步和异步 1、JS 是单线程语言 JavaScript 是一门单线程的语言&#xff0c;因此同一个时间只能做一件事情&#xff0c;这意味着所有任务都需要排队&#xff0c;前一个任务执行完&#xff0c;才会执行下一个任务。但是&#xff0c;如果前一个任务的执行时间很长&#xff…

踩坑RV1106板端部署rknn模型

文章目录 1、交叉编译2、板上跑通3、验证自己模型 1、交叉编译 官方给的一个流程: RKNN 模型推理测试为了避免踩坑在开头提出来 按照官方的流程可以跑通&#xff0c;他自己提供的yolov5s.rknn&#xff08;640*640&#xff09;的模型&#xff0c;但是跑自己的模型的时候加载就会…

SAP VA01 创建带wbs号的销售订单包 CJ067的错误

接口错误提示如下 SAP官方 CJ067 124177 - VA01: CJ067 during WBS acct assgmt with a different business area S4的core 刚好能用上 实施 这个note后成功

「Kafka」生产者篇

「Kafka」生产者篇 生产者发送消息流程 在消息发送的过程中&#xff0c;涉及到了 两个线程 ——main 线程和Sender 线程。 在 main 线程中创建了 一个 双端队列 RecordAccumulator。 main线程将消息发送给RecordAccumulator&#xff0c;Sender线程不断从 RecordAccumulator…

多线程编程(三)互斥量

因为他继承于QObject类所以需要构造函数和析构函数。 有几个人就创建几个线程。

【SAM系列】Auto-Prompting SAM for Mobile Friendly 3D Medical Image Segmentation

论文链接&#xff1a;https://arxiv.org/pdf/2308.14936.pdf 核心&#xff1a; finetune SAM,为了不依赖外部prompt&#xff0c;通过将深层的特征经过一个编-解码器来得到prompt embedding&#xff1b;finetune完之后做蒸馏

Visual Studio Code安装下载及安装自用版

Visual Studio Code安装下载及安装自用版 vscode 我愿称之为最强&#xff0c;赶紧下载吧&#xff0c;用起来再说。微软牛逼。 安装过程也非常简单。 一、下载 Visual Studio Code下载地址 1.选择要下载的客户端的版本&#xff0c;直接下载稳定版的 注意&#xff1a; 下载后&…

OpenEular23.09(欧拉)操作系统为企业搭建独立的K8S集群环境,详细流程+截图

1.环境&#xff1b; win10&#xff0c;vmware16 pro&#xff0c;openeular23.09 集群模式&#xff1a;一主二从 主机硬件配置 主机名IP角色CPU内存硬盘k8s-master01192.168.91.100master4C4G40Gk8s-worker02192.168.91.101worker(node)4C4G40Gk8s-worker03192.168.91.102work…

Matlab:非线性规划

1、语法&#xff1a; xfmincon(fun,x0,A,b) xfmincon(fun,x0,A,b,Aeq,beq) xfmincon(fun,x0,A,b,Aeq,beq,lb,ub) xfmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) xfmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) xfmincon(problem) [x,fval]fmincon(___) [x,fval,exitflag,…

如何在Mac中设置三指拖移,这里有详细步骤

三指拖移手势允许你选择文本&#xff0c;或通过在触控板上用三指拖动窗口或任何其他元素来移动它。它可以用于快速移动或调整窗口、文件或图像在屏幕上的位置。 然而&#xff0c;这个手势在默认情况下是禁用的&#xff0c;因此在本教程中&#xff0c;我们将向你展示如何在你的…

掌汇云 | 公司库聚合企业,为垂直领域提供产品与服务展示窗口

11月29日晚&#xff0c;拼多多美股盘中市值首次超越阿里巴巴。拼多多是赢了&#xff0c;但也有人说阿里未必就输了&#xff0c;因为阿里拼的是整个阿里生态。 阿里生态使其庞大且屹立不倒&#xff0c;拼多多将社交用于撮合交易&#xff0c;通过平台连接消费者和供应商&#xf…