diff --git a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleFirstPurchaseHandle.java b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleFirstPurchaseHandle.java index 79cff4b8..a7e9bf89 100644 --- a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleFirstPurchaseHandle.java +++ b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleFirstPurchaseHandle.java @@ -668,15 +668,18 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { * @param firPurchaseOrderList 订单列表 * @param cuMemberBonusExpandList 量奖明细 * @param cuMemberBonusMap 所有计算出来的奖金汇总 + * @param firstBool true=首购,false=复购 + * @param orderBool true=有订单,false=没有订单(延缓发放处理) */ List calculateCoachBonus(Map cuMemberSettleExtMap, String settleTableName, String settleDateStr, BonusConfigDTO bonusConfigDTO, List firPurchaseOrderList, List cuMemberBonusExpandList, Integer period, Map cuMemberBonusMap, - Map cuAwardsControlMap, Map riskControlMap, List awardsList, boolean firstBool) { + Map cuAwardsControlMap, Map riskControlMap, List awardsList, + boolean firstBool, boolean orderBool) { Map saOrderExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(firPurchaseOrderList.size())); firPurchaseOrderList.forEach(saOrderExt -> saOrderExtMap.put(saOrderExt.getPkId(), saOrderExt)); return calculateCoachBonusOne(cuMemberSettleExtMap, settleTableName, settleDateStr, bonusConfigDTO, cuMemberBonusExpandList, period, - cuMemberBonusMap, saOrderExtMap, cuAwardsControlMap, riskControlMap, awardsList, firstBool); + cuMemberBonusMap, saOrderExtMap, cuAwardsControlMap, riskControlMap, awardsList, firstBool, orderBool); } /** @@ -685,7 +688,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { List calculateCoachBonusOne(Map cuMemberSettleExtMap, String settleTableName, String settleDateStr, BonusConfigDTO bonusConfigDTO, List cuMemberBonusExpandList, Integer period, Map cuMemberBonusMap, Map saOrderExtMap, Map cuAwardsControlMap, Map riskControlMap, - List awardsList, boolean firstBool) { + List awardsList, boolean firstBool, boolean orderBool) { // 领导奖数据列表 List cuMemberBonusCoachList = new ArrayList<>(); @@ -717,7 +720,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { // } List coachBonusList = calculateBonusCoach(cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExtMap, cuMemberAssessMap, bonusIdSettleMap, cuMemberBonusExpand, cuAwardsControlMap, - riskControlMap, cuMemberBonusNumMap, awardsList, firstBool); + riskControlMap, cuMemberBonusNumMap, awardsList, firstBool, orderBool); if (coachBonusList.size() > 0) { cuMemberBonusCoachList.addAll(coachBonusList); } @@ -732,7 +735,8 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { private List calculateBonusCoach(Map cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap, Map saOrderExtMap, Map cuMemberAssessMap, Map bonusIdSettleMap, CuMemberBonusExpand cuMemberBonusExpand, Map cuAwardsControlMap, - Map riskControlMap, Map cuMemberBonusNumMap, List awardsList, boolean firstBool) { + Map riskControlMap, Map cuMemberBonusNumMap, List awardsList, + boolean firstBool, boolean orderBool) { // 目前这个会员只用来处理备注会员信息使用 CuMemberSettleExt sourceMemberSettleExt = bonusIdSettleMap.get(cuMemberBonusExpand.getPkBonus()); // 用于回写血缘总共多少代 @@ -773,10 +777,8 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { } SaOrderExt saOrderExt = saOrderExtMap.get(cuMemberBonusExpand.getPkOrder()); - if (null == saOrderExt -// || !validateSecondOrderExistBonus(saOrderExt, EBonusItems.COACHING_INCOME.getValue()) - ) { - // 订单为空 或者 判断二次发货是否有辅导收益 -- 原二次发货判断去掉 + if (orderBool && null == saOrderExt) { + // 有订单 并且 订单为空 continue; } @@ -831,7 +833,9 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { } // 收益占比 - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); + BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach, + null != saOrderExt ? saOrderExt.getOrderAmount() : BigDecimal.ZERO, + null != saOrderExt ? saOrderExt.getInExchangeRate() : BigDecimal.ONE); coachRemark(saOrderExt, cuMemberBonusCoach, sourceMemberSettleExt, targetMemberSettleExt, firstBool); if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus()) { @@ -909,6 +913,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { .build(); cuMemberBonusCoach.setPkCountry(targetMemberSettleExt.getPkSettleCountry()); cuMemberBonusCoach.setPkCreator(MagicNumberConstants.PK_ADMIN); + cuMemberBonusCoach.setPkModified(cuMemberBonusExpand.getPkModified()); if (EExpireStatus.TERMINATED.getValue() == targetMemberSettleExt.getExpireStatus()) { cuMemberBonusCoach.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue()); } @@ -1311,8 +1316,8 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { * 处理拓展延缓发放 */ public List handleDelayExpand(BonusRecordDetailVO recordDetailVO, Map cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, - Map cuMemberSettleExtMap, Integer period, Integer yesterdayPeriod, String currentSettleTableName, - Map gradeMap) { + Map cuMemberSettleExtMap, Integer period, Integer yesterdayPeriod, String currentSettleTableName, + Map gradeMap) { // 量奖(拓展收益)延缓发放主表量奖(拓展收益)延缓发放主表 List cuMemberBonusDelayList = new ArrayList<>(); // 量奖(拓展收益)延缓发放明细列表 @@ -1391,6 +1396,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { .build(); cuMemberBonusExpand.setPkCreator(cuMemberBonusDelayAddDetail.getPkCreator()); cuMemberBonusExpand.setPkCountry(cuMemberBonusDelayAddDetail.getPkCountry()); + cuMemberBonusExpand.setPkModified(pkMember); // 处理扣项,计算最终收益 BdBonusDeduct bdBonusDeduct = setDeplyBonusDetailDeduct(bonusConfigDTO, cuMemberBonusExpand); // 处理实发小计、实发收益总计 @@ -1537,6 +1543,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { .build(); cuMemberBonusExpand.setPkCreator(MagicNumberConstants.PK_ADMIN); cuMemberBonusExpand.setPkCountry(cuMemberSettleExt.getPkCountry()); + cuMemberBonusExpand.setPkModified(pkMember); // 处理扣项,计算最终收益 BdBonusDeduct bdBonusDeduct = setDeplyBonusDetailDeduct(bonusConfigDTO, cuMemberBonusExpand); // 处理实发小计、实发收益总计 diff --git a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java index 48a094d6..6371fca0 100644 --- a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java +++ b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java @@ -6,7 +6,6 @@ import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService; import com.hzs.bonus.achieve.service.ICuMemberTreeService; import com.hzs.bonus.detail.service.ICuMemberAssessService; import com.hzs.common.core.constant.BonusFieldConstants; -import com.hzs.common.core.constant.CountryConstants; import com.hzs.common.core.constant.MagicNumberConstants; import com.hzs.common.core.constant.TableNameConstants; import com.hzs.common.core.constant.msg.BonusMsgConstants; @@ -431,203 +430,181 @@ public abstract class BonusSettleHandle { } /** + * 获得 直推收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusPush 直推奖 * @param cuMemberRangeExtMap 存储会员网体的map - * @Description: 获得 直推收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void recommendRangeRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map cuMemberRangeExtMap, CuMemberRangeExt targetCuMemberRangeExt) { CuMemberRangeExt sourceCuMemberRangeExt = cuMemberRangeExtMap.get(saOrderExt.getPkMember()); String remark = String.format(BonusMsgConstants.RANGE_RECOMMEND, cuMemberBonusPush.getRound(), cuMemberBonusPush.getSecond(), saOrderExt.getOrderCode(), - sourceCuMemberRangeExt.getMemberCode() + sourceCuMemberRangeExt.getMemberName(), - targetCuMemberRangeExt.getMemberCode() + targetCuMemberRangeExt.getMemberName(), + sourceCuMemberRangeExt.getMemberCode() + " " + sourceCuMemberRangeExt.getMemberName(), + targetCuMemberRangeExt.getMemberCode() + " " + targetCuMemberRangeExt.getMemberName(), cuMemberBonusPush.getCalAchieve()); cuMemberBonusPush.setRemark(remark); } /** + * 获得 拓展收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusExpand 拓展奖 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 拓展收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void expandRemark(SaOrderExt saOrderExt, CuMemberBonusExpand cuMemberBonusExpand, CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) { String remark = String.format(BonusMsgConstants.EXPAND, cuMemberBonusExpand.getCurrentTouch(), cuMemberBonusExpand.getExpandTouch(), saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), + sourceCuMemberSettleExt.getMemberCode() + " " + sourceCuMemberSettleExt.getMemberName(), + targetCuMemberSettleExt.getMemberCode() + " " + targetCuMemberSettleExt.getMemberName(), cuMemberBonusExpand.getCalAchieve(), cuMemberBonusExpand.getCalValue()); cuMemberBonusExpand.setRemark(remark); } /** + * 获得 拓展收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusPush 拓展奖 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 拓展收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void repurchasePushRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt, String msg) { String remark = String.format(msg, saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), + sourceCuMemberSettleExt.getMemberCode() + " " + sourceCuMemberSettleExt.getMemberName(), + targetCuMemberSettleExt.getMemberCode() + " " + targetCuMemberSettleExt.getMemberName(), cuMemberBonusPush.getCalAchieve(), cuMemberBonusPush.getCalValue()); cuMemberBonusPush.setRemark(remark); } /** + * 获得 拓展收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusExpand 拓展奖 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 拓展收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void repurchaseExpandRemark(SaOrderExt saOrderExt, CuMemberBonusExpand cuMemberBonusExpand, CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) { String remark = String.format(BonusMsgConstants.REPURCHASE_EXPAND, cuMemberBonusExpand.getCurrentTouch(), cuMemberBonusExpand.getExpandTouch(), saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), + sourceCuMemberSettleExt.getMemberCode() + " " + sourceCuMemberSettleExt.getMemberName(), + targetCuMemberSettleExt.getMemberCode() + " " + targetCuMemberSettleExt.getMemberName(), cuMemberBonusExpand.getCalAchieve(), cuMemberBonusExpand.getCalValue()); cuMemberBonusExpand.setRemark(remark); } /** + * 获得 辅导收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusCoach 辅导奖 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 辅导收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void coachRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach, CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt, boolean firstBool) { String remark = String.format(firstBool ? BonusMsgConstants.COACH : BonusMsgConstants.REPURCHASE_COACH, - cuMemberBonusCoach.getCurrentGeneration(), saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), + cuMemberBonusCoach.getCurrentGeneration(), null != saOrderExt ? saOrderExt.getOrderCode() : " ", + sourceCuMemberSettleExt.getMemberCode() + " " + sourceCuMemberSettleExt.getMemberName(), + targetCuMemberSettleExt.getMemberCode() + " " + targetCuMemberSettleExt.getMemberName(), cuMemberBonusCoach.getCalAchieve(), cuMemberBonusCoach.getCalValue()); cuMemberBonusCoach.setRemark(remark); } /** + * 获得 辅导收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusCoach 辅导奖 * @param sourceMemberRangeExt 提供奖金的人 * @param targetMemberRangeExt 获得奖金的人 - * @Description: 获得 辅导收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void coachRangeRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach, CuMemberRangeExt sourceMemberRangeExt, CuMemberRangeExt targetMemberRangeExt) { String remark = String.format(BonusMsgConstants.RANGE_COACH, cuMemberBonusCoach.getCurrentGeneration(), cuMemberBonusCoach.getCoachGeneration(), saOrderExt.getOrderCode(), - sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(), - targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), + sourceMemberRangeExt.getMemberCode() + " " + sourceMemberRangeExt.getMemberName(), + targetMemberRangeExt.getMemberCode() + " " + targetMemberRangeExt.getMemberName(), cuMemberBonusCoach.getCalAchieve(), cuMemberBonusCoach.getCalValue()); cuMemberBonusCoach.setRemark(remark); } /** + * 获得 报单服务费收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusDetail 报单服务费 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 报单服务费收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void serviceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) { String remark = String.format(BonusMsgConstants.SERVICE, saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), + sourceCuMemberSettleExt.getMemberCode() + " " + sourceCuMemberSettleExt.getMemberName(), + targetCuMemberSettleExt.getMemberCode() + " " + targetCuMemberSettleExt.getMemberName(), cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue()); cuMemberBonusDetail.setRemark(remark); } /** + * 获得 报单服务费收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusDetail 报单服务费 * @param sourceCuMemberRangeExt 提供奖金的人 * @param targetCuMemberRangeExt 获得奖金的人 - * @Description: 获得 报单服务费收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void rangeServiceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail, CuMemberRangeExt sourceCuMemberRangeExt, CuMemberRangeExt targetCuMemberRangeExt) { String remark = String.format(BonusMsgConstants.RANGE_SERVICE, saOrderExt.getOrderCode(), - sourceCuMemberRangeExt.getMemberCode() + sourceCuMemberRangeExt.getMemberName(), - targetCuMemberRangeExt.getMemberCode() + targetCuMemberRangeExt.getMemberName(), + sourceCuMemberRangeExt.getMemberCode() + " " + sourceCuMemberRangeExt.getMemberName(), + targetCuMemberRangeExt.getMemberCode() + " " + targetCuMemberRangeExt.getMemberName(), cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue()); cuMemberBonusDetail.setRemark(remark); } /** + * 获得 报单服务费收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusDetail 报单服务费 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 报单服务费收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void haiFunRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) { String remark = String.format(BonusMsgConstants.HAI_FUN, saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), + sourceCuMemberSettleExt.getMemberCode() + " " + sourceCuMemberSettleExt.getMemberName(), + targetCuMemberSettleExt.getMemberCode() + " " + targetCuMemberSettleExt.getMemberName(), cuMemberBonusDetail.getPretaxIncome()); cuMemberBonusDetail.setRemark(remark); } /** + * 获得 嗨粉推荐的收益 + * * @param saOrderExt 订单编号 * @param cuMemberBonusDetail 报单服务费 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 嗨粉推荐的收益 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void hiFunRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) { String remark = String.format(BonusMsgConstants.HI_FUN, saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), + sourceCuMemberSettleExt.getMemberCode() + " " + sourceCuMemberSettleExt.getMemberName(), + targetCuMemberSettleExt.getMemberCode() + " " + targetCuMemberSettleExt.getMemberName(), cuMemberBonusDetail.getRealIncome()); cuMemberBonusDetail.setRemark(remark); } /** + * 获得 分红收益的备注 + * * @param cuMemberBonusDetail 分红 * @param settleDate 结算日期 - * @Description: 获得 分红收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void shareRemark(CuMemberBonusDetail cuMemberBonusDetail, String settleDate) { String remark = String.format(BonusMsgConstants.SHARE, DateUtils.getMonth(settleDate), @@ -636,12 +613,10 @@ public abstract class BonusSettleHandle { } /** + * 获得 分红收益的备注 + * * @param cuMemberBonusDetail 分红 * @param settleDate 结算日期 - * @Description: 获得 分红收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void shareCouponRemark(CuMemberBonusDetail cuMemberBonusDetail, String settleDate) { String remark = String.format(BonusMsgConstants.SHARE_COUPON, DateUtils.getMonth(settleDate), @@ -650,12 +625,10 @@ public abstract class BonusSettleHandle { } /** + * 获得 店铺收益的备注 + * * @param cuMemberBonusDetail 分红 * @param settleDate 结算日期 - * @Description: 获得 分红收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void storeRemark(CuMemberBonusDetail cuMemberBonusDetail, String settleDate) { String remark = String.format(BonusMsgConstants.STORE, DateUtils.getMonth(settleDate), @@ -664,14 +637,12 @@ public abstract class BonusSettleHandle { } /** + * 获得 极差收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusRange 报单服务费 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 报单服务费收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt, Map rangePkDtoMap) { @@ -685,14 +656,12 @@ public abstract class BonusSettleHandle { } /** + * 获得 极差收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusRange 报单服务费 * @param sourceMemberRangeExt 提供奖金的人 * @param targetMemberRangeExt 获得奖金的人 - * @Description: 获得 报单服务费收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRangeExt sourceMemberRangeExt, CuMemberRangeExt targetMemberRangeExt) { @@ -704,14 +673,12 @@ public abstract class BonusSettleHandle { } /** + * 获得 极差收益的备注 + * * @param saOrderExt 订单编号 * @param cuMemberBonusRange 报单服务费 * @param sourceMemberRangeExt 提供奖金的人 * @param targetMemberRangeExt 获得奖金的人 - * @Description: 获得 报单服务费收益的备注 - * @return: String - * @Author: sui q - * @Date: 2022/11/17 11:22 */ protected void oriRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRangeExt sourceMemberRangeExt, CuMemberRangeExt targetMemberRangeExt) { @@ -723,7 +690,7 @@ public abstract class BonusSettleHandle { } /** - * 获得 报单服务费收益的备注 + * 获得 分享极差收益的备注 * * @param saOrderExt 订单编号 * @param cuMemberBonusRange 报单服务费 @@ -804,11 +771,17 @@ public abstract class BonusSettleHandle { * @return CuMemberBonus */ protected CuMemberBonus getCuMemberBonus(Integer period, Map cuMemberBonusMap, SaOrder saOrder, CuMemberSettleExt cuMemberSettleExt) { - Integer pkRate = saOrder.getPkRate(); - if (pkRate == null || !Objects.equals(cuMemberSettleExt.getPkSettleCountry(), saOrder.getPkCountry())) { - // 结算会员和订单不是一个国家的,需要按结算会员的汇率进行处理 + Integer pkRate; + if (null == saOrder) { CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberSettleExt.getPkSettleCountry()).getData(); pkRate = currencyDTO.getPkId(); + } else { + pkRate = saOrder.getPkRate(); + if (pkRate == null || !Objects.equals(cuMemberSettleExt.getPkSettleCountry(), saOrder.getPkCountry())) { + // 结算会员和订单不是一个国家的,需要按结算会员的汇率进行处理 + CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberSettleExt.getPkSettleCountry()).getData(); + pkRate = currencyDTO.getPkId(); + } } return getCuMemberBonus(period, cuMemberBonusMap, cuMemberSettleExt.getPkMember(), cuMemberSettleExt.getIncomeStatus(), cuMemberSettleExt.getPkSettleCountry(), pkRate); @@ -861,6 +834,7 @@ public abstract class BonusSettleHandle { cuMemberBonus.setPkCreator(MagicNumberConstants.PK_ADMIN); cuMemberBonus.setPkCountry(pkCountry); cuMemberBonus.setGrantStatus(EGrantStatus.SETTLED.getValue()); + cuMemberBonus.setPkModified(pkMember); cuMemberBonusMap.put(pkMember, cuMemberBonus); return cuMemberBonus; } @@ -1090,10 +1064,7 @@ public abstract class BonusSettleHandle { } /** - * @Description: 云代计算 扣项,小计,总计 - * @return: void - * @Author: sui q - * @Date: 2023/1/11 13:59 + * 云代计算 扣项,小计,总计 */ protected void setCloudTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); @@ -1103,10 +1074,7 @@ public abstract class BonusSettleHandle { } /** - * @Description: 复购券 扣项,小计,总计 - * @return: void - * @Author: sui q - * @Date: 2023/1/11 13:59 + * 复购券 扣项,小计,总计 */ protected void setRepurchaseCouponTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); diff --git a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java index 78ca176a..e4de8a16 100644 --- a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java +++ b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java @@ -241,7 +241,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService { boolean firstFlag = EOrderType.SPECIAL_REGISTER_ORDER.getValue() == saOrderExt.getOrderType() || EOrderType.SPECIAL_UPGRADE_ORDER.getValue() == saOrderExt.getOrderType(); // 领导奖处理 - List cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonusOne(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, cuMemberBonusExpandList, period, cuMemberBonusMap, saOrderExtMap, cuAwardsControlMap, riskControlMap, awardsList, firstFlag); + List cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonusOne(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, + cuMemberBonusExpandList, period, cuMemberBonusMap, saOrderExtMap, cuAwardsControlMap, riskControlMap, awardsList, firstFlag, false); // 计算报单服务费 CuMemberBonusDetail cuMemberBonusDetail = bonusSettleFirstPurchaseHandle.calculateServiceBonusOne(settleDate, cuMemberAssessMap, cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt); @@ -851,23 +852,26 @@ public class BonusSettleServiceImpl implements IBonusSettleService { List delayExpandList = bonusSettleFirstPurchaseHandle.handleDelayExpand(bonusRecordDetailVO, cuMemberBonusMap, bonusConfigDTO, cuMemberSettleExtMap, period, yesterdayPeriod, settleTableName, gradeMap); - // TODO new 处理拓展延缓发放辅导收益 -// // 判断是否有量奖,有量奖有辅导奖 -// List cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, Collections.emptyList(), -// delayExpandList, period, cuMemberBonusMap, cuAwardsControlMap, riskControlMap, awardsList, true); -// if (CollectionUtil.isNotEmpty(bonusRecordDetailVO.getCuMemberBonusCoachList())) { -// bonusRecordDetailVO.getCuMemberBonusCoachList().addAll(cuMemberBonusCoachList); -// } + // TODO new 处理拓展延缓发放辅导收益(没有订单,需要兼容一下) + // 判断是否有量奖,有量奖有辅导奖 + List cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, + Collections.emptyList(), delayExpandList, period, cuMemberBonusMap, cuAwardsControlMap, riskControlMap, awardsList, true, false); + if (CollectionUtil.isNotEmpty(bonusRecordDetailVO.getCuMemberBonusCoachList())) { + bonusRecordDetailVO.getCuMemberBonusCoachList().addAll(cuMemberBonusCoachList); + } else { + bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberBonusCoachList); + } + // 延缓发放的订单占比等已经在延缓的时间处理过,后面不需要再处理,这个位置就先不用了 // cuMemberBonusCoachList.forEach(cuMemberBonusCoach -> { // MemberBonusDetailCalVO memberBonusDetailCalVO = calculateOrderRatio(memberBonusDetailCalVoMap, cuMemberBonusCoach); // memberBonusDetailCalVO.setCoachIncome(ComputeUtil.computeAdd(memberBonusDetailCalVO.getCoachIncome(), cuMemberBonusCoach.getRealIncome())); // }); -// // 辅导收益 -// cuMemberBonusCoachList.forEach(cuMemberBonusCoach -> { -// // 收益拨比、订单占比,在延缓明细里面已经计算过,此处可以直接给0 -// cuMemberBonusCoach.setIncomeDialRatio(BigDecimal.ZERO); -// cuMemberBonusCoach.setOrderDialRatio(BigDecimal.ZERO); -// }); + // 辅导收益 + cuMemberBonusCoachList.forEach(cuMemberBonusCoach -> { + // 收益拨比、订单占比,在延缓明细里面已经计算过,此处可以直接给0 + cuMemberBonusCoach.setIncomeDialRatio(BigDecimal.ZERO); + cuMemberBonusCoach.setOrderDialRatio(BigDecimal.ZERO); + }); return leXueRangeParam; } @@ -1067,7 +1071,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService { //*********************************计算领导奖(首购辅导收益)************************/ // 判断是否有量奖,有量奖有辅导奖 List cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, firPurchaseOrderList, - cuMemberBonusExpandList, period, cuMemberBonusMap, cuAwardsControlMap, riskControlMap, awardsList, true); + cuMemberBonusExpandList, period, cuMemberBonusMap, cuAwardsControlMap, riskControlMap, awardsList, true, true); if (CollectionUtil.isNotEmpty(bonusRecordDetailVO.getCuMemberBonusCoachList())) { bonusRecordDetailVO.getCuMemberBonusCoachList().addAll(cuMemberBonusCoachList); } else { @@ -1195,7 +1199,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService { //*********************************计算领导奖(复购辅导收益)************************/ // 判断是否有量奖,有量奖有辅导奖 List cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, purchaseOrderList, - cuMemberBonusExpandList, period, cuMemberBonusMap, cuAwardsControlMap, riskControlMap, awardsList, false); + cuMemberBonusExpandList, period, cuMemberBonusMap, cuAwardsControlMap, riskControlMap, awardsList, false, true); bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberBonusCoachList); //****************************乐学极差(复购)*****************************/ diff --git a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java index 291ec1d7..f11766c2 100644 --- a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java +++ b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java @@ -517,7 +517,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl cuMemberBonusCoachList = cuMemberBonusCoachMapper.queryMemberBonusCoachByBonusItemsForServer(bonusParam); dataTable = getDataTable(cuMemberBonusCoachList); cuMemberBonusCoachList.forEach(cuMemberBonusCoach -> { diff --git a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusDetailSerVO.java b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusDetailSerVO.java index 7735a07c..6ff3fcd5 100644 --- a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusDetailSerVO.java +++ b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusDetailSerVO.java @@ -347,4 +347,19 @@ public class MemberBonusDetailSerVO implements Serializable { @Excel(name = "订单拨比(%)", scale = 2) private BigDecimal orderDialRatio; + public BigDecimal getOrderAmount() { + return null != orderAmount ? orderAmount : BigDecimal.ZERO; + } + + public BigDecimal getOrderAchieveOri() { + return null != orderAchieveOri ? orderAchieveOri : BigDecimal.ZERO; + } + + public BigDecimal getOrderAmountDollar() { + return null != orderAmountDollar ? orderAmountDollar : BigDecimal.ZERO; + } + + public BigDecimal getOrderAchieve() { + return null != orderAchieve ? orderAchieve : BigDecimal.ZERO; + } } diff --git a/hzs-business/hzs-business-bonus/src/main/resources/mapper/member/bonus/CuMemberBonusCoachMapper.xml b/hzs-business/hzs-business-bonus/src/main/resources/mapper/member/bonus/CuMemberBonusCoachMapper.xml index df926b65..427cb278 100644 --- a/hzs-business/hzs-business-bonus/src/main/resources/mapper/member/bonus/CuMemberBonusCoachMapper.xml +++ b/hzs-business/hzs-business-bonus/src/main/resources/mapper/member/bonus/CuMemberBonusCoachMapper.xml @@ -66,7 +66,7 @@ coach_generation, coach_no_capping, coach_capping, coach_normal_half, coach_normal_real, remark, income_ratio, income_dial_ratio, order_dial_ratio, - pk_country, pk_creator + pk_country, pk_creator, pk_modified ) values ( #{item.pkBonus}, #{item.pkOrder}, #{item.pkBonusItems}, #{item.incomeStatus}, @@ -75,7 +75,7 @@ #{item.coachGeneration}, #{item.coachNoCapping}, #{item.coachCapping}, #{item.coachNormalHalf},#{item.coachNormalReal}, #{item.remark}, #{item.incomeRatio}, #{item.incomeDialRatio}, #{item.orderDialRatio}, - #{item.pkCountry}, #{item.pkCreator} + #{item.pkCountry}, #{item.pkCreator} ,#{item.pkModified,jdbcType=NUMERIC} ) SELECT 1 FROM dual @@ -162,32 +162,34 @@ select b.period, cp.settle_date, so.order_code,so.order_type,bt.short_name source_country_name, - cu.member_code source_member_code,cu.member_name source_member_name, + nvl(cu.member_code, cum.member_code) source_member_code, nvl(cu.member_name, cum.member_name) source_member_name, nvl(so.pk_rate, 1) pk_rate, nvl(bc.out_exchange_rate, 1) out_exchange_rate, nvl(so.order_amount, 0) order_amount, nvl(so.order_achieve, 0) order_achieve, b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status, @@ -182,7 +183,7 @@ select cb.pk_member,ce.pk_order,cb.period,cb.pk_country,ce.pk_bonus_items,ce.income_status,ce.CAL_ACHIEVE,ce.pretax_income,ce.income_tax,ce.real_income, ce.remark,ce.income_ratio,ce.income_dial_ratio,ce.order_dial_ratio,ce.current_touch,ce.expand_touch, - ce.expand_no_capping,ce.expand_capping,ce.expand_normal_half,ce.expand_normal_real + ce.expand_no_capping,ce.expand_capping,ce.expand_normal_half,ce.expand_normal_real, ce.pk_modified from cu_member_bonus cb inner join cu_member_bonus_expand ce on cb.pk_id = ce.pk_bonus @@ -224,6 +225,8 @@ on b.pk_member = tar.pk_id left join cu_member cu on so.pk_member = cu.pk_id + left join cu_member cum + on b.pk_modified = cum.pk_id left join cu_member_settle_period cp on b.period = cp.pk_id left join bd_vertex bv @@ -264,10 +267,16 @@ and so.order_code like #{bonusParam.orderCode}|| '%' - and cu.member_code = #{bonusParam.sourceMemberCode} + and ( + cu.member_code = #{bonusParam.sourceMemberCode} + or cum.member_code = #{bonusParam.sourceMemberCode} + ) - and cu.member_name = #{bonusParam.sourceMemberName} + and ( + cu.member_name = #{bonusParam.sourceMemberName} + or cum.member_name = #{bonusParam.sourceMemberName} + ) and tar.member_code = #{bonusParam.memberCode} diff --git a/hzs-common/hzs-common-core/src/main/java/com/hzs/common/core/utils/ComputeUtil.java b/hzs-common/hzs-common-core/src/main/java/com/hzs/common/core/utils/ComputeUtil.java index 9835e754..f2409514 100644 --- a/hzs-common/hzs-common-core/src/main/java/com/hzs/common/core/utils/ComputeUtil.java +++ b/hzs-common/hzs-common-core/src/main/java/com/hzs/common/core/utils/ComputeUtil.java @@ -15,12 +15,10 @@ import java.math.RoundingMode; public class ComputeUtil { /** + * 统一的除法计算方法 + * * @param divisor 除数 * @param dividend 被除数 - * @Description: 统一的除法计算方法 - * @return: BigDecimal - * @Author: sui q - * @Date: 2022/9/20 21:09 */ public static BigDecimal computeDivide(BigDecimal divisor, BigDecimal dividend) { if (dividend.compareTo(BigDecimal.ZERO) == 0) { @@ -30,12 +28,10 @@ public class ComputeUtil { } /** + * 统一的除法计算方法, 向上取整 + * * @param divisor 除数 * @param dividend 被除数 - * @Description: 统一的除法计算方法, 向上取整 - * @return: BigDecimal - * @Author: sui q - * @Date: 2022/9/20 21:09 */ public static BigDecimal computeDivideRoundUp(BigDecimal divisor, BigDecimal dividend) { if (dividend.compareTo(BigDecimal.ZERO) == 0) { @@ -45,12 +41,10 @@ public class ComputeUtil { } /** + * 统一的除法计算方法, 向下取整 + * * @param divisor 除数 * @param dividend 被除数 - * @Description: 统一的除法计算方法, 向下取整 - * @return: BigDecimal - * @Author: sui q - * @Date: 2022/9/20 21:09 */ public static BigDecimal computeDivideRoundDown(BigDecimal divisor, BigDecimal dividend) { if (dividend.compareTo(BigDecimal.ZERO) == 0) { @@ -60,12 +54,10 @@ public class ComputeUtil { } /** + * 统一的减法计算方法,前面减后面 + * * @param subtract 值1 * @param subtract1 值2 - * 统一的减法计算方法,前面减后面 - * @return: BigDecimal - * @Author: sui q - * @Date: 2022/9/20 21:09 */ public static BigDecimal computeSubtract(BigDecimal subtract, BigDecimal subtract1) { return subtract.subtract(subtract1);