通过excel模板+流的形式导出excel

@ApiOperation("导出订单excel")//#
    @GetMapping("/export")
    public void exportOrderLixst(AdminOrderSearchParamDTO adminOrderSearchParamDTO, HttpServletRequest request,HttpServletResponse response){
        adminOrderSearchParamDTO.setStart(0);
        adminOrderSearchParamDTO.setPageSize(1000000000);
        R<AdminOrderListDTO> result = findAdminOrderList(adminOrderSearchParamDTO);
        if(result != null && result.getData() != null  && (result.getCode() == 0 || result.getCode() == 200)){
            if(result.getData().getTotal()>0){
                AdminOrderListDTO adminOrderListDTO = result.getData();
                List<AdminOrderDTO> adminOrderDTOList = adminOrderListDTO.getAdminOrderDTOList();
                int num = 0;
                //1.获取废品的excel模板
                TemplateExportParams params = new TemplateExportParams("/doc/01.xls");
                //2.获取所有数据
                Map<String, Object> map = new HashMap<String, Object>(100);
                List<Map<String, Object>> mapList = new ArrayList<>();
                for(AdminOrderDTO adminOrderDTO : adminOrderDTOList){
                    OrderExcelVO orderExcelVO1 = new OrderExcelVO();
                    orderExcelVO1.setNo(++num);
                    dozerUtils.map(adminOrderDTO,orderExcelVO1);
                    orderExcelVO1.setOrderSum(BigDecimal.valueOf(adminOrderDTO.getOrderSum()).divide(new BigDecimal(100)));
                    orderExcelVO1.setPaySum(BigDecimal.valueOf(adminOrderDTO.getPaySum()).divide(new BigDecimal(100)));
                    orderExcelVO1.setPostFee(BigDecimal.valueOf(adminOrderDTO.getPostFee()).divide(new BigDecimal(100)));

                    orderExcelVO1.setBuyNum(adminOrderDTO.getOrderProductDTOList().get(0).getBuyNum());
                    orderExcelVO1.setSellPrice(BigDecimal.valueOf(adminOrderDTO.getOrderProductDTOList().get(0).getSellPrice()).divide(new BigDecimal(100)));
                    orderExcelVO1.setSellPriceBuyNum("¥"+orderExcelVO1.getSellPrice() + " * " + orderExcelVO1.getBuyNum());
                    orderExcelVO1.setSkuId(adminOrderDTO.getOrderProductDTOList().get(0).getSkuId());
                    orderExcelVO1.setSkuNameStr(adminOrderDTO.getOrderProductDTOList().get(0).getSkuNameStr());
                    orderExcelVO1.setProductName(adminOrderDTO.getOrderProductDTOList().get(0).getProductName());
                    //订单状态:1-待付款 2-待发货 3-待收货 4-已完成 5-已取消 6 - 退款/售后
                    if(adminOrderDTO.getOrderStatus() == 1){
                        orderExcelVO1.setOrderStatusDesc("待付款");
                    }else if(adminOrderDTO.getOrderStatus() == 2){
                        orderExcelVO1.setOrderStatusDesc("待发货");
                    }else if(adminOrderDTO.getOrderStatus() == 3){
                        orderExcelVO1.setOrderStatusDesc("待收货");
                    }else if(adminOrderDTO.getOrderStatus() == 4){
                        orderExcelVO1.setOrderStatusDesc("已收件");
                    }else if(adminOrderDTO.getOrderStatus() == 5){
                        orderExcelVO1.setOrderStatusDesc("已取消");
                    }else if(adminOrderDTO.getOrderStatus() == 6){
                        orderExcelVO1.setOrderStatusDesc("退款/售后");
                    }
                    //售后状态:-1 无售后 1-有退款 2-有退货
                    if(adminOrderDTO.getReturnType() == -1){
                        orderExcelVO1.setReturnTypeDesc("无售后");
                    }else if(adminOrderDTO.getReturnType() == 1){
                        orderExcelVO1.setReturnTypeDesc("有退款");
                    }else if(adminOrderDTO.getReturnType() == 2){
                        orderExcelVO1.setReturnTypeDesc("有退货");
                    }
                    //支付方式 1-微信支付 2-支付宝支付
                    if("1".equals(adminOrderDTO.getPayChannel())){
                        orderExcelVO1.setPayChannelDesc("微信支付");
                    }else if("2".equals(adminOrderDTO.getPayChannel())){
                        orderExcelVO1.setPayChannelDesc("支付宝支付");
                    }
                    orderExcelVO1.setRecProvice(adminOrderDTO.getProvince());
                    orderExcelVO1.setRecCity(adminOrderDTO.getCity());
                    orderExcelVO1.setAddress(adminOrderDTO.getProvince()+adminOrderDTO.getCity()+adminOrderDTO.getDistrict()+adminOrderDTO.getAddress());
//                    if(adminOrderDTO.getConfirmTime() != null && adminOrderDTO.getSendTime() != null){
//                        Duration duration = Duration.between(adminOrderDTO.getSendTime(),adminOrderDTO.getConfirmTime());
//                        long days = duration.toDays(); //相差的天数
//                        if(days < 1){
//                            orderExcelVO1.setAging("当日达");
//                        }else if(days >1 && days <2){
//                            orderExcelVO1.setAging("次日达");
//                        }else{
//                            orderExcelVO1.setAging(days + "日达");
//                        }
//                    }else{
//                        orderExcelVO1.setAging(" ");
//                    }
                    Map<String, Object> mapOne = new HashMap<>(100);
                    mapOne.put("orderCode",orderExcelVO1.getOrderCode());
                    mapOne.put("no",orderExcelVO1.getNo());
                    mapOne.put("payNum",orderExcelVO1.getPayNum());
                    mapOne.put("orderStatusDesc",orderExcelVO1.getOrderStatusDesc());
                    mapOne.put("returnTypeDesc",orderExcelVO1.getReturnTypeDesc());
                    mapOne.put("payChannelDesc",orderExcelVO1.getPayChannelDesc());
                    mapOne.put("logisticsCase",orderExcelVO1.getLogisticsCase());
                    mapOne.put("payTime",orderExcelVO1.getPayTime());
                    mapOne.put("createTime",orderExcelVO1.getCreateTime());
                    mapOne.put("notes",orderExcelVO1.getNotes());
                    mapOne.put("orderSum",orderExcelVO1.getOrderSum());
                    mapOne.put("paySum",orderExcelVO1.getPaySum());
                    mapOne.put("postFee",orderExcelVO1.getPostFee());
                    mapOne.put("productName",orderExcelVO1.getProductName());
                    mapOne.put("skuNameStr",orderExcelVO1.getSkuNameStr());
                    mapOne.put("skuId",orderExcelVO1.getSkuId());
                    mapOne.put("sellPriceBuyNum",orderExcelVO1.getSellPriceBuyNum());
                    mapOne.put("memberAccount",orderExcelVO1.getMemberAccount());
                    mapOne.put("recName",orderExcelVO1.getRecName());
                    mapOne.put("address",orderExcelVO1.getAddress());
                    mapOne.put("recMobile",orderExcelVO1.getRecMobile());
                    mapOne.put("logisticsName",orderExcelVO1.getLogisticsName());
                    mapOne.put("logisticsNum",orderExcelVO1.getLogisticsNum());
                    mapOne.put("aging",null);
                    mapOne.put("recProvice",orderExcelVO1.getRecProvice());
                    mapOne.put("recCity",orderExcelVO1.getRecCity());
                    mapOne.put("buyNum",orderExcelVO1.getBuyNum());
                    mapList.add(mapOne);
                }

                map.put("mapList",mapList);

                //3.执行excel导出
                Workbook workbook = ExcelExportUtil.exportExcel(params, map);
//                4.创建文件存储路径
//                String dateStr = DateUtil.format(new Date(),"yyyyMMdd");
//                String dateStr = System.currentTimeMillis()+"";
//                File saveFile = new File("D:/excel/"+dateStr+"/");
//                File saveFile = new File("D:/excel/"+dateStr+"/");
//                if (!saveFile.exists()) {
//                    saveFile.mkdirs();
//                    log.info("=====================================D盘目录创建成功"+saveFile);
//                }
//                FileOutputStream fos;
//                String filePath;

                //将文件存到指定位置
                try {
                    this.setResponseHeader(response, "订单");
                    OutputStream os = response.getOutputStream();
                    workbook.write(os);
                    os.flush();
                    os.close();
//                    return R.success("数据导出成功!");
                } catch (Exception e) {
                    e.printStackTrace();
//                    return R.fail("数据导出失败!" + e.getMessage());
                }

//                try {
//                    //4.写入文件
//                    filePath = saveFile + "/订单.xls";
//                    fos = new FileOutputStream(filePath);
//                    workbook.write(fos);
//                    log.info("=====================================写成功");
//                    fos.close();
//                    return R.success("数据导出成功!");
//                } catch (FileNotFoundException e) {
//                    log.error("FileNotFoundException={}", e.getMessage());
//                    return R.fail("数据导出失败!" + e.getMessage());
//                } catch (IOException e) {
//                    log.error("IOException={}", e.getMessage());
//                    return R.fail("数据导出失败!" + e.getMessage());
//                }
            }else{
//                return R.success("当前没有数据供导出!");
            }
        }else{
//            return R.fail("导出数据失败!");
        }

    }

    //发送响应流方法
    private void setResponseHeader(HttpServletResponse response, String fileName) {
        try {
            try {
                fileName = new String(fileName.getBytes(),"ISO8859-1");
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            response.setContentType("application/octet-stream;charset=ISO8859-1");
            response.setHeader("Content-Disposition", "attachment;filename="+ fileName +".xls");   //要保存的文件名
            response.addHeader("Pargam", "no-cache");
            response.addHeader("Cache-Control", "no-cache");
        } catch (Exception ex) {
            ex.printStackTrace();

        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值