From 07f8dbe8d351d7d3e0a431804bb46e7bc9e8adf3 Mon Sep 17 00:00:00 2001 From: sangelxiu1 <15781802@163.com> Date: Tue, 23 Sep 2025 11:54:03 +0800 Subject: [PATCH] =?UTF-8?q?##=20Feat=20-=20=E4=B8=9A=E7=BB=A9=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/IPerformanceSummaryServiceApi.java | 19 +++ .../CuMemberPerformanceSummaryController.java | 20 +++ .../CuMemberPerformanceSummaryMapper.java | 21 +++ .../provider/PerformanceSummaryProvider.java | 24 ++++ .../ICuMemberPerformanceSummaryService.java | 16 +++ ...CuMemberPerformanceSummaryServiceImpl.java | 73 ++++++++++ .../CuMemberPerformanceSummaryMapper.xml | 49 +++++++ .../report/CuMemberPerformanceSummary.java | 125 ++++++++++++++++++ sql/2025年9月22日_业绩统计.sql | 43 ++++++ 9 files changed, 390 insertions(+) create mode 100644 bd-api/bd-api-report/src/main/java/com/hzs/report/order/IPerformanceSummaryServiceApi.java create mode 100644 bd-business/bd-business-report/src/main/java/com/hzs/report/order/controller/CuMemberPerformanceSummaryController.java create mode 100644 bd-business/bd-business-report/src/main/java/com/hzs/report/order/mapper/CuMemberPerformanceSummaryMapper.java create mode 100644 bd-business/bd-business-report/src/main/java/com/hzs/report/order/provider/PerformanceSummaryProvider.java create mode 100644 bd-business/bd-business-report/src/main/java/com/hzs/report/order/service/ICuMemberPerformanceSummaryService.java create mode 100644 bd-business/bd-business-report/src/main/java/com/hzs/report/order/service/impl/CuMemberPerformanceSummaryServiceImpl.java create mode 100644 bd-business/bd-business-report/src/main/resources/mapper/report/order/CuMemberPerformanceSummaryMapper.xml create mode 100644 bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/report/CuMemberPerformanceSummary.java create mode 100644 sql/2025年9月22日_业绩统计.sql diff --git a/bd-api/bd-api-report/src/main/java/com/hzs/report/order/IPerformanceSummaryServiceApi.java b/bd-api/bd-api-report/src/main/java/com/hzs/report/order/IPerformanceSummaryServiceApi.java new file mode 100644 index 00000000..357fe024 --- /dev/null +++ b/bd-api/bd-api-report/src/main/java/com/hzs/report/order/IPerformanceSummaryServiceApi.java @@ -0,0 +1,19 @@ +package com.hzs.report.order; + +import com.hzs.common.core.domain.R; +import com.hzs.system.sys.dto.ApprovalBusinessResultDTO; + +/** + * 订单服务对外提供接口 + */ +public interface IPerformanceSummaryServiceApi { + + /** + * 按天创建统计数据 + * + * @param day + * @return + */ + R createDataByDay(String day); + +} diff --git a/bd-business/bd-business-report/src/main/java/com/hzs/report/order/controller/CuMemberPerformanceSummaryController.java b/bd-business/bd-business-report/src/main/java/com/hzs/report/order/controller/CuMemberPerformanceSummaryController.java new file mode 100644 index 00000000..22b076a4 --- /dev/null +++ b/bd-business/bd-business-report/src/main/java/com/hzs/report/order/controller/CuMemberPerformanceSummaryController.java @@ -0,0 +1,20 @@ +package com.hzs.report.order.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 销售业绩统计表 前端控制器 + *

+ * + * @author sangelxiu1 + * @since 2025-09-22 + */ +@RestController +@RequestMapping("/order/performance-summary") +public class CuMemberPerformanceSummaryController { + +} diff --git a/bd-business/bd-business-report/src/main/java/com/hzs/report/order/mapper/CuMemberPerformanceSummaryMapper.java b/bd-business/bd-business-report/src/main/java/com/hzs/report/order/mapper/CuMemberPerformanceSummaryMapper.java new file mode 100644 index 00000000..2e78435c --- /dev/null +++ b/bd-business/bd-business-report/src/main/java/com/hzs/report/order/mapper/CuMemberPerformanceSummaryMapper.java @@ -0,0 +1,21 @@ +package com.hzs.report.order.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.hzs.common.domain.report.CuMemberPerformanceSummary; +import com.hzs.common.domain.sale.order.SaOrder; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + *

+ * 销售业绩统计表 Mapper 接口 + *

+ * + * @author sangelxiu1 + * @since 2025-09-22 + */ +public interface CuMemberPerformanceSummaryMapper extends BaseMapper { + List getOrderByDay(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("orderTypeList") List orderTypeList); +} diff --git a/bd-business/bd-business-report/src/main/java/com/hzs/report/order/provider/PerformanceSummaryProvider.java b/bd-business/bd-business-report/src/main/java/com/hzs/report/order/provider/PerformanceSummaryProvider.java new file mode 100644 index 00000000..d258a9e9 --- /dev/null +++ b/bd-business/bd-business-report/src/main/java/com/hzs/report/order/provider/PerformanceSummaryProvider.java @@ -0,0 +1,24 @@ +package com.hzs.report.order.provider; + +import com.hzs.common.core.domain.R; +import com.hzs.report.order.IPerformanceSummaryServiceApi; +import com.hzs.report.order.service.ICuMemberPerformanceSummaryService; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboService; + +import javax.annotation.Resource; + +/** + * 销售业绩统计 + */ +@DubboService +@Slf4j +public class PerformanceSummaryProvider implements IPerformanceSummaryServiceApi { + @Resource + ICuMemberPerformanceSummaryService iCuMemberPerformanceSummaryService; + @Override + public R createDataByDay(String day) { + iCuMemberPerformanceSummaryService.createDataByDay(day); + return R.ok(); + } +} diff --git a/bd-business/bd-business-report/src/main/java/com/hzs/report/order/service/ICuMemberPerformanceSummaryService.java b/bd-business/bd-business-report/src/main/java/com/hzs/report/order/service/ICuMemberPerformanceSummaryService.java new file mode 100644 index 00000000..da1e2887 --- /dev/null +++ b/bd-business/bd-business-report/src/main/java/com/hzs/report/order/service/ICuMemberPerformanceSummaryService.java @@ -0,0 +1,16 @@ +package com.hzs.report.order.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hzs.common.domain.report.CuMemberPerformanceSummary; + +/** + *

+ * 销售业绩统计表 服务类 + *

+ * + * @author sangelxiu1 + * @since 2025-09-22 + */ +public interface ICuMemberPerformanceSummaryService extends IService { + void createDataByDay(String day); +} diff --git a/bd-business/bd-business-report/src/main/java/com/hzs/report/order/service/impl/CuMemberPerformanceSummaryServiceImpl.java b/bd-business/bd-business-report/src/main/java/com/hzs/report/order/service/impl/CuMemberPerformanceSummaryServiceImpl.java new file mode 100644 index 00000000..44487796 --- /dev/null +++ b/bd-business/bd-business-report/src/main/java/com/hzs/report/order/service/impl/CuMemberPerformanceSummaryServiceImpl.java @@ -0,0 +1,73 @@ +package com.hzs.report.order.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hzs.common.core.utils.DateUtils; +import com.hzs.common.domain.report.CuMemberPerformanceSummary; +import com.hzs.common.domain.sale.order.SaOrder; +import com.hzs.report.order.mapper.CuMemberPerformanceSummaryMapper; +import com.hzs.report.order.service.ICuMemberPerformanceSummaryService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 销售业绩统计表 服务实现类 + *

+ * + * @author sangelxiu1 + * @since 2025-09-22 + */ +@Service +@Slf4j +public class CuMemberPerformanceSummaryServiceImpl extends ServiceImpl implements ICuMemberPerformanceSummaryService { + + @Override + public void createDataByDay(String day) { + Date startDate = DateUtils.getStartOfDay(day); + Date endDate = DateUtils.getEndOfDay(day); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CuMemberPerformanceSummary::getSummaryDate, startDate); + baseMapper.delete(queryWrapper); + List orderTypeList = Arrays.asList(41, 42, 43); + List orderList = baseMapper.getOrderByDay(startDate, endDate, orderTypeList); + Map> groupedOrders = orderList.stream().collect(Collectors.groupingBy(SaOrder::getOrderType)); + CuMemberPerformanceSummary summary = CuMemberPerformanceSummary.getInitCuMemberPerformanceSummary(startDate); + for (SaOrder saOrder : groupedOrders.get(41)) { + summary.setRetailRegisterAmount(summary.getRetailDiscountAmount().add(saOrder.getOrderAmount())); + summary.setRetailRegisterPv(summary.getRetailDiscountPv().add(saOrder.getOrderAchieve())); + + summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount())); + summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount())); + } + for (SaOrder saOrder : groupedOrders.get(42)) { + summary.setRetailUpgradeAmount(summary.getRetailUpgradeAmount().add(saOrder.getOrderAmount())); + summary.setRetailUpgradePv(summary.getRetailUpgradePv().add(saOrder.getOrderAchieve())); + + summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount())); + summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount())); + } + for (SaOrder saOrder : groupedOrders.get(43)) { + summary.setRetailRepurchaseAmount(summary.getRetailRepurchaseAmount().add(saOrder.getOrderAmount())); + summary.setRetailRepurchasePv(summary.getRetailRepurchasePv().add(saOrder.getOrderAchieve())); + + summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount())); + summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount())); + } + for (SaOrder saOrder : groupedOrders.get(44)) { + summary.setRetailDiscountAmount(summary.getRetailDiscountAmount().add(saOrder.getOrderAmount())); + summary.setDividendPv(summary.getDividendPv().add(saOrder.getOrderAchieve())); + + summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount())); + summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount())); + } + summary.setDividendPv(summary.getTotalPv().multiply(new BigDecimal("0.015"))); + baseMapper.insert(summary); + } +} diff --git a/bd-business/bd-business-report/src/main/resources/mapper/report/order/CuMemberPerformanceSummaryMapper.xml b/bd-business/bd-business-report/src/main/resources/mapper/report/order/CuMemberPerformanceSummaryMapper.xml new file mode 100644 index 00000000..492f82bf --- /dev/null +++ b/bd-business/bd-business-report/src/main/resources/mapper/report/order/CuMemberPerformanceSummaryMapper.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DEL_FLAG, + PK_COUNTRY, + CREATION_TIME, + MODIFIED_TIME, + PK_CREATOR, + PK_MODIFIED, + PK_ID, SUMMARY_DATE, RETAIL_REGISTER_AMOUNT, RETAIL_REGISTER_PV, RETAIL_UPGRADE_AMOUNT, RETAIL_UPGRADE_PV, RETAIL_REPURCHASE_AMOUNT, RETAIL_REPURCHASE_PV, RETAIL_DISCOUNT_AMOUNT, RETAIL_DISCOUNT_PV, TOTAL_AMOUNT, TOTAL_PV, DIVIDEND_PV + + + + diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/report/CuMemberPerformanceSummary.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/report/CuMemberPerformanceSummary.java new file mode 100644 index 00000000..1823e0df --- /dev/null +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/report/CuMemberPerformanceSummary.java @@ -0,0 +1,125 @@ +package com.hzs.common.domain.report; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableField; +import com.hzs.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.Accessors; + +/** + *

+ * 销售业绩统计表 + *

+ * + * @author sangelxiu1 + * @since 2025-09-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("CU_MEMBER_PERFORMANCE_SUMMARY") +@KeySequence("C_M_PERFORMANCE_SUMMARY_SEQ") +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class CuMemberPerformanceSummary extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableField("PK_ID") + private Long pkId; + + /** + * 统计日期 + */ + @TableField("SUMMARY_DATE") + private Date summaryDate; + + /** + * 精品专区销售金额 + */ + @TableField("RETAIL_REGISTER_AMOUNT") + private BigDecimal retailRegisterAmount; + + /** + * 精品专区销售业绩 + */ + @TableField("RETAIL_REGISTER_PV") + private BigDecimal retailRegisterPv; + + /** + * 甄选专区销售金额 + */ + @TableField("RETAIL_UPGRADE_AMOUNT") + private BigDecimal retailUpgradeAmount; + + /** + * 甄选专区销售业绩 + */ + @TableField("RETAIL_UPGRADE_PV") + private BigDecimal retailUpgradePv; + + /** + * 商城专区销售金额 + */ + @TableField("RETAIL_REPURCHASE_AMOUNT") + private BigDecimal retailRepurchaseAmount; + + /** + * 商城专区销售业绩 + */ + @TableField("RETAIL_REPURCHASE_PV") + private BigDecimal retailRepurchasePv; + + /** + * 五折专区销售金额 + */ + @TableField("RETAIL_DISCOUNT_AMOUNT") + private BigDecimal retailDiscountAmount; + + /** + * 五折专区销售业绩 + */ + @TableField("RETAIL_DISCOUNT_PV") + private BigDecimal retailDiscountPv; + + /** + * 当期销售金额合计 + */ + @TableField("TOTAL_AMOUNT") + private BigDecimal totalAmount; + + /** + * 当期销售业绩合计 + */ + @TableField("TOTAL_PV") + private BigDecimal totalPv; + + /** + * 当日分红合计(分红:所有专区PV值的1.5%每天进行记录) + */ + @TableField("DIVIDEND_PV") + private BigDecimal dividendPv; + + + public static CuMemberPerformanceSummary getInitCuMemberPerformanceSummary(Date summaryDate){ + return CuMemberPerformanceSummary.builder() + .summaryDate(summaryDate) + .retailRegisterAmount(BigDecimal.ZERO) + .retailRegisterPv(BigDecimal.ZERO) + .retailUpgradeAmount(BigDecimal.ZERO) + .retailUpgradePv(BigDecimal.ZERO) + .retailRepurchaseAmount(BigDecimal.ZERO) + .retailRepurchasePv(BigDecimal.ZERO) + .retailDiscountAmount(BigDecimal.ZERO) + .retailDiscountPv(BigDecimal.ZERO) + .totalAmount(BigDecimal.ZERO) + .totalPv(BigDecimal.ZERO) + .dividendPv(BigDecimal.ZERO) + .build(); + } +} diff --git a/sql/2025年9月22日_业绩统计.sql b/sql/2025年9月22日_业绩统计.sql new file mode 100644 index 00000000..5fd29e0d --- /dev/null +++ b/sql/2025年9月22日_业绩统计.sql @@ -0,0 +1,43 @@ +CREATE TABLE CU_MEMBER_PERFORMANCE_SUMMARY +( + "PK_ID" NUMBER(20,0) NOT NULL ENABLE, + "SUMMARY_DATE" DATE NOT NULL ENABLE, + "RETAIL_REGISTER_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE, + "RETAIL_REGISTER_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE, + "RETAIL_UPGRADE_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE, + "RETAIL_UPGRADE_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE, + "RETAIL_REPURCHASE_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE, + "RETAIL_REPURCHASE_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE, + "RETAIL_DISCOUNT_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE, + "RETAIL_DISCOUNT_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE, + "TOTAL_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE, + "TOTAL_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE, + "DIVIDEND_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE, + "DEL_FLAG" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "PK_COUNTRY" NUMBER(4,0) DEFAULT 1 NOT NULL ENABLE, + "CREATION_TIME" DATE DEFAULT sysdate NOT NULL ENABLE, + "MODIFIED_TIME" DATE, + "PK_CREATOR" NUMBER(20,0) NOT NULL ENABLE, + "PK_MODIFIED" NUMBER(20,0) +); + +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."SUMMARY_DATE" IS '统计日期'; +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REGISTER_AMOUNT" IS '精品专区销售金额'; +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REGISTER_PV" IS '精品专区销售业绩'; +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_UPGRADE_AMOUNT" IS '甄选专区销售金额'; +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_UPGRADE_PV" IS '甄选专区销售业绩'; +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REPURCHASE_AMOUNT" IS '商城专区销售金额'; +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REPURCHASE_PV" IS '商城专区销售业绩'; +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_DISCOUNT_AMOUNT" IS '五折专区销售金额'; +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_DISCOUNT_PV" IS '五折专区销售业绩'; +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."TOTAL_AMOUNT" IS '当期销售金额合计'; +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."TOTAL_PV" IS '当期销售业绩合计'; +COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."DIVIDEND_PV" IS '当日分红合计(分红:所有专区PV值的1.5%每天进行记录)'; + +COMMENT ON TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" IS '销售业绩统计表'; + + + +CREATE SEQUENCE C_M_PERFORMANCE_SUMMARY_SEQ + START WITH 1 + INCREMENT BY 1;