diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplication4CostService.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplication4CostService.java index d7e1209..cbbfc3a 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplication4CostService.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplication4CostService.java @@ -36,12 +36,15 @@ public interface TzcRebateApplication4CostService { List levelsList); /** - * 获取命中返利坎级的信息 - * @param dispatchAmt - * @param activityId + * 获取最高命中返利坎级的信息 + * @param dispatchAmt 当前客户的发货金额 + * @param sameDispatchAmt 同期发货金额 + * @param rebatePeriodId 返利期间id * @return */ - Object getHitRebateInfo(BigDecimal dispatchAmt,Long activityId); + TzcRebateLevels getHitRebateMaxLevel(BigDecimal dispatchAmt, + BigDecimal sameDispatchAmt, + Long rebatePeriodId); } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java index 310f49f..298fed5 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java @@ -329,24 +329,48 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio } @Override - public Object getHitRebateInfo(BigDecimal dispatchAmt, Long activityId) { - if(dispatchAmt.compareTo(BigDecimal.ZERO)<0){ - Assert.throwEx("发货金额不能小于0"); - } - TbsActivity activity = tbsActivityService.getById(activityId); - TzcRebate rebate = tzcRebateService.getById(activity.getRebateId()); - List levelsArgumentList = tzcRebateLevelsArgumentService.list( - new LambdaQueryWrapper().eq(TzcRebateLevelsArgument::getRebateId, rebate.getId()) - ); + public TzcRebateLevels getHitRebateMaxLevel(BigDecimal dispatchAmt,BigDecimal sameDispatchAmt,Long rebatePeriodId) { + // 判断是否同期 + int samePeriodFlag = sameDispatchAmt.compareTo(BigDecimal.ZERO)==0?0:1; + TzcRebatePeriod rebatePeriod = tzcRebatePeriodService.getById(rebatePeriodId); List levelsList = tzcRebateLevelsService.list( new LambdaQueryWrapper() - .eq(TzcRebateLevels::getRebateId, rebate.getId()) - .orderByDesc(TzcRebateLevels::getLevelNum) + .eq(TzcRebateLevels::getRebateId, rebatePeriod.getRebateId()) + // 同期数据过滤 + .eq(TzcRebateLevels::getSamePeriodFlag, samePeriodFlag) + .orderByDesc(TzcRebateLevels::getLevelNum) ); + // 命中的最高坎级 for (TzcRebateLevels levels : levelsList) { - + // 条件选择:0-百分比;1-固定金额 + if (levels.getConditionSelect().equals(0)){ + // 条件类型:0-同期进货金额;1-区间目标金额 + BigDecimal periodAmount = null; + if (levels.getConditionType().equals(0)){ + periodAmount = rebatePeriod.getSamePeriodAmount(); + }else if (levels.getConditionType().equals(1)){ + periodAmount = rebatePeriod.getPeriodAmount(); + } + // 发货金额大于坎级制定的百分比 + boolean ok = dispatchAmt.compareTo( + periodAmount.multiply(levels.getConditionRate()) + .divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP) + )>=0; + if (!ok){ + log.debug("命中坎级:"+levels.getLevelNum()+",条件比重:"+levels.getConditionRate()+"%"); + continue; + } + return levels; + }else if (levels.getConditionSelect().equals(1)){ + // 发货金额大于坎级制定的固定金额 + boolean ok = dispatchAmt.compareTo(levels.getConditionAmount())>=0; + if (!ok){ + log.debug("命中坎级:"+levels.getLevelNum()+",条件固定金额:"+levels.getConditionAmount()); + continue; + } + return levels; + } } - return null; } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationSubject.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationSubject.java index 2c07b56..9f669d9 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationSubject.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationSubject.java @@ -159,6 +159,9 @@ public class VtbVerificationSubject implements Serializable { /** 表单内容值 */ private String formContextValue; + /** 系统获取的发货金额 */ + private BigDecimal finalDispatchAmt; + private Integer syncPayFlag; /** 可更变的最大金额 */ diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationSubjectCenterBo.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationSubjectCenterBo.java index 96fdbab..6ee6135 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationSubjectCenterBo.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationSubjectCenterBo.java @@ -50,6 +50,9 @@ public class VtbVerificationSubjectCenterBo implements Serializable { private List centerAmount; + /** 获取的发货金额 */ + private BigDecimal finalDispatchAmt; + @Data public static class ChangeSubjectCenter{ diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index 82b89c3..b6613ca 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -907,11 +907,17 @@ public class VtbVerificationServiceImpl extends ServiceImpl