使用 另一种 方式 导出数据列表

项目场景:

`
使用 另一种 方式 导出数据列表


问题描述

使用 post 方式 导出数据列表`

例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据
APP 中接收数据代码:

    <el-button
              ref="btnStatusDown1"
              type="success"
              size="mini"
              icon="el-icon-download"
              @click="exportList"
              >导出</el-button>

解决方案:

提示:这里填写该问题的具体解决方案:

  //导出
    exportList () {
     var url = "/inspect/order/export";
     this.$axios({
        url: url,
        method:'get',
        responseType:'blob',
        params: this.dataForm
     }).then(response=>{
        // console.log(response)
          this.download(response);
      }).catch(error=>{
          console.log(error);
      })
    },
    download (data) {
      if (!data) {
        return
      }
      var blob = new Blob([data], {
        type: 'application/vnd.ms-excel;charset=utf-8'
      })
      var url = window.URL.createObjectURL(blob)
      var aLink = document.createElement('a')
      aLink.style.display = 'none'
      aLink.download = '信息表.xls'
      aLink.href = url
      document.body.appendChild(aLink)
      aLink.click()
    },

    //按照条件导出
    @GetMapping("/export")
    public void exportList(@RequestParam Map<String, Object> params, HttpServletResponse response){
        SysUserEntity user = getUser();
        ExcelWriter writer = ExcelUtil.getWriter();

        if(!sysDeptService.handleListParams1(user, params)){
//            return R.error("没有权限!");
        }

        QueryWrapper queryWrapper = new QueryWrapper();

        if(params.get("num") != null && !StrUtil.isEmpty(params.get("name").toString())){
            queryWrapper.like("name", params.get("name"));
        }

        if(params.get("num") != null && !StrUtil.isEmpty(params.get("num").toString())){
            queryWrapper.eq("num", params.get("num"));
        }

        if(params.get("status") != null && !StrUtil.isEmpty(params.get("status").toString()) && Integer.parseInt(params.get("status").toString()) >= 0){
            queryWrapper.eq("status", params.get("status"));
        }

        if(params.get("companyId") != null && !StrUtil.isEmpty(params.get("companyId").toString()) && Integer.parseInt(params.get("companyId").toString()) >= 0){
            queryWrapper.eq("company_id", params.get("companyId"));
        }
        if(params.get("companyIds") != null && params.get("companyIds") != ""){
            queryWrapper.eq("company_id", params.get("companyIds"));
        }

        if(params.get("deptId") != null && !StrUtil.isEmpty(params.get("deptId").toString()) && Integer.parseInt(params.get("deptId").toString()) >= 0){
            queryWrapper.eq("dept_id", params.get("deptId"));
        }

        queryWrapper.eq("deleted_flag", "N");

        ArrayList<Map<String, Object>> rows = CollUtil.newArrayList();
        List<InspectOrderEntity> list = inspectService.list(queryWrapper);
        Integer i = 1;
        for(InspectOrderEntity entity:list){
            Map<String, Object> row = new LinkedHashMap<>();

            row.put("ID", entity.getId());
            row.put("类型", "--");
            if(entity.getType() == 1){
                row.put("类型", "按a");
            }else if(entity.getType() == 2){
                row.put("类型", "按b");
            }

            row.put("jh", "--");
            // 获取名称
            if(entity.getPlanId() != null && entity.getPlanId() > 0){
                InspectPlanEntity inspectPlanEntity = inspectPlanService.getById(entity.getPlanId());
                if(inspectPlanEntity != null ){
                    row.put("计划", inspectPlanEntity.getName());
                }
            }
            row.put("名称", entity.getName());
            row.put("编号", entity.getNum());

            row.put("开始时间", entity.getStartDate());
            row.put("结束时间", entity.getEndDate());
        .........................
           
            if(entity.getDeviceType() != null && entity.getDeviceType() > 0){
                InspectTypeEntity inspectTypeEntity = inspectTypeService.getById(entity.getDeviceType());
                if(inspectTypeEntity != null ){
                    row.put("类型", inspectTypeEntity.getName());
                }
            }

            row.put("人yuan", "--");
            // 获取名称
            if(entity.getHandleId() != null && entity.getHandleId() > 0){
                user = sysUserService.getById(entity.getHandleId());
                if(user != null ){
                    row.put("人yuan", user.getName());
                }
            }

            row.put("时jain1", entity.getWorkTime());
            row.put("时间2", entity.getRoadTime());

            row.put("状态", "--");
            if(entity.getStatus().intValue() == 0){
                row.put("状态", "未完成");
            }else if((entity.getStatus().intValue() == 1)){
                row.put("状态", "完成");
            }
            row.put("名称", entity.getReportName());
         ..................
        
    

            //获取数据
            QueryWrapper itemQueryWrapper = new QueryWrapper();
            itemQueryWrapper.eq("order_id", entity.getId());
            itemQueryWrapper.eq("deleted_flag", "N");
            List<InspectOrderItemEntity> itemList = inspectOrderItemService.list(itemQueryWrapper);
//            this.mergeRule(writer,1,2);
            if(itemList != null){
                int num = itemList.size();//3 2
                if(num > 1){
                    for(int j = 0;j< row.size();j++){
                        writer.merge(i,i + num -1,j,j,null, true);
                    }
                }

                i = i + num;
                for(InspectOrderItemEntity itemEntity:itemList){
                    Map<String, Object> ItemRow = new LinkedHashMap<>();
                    ItemRow.putAll(row);
                    ItemRow.put("a", itemEntity.getDeviceName());
                    ItemRow.put("b", itemEntity.getDeviceNum());
              
                    ItemRow.put("e", "--");
                    // 获取名称
                    if(itemEntity.getHandleId() != null && itemEntity.getHandleId() > 0){
                        user = sysUserService.getById(itemEntity.getHandleId());
                        if(user != null ){
                            row.put("人员", user.getName());
                        }
                    }

                    ItemRow.put("状态", "--");
                    if(itemEntity.getStatus().intValue() == 0){
                        ItemRow.put("状态", "未完成");
                    }else if((itemEntity.getStatus().intValue() == 1)){
                        ItemRow.put("状态", "完成");
                    }

                    ItemRow.put("时间", itemEntity.getCreateDate());
                    ItemRow.put("时间1", itemEntity.getUpdateDate());
                    rows.add(ItemRow);
                }
            }else{
                i = i + 1;
                rows.add(row);
            }

        }

        ServletOutputStream out = null;

        try {
            //写入数据
            writer.write(rows, true);
            response.setHeader("Content-type","application/octet-stream");  //将文件设置为流的形式进行传递,返回的是二进制形式
            response.setCharacterEncoding("UTF-8");
            response.setHeader("Content-Disposition","attachment;filename="+new String("信息表".getBytes("UTF-8"),"ISO-8859-1")+".xls");

            out = response.getOutputStream();
            writer.flush(out, true);

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭writer,释放内存
            writer.close();
            //此处记得关闭输出Servlet流
            IoUtil.close(out);
        }
    }

##疑问:
使用 post 方式是否可以实现功能相同的数据导出呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值