Jelajahi Sumber

新增佰卓销售数据查询

fgd 1 tahun lalu
induk
melakukan
296d5b6db6

+ 22 - 0
sd-business/src/main/java/com/sd/business/controller/board/SalesBoardController.java

@@ -1,6 +1,7 @@
 package com.sd.business.controller.board;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.board.dto.BzSkuSpecSalesSelectDto;
 import com.sd.business.entity.board.dto.DailyBoardSelectDto;
 import com.sd.business.entity.board.dto.SalesBoardSelectDto;
 import com.sd.business.entity.board.vo.*;
@@ -181,4 +182,25 @@ public class SalesBoardController {
     public List<BzSkuSalesBoardVo> getBzSkuSalesBoard() {
         return salesBoardService.getBzSkuSalesBoard();
     }
+
+    /**
+     * 获取佰卓sku三十天销量列表
+     * @return
+     */
+    @PostMapping("/getBzSkuSpecSalesPage")
+    public Page<BzSkuSpecSalesVo> getBzSkuSpecSalesPage(@RequestBody BzSkuSpecSalesSelectDto dto) {
+        return salesBoardService.getBzSkuSpecSalesPage(dto);
+    }
+
+    /**
+     * 佰卓sku三十天销量列表列表导出
+     * @return
+     */
+    @PostMapping("/bzSkuSpecSalesExportExcel")
+    public void bzSkuSpecSalesExportExcel(HttpServletResponse response, @RequestBody BzSkuSpecSalesSelectDto dto) {
+        dto.setSearchAll(true);
+        Page<BzSkuSpecSalesVo> page = salesBoardService.getBzSkuSpecSalesPage(dto);
+        List<BzSkuSpecSalesVo> list = page.getRecords();
+        ExcelUtil.export(response,"sku销售销量列表", "sku销售数据", list, BzSkuSpecSalesVo.class);
+    }
 }

+ 27 - 0
sd-business/src/main/java/com/sd/business/entity/board/dto/BzSkuSpecSalesSelectDto.java

@@ -0,0 +1,27 @@
+package com.sd.business.entity.board.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ * 佰卓sku三十天销量查询入参实体
+ *
+ * @author
+ * @since 2024-01-29
+ */
+@Getter
+@Setter
+public class BzSkuSpecSalesSelectDto extends BaseSelectDto {
+
+    /**
+     * sku规格编码
+     */
+    private String skuSpecCode;
+
+    /**
+     * sku规格名称
+     */
+    private String skuSpecName;
+}

+ 41 - 0
sd-business/src/main/java/com/sd/business/entity/board/vo/BzSkuSpecSalesVo.java

@@ -0,0 +1,41 @@
+package com.sd.business.entity.board.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class BzSkuSpecSalesVo {
+
+    /**
+     * sku规格编码
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "sku品号")
+    private String skuSpecCode;
+
+    /**
+     * sku规格名称
+     */
+    @ColumnWidth(25)
+    @ExcelProperty(value = "sku品名")
+    private String skuSpecName;
+
+    /**
+     * 30天销售量
+     */
+    @ColumnWidth(20)
+    @ExcelProperty(value = "30天销售量")
+    private BigDecimal salesQuantity;
+
+    /**
+     * 日销量
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "日销量")
+    private BigDecimal dailySales;
+}

+ 8 - 0
sd-business/src/main/java/com/sd/business/service/board/SalesBoardService.java

@@ -1,6 +1,7 @@
 package com.sd.business.service.board;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.board.dto.BzSkuSpecSalesSelectDto;
 import com.sd.business.entity.board.dto.DailyBoardSelectDto;
 import com.sd.business.entity.board.dto.SalesBoardSelectDto;
 import com.sd.business.entity.board.vo.*;
@@ -70,4 +71,11 @@ public interface SalesBoardService {
      * @return
      */
     List<BzSkuSalesBoardVo> getBzSkuSalesBoard();
+
+    /**
+     * 获取佰卓sku三十天销量列表
+     * @param dto
+     * @return
+     */
+    Page<BzSkuSpecSalesVo> getBzSkuSpecSalesPage(BzSkuSpecSalesSelectDto dto);
 }

+ 34 - 0
sd-business/src/main/java/com/sd/business/service/board/impl/SalesBoardServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.board.dto.BzSkuSpecSalesSelectDto;
 import com.sd.business.entity.board.dto.DailyBoardSelectDto;
 import com.sd.business.entity.board.dto.SalesBoardSelectDto;
 import com.sd.business.entity.board.vo.*;
@@ -307,4 +308,37 @@ public class SalesBoardServiceImpl implements SalesBoardService {
 
         return salesBoardVoList;
     }
+
+    @Override
+    public Page<BzSkuSpecSalesVo> getBzSkuSpecSalesPage(BzSkuSpecSalesSelectDto dto) {
+        IWrapper<SkuSalesRankingVo> wrapper = IWrapper.getWrapper();
+        wrapper.eq("bc", BomClassify::getParentId, 1);
+        wrapper.eq("oi", OrderInfo::getDepartmentId, DepartmentConstant.BZ);
+        wrapper.eq("oi", OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey());
+        wrapper.ge("oi", OrderInfo::getShippingTime, DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -30)));
+        wrapper.groupBy("ss.id");
+        wrapper.orderByDesc("salesQuantity");
+        Page<SkuSalesRankingVo> page = salesBoardMapper.getSkuSalesRankingPage(dto.getPage(), wrapper);
+        List<SkuSalesRankingVo> records = page.getRecords();
+
+        Page<BzSkuSpecSalesVo> result = new Page<>();
+        if (records.isEmpty()) {
+            return result;
+        }
+
+        List<BzSkuSpecSalesVo> salesBoardVoList = records.stream().map(item -> {
+            BzSkuSpecSalesVo vo = new BzSkuSpecSalesVo();
+            vo.setSkuSpecCode(item.getSkuSpecCode());
+            vo.setSkuSpecName(item.getSkuSpecName());
+            vo.setSalesQuantity(item.getSalesQuantity());
+            vo.setDailySales(vo.getSalesQuantity().divide(BigDecimal.valueOf(30), 0, RoundingMode.HALF_UP));
+            return vo;
+        }).collect(Collectors.toList());
+
+        result.setTotal(page.getTotal());
+        result.setRecords(salesBoardVoList);
+        result.setPages(page.getPages());
+        result.setSize(page.getSize());
+        return result;
+    }
 }