## 奖衔实体调整;

This commit is contained in:
cabbage 2025-09-28 13:59:49 +08:00 committed by sangelxiu1
parent 6704bace80
commit 1fc421a74d
3 changed files with 41 additions and 300 deletions

View File

@ -99,12 +99,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 会员奖衔升级记录
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
// 计算自己奖衔等
calculateGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, secondRangeTableName,
cuMemberAwardsList, sourceMemberRangeExt);
// 计算团队业绩计算奖衔
cuMemberAwardsList.addAll(calculateRetailRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap,
secondRangeTableName));
// 奖金处理
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
@ -345,9 +339,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
sourceMember.setNewConsumeAmount(orderAmount);
sourceMember.setConsumeAmount(sourceMember.getConsumeAmount().add(orderAmount));
sourceMember.setMonthConsumeAmount(sourceMember.getMonthConsumeAmount().add(orderAmount));
// TODO 自己计算奖衔
this.calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, sourceMember);
// TODO 累计团队业绩金额 + 计算奖衔
// // 自己计算奖衔
// this.calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, sourceMember);
// 累计团队业绩金额 + 计算奖衔
this.calculateParentAwards(period, memberRangeExtMap, rangeTableName, sourceMember, saOrderExt, retailAwardsMap);
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
@ -429,42 +423,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
}
}
/**
* 计算团队奖衔 -- 秒结日结
*/
public List<CuMemberAwards> calculateRetailRangeGradeAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt,
Map<Integer, BdAwards> retailAwardsMap, String secondRangeTableName) {
// 会员奖衔升级列表
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
// 订单会员
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
// 订单会员的推荐人
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(sourceMemberRangeExt.getPkParent());
BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
BigDecimal orderAmount = saOrderExt.getOrderAmount();
while (null != targetMemberRangeExt) {
// 累计业绩不管激活不激活都处理兼容不激活判断显示有问题
targetMemberRangeExt.setAllTeamNewPv(targetMemberRangeExt.getAllTeamNewPv().add(orderAchieve));
targetMemberRangeExt.setAllTeamConsumePv(targetMemberRangeExt.getAllTeamConsumePv().add(orderAchieve));
targetMemberRangeExt.setAllTeamMonthPv(targetMemberRangeExt.getAllTeamMonthPv().add(orderAchieve));
// 累计业绩
targetMemberRangeExt.setTeamNewPv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamNewPv(), orderAchieve));
targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumePv(), orderAchieve));
targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), orderAchieve));
// 累计金额
targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamNewAmount(), orderAmount));
targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount));
targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthAmount(), orderAmount));
// 计算
calculateGradeAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap,
secondRangeTableName, cuMemberAwardsList, targetMemberRangeExt);
targetMemberRangeExt = memberRangeExtMap.get(targetMemberRangeExt.getPkParent());
}
return cuMemberAwardsList;
}
/**
* 计算奖衔 -- 日结秒结
*/
@ -492,86 +450,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
}
break;
}
// // 校验大小区会员数据
// List<CuMemberRetailRangeExt> cuMemberRangeExtList = null;
// // 校验累计小部门会员数据
// List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = null;
// // 计算分红奖衔
// while (true) {
// // 当月奖衔值 + 5获取下一个奖衔值
// int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5;
// if (retailAwardsMap.containsKey(awardsValue)) {
// BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// // 先验证累计业绩
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) {
// // 再验证小区计算小区业绩拉取直推会员数据
// if (null == cuMemberRangeExtList) {
// if (null != secondRangeTableName) {
// // 会员表 关联 秒结表 昨日结算表查询订单会员直推数据
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
// } else {
// // 昨日结算表查询订单会员直推数据
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
// }
// }
// // 本人月消费业绩默认为大区
// BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv();
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// }
// // 月累计业绩 = 本人月消费业绩 + 团队月消费业绩
// BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getAllTeamMonthPv());
// if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// // 月累计业绩 > 大区业绩则月累计就成为大区了
// consumeBigPv = consumePv;
// }
// }
//
// // 小区业绩 = 本人月消费业绩 + 团队月消费业绩 - 大区业绩
// BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv));
// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
// // 小区业绩 >= 小区考核业绩
// if (bdAwards.getPlaceDeptNum() > 0) {
// // 验证是否有多个区满足业绩
// if (null == cuMemberRetailRangeExtList) {
// // 非秒结需要查询日结相关数据秒结表使用上面查出的数据就可以
// if (null != secondRangeTableName) {
// // 会员表 关联 秒结表 昨日结算表查询订单会员直推数据
// cuMemberRetailRangeExtList = cuMemberRangeExtList;
// } else {
// // 昨日结算表查询订单会员直推数据
// cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck());
// }
// }
//
// int enoughNum = 0;
// if (ComputeUtil.compareValue(targetMemberRangeExt.getMonthConsumePv(), bdAwards.getShareCommunityCheck())) {
// enoughNum += 1;
// }
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) {
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// }
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getAllTeamMonthPv()), bdAwards.getShareCommunityCheck())) {
// // 本人月消费业绩 + 团队月消费业绩 >= 小区考核业绩则满足条件小部门 +1
// enoughNum += 1;
// }
// }
// if (bdAwards.getPlaceDeptNum() > enoughNum) {
// break;
// }
// }
// cuMemberAwardsList.add(getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue(), targetMemberRangeExt.getPkShareAwards()));
// targetMemberRangeExt.setShareAwardsValue(bdAwards.getAwardsValue());
// targetMemberRangeExt.setPkShareAwards(bdAwards.getPkId());
// continue;
// }
// }
// }
// break;
// }
}
/**
@ -590,17 +468,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
BigDecimal orderAmount = saOrderExt.getOrderAmount();
while (targetMemberRangeExt != null) {
// 累计盒数业绩不管激活不激活都处理兼容不激活判断显示有问题
if (isSecond) {
// 当天秒结处理
targetMemberRangeExt.setAllTeamNewPv(targetMemberRangeExt.getAllTeamNewPv().subtract(orderAchieve));
} else {
// 非当天日结处理
targetMemberRangeExt.setAllTeamNewPv(targetMemberRangeExt.getAllTeamNewPv().subtract(orderAchieve));
targetMemberRangeExt.setAllTeamConsumePv(targetMemberRangeExt.getAllTeamConsumePv().subtract(orderAchieve));
targetMemberRangeExt.setAllTeamMonthPv(targetMemberRangeExt.getAllTeamMonthPv().subtract(orderAchieve));
}
// 累计金额
targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewAmount(), orderAmount));
targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount));
@ -643,80 +510,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
}
break;
}
// // 计算分红奖衔
// while (true) {
// // 当月奖衔值 + 5获取下一个奖衔值
// int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5;
// if (retailAwardsMap.containsKey(awardsValue)) {
// BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// // 先验证累计业绩
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) {
// // 验证小区计算小区业绩拉取直推会员数据
// List<CuMemberRetailRangeExt> cuMemberRangeExtList;
// if (secondRangeTableName != null) {
// // 会员表 关联 秒结表 昨日结算表查询订单会员直推数据
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
// } else {
// // 昨日结算表查询订单会员直推数据
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
// }
// // 本人月消费业绩默认为大区
// BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv();
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// }
// // 月累计业绩 = 本人月消费业绩 + 团队月消费业绩
// BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getAllTeamMonthPv());
// if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// // 月累计业绩 > 大区业绩则月累计就成为大区了
// consumeBigPv = consumePv;
// }
// }
//
// // 小区业绩 = 本人月消费业绩 + 团队月消费业绩 - 大区业绩
// BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv));
// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
// // 小区业绩 >= 小区考核业绩
// if (bdAwards.getPlaceDeptNum() > 0) {
// // 验证是否有多个区满足业绩
// List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList;
// if (secondRangeTableName != null) {
// // 会员表 关联 秒结表 昨日结算表查询订单会员直推数据
// cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
// } else {
// // 昨日结算表查询订单会员直推数据
// cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck());
// }
//
// int enoughNum = 0;
// if (ComputeUtil.compareValue(targetMemberRangeExt.getMonthConsumePv(), bdAwards.getShareCommunityCheck())) {
// enoughNum += 1;
// }
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) {
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// }
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getAllTeamMonthPv()), bdAwards.getShareCommunityCheck())) {
// // 本人月消费业绩 + 团队月消费业绩 >= 小区考核业绩则满足条件小部门 +1
// enoughNum += 1;
// }
// }
// if (bdAwards.getPlaceDeptNum() > enoughNum) {
// break;
// }
// }
// CuMemberAwards cuMemberRetailAwards = getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue(), targetMemberRangeExt.getPkShareAwards());
// cuMemberShareAwardsMap.put(cuMemberRetailAwards.getPkMember() + "_" + cuMemberRetailAwards.getNewLevel(), cuMemberRetailAwards);
// targetMemberRangeExt.setShareAwardsValue(bdAwards.getAwardsValue());
// targetMemberRangeExt.setPkShareAwards(bdAwards.getPkId());
// continue;
// }
// }
// }
// break;
// }
}
@ -1297,42 +1090,40 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
private void calculateAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName,
SaOrderExt saOrderExt, Map<Integer, BdAwards> retailAwardsMap, List<CuMemberAwards> cuMemberAwardsList,
CuMemberRetailRangeExt targetMember) {
// // 校验大小区会员数据
// List<CuMemberRetailRangeExt> cuMemberRangeExtList = null;
// // 校验累计小部门会员数据
// List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = null;
// // 计算分红奖衔
// while (true) {
// // 当月奖衔值 + 5获取下一个奖衔值
// int awardsValue = targetMember.getAwardsValue() + 5;
// if (retailAwardsMap.containsKey(awardsValue)) {
// BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// // 先验证累计业绩
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMember.getTeamConsumePv(), targetMember.getConsumePv()), bdAwards.getShareTotalCheck())) {
//
//
//
// // 再验证小区计算小区业绩拉取直推会员数据
// if (null == cuMemberRangeExtList) {
// // 昨日结算表查询订单会员直推数据
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember());
// }
// // 本人月消费业绩默认为大区
// BigDecimal consumeBigPv = targetMember.getMonthConsumePv();
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// }
// // 月累计业绩 = 本人月消费业绩 + 团队月消费业绩
// BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getAllTeamMonthPv());
// if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// // 月累计业绩 > 大区业绩则月累计就成为大区了
// consumeBigPv = consumePv;
// }
// }
//
// // 小区业绩 = 本人月消费业绩 + 团队月消费业绩 - 大区业绩
// BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMember.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMember.getTeamMonthPv(), consumeBigPv));
// 校验大小区会员数据
List<CuMemberRetailRangeExt> cuMemberRangeExtList = null;
// 校验累计小部门会员数据
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = null;
// 计算分红奖衔
while (true) {
// 当月奖衔值 + 5获取下一个奖衔值
int awardsValue = targetMember.getAwardsValue() + 5;
if (retailAwardsMap.containsKey(awardsValue)) {
BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// 先验证累计业绩
if (ComputeUtil.compareValue(targetMember.getTeamConsumePv(), bdAwards.getTotalCheck())) {
// 团队累计业绩 >= 奖衔业绩
// 再验证小区计算小区业绩拉取直推会员数据
if (null == cuMemberRangeExtList) {
// 昨日结算表查询会员直推数据
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember());
}
// 大区
BigDecimal consumeBigPv = BigDecimal.ZERO;
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
}
// 累计业绩 = 团队累计消费业绩
BigDecimal consumePv = cuMemberRetailRangeExt.getTeamConsumePv();
if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// 累计业绩 > 大区业绩则累计就成为大区
consumeBigPv = consumePv;
}
}
// // 小区业绩 = 团队累计消费业绩 - 大区业绩
// BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv);
// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
// // 小区业绩 >= 小区考核业绩
// if (bdAwards.getPlaceDeptNum() > 0) {
@ -1364,10 +1155,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// targetMember.setPkAwards(bdAwards.getPkId());
// continue;
// }
// }
// }
// break;
// }
}
}
break;
}
}
/**

View File

@ -59,15 +59,8 @@
<result column="AWARDS_VALUE" property="awardsValue"/>
<result column="AWARDS_NAME" property="awardsName"/>
<result column="RANGE_RATIO" property="rangeRatio"/>
<result column="MONTH_REPURCHASE_RATIO" property="monthRepurchaseRatio"/>
<result column="BENEFIT_AVG_RATIO" property="benefitAvgRatio"/>
<result column="BENEFIT_SHARE_RATIO" property="benefitShareRatio"/>
<result column="COACH_ALGEBRA" property="coachAlgebra"/>
<result column="COACH_RATIO" property="coachRatio"/>
<result column="all_team_new_pv" property="allTeamNewPv"/>
<result column="all_team_consume_pv" property="allTeamConsumePv"/>
<result column="all_team_month_pv" property="allTeamMonthPv"/>
</resultMap>
<update id="mergeMemberRetailRangeInit">
@ -834,9 +827,6 @@
bw.awards_value,
bw.awards_name,
bw.range_ratio,
bw.month_repurchase_ratio,
bw.benefit_avg_ratio,
bw.benefit_share_ratio,
bws.awards_value share_awards_value
from (
select *

View File

@ -40,21 +40,6 @@ public class CuMemberRetailRangeExt extends CuMemberRetailRange {
*/
private BigDecimal rangeRatio;
/**
* 复购级差比例
*/
private BigDecimal monthRepurchaseRatio;
/**
* 分红平均比例
*/
private BigDecimal benefitAvgRatio;
/**
* 分红加权比例
*/
private BigDecimal benefitShareRatio;
/**
* 小区业绩
*/
@ -69,32 +54,7 @@ public class CuMemberRetailRangeExt extends CuMemberRetailRange {
*/
private BigDecimal coachRatio;
/**
* 团队累计消费pv不管激活全累计 -- 日结使用
*/
private BigDecimal allTeamConsumePv;
/**
* 团队月累计消费pv不管激活全累计 -- 日结使用
*/
private BigDecimal allTeamMonthPv;
// 秒结 start
/**
* 本日-个人所有新增金额
*/
private BigDecimal allConsumeNewAmount;
/**
* 本日-个人所有新增业绩
*/
private BigDecimal allConsumeNewPv;
/**
* 本日-团队所有新增金额
*/
private BigDecimal allTeamNewAmount;
/**
* 本日-团队所有新增业绩
*/
private BigDecimal allTeamNewPv;
/**
* 本日-个人注册(精品专区)新增金额
*/