## Opt - 业绩统计细化

This commit is contained in:
sangelxiu1 2025-09-29 11:00:45 +08:00
parent 0797ca19c7
commit 866b52a99a
4 changed files with 148 additions and 9 deletions

View File

@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.constant.RetailConstants;
import com.hzs.common.core.enums.EOrderType;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.domain.report.CuMemberPerformanceSummary;
@ -42,10 +43,24 @@ public class CuMemberPerformanceSummaryServiceImpl extends ServiceImpl<CuMemberP
List<SaOrder> orderList = baseMapper.getOrderByDay(startDate, endDate, orderTypeList);
Map<Integer, List<SaOrder>> groupedOrders = orderList.stream().collect(Collectors.groupingBy(SaOrder::getOrderType));
CuMemberPerformanceSummary summary = CuMemberPerformanceSummary.getInitCuMemberPerformanceSummary(startDate);
BigDecimal dvSource;
if(ObjectUtil.isNotEmpty(groupedOrders.get(EOrderType.RETAIL_REGISTER.getValue()))) {
for (SaOrder saOrder : groupedOrders.get(EOrderType.RETAIL_REGISTER.getValue())) {
summary.setRetailRegisterAmount(summary.getRetailDiscountAmount().add(saOrder.getOrderAmount()));
summary.setRetailRegisterPv(summary.getRetailDiscountPv().add(saOrder.getOrderAchieve()));
summary.setRetailRegisterAmount(summary.getRetailRegisterAmount().add(saOrder.getOrderAmount()));
summary.setRetailRegisterPv(summary.getRetailRegisterPv().add(saOrder.getOrderAchieve()));
dvSource = getDvSource(summary.getRetailRegisterPv());
BigDecimal dvUL = dvSource;
if(saOrder.getOrderAmount().compareTo(RetailConstants.SPECIAL_AREA_41_MAX_ORDER_DIVIDEND_PV_AMOUNT) > 0){
dvUL = RetailConstants.SPECIAL_AREA_41_MAX_ORDER_DIVIDEND_PV_VALUE;
}
summary.setRetailRegisterDvSource(dvSource);
summary.setRetailRegisterDvUL(dvUL);
summary.setTotalDvSource(summary.getTotalDvSource().add(dvSource));
summary.setTotalDvUL(summary.getTotalDvUL().add(dvUL));
summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount()));
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
@ -56,6 +71,17 @@ public class CuMemberPerformanceSummaryServiceImpl extends ServiceImpl<CuMemberP
summary.setRetailUpgradeAmount(summary.getRetailUpgradeAmount().add(saOrder.getOrderAmount()));
summary.setRetailUpgradePv(summary.getRetailUpgradePv().add(saOrder.getOrderAchieve()));
dvSource = getDvSource(summary.getRetailUpgradePv());
BigDecimal dvUL = dvSource;
if(saOrder.getOrderAmount().compareTo(RetailConstants.SPECIAL_AREA_41_MAX_ORDER_DIVIDEND_PV_AMOUNT) > 0){
dvUL = RetailConstants.SPECIAL_AREA_41_MAX_ORDER_DIVIDEND_PV_VALUE;
}
summary.setRetailUpgradeDvSource(dvSource);
summary.setRetailUpgradeDvUL(dvUL);
summary.setTotalDvSource(summary.getTotalDvSource().add(dvSource));
summary.setTotalDvUL(summary.getTotalDvUL().add(dvUL));
summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount()));
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
}
@ -65,12 +91,19 @@ public class CuMemberPerformanceSummaryServiceImpl extends ServiceImpl<CuMemberP
summary.setRetailRepurchaseAmount(summary.getRetailRepurchaseAmount().add(saOrder.getOrderAmount()));
summary.setRetailRepurchasePv(summary.getRetailRepurchasePv().add(saOrder.getOrderAchieve()));
dvSource = getDvSource(summary.getRetailRepurchasePv());
summary.setRetailRepurchaseDvSource(dvSource);
summary.setRetailRepurchaseDvUL(dvSource);
summary.setTotalDvSource(summary.getTotalDvSource().add(dvSource));
summary.setTotalDvUL(summary.getTotalDvUL().add(dvSource));
summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount()));
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
}
}
if(ObjectUtil.isNotEmpty(groupedOrders.get(EOrderType.RETAIL_CONSUME.getValue()))){
for (SaOrder saOrder : groupedOrders.get(EOrderType.RETAIL_CONSUME.getValue())) {
if(ObjectUtil.isNotEmpty(groupedOrders.get(EOrderType.DISCOUNT_ORDER.getValue()))){
for (SaOrder saOrder : groupedOrders.get(EOrderType.DISCOUNT_ORDER.getValue())) {
summary.setRetailDiscountAmount(summary.getRetailDiscountAmount().add(saOrder.getOrderAmount()));
summary.setDividendPv(summary.getDividendPv().add(saOrder.getOrderAchieve()));
@ -78,8 +111,11 @@ public class CuMemberPerformanceSummaryServiceImpl extends ServiceImpl<CuMemberP
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
}
}
summary.setDividendPv(summary.getTotalPv().multiply(new BigDecimal("0.015")));
summary.setPkCreator(MagicNumberConstants.PK_ADMIN);
baseMapper.insert(summary);
}
private BigDecimal getDvSource(BigDecimal source){
return source.multiply(RetailConstants.SPECIAL_AREA_DIVIDEND_PV_PROPORTION);
}
}

View File

@ -33,6 +33,21 @@ public class RetailConstants {
*/
public static final BigDecimal SPECIAL_AREA_41_MAX_ORDER_AMOUNT = new BigDecimal("20000");
/**
* 分红上限(0.015)金额
*/
public static final BigDecimal SPECIAL_AREA_41_MAX_ORDER_DIVIDEND_PV_AMOUNT = new BigDecimal("10000");
/**
* 分红上限(0.015)结果值
*/
public static final BigDecimal SPECIAL_AREA_41_MAX_ORDER_DIVIDEND_PV_VALUE = new BigDecimal("350");
/**
* 分红计算比例
*/
public static final BigDecimal SPECIAL_AREA_DIVIDEND_PV_PROPORTION = new BigDecimal("0.015");
/**
* 注册是否限制手机号重复
*/

View File

@ -52,6 +52,18 @@ public class CuMemberPerformanceSummary extends BaseEntity {
@TableField("RETAIL_REGISTER_PV")
private BigDecimal retailRegisterPv;
/**
* 精品专区销售分红(原值)
*/
@TableField("RETAIL_REGISTER_DV_SOURCE")
private BigDecimal retailRegisterDvSource;
/**
* 精品专区销售分红(上限)
*/
@TableField("RETAIL_REGISTER_DV_UL")
private BigDecimal retailRegisterDvUL;
/**
* 甄选专区销售金额
*/
@ -64,6 +76,18 @@ public class CuMemberPerformanceSummary extends BaseEntity {
@TableField("RETAIL_UPGRADE_PV")
private BigDecimal retailUpgradePv;
/**
* 甄选专区销售分红(原值)
*/
@TableField("RETAIL_UPGRADE_DV_SOURCE")
private BigDecimal retailUpgradeDvSource;
/**
* 甄选专区销售分红(上限)
*/
@TableField("RETAIL_UPGRADE_DV_UL")
private BigDecimal retailUpgradeDvUL;
/**
* 商城专区销售金额
*/
@ -76,6 +100,18 @@ public class CuMemberPerformanceSummary extends BaseEntity {
@TableField("RETAIL_REPURCHASE_PV")
private BigDecimal retailRepurchasePv;
/**
* 商城专区销售分红(原值)
*/
@TableField("RETAIL_REPURCHASE_DV_SOURCE")
private BigDecimal retailRepurchaseDvSource;
/**
* 商城专区销售分红(上限)
*/
@TableField("RETAIL_REPURCHASE_DV_UL")
private BigDecimal retailRepurchaseDvUL;
/**
* 五折专区销售金额
*/
@ -88,6 +124,18 @@ public class CuMemberPerformanceSummary extends BaseEntity {
@TableField("RETAIL_DISCOUNT_PV")
private BigDecimal retailDiscountPv;
/**
* 五折专区销售分红(原值)
*/
@TableField("RETAIL_DISCOUNT_DV_SOURCE")
private BigDecimal retailDiscountDvSource;
/**
* 五折专区销售分红(上限)
*/
@TableField("RETAIL_DISCOUNT_DV_UL")
private BigDecimal retailDiscountDvUL;
/**
* 当期销售金额合计
*/
@ -101,10 +149,16 @@ public class CuMemberPerformanceSummary extends BaseEntity {
private BigDecimal totalPv;
/**
* 当日分红合计(分红所有专区PV值的1.5%每天进行记录)
* 当日分红合计(分红所有专区PV值的1.5%每天进行记录)(原值)
*/
@TableField("DIVIDEND_PV")
private BigDecimal dividendPv;
@TableField("TOTAL_DV_SOURCE")
private BigDecimal totalDvSource;
/**
* 当日分红合计(分红所有专区PV值的1.5%每天进行记录)(上限)
*/
@TableField("TOTAL_DV_UL")
private BigDecimal totalDvUL;
public static CuMemberPerformanceSummary getInitCuMemberPerformanceSummary(Date summaryDate){
@ -112,15 +166,24 @@ public class CuMemberPerformanceSummary extends BaseEntity {
.summaryDate(summaryDate)
.retailRegisterAmount(BigDecimal.ZERO)
.retailRegisterPv(BigDecimal.ZERO)
.retailRegisterDvSource(BigDecimal.ZERO)
.retailRegisterDvUL(BigDecimal.ZERO)
.retailUpgradeAmount(BigDecimal.ZERO)
.retailUpgradePv(BigDecimal.ZERO)
.retailUpgradeDvSource(BigDecimal.ZERO)
.retailUpgradeDvUL(BigDecimal.ZERO)
.retailRepurchaseAmount(BigDecimal.ZERO)
.retailRepurchasePv(BigDecimal.ZERO)
.retailRepurchaseDvSource(BigDecimal.ZERO)
.retailRepurchaseDvUL(BigDecimal.ZERO)
.retailDiscountAmount(BigDecimal.ZERO)
.retailDiscountPv(BigDecimal.ZERO)
.retailDiscountDvSource(BigDecimal.ZERO)
.retailDiscountDvUL(BigDecimal.ZERO)
.totalAmount(BigDecimal.ZERO)
.totalPv(BigDecimal.ZERO)
.dividendPv(BigDecimal.ZERO)
.totalDvSource(BigDecimal.ZERO)
.totalDvUL(BigDecimal.ZERO)
.build();
}
}

View File

@ -36,6 +36,31 @@ COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."DIVIDEND_PV" IS '当日分红
COMMENT ON TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" IS '销售业绩统计表';
ALTER TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" RENAME COLUMN "DIVIDEND_PV" TO "TOTAL_DV_SOURCE";
ALTER TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" ADD "RETAIL_REGISTER_DV_SOURCE" NUMBER(20) DEFAULT 0 NOT NULL;
ALTER TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" ADD "RETAIL_REGISTER_DV_UL" NUMBER(20) DEFAULT 0 NOT NULL;
ALTER TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" ADD "RETAIL_UPGRADE_DV_SOURCE" NUMBER(20) DEFAULT 0 NOT NULL;
ALTER TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" ADD "RETAIL_UPGRADE_DV_UL" NUMBER(20) DEFAULT 0 NOT NULL;
ALTER TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" ADD "RETAIL_REPURCHASE_DV_SOURCE" NUMBER(20) DEFAULT 0 NOT NULL;
ALTER TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" ADD "RETAIL_REPURCHASE_DV_UL" NUMBER(20) DEFAULT 0 NOT NULL;
ALTER TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" ADD "RETAIL_DISCOUNT_DV_SOURCE" NUMBER(20) DEFAULT 0 NOT NULL;
ALTER TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" ADD "RETAIL_DISCOUNT_DV_UL" NUMBER(20) DEFAULT 0 NOT NULL;
ALTER TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" ADD "TOTAL_DV_UL" NUMBER(20) DEFAULT 0 NOT NULL;
COMMENT ON COLUMN "CU_MEMBER_PERFORMANCE_SUMMARY"."RETAIL_REGISTER_DV_SOURCE" IS '精品专区销售分红(原值)';
COMMENT ON COLUMN "CU_MEMBER_PERFORMANCE_SUMMARY"."RETAIL_REGISTER_DV_UL" IS '精品专区销售分红(上限)';
COMMENT ON COLUMN "CU_MEMBER_PERFORMANCE_SUMMARY"."RETAIL_UPGRADE_DV_SOURCE" IS '甄选专区销售分红(原值)';
COMMENT ON COLUMN "CU_MEMBER_PERFORMANCE_SUMMARY"."RETAIL_UPGRADE_DV_UL" IS '甄选专区销售分红(上限)';
COMMENT ON COLUMN "CU_MEMBER_PERFORMANCE_SUMMARY"."RETAIL_REPURCHASE_DV_SOURCE" IS '商城专区销售分红(原值)';
COMMENT ON COLUMN "CU_MEMBER_PERFORMANCE_SUMMARY"."RETAIL_REPURCHASE_DV_UL" IS '商城专区销售分红(上限)';
COMMENT ON COLUMN "CU_MEMBER_PERFORMANCE_SUMMARY"."RETAIL_DISCOUNT_DV_SOURCE" IS '五折专区销售分红(原值)';
COMMENT ON COLUMN "CU_MEMBER_PERFORMANCE_SUMMARY"."RETAIL_DISCOUNT_DV_UL" IS '五折专区销售分红(上限)';
COMMENT ON COLUMN "CU_MEMBER_PERFORMANCE_SUMMARY"."TOTAL_DV_SOURCE" IS '当日分红合计(分红所有专区PV值的1.5%每天进行记录)(原值)';
COMMENT ON COLUMN "CU_MEMBER_PERFORMANCE_SUMMARY"."TOTAL_DV_UL" IS '当日分红合计(分红所有专区PV值的1.5%每天进行记录)(上限)';
CREATE SEQUENCE C_M_PERFORMANCE_SUMMARY_SEQ