zoukankan      html  css  js  c++  java
  • 异步上传excel带进度条

    @Override
    protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {
        FileUploadForm form = (FileUploadForm) command;
        String progressId = "adminId_" + CookieUtil.get(CookieKeyEnum.ADMIN_ID) + "_" + request.getParameter("progressId");
        SimpleResult result = execute(form.getFile(), progressId);
        return new ModelAndView(new JsonView(result));
    }
    
    private SimpleResult execute(MultipartFile file, final String progressId) {
        ImptUpsBillsService imptUpsBillsService = ContextFactory.getBean(ImptUpsBillsService.class);
        SimpleResult result = SimpleResult.create(false);
        try {
            InputStream inputStream = file.getInputStream();
            if (inputStream.available() == 0) {
                result.setMessage("文件内无有效数据");
                return result;
            }
            List<List<String>> rows = importCsv(file);
            //根据订单号排序  小到大排序
            List<List<String>> finalRows = rows.stream().sorted(Comparator.comparing(s -> s.get(15))).collect(Collectors.toList());
            new Thread(() -> {
                try {
                    imptUpsBillsService.importUpsBills(finalRows, progressId);
                    //境内结算
                    imptUpsBillsService.orderUsUpsUpdateStatus(finalRows);
                } catch (Exception e) {
                    logger.error("failed to orderUpdateStatus", e);
                }
            }).start();
            result.setMessage("后台数据导入进行中...").setSuccess(true);
            return result;
        } catch (Exception e) {
            logger.error("failed to importUpsBills", e);
            result.setMessage("入账操作失败!").setSuccess(false);
            return result;
        }
    }
    
    /**
     * 解析csv文件 到一个list中
     * 每个单元个为一个String类型记录,每一行为一个list。
     * 再将所有的行放到一个总list中
     *
     * @return
     * @throws IOException
     */
    public static List<List<String>> importCsv(MultipartFile file) {
        List<List<String>> dataList = new ArrayList<>();
        BufferedReader brReader = null;
        InputStreamReader inReader = null;
        try {
            inReader = new InputStreamReader(file.getInputStream());
            brReader = new BufferedReader(inReader);
            String rec = null;//一行
            String str;//一个单元格
            while ((rec = brReader.readLine()) != null) {
                Pattern pCells = Pattern.compile("("[^"]*("{2})*[^"]*")*[^,]*,");
                Matcher mCells = pCells.matcher(rec);
                List<String> cells = new ArrayList<>(); //每行记录一个list
                //读取每个单元格
                while (mCells.find()) {
                    str = mCells.group();
                    str = str.replaceAll("(?sm)"?([^"]*("{2})*[^"]*)"?.*,", "$1");
                    str = str.replaceAll("(?sm)("("))", "$2");
                    cells.add(str);
                }
                dataList.add(cells);
            }
        } catch (Exception e) {
        } finally {
            if (brReader != null) {
                try {
                    brReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (inReader != null) {
                try {
                    inReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return dataList;
    }
  • 相关阅读:
    使用virtualenvwrapper隔离python环境
    Ubuntu创建launcher
    Python单步调试
    Jupyter增加内核
    扩展User增加部门字段
    EasyUI ComboBox默认值
    C#调用dll时的类型转换
    更改VisualStudio默认创建类和接口不加public问题
    IL学习资料
    服务注册中心,Eureka比Zookeeper好在哪里?
  • 原文地址:https://www.cnblogs.com/dreammyone/p/7833254.html
Copyright © 2011-2022 走看看