Browse Source

feat: 返利模板调整

master
Yen 3 months ago
parent
commit
b9bfded3d8
  1. 11
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplication4CostService.java
  2. 50
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java
  3. 3
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationSubject.java
  4. 3
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationSubjectCenterBo.java
  5. 7
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

11
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplication4CostService.java

@ -36,12 +36,15 @@ public interface TzcRebateApplication4CostService {
List<TzcRebateLevels> 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);
}

50
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<TzcRebateLevelsArgument> levelsArgumentList = tzcRebateLevelsArgumentService.list(
new LambdaQueryWrapper<TzcRebateLevelsArgument>().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<TzcRebateLevels> levelsList = tzcRebateLevelsService.list(
new LambdaQueryWrapper<TzcRebateLevels>()
.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;
}

3
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;
/** 可更变的最大金额 */

3
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<ChangeSubjectCenter> centerAmount;
/** 获取的发货金额 */
private BigDecimal finalDispatchAmt;
@Data
public static class ChangeSubjectCenter{

7
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<VtbVerificationMappe
}
//设置总金额
BigDecimal totalAmount = BigDecimal.ZERO;
// 用户输入的发货金额
BigDecimal totalDispatchAmt = BigDecimal.ZERO;
for (VtbVerificationSubject verificationSubject : verificationSubjects) {
totalAmount = totalAmount.add(verificationSubject.getUsedAmount());
totalDispatchAmt = totalDispatchAmt.add(verificationSubject.getFinalDispatchAmt());
}
verification.setFinalDispatchAmt(totalDispatchAmt);
verification.setAmount(totalAmount);
verification.setAmountRecord(totalAmount);
// TODO 系统自动获取的发货金额
verification.setAutoDispatchAmt(BigDecimal.ZERO);
//保存
this.saveOrUpdate(verification);
@ -1080,6 +1086,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
verificationSubject.setFormVersion(subjectCenterBo.getFormVersion());
verificationSubject.setFormContext(subjectCenterBo.getFormContext());
verificationSubject.setFormContextValue(subjectCenterBo.getFormContextValue());
verificationSubject.setFinalDispatchAmt(subjectCenterBo.getFinalDispatchAmt());
verificationSubjects.add(verificationSubject);
}
}

Loading…
Cancel
Save