java导入进度显示_java excel导入获取实时进度

本文介绍如何在Java中实现实时显示Excel导入进度,通过多线程处理,使用静态Map存储进度信息,前端定时请求获取进度更新,提供更好的用户体验。
摘要由CSDN通过智能技术生成

1.需求

对于成千上万数据量的excel导入,后台处理耗时长,体验差.需要实时展示当前导入的进度,提高使用体验

2.实现思路

采用多线程进行实现

在导入开始执行前,生成一个uuid和进度对象,储存到静态Map中

使用一个新线程执行导入,导入执行时,将导入的进度信息放到uuid对应的对象里

将uuid返回给前端.请求结束

-前端循环发请求,从后台获取uuid对应的进度对象,将展示到页面上

3.页面实现效果(仅供参考)

de5abd799b27

正在导入

de5abd799b27

导入完成

4.定义用于存储导入进度的对象

将进度的一些常用信息进行定义,同时声明一个静态Map,用于存储所有进度信息

/**

* 用于存储学生信息导入的进度信息

* @author authstr

* @time 2019年10月24日16:56:21

*/

public class ImportAsynInfo {

//用于存储所有的导入进度信息

public static Map allAsynInfo=new HashMap();

//提示信息或 异常信息

private String msg;

//数据总数

private Integer totality=0;

//已处理的数据条数

private Integer doneSum=0;

//失败的数据条数

private Integer errorSum=0;

//成功的数据条数

private Integer successSum=0;

//错误文件的路径

public String errorFilePath;

//导入是否结束

public Boolean isEnd= false;

/**

* 创建一个进度信息,并获取对应的uuid

* @return

*/

public static String createAsynInfo(){

ImportAsynInfo asynInfo=new ImportAsynInfo();

String uuid=UUID.randomUUID().toString().replace("-","");

allAsynInfo.put(uuid,asynInfo);

return uuid;

}

/**

* 通过uuid获取进度信息

* @param uuid

* @return

*/

public static ImportAsynInfo getAsynInfo(String uuid){

return allAsynInfo.get(uuid);

}

/**

* 通过uuid删除对应的进度信息

* @param uuid

* @return

*/

public static void deleteAsynInfo(String uuid){

allAsynInfo.remove(uuid);

}

/**

* uuid对应的进度 已处理的数据条数+1

* @param uuid

*/

public static void doneSumAddOne(String uuid){

ImportAsynInfo asynInfo= getAsynInfo(uuid);

asynInfo.setDoneSum(asynInfo.getDoneSum()+1);

}

/**

* uuid对应的进度 失败的数据条数+1

* @param uuid

*/

public static void errorSumAddOne(String uuid){

ImportAsynInfo asynInfo= getAsynInfo(uuid);

asynInfo.setErrorSum(asynInfo.getErrorSum()+1);

}

/**

* uuid对应的进度 成功的数据条数+1

* @param uuid

*/

public static void successSumAddOne(String uuid){

ImportAsynInfo asynInfo= getAsynInfo(uuid);

asynInfo.setSuccessSum(asynInfo.getSuccessSum()+1);

}

public String getMsg() {

return msg;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值