|
@@ -0,0 +1,138 @@
|
|
|
+package com.sd.business.service.board.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import com.sd.business.entity.board.dto.SalesBoardSelectDto;
|
|
|
+import com.sd.business.entity.board.vo.*;
|
|
|
+import com.sd.business.entity.bom.po.Bom;
|
|
|
+import com.sd.business.entity.bom.po.BomClassify;
|
|
|
+import com.sd.business.entity.bom.po.BomSpec;
|
|
|
+import com.sd.business.entity.order.enums.OrderStatusEnum;
|
|
|
+import com.sd.business.entity.order.po.OrderInfo;
|
|
|
+import com.sd.business.mapper.board.SalesBoardMapper;
|
|
|
+import com.sd.business.service.board.SalesBoardService;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 销售看板 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @since 2023-11-16
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class SalesBoardServiceImpl implements SalesBoardService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private SalesBoardMapper salesBoardMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<SkuSalesRankingVo> getSkuSalesRankingPage(SalesBoardSelectDto dto) {
|
|
|
+ IWrapper<SkuSalesRankingVo> wrapper = IWrapper.getWrapper();
|
|
|
+ wrapper.eq("bc", BomClassify::getParentId, 1);
|
|
|
+ wrapper.eq("b", Bom::getItemSubclass, dto.getItemSubclass());
|
|
|
+ wrapper.eq("b", Bom::getChromatophore, dto.getChromatophore());
|
|
|
+ wrapper.eq("bs", BomSpec::getWidth, dto.getBomSpecWidth());
|
|
|
+ wrapper.eq("bs", BomSpec::getHeight, dto.getBomSpecHeight());
|
|
|
+ wrapper.eq("bs", BomSpec::getColour, dto.getColour());
|
|
|
+ wrapper.eq("oi", OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey());
|
|
|
+ wrapper.ge("oi", OrderInfo::getShippingTime, dto.getBeginTime());
|
|
|
+ wrapper.le("oi", OrderInfo::getShippingTime, dto.getEndTime());
|
|
|
+ wrapper.groupBy("ss.id");
|
|
|
+ wrapper.orderByDesc("salesQuantity");
|
|
|
+ return salesBoardMapper.getSkuSalesRankingPage(dto.getPage(), wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<SkuSalesAmountRankingVo> getSkuSalesAmountRankingPage(SalesBoardSelectDto dto) {
|
|
|
+ IWrapper<SkuSalesAmountRankingVo> wrapper = IWrapper.getWrapper();
|
|
|
+ wrapper.eq("bc", BomClassify::getParentId, 1);
|
|
|
+ wrapper.eq("b", Bom::getItemSubclass, dto.getItemSubclass());
|
|
|
+ wrapper.eq("b", Bom::getChromatophore, dto.getChromatophore());
|
|
|
+ wrapper.eq("bs", BomSpec::getWidth, dto.getBomSpecWidth());
|
|
|
+ wrapper.eq("bs", BomSpec::getHeight, dto.getBomSpecHeight());
|
|
|
+ wrapper.eq("bs", BomSpec::getColour, dto.getColour());
|
|
|
+ wrapper.eq("oi", OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey());
|
|
|
+ wrapper.ge("oi", OrderInfo::getShippingTime, dto.getBeginTime());
|
|
|
+ wrapper.le("oi", OrderInfo::getShippingTime, dto.getEndTime());
|
|
|
+ wrapper.groupBy("ss.id");
|
|
|
+ wrapper.orderByDesc("salesAmount");
|
|
|
+ return salesBoardMapper.getSkuSalesAmountRankingPage(dto.getPage(), wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<BomSalesRankingVo> getBomSalesRankingPage(SalesBoardSelectDto dto) {
|
|
|
+ IWrapper<BomSalesRankingVo> wrapper = IWrapper.getWrapper();
|
|
|
+ wrapper.eq("bc", BomClassify::getParentId, 1);
|
|
|
+ wrapper.eq("b", Bom::getItemSubclass, dto.getItemSubclass());
|
|
|
+ wrapper.eq("b", Bom::getChromatophore, dto.getChromatophore());
|
|
|
+ wrapper.eq("bs", BomSpec::getWidth, dto.getBomSpecWidth());
|
|
|
+ wrapper.eq("bs", BomSpec::getHeight, dto.getBomSpecHeight());
|
|
|
+ wrapper.eq("bs", BomSpec::getColour, dto.getColour());
|
|
|
+ wrapper.eq("oi", OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey());
|
|
|
+ wrapper.ge("oi", OrderInfo::getShippingTime, dto.getBeginTime());
|
|
|
+ wrapper.le("oi", OrderInfo::getShippingTime, dto.getEndTime());
|
|
|
+ wrapper.groupBy("bs.id");
|
|
|
+ wrapper.orderByDesc("salesQuantity");
|
|
|
+ return salesBoardMapper.getBomSalesRankingPage(dto.getPage(), wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<BomSalesAmountRankingVo> getBomSalesAmountRankingPage(SalesBoardSelectDto dto) {
|
|
|
+ IWrapper<BomSalesAmountRankingVo> wrapper = IWrapper.getWrapper();
|
|
|
+ wrapper.eq("bc", BomClassify::getParentId, 1);
|
|
|
+ wrapper.eq("b", Bom::getItemSubclass, dto.getItemSubclass());
|
|
|
+ wrapper.eq("b", Bom::getChromatophore, dto.getChromatophore());
|
|
|
+ wrapper.eq("bs", BomSpec::getWidth, dto.getBomSpecWidth());
|
|
|
+ wrapper.eq("bs", BomSpec::getHeight, dto.getBomSpecHeight());
|
|
|
+ wrapper.eq("bs", BomSpec::getColour, dto.getColour());
|
|
|
+ wrapper.eq("oi", OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey());
|
|
|
+ wrapper.ge("oi", OrderInfo::getShippingTime, dto.getBeginTime());
|
|
|
+ wrapper.le("oi", OrderInfo::getShippingTime, dto.getEndTime());
|
|
|
+ wrapper.groupBy("bs.id");
|
|
|
+ wrapper.orderByDesc("salesAmount");
|
|
|
+ return salesBoardMapper.getBomSalesAmountRankingPage(dto.getPage(), wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<SkuSalesRegionRankingVo> getSkuSalesRegionRankingPage(SalesBoardSelectDto dto) {
|
|
|
+ IWrapper<SkuSalesRegionRankingVo> wrapper = IWrapper.getWrapper();
|
|
|
+ wrapper.eq("bc", BomClassify::getParentId, 1);
|
|
|
+ wrapper.eq("b", Bom::getItemSubclass, dto.getItemSubclass());
|
|
|
+ wrapper.eq("b", Bom::getChromatophore, dto.getChromatophore());
|
|
|
+ wrapper.eq("bs", BomSpec::getWidth, dto.getBomSpecWidth());
|
|
|
+ wrapper.eq("bs", BomSpec::getHeight, dto.getBomSpecHeight());
|
|
|
+ wrapper.eq("bs", BomSpec::getColour, dto.getColour());
|
|
|
+ wrapper.eq("oi", OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey());
|
|
|
+ wrapper.ge("oi", OrderInfo::getShippingTime, dto.getBeginTime());
|
|
|
+ wrapper.le("oi", OrderInfo::getShippingTime, dto.getEndTime());
|
|
|
+ wrapper.groupBy("oi.city");
|
|
|
+ if (Objects.equals(dto.getSortBy(), 1)) {
|
|
|
+ wrapper.orderByAsc("salesQuantity");
|
|
|
+ } else {
|
|
|
+ wrapper.orderByDesc("salesQuantity");
|
|
|
+ }
|
|
|
+ return salesBoardMapper.getSkuSalesRegionRankingPage(dto.getPage(), wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<SkuSalesGrowthRateRankingVo> getSkuSalesGrowthRateRankingPage(SalesBoardSelectDto dto) {
|
|
|
+ IWrapper<SkuSalesGrowthRateRankingVo> wrapper = IWrapper.getWrapper();
|
|
|
+ wrapper.eq("bc", BomClassify::getParentId, 1);
|
|
|
+ wrapper.eq("b", Bom::getItemSubclass, dto.getItemSubclass());
|
|
|
+ wrapper.eq("b", Bom::getChromatophore, dto.getChromatophore());
|
|
|
+ wrapper.eq("bs", BomSpec::getWidth, dto.getBomSpecWidth());
|
|
|
+ wrapper.eq("bs", BomSpec::getHeight, dto.getBomSpecHeight());
|
|
|
+ wrapper.eq("bs", BomSpec::getColour, dto.getColour());
|
|
|
+ if (Objects.equals(dto.getSortBy(), 1)) {
|
|
|
+ wrapper.orderByAsc("monthOnMonthRatio");
|
|
|
+ } else {
|
|
|
+ wrapper.orderByDesc("monthOnMonthRatio");
|
|
|
+ }
|
|
|
+ return salesBoardMapper.getSkuSalesGrowthRateRankingPage(dto.getPage(), wrapper);
|
|
|
+ }
|
|
|
+}
|