zoukankan      html  css  js  c++  java
  • 订单导出

    @ApiOperation("订单导出")
    @GetMapping("/download")
    public R download(@CurrentUser PaperUser sysUser,
    @RequestParam(required = false) String keywordName,
    @RequestParam(required = false) String keyword,
    @RequestParam(required = false) String businessType,
    @RequestParam(required = false) String startTime,
    @RequestParam(required = false) String endTime,
    @RequestParam(required = false) String customerCode,
    @RequestParam(required = false) Integer status,
    HttpServletResponse response){
    if(sysUser == null){
    return R.error("请登录").setCode(401);
    }
    String roleType = RoleUtils.getRoleCustomerCode(sysUser);
    if(!StringUtil.isEmpty(roleType)){
    customerCode = roleType;
    }
    String column = "";
    if(!StringUtil.isEmpty(keywordName) && !StringUtil.isEmpty(keyword)){
    switch (keywordName){
    case "订单号":
    column = "order_no";
    break;
    case "客户单号":
    column = "cus_order_no";
    break;
    case "客户位置名称":
    column = "cus_location";
    break;
    default:
    break;
    }
    }
    QueryWrapper queryWrapper = new QueryWrapper();
    queryWrapper.like(!StringUtil.isEmpty(column),column,keyword)
    .eq(!StringUtil.isEmpty(customerCode),"customer_code",customerCode)
    .eq(!StringUtil.isEmpty(businessType),"business_type", businessType)
    .eq(status != null && status > -1 && status < 2,"del",status)
    .le(!StringUtil.isEmpty(endTime),"create_time",endTime + "23:59:59")
    .ge(!StringUtil.isEmpty(startTime),"create_time",startTime + "00:00:00");
    List<OrderInfo> orderInfoList = orderInfoService.list(queryWrapper);
    // 导出订单数据量过10000 时提示缩小选择范围
    if(orderInfoList.size() > 10000){
    return R.error("订单所导出数量超过10000条,请缩小选择范围").setSuccess(false);
    }
    List<OrderReportDto> data = new ArrayList<>();
    for(OrderInfo orderInfo:orderInfoList){
    OrderReportDto orderReportDto = new OrderReportDto();
    BeanUtil.copyProperties(orderInfo,orderReportDto);
    orderReportDto.setCreateTime(orderInfo.getCreateTime().replace(".0",""));
    orderReportDto.setStartTime(orderInfo.getStartDate());
    orderReportDto.setEndTime(orderInfo.getEndDate());
    orderReportDto.setBusinessTypeName(Customer.BusinessType.valueOf(orderInfo.getBusinessType()).getDesc());
    orderReportDto.setStatusMsg(orderInfo.getDel()==0?"失效":"有效");
    data.add(orderReportDto);
    }
    List<OrderReportDto> rows = CollUtil.newArrayList(data);
    ExcelWriter writer = ExcelUtil.getWriter();
    writer.addHeaderAlias("orderNo","订单号");
    writer.addHeaderAlias("cusOrderNo","客户订单号");
    writer.addHeaderAlias("cusLocation","客户位置");
    writer.addHeaderAlias("businessTypeName","业务类型");
    writer.addHeaderAlias("startTime","任务开始时间");
    writer.addHeaderAlias("endTime","任务结束时间");
    writer.addHeaderAlias("customerName","来源客户");
    writer.addHeaderAlias("createTime","创建时间");
    writer.addHeaderAlias("statusMsg","订单状态");
    writer.write(rows);
    //设置宽度
    for (int i = 0; i < rows.size(); i++) {
    writer.setColumnWidth(i, 35);
    }
    R r = null;
    try {
    response.setContentType("application/vnd.ms-excel;charset=utf-8");
    response.setHeader("Content-Disposition",
    "attachment;filename=" + URLEncoder.encode("订单导出", "utf-8") + ".xlsx");
    ServletOutputStream out = response.getOutputStream();
    writer.flush(out);
    r = R.ok();
    } catch (Exception e) {
    e.printStackTrace();
    r = R.error("下载失败");
    }finally {
    writer.close();
    }
    return r;
    }
  • 相关阅读:
    抽象类存在的意义
    抽象类的特征
    抽象类的使用
    抽象类的概述
    引用类型作为方法参数和返回值
    继承的特点
    目前Java水平以及理解自我反思---01
    继承后- 构造器的特点
    指针函数
    C数组灵活多变的访问形式
  • 原文地址:https://www.cnblogs.com/pxzbky/p/11911801.html
Copyright © 2011-2022 走看看