## 拨比处理;

This commit is contained in:
cabbage 2025-10-13 10:49:47 +08:00
parent 950855cae0
commit 43c7e0ca5e
5 changed files with 194 additions and 400 deletions

View File

@ -166,9 +166,9 @@ public class CuBonusVertexStatisController extends BaseController {
// 阶段收益
vo.setStoreIncomeRate(vo.getStoreIncome().divide(vo.getMainRegAmount(), 4, RoundingMode.HALF_UP).multiply(rate));
// 精品级差
vo.setRangeIncome41(vo.getRangeIncome41().divide(vo.getMainRegAmount(), 4, RoundingMode.HALF_UP).multiply(rate));
vo.setRangeIncome41Rate(vo.getRangeIncome41().divide(vo.getMainRegAmount(), 4, RoundingMode.HALF_UP).multiply(rate));
// 精品平级
vo.setSameLevelIncome41(vo.getSameLevelIncome41().divide(vo.getMainRegAmount(), 4, RoundingMode.HALF_UP).multiply(rate));
vo.setSameLevelIncome41Rate(vo.getSameLevelIncome41().divide(vo.getMainRegAmount(), 4, RoundingMode.HALF_UP).multiply(rate));
}
if (vo.getMainRepurAmount().compareTo(BigDecimal.ZERO) > 0) {
// 见点收益

View File

@ -1,10 +1,8 @@
package com.hzs.member.statis.controller.manager;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.common.core.annotation.AccessPermissions;
import com.hzs.common.core.annotation.Log;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.EOperationBusiness;
import com.hzs.common.core.enums.EOperationMethod;
import com.hzs.common.core.enums.EOperationModule;
@ -16,11 +14,7 @@ import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.member.statis.service.ICuBonusVertexStatisService;
import com.hzs.member.statis.vo.CuBonusVertexStatisTotalVO;
import com.hzs.member.statis.vo.CuBonusVertexStatisVO;
import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.dto.CurrencyDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -45,9 +39,6 @@ public class CuBonusVertexStatisTotalController extends BaseController {
@Autowired
private ICuBonusVertexStatisService iCuBonusVertexStatisService;
@DubboReference
ICurrencyServiceApi iCurrencyServiceApi;
/**
* 奖金拨比列表
**/
@ -55,66 +46,32 @@ public class CuBonusVertexStatisTotalController extends BaseController {
@GetMapping("/list")
@Log(module = EOperationModule.BONUS_DIAL_RATIO, business = EOperationBusiness.BONUS_DIAL_VERTEX_RATIO_TOTAL, method = EOperationMethod.SELECT)
public TableDataInfo list(CuBonusVertexStatisTotalVO cuBonusVertexStatisTotalVO) {
Integer pkCountry = SecurityUtils.getPkCountry();
R<CurrencyDTO> currency = iCurrencyServiceApi.getCurrency(pkCountry);
BigDecimal exchangeRate = currency.getData().getInExchangeRate() == null ? BigDecimal.ONE : currency.getData().getInExchangeRate();
cuBonusVertexStatisTotalVO.setPkCountry(SecurityUtils.getPkCountry());
BigDecimal cent = new BigDecimal(100);
cuBonusVertexStatisTotalVO.setRate(exchangeRate);
cuBonusVertexStatisTotalVO.setPerCent(exchangeRate.multiply(cent));
cuBonusVertexStatisTotalVO.setPkCountry(pkCountry);
//默认查询当前日期的前一天
Date date = DateUtils.currentDate();
if (StringUtils.isEmpty(cuBonusVertexStatisTotalVO.getStartDate()) ||
StringUtils.isEmpty(cuBonusVertexStatisTotalVO.getEndDate())) {
if (StringUtils.isEmpty(cuBonusVertexStatisTotalVO.getStartDate()) || StringUtils.isEmpty(cuBonusVertexStatisTotalVO.getEndDate())) {
Date date = DateUtils.currentDate();
cuBonusVertexStatisTotalVO.setStartDate(DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, date));
cuBonusVertexStatisTotalVO.setEndDate(DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, date));
}
//查询分红比例配置
cuBonusVertexStatisTotalVO.setDividendRatio(BigDecimal.ZERO);
//查询顶点会员
List<CuBonusVertexStatisTotalVO> vertexList = iCuBonusVertexStatisService.queryCuBonusVertex(cuBonusVertexStatisTotalVO);
CuBonusVertexStatisVO cvs = BeanUtil.copyProperties(cuBonusVertexStatisTotalVO, CuBonusVertexStatisVO.class);
for (CuBonusVertexStatisTotalVO ve : vertexList) {
cvs.setPkVertex(ve.getPkVertex());
}
startPage();
//查询顶点奖金拨比汇总
List<CuBonusVertexStatisTotalVO> slList = iCuBonusVertexStatisService.queryCuBonusStatisTotal(cuBonusVertexStatisTotalVO);
if (CollectionUtil.isNotEmpty(slList)) {
slList.forEach(itm -> {
//重新算首购拨比
if (itm.getFirstPurchaseAll().compareTo(BigDecimal.ZERO) > 0) {
BigDecimal mainBonusRate = cent.multiply((itm.getMainBonus()).multiply(currency.getData().getInExchangeRate()));
mainBonusRate = mainBonusRate.divide(itm.getFirstPurchaseAll(), 4, RoundingMode.HALF_UP);
itm.setMainBonusRate(mainBonusRate);
itm.setIntroduceBonusRate(itm.getIntroduceBonus().multiply(cuBonusVertexStatisTotalVO.getPerCent()).divide(itm.getFirstPurchaseAll(), 4, RoundingMode.HALF_UP));
itm.setOrgBonusRate(itm.getOrgBonus().multiply(cuBonusVertexStatisTotalVO.getPerCent()).divide(itm.getFirstPurchaseAll(), 4, RoundingMode.HALF_UP));
itm.setServiceBonusRate(itm.getServiceBonus().multiply(cuBonusVertexStatisTotalVO.getPerCent()).divide(itm.getFirstPurchaseAll(), 4, RoundingMode.HALF_UP));
}
//首购拨出金额
itm.setMainBonus((itm.getMainBonus()).multiply(currency.getData().getInExchangeRate()));
itm.setRepurBonus(itm.getRepurBonus().multiply(currency.getData().getInExchangeRate()));
cuBonusVertexStatisTotalVO.setFirstPurchaseAllSum(cuBonusVertexStatisTotalVO.getFirstPurchaseAllSum().add(itm.getFirstPurchaseAll()));
BigDecimal rate = new BigDecimal(100);
slList.forEach(vo -> {
this.handleStatisVO(vo, rate);
});
}
//计算占比
slList.forEach(itm -> {
if (cuBonusVertexStatisTotalVO.getFirstPurchaseAllSum().compareTo(BigDecimal.ZERO) > 0) {
itm.setFirstPurchaseRatio(cent.multiply(itm.getFirstPurchaseAll()).divide(cuBonusVertexStatisTotalVO.getFirstPurchaseAllSum(), 4, RoundingMode.HALF_UP));
}
});
//查询顶点奖金拨比汇总总和最后一行
CuBonusVertexStatisTotalVO cuBonusVertexStatisSum = iCuBonusVertexStatisService.queryCuBonusStatisSum(cuBonusVertexStatisTotalVO);
if (null != cuBonusVertexStatisSum) {
cuBonusVertexStatisSum.setMainBonus((cuBonusVertexStatisSum.getMainBonus()).multiply(currency.getData().getInExchangeRate()));
cuBonusVertexStatisSum.setRepurBonus(cuBonusVertexStatisSum.getRepurBonus().multiply(currency.getData().getInExchangeRate()));
cuBonusVertexStatisSum.setMemberName("汇总");
//查询顶点奖金拨比汇总总和最后一行
CuBonusVertexStatisTotalVO voSum = iCuBonusVertexStatisService.queryCuBonusStatisSum(cuBonusVertexStatisTotalVO);
if (null != voSum) {
this.handleStatisVO(voSum, rate);
voSum.setMemberName("汇总");
slList.add(voSum);
}
}
slList.add(cuBonusVertexStatisSum);
return getDataTable(slList);
}
@ -124,65 +81,63 @@ public class CuBonusVertexStatisTotalController extends BaseController {
@Log(module = EOperationModule.BONUS_DIAL_RATIO, business = EOperationBusiness.BONUS_DIAL_VERTEX_RATIO_TOTAL, method = EOperationMethod.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, CuBonusVertexStatisTotalVO cuBonusVertexStatisTotalVO) {
Integer pkCountry = SecurityUtils.getPkCountry();
List<CuBonusVertexStatisTotalVO> slList;
R<CurrencyDTO> currency = iCurrencyServiceApi.getCurrency(pkCountry);
BigDecimal exchangeRate = currency.getData().getInExchangeRate() == null ? BigDecimal.ONE : currency.getData().getInExchangeRate();
cuBonusVertexStatisTotalVO.setRate(exchangeRate);
BigDecimal cent = new BigDecimal(100);
cuBonusVertexStatisTotalVO.setPerCent(exchangeRate.multiply(cent));
cuBonusVertexStatisTotalVO.setPkCountry(pkCountry);
cuBonusVertexStatisTotalVO.setPkCountry(SecurityUtils.getPkCountry());
//默认查询当前日期的前一天
Date date = DateUtils.currentDate();
if (StringUtils.isEmpty(cuBonusVertexStatisTotalVO.getStartDate())
|| StringUtils.isEmpty(cuBonusVertexStatisTotalVO.getEndDate())) {
if (StringUtils.isEmpty(cuBonusVertexStatisTotalVO.getStartDate()) || StringUtils.isEmpty(cuBonusVertexStatisTotalVO.getEndDate())) {
Date date = DateUtils.currentDate();
cuBonusVertexStatisTotalVO.setStartDate(DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, date));
cuBonusVertexStatisTotalVO.setEndDate(DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, date));
}
//查询分红比例配置
cuBonusVertexStatisTotalVO.setDividendRatio(BigDecimal.ZERO);
//查询顶点会员
List<CuBonusVertexStatisTotalVO> vertexList = iCuBonusVertexStatisService.queryCuBonusVertex(cuBonusVertexStatisTotalVO);
CuBonusVertexStatisVO cvs = BeanUtil.copyProperties(cuBonusVertexStatisTotalVO, CuBonusVertexStatisVO.class);
for (CuBonusVertexStatisTotalVO ve : vertexList) {
cvs.setPkVertex(ve.getPkVertex());
}
startPage();
//查询顶点奖金拨比汇总
slList = iCuBonusVertexStatisService.queryCuBonusStatisTotal(cuBonusVertexStatisTotalVO);
//查询顶点奖金拨比汇总总和最后一行
CuBonusVertexStatisTotalVO cuBonusVertexStatisSum = iCuBonusVertexStatisService.queryCuBonusStatisSum(cuBonusVertexStatisTotalVO);
cuBonusVertexStatisSum.setMainBonus((cuBonusVertexStatisSum.getMainBonus()).multiply(currency.getData().getInExchangeRate()));
cuBonusVertexStatisSum.setRepurBonus(cuBonusVertexStatisSum.getRepurBonus().multiply(currency.getData().getInExchangeRate()));
List<CuBonusVertexStatisTotalVO> slList = iCuBonusVertexStatisService.queryCuBonusStatisTotal(cuBonusVertexStatisTotalVO);
if (CollectionUtil.isNotEmpty(slList)) {
slList.forEach(itm -> {
//重新算首购拨比
if (itm.getFirstPurchaseAll().compareTo(BigDecimal.ZERO) > 0) {
BigDecimal mainBonusRate = cent.multiply((itm.getMainBonus()).multiply(currency.getData().getInExchangeRate()));
mainBonusRate = mainBonusRate.divide(itm.getFirstPurchaseAll(), 4, RoundingMode.HALF_UP);
itm.setMainBonusRate(mainBonusRate);
itm.setIntroduceBonusRate(itm.getIntroduceBonus().multiply(cuBonusVertexStatisTotalVO.getPerCent()).divide(itm.getFirstPurchaseAll(), 4, RoundingMode.HALF_UP));
itm.setOrgBonusRate(itm.getOrgBonus().multiply(cuBonusVertexStatisTotalVO.getPerCent()).divide(itm.getFirstPurchaseAll(), 4, RoundingMode.HALF_UP));
itm.setServiceBonusRate(itm.getServiceBonus().multiply(cuBonusVertexStatisTotalVO.getPerCent()).divide(itm.getFirstPurchaseAll(), 4, RoundingMode.HALF_UP));
}
//首购拨出金额
itm.setMainBonus((itm.getMainBonus()).multiply(currency.getData().getInExchangeRate()));
itm.setRepurBonus(itm.getRepurBonus().multiply(currency.getData().getInExchangeRate()));
cuBonusVertexStatisTotalVO.setFirstPurchaseAllSum(cuBonusVertexStatisTotalVO.getFirstPurchaseAllSum().add(itm.getFirstPurchaseAll()));
BigDecimal rate = new BigDecimal(100);
slList.forEach(vo -> {
this.handleStatisVO(vo, rate);
});
}
//计算占比
slList.forEach(itm -> {
if (cuBonusVertexStatisTotalVO.getFirstPurchaseAllSum().compareTo(BigDecimal.ZERO) > 0) {
itm.setFirstPurchaseRatio(cent.multiply(itm.getFirstPurchaseAll()).divide(cuBonusVertexStatisTotalVO.getFirstPurchaseAllSum(), 4, RoundingMode.HALF_UP));
//查询顶点奖金拨比汇总总和最后一行
CuBonusVertexStatisTotalVO voSum = iCuBonusVertexStatisService.queryCuBonusStatisSum(cuBonusVertexStatisTotalVO);
if (null != voSum) {
this.handleStatisVO(voSum, rate);
voSum.setMemberName("汇总");
slList.add(voSum);
}
});
cuBonusVertexStatisSum.setMemberName("汇总");
slList.add(cuBonusVertexStatisSum);
}
ExcelUtil<CuBonusVertexStatisTotalVO> util = new ExcelUtil<>(CuBonusVertexStatisTotalVO.class);
util.exportExcel(response, slList, "拨比列表");
}
/**
* 处理统计返回VO
*/
private void handleStatisVO(CuBonusVertexStatisTotalVO vo, BigDecimal rate) {
// 精品专区金额 = 精品 + 甄选
vo.setMainRegAmount(vo.getMainRegAmount().add(vo.getMainUpAmount()));
// 精品专区奖金
vo.setMainBonus(vo.getIntroduceBonus().add(vo.getStoreIncome()).add(vo.getRangeIncome41()).add(vo.getSameLevelIncome41()));
// 精品专区拨比
vo.setMainBonusRate(vo.getMainBonus().divide(vo.getMainRegAmount(), 4, RoundingMode.HALF_UP).multiply(rate));
// 商城专区奖金
vo.setMainRepurBonus(vo.getGlobalPoints().add(vo.getRangeIncome43()).add(vo.getSameLevelIncome43()));
// 商城专区拨比
vo.setMainRepurBonusRate(vo.getMainRepurBonus().divide(vo.getMainRepurAmount(), 4, RoundingMode.HALF_UP).multiply(rate));
// 五折专区奖金
vo.setRetailConsumeBonus(vo.getRangeIncome47());
// 五折专区拨比
vo.setRetailConsumeBonusRate(vo.getRetailConsumeBonus().divide(vo.getRetailConsumeAmount(), 4, RoundingMode.HALF_UP).multiply(rate));
// 总金额
vo.setTotalAmount(vo.getMainRegAmount().add(vo.getMainRepurAmount().add(vo.getRetailConsumeAmount())));
// 总拨出金额
vo.setTotalBonus(vo.getIntroduceBonus().add(vo.getStoreIncome()).add(vo.getRetailRangeIncome()).add(vo.getRetailSameLevelIncome()).add(vo.getGlobalPoints()));
// 总拨出比例
vo.setTotalBonusRate(vo.getTotalBonus().divide(vo.getTotalAmount(), 4, RoundingMode.HALF_UP).multiply(rate));
}
}

View File

@ -1,5 +1,6 @@
package com.hzs.member.statis.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hzs.common.core.annotation.BigDecimalFormat;
import com.hzs.common.core.annotation.Excel;
import lombok.Data;
@ -37,171 +38,156 @@ public class CuBonusVertexStatisTotalVO {
private String memberName;
/**
* 首购总金额 注册金额+升级金额+礼包订单1万礼包
* 精品专区金额
*/
@Excel(name = "首购金额(¥)", scale = 2)
@Excel(name = "精品专区", scale = 2)
@BigDecimalFormat
private BigDecimal firstPurchaseAll = BigDecimal.ZERO;
@BigDecimalFormat
private BigDecimal firstPurchaseAllSum = BigDecimal.ZERO;
private BigDecimal mainRegAmount = BigDecimal.ZERO;
/**
* 首购金额占比
* 甄选专区金额
*/
@Excel(name = "首购金额占比", scale = 2)
@BigDecimalFormat
private BigDecimal firstPurchaseRatio = BigDecimal.ZERO;
private BigDecimal mainUpAmount = BigDecimal.ZERO;
/**
* (直推收益+拓展收益+辅导收益+分红收益+报单收益服务补贴)*0.8=实际拨出之和
* 精品专区金额
*/
@Excel(name = "首购奖金(¥)", scale = 2)
@Excel(name = "精品专区奖金", scale = 2)
@BigDecimalFormat
private BigDecimal mainBonus = BigDecimal.ZERO;
/**
* 首购相关奖金拨比%=首购总奖金推荐奖净值+拓展奖净值+领导奖净值+服务费净值+分红奖净值/首购总金额
* 精品专区金额
*/
@Excel(name = "首购金额拨出比例(%)", scale = 2)
@Excel(name = "精品专区拨比(%)", scale = 2)
@BigDecimalFormat
private BigDecimal mainBonusRate = BigDecimal.ZERO;
/**
* 首购PV拨出比例%=首购拨出金额/首购PV值
* 商城专区金额
*/
@Excel(name = "首购PV拨出比例(%)", scale = 2)
@Excel(name = "商城专区", scale = 2)
@BigDecimalFormat
private BigDecimal mainBonusPvRate = BigDecimal.ZERO;
private BigDecimal mainRepurAmount = BigDecimal.ZERO;
/**
* 商城专区金额
*/
@Excel(name = "商城专区奖金", scale = 2)
@BigDecimalFormat
private BigDecimal mainRepurBonus = BigDecimal.ZERO;
/**
* 商城专区金额
*/
@Excel(name = "商城专区拨比(%)", scale = 2)
@BigDecimalFormat
private BigDecimal mainRepurBonusRate = BigDecimal.ZERO;
/**
* 直推拨比(%)
* 五折专区金额
*/
@Excel(name = "直推拨比(%)", scale = 2)
@Excel(name = "五折专区", scale = 2)
@BigDecimalFormat
private BigDecimal introduceBonusRate = BigDecimal.ZERO;
private BigDecimal retailConsumeAmount = BigDecimal.ZERO;
/**
* 直推收益
* 五折专区金额
*/
@Excel(name = "五折专区奖金", scale = 2)
@BigDecimalFormat
private BigDecimal introduceBonus = BigDecimal.ZERO;
private BigDecimal retailConsumeBonus = BigDecimal.ZERO;
/**
* 拓展收益
* 五折专区金额
*/
@Excel(name = "五折专区拨比(%)", scale = 2)
@BigDecimalFormat
private BigDecimal orgBonus = BigDecimal.ZERO;
/**
* 服务补贴
*/
@BigDecimalFormat
private BigDecimal serviceBonus = BigDecimal.ZERO;
private BigDecimal retailConsumeBonusRate = BigDecimal.ZERO;
/**
* 拓展拨比(%)
* 直推收益
*/
@Excel(name = "拓展拨比(%)", scale = 2)
@BigDecimalFormat
private BigDecimal orgBonusRate = BigDecimal.ZERO;
@JsonIgnore
private BigDecimal introduceBonus;
/**
* 阶段收益
*/
@JsonIgnore
private BigDecimal storeIncome = BigDecimal.ZERO;
/**
* 精品专区领导奖级差统计波比使用
*/
@JsonIgnore
private BigDecimal rangeIncome41 = BigDecimal.ZERO;
/**
* 精品专区平级统计波比使用
*/
@JsonIgnore
private BigDecimal sameLevelIncome41 = BigDecimal.ZERO;
/**
* 见点收益
*/
@JsonIgnore
private BigDecimal globalPoints = BigDecimal.ZERO;
/**
* 商城专区领导奖级差统计波比使用
*/
@JsonIgnore
private BigDecimal rangeIncome43 = BigDecimal.ZERO;
/**
* 商城专区平级统计波比使用
*/
@JsonIgnore
private BigDecimal sameLevelIncome43 = BigDecimal.ZERO;
/**
* 五折专区领导奖级差统计波比使用
*/
@JsonIgnore
private BigDecimal rangeIncome47 = BigDecimal.ZERO;
/**
* 领导奖级差收益
*/
@JsonIgnore
private BigDecimal retailRangeIncome = BigDecimal.ZERO;
/**
* 领导奖平级收益
*/
@JsonIgnore
private BigDecimal retailSameLevelIncome = BigDecimal.ZERO;
/**
* 服务补贴拨比(%)
* 合计金额
*/
@Excel(name = "服务补贴拨比(%)", scale = 2)
@Excel(name = "合计金额", scale = 2)
@BigDecimalFormat
private BigDecimal serviceBonusRate = BigDecimal.ZERO;
private BigDecimal totalAmount = BigDecimal.ZERO;
/**
* 复购总金额 复购订单
* 拨出金额
*/
@Excel(name = "复购金额(¥)", scale = 2)
@Excel(name = "总拨出金额", scale = 2)
@BigDecimalFormat
private BigDecimal repurchaseAllAmount = BigDecimal.ZERO;
private BigDecimal totalBonus = BigDecimal.ZERO;
/**
* 复购直推收益+复购级差收益+复购拓展收益*80%
* (复购级差+复购拓展 ) *0.8
* 总拨出比例%
*/
@Excel(name = "复购拨出金额(¥)", scale = 2)
@Excel(name = "总拨出比例(%)", scale = 2)
@BigDecimalFormat
private BigDecimal repurBonus = BigDecimal.ZERO;
private BigDecimal totalBonusRate = BigDecimal.ZERO;
/**
* (复购级差+复购拓展 ) *0.8
* 复购拨出比例% = ((复购直推收益+复购级差收益+复购拓展收益*80%))/复购总奖金(复购订单)
*/
@Excel(name = "复购拨出比例(%)", scale = 2)
@BigDecimalFormat
private BigDecimal repurBonusRate = BigDecimal.ZERO;
/**
* 复购PV拨出比例% = 复购拨出金额/复购PV值
*/
@Excel(name = "复购PV拨出比例(%)", scale = 2)
@BigDecimalFormat
private BigDecimal repurBonusPvRate = BigDecimal.ZERO;
/////////////////////////////////////////////////////
/**
* 体系ID 统计体系
*/
private Integer pkVertex;
/**
* 注册新增PV MAIN_REG_PV
*/
private BigDecimal mainRegPv;
/**
* 升级新增PV MAIN_UP_PV
*/
private BigDecimal mainUpPv;
/**
* 虚拟订单PV FICTITIOUS_PV
*/
private BigDecimal fictitiousPv;
/**
* 订单金额
*/
private BigDecimal orderAmount = BigDecimal.ZERO;
/**
* 复购新增PV MAIN_REPUR_PV
*/
private BigDecimal mainRepurPv;
/**
* 直播订单PV MALL_PV
*/
private BigDecimal mallPv;
/**
* 合作订单PV COOPERATE_PV
*/
private BigDecimal cooperatePv;
/**
* 福利专区PV WELFARE_ORDER_PV
*/
private BigDecimal welfareOrderPv;
/**
* 国家
*/
private Integer pkCountry;
/**
* 币种展示 当地币 本币
*/
private Integer currency;
/**
* 团队集合
*/
private String pkTeamCodeStr;
/**
* 体系集合
*/
private String pkBdVertexStr;
/**
* 团队集合
*/
private List<Integer> pkTeamCodeList;
/**
* 体系集合
*/
@ -225,7 +211,6 @@ public class CuBonusVertexStatisTotalVO {
*/
private BigDecimal rate = BigDecimal.ZERO;
private Date payTime;
private String payTimeStr;
private String modifiedTimeStr;
@ -243,11 +228,6 @@ public class CuBonusVertexStatisTotalVO {
*/
@BigDecimalFormat
private BigDecimal backRatio = BigDecimal.ZERO;
/**
* 分红比例%
*/
@BigDecimalFormat
private BigDecimal dividendRatio = BigDecimal.ZERO;
/**
* 本月会员网体表

View File

@ -231,11 +231,11 @@ public class CuBonusVertexStatisVO {
/**
* 领导奖级差收益
*/
private BigDecimal retailRangeIncome;
private BigDecimal retailRangeIncome = BigDecimal.ZERO;
/**
* 领导奖级差收益拨比
*/
private BigDecimal retailRangeIncomeRate;
private BigDecimal retailRangeIncomeRate = BigDecimal.ZERO;
/**
* 领导奖级差收益合计
*/

View File

@ -189,96 +189,31 @@
select * from(
SELECT
cbs.PK_BD_VERTEX pkVertex,
cm.MEMBER_CODE as memberCode,
cm.MEMBER_NAME as memberName,
sum (cbs.MAIN_REG_AMOUNT) mainRegAmount,
sum (cbs.MAIN_UP_AMOUNT) mainUpAmount,
sum (cbs.MAIN_REPUR_AMOUNT) mainRepurAmount,
sum (cbs.INTRODUCE_BONUS) introduceBonus,
sum (cbs.ORG_BONUS) orgBonus,
sum (cbs.LEADER_BONUS) leaderBonus,
sum (cbs.SERVICE_BONUS) serviceBonus,
CASE WHEN
sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)
= 0
THEN 0 ELSE ROUND(((#{perCent}*sum(cbs.SERVICE_BONUS)))
/(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)),4)
end AS serviceBonusRate,
sum (cbs.REPUR_RANGE_BONUS) repurRangeBonus,
sum (cbs.REPUR_ORG_BONUS) repurOrgBonus,
((sum(cbs.MAIN_REG_AMOUNT +
cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT))) AS
firstPurchaseAll,
( sum(cbs.MAIN_REPUR_AMOUNT +
cbs.CLOUD_COLLEGE_AMOUNT+cbs.MALL_AMOUNT
+cbs.COOPERATE_AMOUNT
+cbs.WELFARE_ORDER) ) AS repurchaseAllAmount,
sum(cbs.INTRODUCE_BONUS+cbs.ORG_BONUS+cbs.LEADER_BONUS+cbs.SERVICE_BONUS
) AS mainBonus,
CASE WHEN
sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)
= 0
THEN 0 ELSE ROUND(((#{perCent}*sum(cbs.INTRODUCE_BONUS+cbs.ORG_BONUS+cbs.LEADER_BONUS+cbs.SERVICE_BONUS
)))
/(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)),4)
end AS mainBonusRate,
cm.MEMBER_CODE,
cm.MEMBER_NAME,
sum (cbs.MAIN_REG_AMOUNT) MAIN_REG_AMOUNT,
sum (cbs.MAIN_UP_AMOUNT) MAIN_UP_AMOUNT,
sum (cbs.MAIN_REPUR_AMOUNT) MAIN_REPUR_AMOUNT,
sum (cbs.RETAIL_CONSUME_AMOUNT) RETAIL_CONSUME_AMOUNT,
CASE WHEN
sum(cbs.MAIN_REG_PV+cbs.MAIN_UP_PV+cbs.FICTITIOUS_PV)
= 0
THEN 0 ELSE ROUND(((#{perCent}*sum(cbs.INTRODUCE_BONUS+cbs.ORG_BONUS+cbs.LEADER_BONUS+cbs.SERVICE_BONUS
)))
/#{rate}/sum(cbs.MAIN_REG_PV+cbs.MAIN_UP_PV+cbs.FICTITIOUS_PV),4)
end AS mainBonusPvRate,
sum(cbs.REPUR_RANGE_BONUS+cbs.REPUR_ORG_BONUS+cbs.REPUR_PUSH_INCOME
) AS repurBonus,
sum (cbs.REAL_INCOME_TOTAL) REAL_INCOME_TOTAL,
sum (cbs.INTRODUCE_BONUS) INTRODUCE_BONUS,
sum (cbs.STORE_INCOME) STORE_INCOME,
sum (cbs.GLOBAL_POINTS) GLOBAL_POINTS,
sum (cbs.RETAIL_RANGE_INCOME) RETAIL_RANGE_INCOME,
sum (cbs.RETAIL_SAME_LEVEL_INCOME) RETAIL_SAME_LEVEL_INCOME,
CASE WHEN
sum(cbs.MAIN_REPUR_AMOUNT+cbs.CLOUD_COLLEGE_AMOUNT+cbs.MALL_AMOUNT
+cbs.COOPERATE_AMOUNT
+cbs.WELFARE_ORDER)=0 THEN 0
ELSE ROUND(#{perCent}*sum(((cbs.REPUR_RANGE_BONUS+cbs.REPUR_ORG_BONUS+cbs.REPUR_PUSH_INCOME)))
/
sum(cbs.MAIN_REPUR_AMOUNT+cbs.CLOUD_COLLEGE_AMOUNT+cbs.MALL_AMOUNT
+cbs.COOPERATE_AMOUNT
+cbs.WELFARE_ORDER),4) end AS repurBonusRate,
sum (cbs.RANGE_INCOME_41) RANGE_INCOME_41,
sum (cbs.RANGE_INCOME_43) RANGE_INCOME_43,
sum (cbs.RANGE_INCOME_47) RANGE_INCOME_47,
sum (cbs.SAME_LEVEL_INCOME_41) SAME_LEVEL_INCOME_41,
sum (cbs.SAME_LEVEL_INCOME_43) SAME_LEVEL_INCOME_43
CASE WHEN
sum(cbs.MAIN_REPUR_PV+cbs.CLOUD_COLLEGE_PV+cbs.MALL_PV
+cbs.COOPERATE_PV
+cbs.WELFARE_ORDER_PV)=0 THEN 0
ELSE ROUND(#{perCent}*sum(((cbs.REPUR_RANGE_BONUS+cbs.REPUR_ORG_BONUS+cbs.REPUR_PUSH_INCOME)))
/#{rate}/
sum(cbs.MAIN_REPUR_PV+cbs.CLOUD_COLLEGE_PV+cbs.MALL_PV
+cbs.COOPERATE_PV
+cbs.WELFARE_ORDER_PV),4) end AS repurBonusPvRate,
sum(cbs.INTRODUCE_BONUS+cbs.ORG_BONUS+cbs.LEADER_BONUS+cbs.SERVICE_BONUS+
cbs.REPUR_RANGE_BONUS+cbs.REPUR_ORG_BONUS+cbs.REPUR_PUSH_INCOME
) AS totalBonus,
CASE WHEN
sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT+
cbs.MAIN_REPUR_AMOUNT+cbs.CLOUD_COLLEGE_AMOUNT+cbs.MALL_AMOUNT
+cbs.COOPERATE_AMOUNT
+cbs.WELFARE_ORDER)=0 THEN 0
ELSE ROUND ((#{perCent}*sum(cbs.INTRODUCE_BONUS+cbs.ORG_BONUS+cbs.LEADER_BONUS+cbs.SERVICE_BONUS
+
cbs.REPUR_RANGE_BONUS+cbs.REPUR_ORG_BONUS+cbs.REPUR_PUSH_INCOME))
/
(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT+
cbs.MAIN_REPUR_AMOUNT+cbs.CLOUD_COLLEGE_AMOUNT+cbs.MALL_AMOUNT
+cbs.COOPERATE_AMOUNT
+cbs.WELFARE_ORDER)),4) end AS totalBonusRate
FROM
CU_BONUS_VERTEX_STATIS cbs
FROM CU_BONUS_VERTEX_STATIS cbs
LEFT JOIN CU_MEMBER cm ON cm.PK_ID = cbs.PK_BD_VERTEX
WHERE 1=1
<if test="pkCountry != null">
and cbs.PK_COUNTRY=#{pkCountry}
</if>
<if test="pkVertex != null ">
and cbs.PK_BD_VERTEX =#{pkVertex}
and cbs.PK_BD_VERTEX = #{pkVertex}
</if>
<if test="startDate!=null and startDate!='' ">
and cbs.CREATION_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
@ -288,115 +223,39 @@
</if>
GROUP BY cbs.PK_BD_VERTEX,cm.MEMBER_CODE,cm.MEMBER_NAME
)
ORDER BY firstPurchaseAll desc,repurchaseAllAmount desc
ORDER BY MEMBER_CODE
</select>
<!-- 顶点奖金拨比汇总查询总和-->
<select id="queryCuBonusStatisSum" parameterType="com.hzs.member.statis.vo.CuBonusVertexStatisTotalVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStatisTotalVO">
SELECT
sum (cbs.MAIN_REG_AMOUNT) mainRegAmount,
sum (cbs.MAIN_UP_AMOUNT) mainUpAmount,
sum (cbs.MAIN_REPUR_AMOUNT) mainRepurAmount,
sum (cbs.INTRODUCE_BONUS) introduceBonus,
CASE WHEN
sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)
= 0
THEN 0 ELSE ROUND(((#{perCent}*sum(cbs.INTRODUCE_BONUS)))
/(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)),4)
end AS introduceBonusRate,
sum (cbs.ORG_BONUS) orgBonus,
CASE WHEN
sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)
= 0
THEN 0 ELSE ROUND(((#{perCent}*sum(cbs.ORG_BONUS)))
/(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)),4)
end AS orgBonusRate,
sum (cbs.MAIN_REG_AMOUNT) MAIN_REG_AMOUNT,
sum (cbs.MAIN_UP_AMOUNT) MAIN_UP_AMOUNT,
sum (cbs.MAIN_REPUR_AMOUNT) MAIN_REPUR_AMOUNT,
sum (cbs.RETAIL_CONSUME_AMOUNT) RETAIL_CONSUME_AMOUNT,
sum (cbs.LEADER_BONUS) leaderBonus,
sum (cbs.SERVICE_BONUS) serviceBonus,
CASE WHEN
sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)
= 0
THEN 0 ELSE ROUND(((#{perCent}*sum(cbs.SERVICE_BONUS)))
/(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)),4)
end AS serviceBonusRate,
sum (cbs.REPUR_RANGE_BONUS) repurRangeBonus,
sum (cbs.REPUR_ORG_BONUS) repurOrgBonus,
((sum(cbs.MAIN_REG_AMOUNT +
cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT))) AS
firstPurchaseAll,
( sum(cbs.MAIN_REPUR_AMOUNT +
cbs.CLOUD_COLLEGE_AMOUNT+cbs.MALL_AMOUNT
+cbs.COOPERATE_AMOUNT
+cbs.WELFARE_ORDER) ) AS repurchaseAllAmount,
sum(cbs.INTRODUCE_BONUS+cbs.ORG_BONUS+cbs.LEADER_BONUS+cbs.SERVICE_BONUS
) AS mainBonus,
CASE WHEN
sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)
= 0
THEN 0 ELSE ROUND(((#{perCent}*sum(cbs.INTRODUCE_BONUS+cbs.ORG_BONUS+cbs.LEADER_BONUS+cbs.SERVICE_BONUS
)))
/(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT)),4)
end AS mainBonusRate,
sum (cbs.REAL_INCOME_TOTAL) REAL_INCOME_TOTAL,
sum (cbs.INTRODUCE_BONUS) INTRODUCE_BONUS,
sum (cbs.STORE_INCOME) STORE_INCOME,
sum (cbs.GLOBAL_POINTS) GLOBAL_POINTS,
sum (cbs.RETAIL_RANGE_INCOME) RETAIL_RANGE_INCOME,
sum (cbs.RETAIL_SAME_LEVEL_INCOME) RETAIL_SAME_LEVEL_INCOME,
CASE WHEN
sum(cbs.MAIN_REG_PV+cbs.MAIN_UP_PV+cbs.FICTITIOUS_PV)
= 0
THEN 0 ELSE ROUND(((#{perCent}*sum(cbs.INTRODUCE_BONUS+cbs.ORG_BONUS+cbs.LEADER_BONUS+cbs.SERVICE_BONUS
)))
/#{rate}/sum(cbs.MAIN_REG_PV+cbs.MAIN_UP_PV+cbs.FICTITIOUS_PV),4)
end AS mainBonusPvRate,
sum (cbs.RANGE_INCOME_41) RANGE_INCOME_41,
sum (cbs.RANGE_INCOME_43) RANGE_INCOME_43,
sum (cbs.RANGE_INCOME_47) RANGE_INCOME_47,
sum (cbs.SAME_LEVEL_INCOME_41) SAME_LEVEL_INCOME_41,
sum (cbs.SAME_LEVEL_INCOME_43) SAME_LEVEL_INCOME_43
sum(cbs.REPUR_RANGE_BONUS+cbs.REPUR_ORG_BONUS+cbs.REPUR_PUSH_INCOME
) AS repurBonus,
CASE WHEN
sum(cbs.MAIN_REPUR_AMOUNT+cbs.CLOUD_COLLEGE_AMOUNT+cbs.MALL_AMOUNT
+cbs.COOPERATE_AMOUNT
+cbs.WELFARE_ORDER)=0 THEN 0
ELSE ROUND(#{perCent}*sum(((cbs.REPUR_RANGE_BONUS+cbs.REPUR_ORG_BONUS+cbs.REPUR_PUSH_INCOME)))
/
sum(cbs.MAIN_REPUR_AMOUNT+cbs.CLOUD_COLLEGE_AMOUNT+cbs.MALL_AMOUNT
+cbs.COOPERATE_AMOUNT
+cbs.WELFARE_ORDER),4) end AS repurBonusRate,
CASE WHEN
sum(cbs.MAIN_REPUR_PV+cbs.CLOUD_COLLEGE_PV+cbs.MALL_PV
+cbs.COOPERATE_PV
+cbs.WELFARE_ORDER_PV)=0 THEN 0
ELSE ROUND(#{perCent}*sum(((cbs.REPUR_RANGE_BONUS+cbs.REPUR_ORG_BONUS+cbs.REPUR_PUSH_INCOME)))
/#{rate}/
sum(cbs.MAIN_REPUR_PV+cbs.CLOUD_COLLEGE_PV+cbs.MALL_PV
+cbs.COOPERATE_PV
+cbs.WELFARE_ORDER_PV),4) end AS repurBonusPvRate,
sum(cbs.INTRODUCE_BONUS+cbs.ORG_BONUS+cbs.LEADER_BONUS+cbs.SERVICE_BONUS+
cbs.REPUR_RANGE_BONUS+cbs.REPUR_ORG_BONUS+cbs.REPUR_PUSH_INCOME
) AS totalBonus,
CASE WHEN
sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT+
cbs.MAIN_REPUR_AMOUNT+cbs.CLOUD_COLLEGE_AMOUNT+cbs.MALL_AMOUNT
+cbs.COOPERATE_AMOUNT
+cbs.WELFARE_ORDER)=0 THEN 0
ELSE ROUND ((#{perCent}*sum(cbs.INTRODUCE_BONUS+cbs.ORG_BONUS+cbs.LEADER_BONUS+cbs.SERVICE_BONUS
+
cbs.REPUR_RANGE_BONUS+cbs.REPUR_ORG_BONUS+cbs.REPUR_PUSH_INCOME))
/
(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT+cbs.FICTITIOUS_AMOUNT+
cbs.MAIN_REPUR_AMOUNT+cbs.CLOUD_COLLEGE_AMOUNT+cbs.MALL_AMOUNT
+cbs.COOPERATE_AMOUNT
+cbs.WELFARE_ORDER)),4) end AS totalBonusRate
FROM
CU_BONUS_VERTEX_STATIS cbs
FROM CU_BONUS_VERTEX_STATIS cbs
LEFT JOIN CU_MEMBER cm ON cm.PK_ID = cbs.PK_BD_VERTEX
WHERE 1=1
WHERE 1 = 1
<if test="pkCountry != null">
and cbs.PK_COUNTRY=#{pkCountry}
and cbs.PK_COUNTRY = #{pkCountry}
</if>
<if test="pkVertex != null ">
and cbs.PK_BD_VERTEX =#{pkVertex}
and cbs.PK_BD_VERTEX = #{pkVertex}
</if>
<if test="startDate!=null and startDate!='' ">
and cbs.CREATION_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')