Parcourir la source

新增sku销售记录导出接口

codingliang il y a 10 mois
Parent
commit
63ff20c0bc

+ 6 - 0
src/main/java/com/sqx/modules/order/controller/app/AppOrderController.java

@@ -292,4 +292,10 @@ public class AppOrderController {
         PageUtils pageUtils = appOrderService.getGoodsSkuSalesCount(query);
         return Result.success().put("data", pageUtils);
     }
+
+    @GetMapping(value = "export-sku-sales-count")
+    @ApiOperation("导出商品sku销售数量")
+    public void exportGoodsSkuSalesCount(@Valid GoodsSkuQuery query){
+        appOrderService.exportGoodsSkuSalesCount(query);
+    }
 }

+ 6 - 0
src/main/java/com/sqx/modules/order/controller/vo/GoodsSkuSalesCountVO.java

@@ -1,5 +1,6 @@
 package com.sqx.modules.order.controller.vo;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -11,18 +12,23 @@ import lombok.Data;
 @Data
 public class GoodsSkuSalesCountVO {
 
+    @ExcelProperty("skuId")
     @ApiModelProperty(value = "skuId")
     private Long skuId;
 
+    @ExcelProperty("sku信息")
     @ApiModelProperty(value = "sku信息")
     private String skuInfo;
 
+    @ExcelProperty("店铺id")
     @ApiModelProperty(value = "店铺id")
     private Long shopId;
 
+    @ExcelProperty("店铺名称")
     @ApiModelProperty(value = "店铺名称")
     private String shopName;
 
+    @ExcelProperty("销售量")
     @ApiModelProperty(value = "销售量")
     private Integer value;
 }

+ 6 - 0
src/main/java/com/sqx/modules/order/service/AppOrderService.java

@@ -192,4 +192,10 @@ public interface AppOrderService extends IService<TbOrder> {
      * @return 商品sku销售数量
      */
     PageUtils getGoodsSkuSalesCount(GoodsSkuQuery query);
+
+    /**
+     * 导出商品sku销售数量
+     * @param query 查询参数
+     */
+    void exportGoodsSkuSalesCount(GoodsSkuQuery query);
 }

+ 37 - 0
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -1,8 +1,12 @@
 package com.sqx.modules.order.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.URLUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.converters.longconverter.LongStringConverter;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -111,8 +115,13 @@ import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.support.DefaultTransactionDefinition;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.ParseException;
@@ -2892,6 +2901,34 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         return pageUtils;
     }
 
+    @Override
+    public void exportGoodsSkuSalesCount(GoodsSkuQuery query) {
+        Page<GoodsSkuSalesCountVO> pages = new Page<>(query.getPage(), query.getLimit());
+        IPage<GoodsSkuSalesCountVO> page = baseMapper.getGoodsSkuSalesCount(pages, query);
+        List<GoodsSkuSalesCountVO> records = page.getRecords();
+
+        try {
+            RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+            HttpServletResponse response = ((ServletRequestAttributes) requestAttributes).getResponse();
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
+            response.setCharacterEncoding("UTF-8");
+
+            String excelName = "sku销售记录_";
+            excelName += DateUtil.format(new Date(), "yyyyMMddHHmmss");
+            String fileName = URLUtil.encode(excelName, "UTF-8");
+            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+
+            EasyExcel.write(response.getOutputStream(), GoodsSkuSalesCountVO.class)
+                    .sheet("sheet1")
+                    .registerConverter(new LongStringConverter())
+                    .doWrite(records);
+        } catch (IOException e) {
+            log.error("sku销售记录导出失败:{}", e.getMessage());
+            throw new SqxException("sku销售记录导出失败");
+        }
+    }
+
     /**
      * 更新订单状态和支付顺序
      *