Commit f5f407fc by zhangxingmin

push

parent 41674338
...@@ -367,20 +367,37 @@ public class ApiExpectedFortuneAsyncService { ...@@ -367,20 +367,37 @@ public class ApiExpectedFortuneAsyncService {
if (fyc == null) { if (fyc == null) {
continue; continue;
} }
// 增量值安全处理:get 可能返回 null,统一转为 ZERO
BigDecimal safeDelta = delta == null ? BigDecimal.ZERO : delta;
BigDecimal safeNoDelta = noDelta == null ? BigDecimal.ZERO : noDelta;
BigDecimal safeNoFirstDelta = noFirstDelta == null ? BigDecimal.ZERO : noFirstDelta;
BigDecimal safeNoRycDelta = noRycDelta == null ? BigDecimal.ZERO : noRycDelta;
BigDecimal safeFirstDelta = firstDelta == null ? BigDecimal.ZERO : firstDelta;
BigDecimal safeRycDelta = rycDelta == null ? BigDecimal.ZERO : rycDelta;
// 原有字段安全处理:fyc 中的字段可能为 null,转为 ZERO 再进行 add
BigDecimal effectOld = fyc.getEffect() == null ? BigDecimal.ZERO : fyc.getEffect();
BigDecimal noEffectOld = fyc.getNoEffect() == null ? BigDecimal.ZERO : fyc.getNoEffect();
BigDecimal noFirstCommissionOld = fyc.getNoFirstCommission() == null ? BigDecimal.ZERO : fyc.getNoFirstCommission();
BigDecimal noRycOld = fyc.getNoRyc() == null ? BigDecimal.ZERO : fyc.getNoRyc();
BigDecimal firstCommissionOld = fyc.getFirstCommission() == null ? BigDecimal.ZERO : fyc.getFirstCommission();
BigDecimal rycOld = fyc.getRyc() == null ? BigDecimal.ZERO : fyc.getRyc();
// 应用增量 // 应用增量
//未生效累计积分(不限业务场景) //未生效累计积分(不限业务场景)
fyc.setNoEffect(fyc.getNoEffect().add(noDelta)); fyc.setNoEffect(noEffectOld.add(safeNoDelta));
//未生效累计首期佣金积分值(佣金场景) //未生效累计首期佣金积分值(佣金场景)
fyc.setNoFirstCommission(fyc.getNoFirstCommission().add(noFirstDelta)); fyc.setNoFirstCommission(noFirstCommissionOld.add(safeNoFirstDelta));
//未生效累计非首期佣金积分值(佣金场景) //未生效累计非首期佣金积分值(佣金场景)
fyc.setNoRyc(fyc.getNoRyc().add(noRycDelta)); fyc.setNoRyc(noRycOld.add(safeNoRycDelta));
//已生效累计积分(不限业务场景) //已生效累计积分(不限业务场景)
fyc.setEffect(fyc.getEffect().add(delta)); fyc.setEffect(effectOld.add(safeDelta));
//已生效累计首期佣金积分值(佣金场景) //已生效累计首期佣金积分值(佣金场景)
fyc.setFirstCommission(fyc.getFirstCommission().add(firstDelta)); fyc.setFirstCommission(firstCommissionOld.add(safeFirstDelta));
//已生效累计非首期佣金积分值(佣金场景) //已生效累计非首期佣金积分值(佣金场景)
fyc.setRyc(fyc.getRyc().add(rycDelta)); fyc.setRyc(rycOld.add(safeRycDelta));
//累计积分 = 未生效累计积分 + 已生效累计积分 //累计积分 = 未生效累计积分 + 已生效累计积分
fyc.setTotalFyc(fyc.getNoEffect().add(fyc.getEffect())); fyc.setTotalFyc(fyc.getNoEffect().add(fyc.getEffect()));
......
...@@ -77,37 +77,51 @@ public class CalmSendJobHandler { ...@@ -77,37 +77,51 @@ public class CalmSendJobHandler {
iAgentDetailFycService.saveOrUpdate(agentDetailFyc); iAgentDetailFycService.saveOrUpdate(agentDetailFyc);
} }
//更新积分总表的字段(此时积分都已经生效) // 更新积分总表的字段(此时积分都已经生效)
//查询积分总表对象 弄好了,差一个每月1号晋升职级定时任务未开发,还有个基本法要根据保单生效日所在月对应的积分总表操作日志记录表来找出对应月的最大职级(晋升职级累计积分)(少个积分总表操作日志记录表)
AgentAccumulatedFyc agentAccumulatedFyc = iAgentAccumulatedFycService.queryOne(calmTask.getBrokerBizId()); AgentAccumulatedFyc agentAccumulatedFyc = iAgentAccumulatedFycService.queryOne(calmTask.getBrokerBizId());
if (agentAccumulatedFyc != null) { if (agentAccumulatedFyc != null) {
// 安全获取任务佣金增量值,若为 null 则用 0 代替
BigDecimal fycValue = calmTask.getFyc() == null ? BigDecimal.ZERO : calmTask.getFyc();
// 安全获取原有字段值,若为 null 则视为 0
BigDecimal noEffectOld = agentAccumulatedFyc.getNoEffect() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getNoEffect();
BigDecimal effectOld = agentAccumulatedFyc.getEffect() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getEffect();
BigDecimal firstCommissionOld = agentAccumulatedFyc.getFirstCommission() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getFirstCommission();
BigDecimal noFirstCommissionOld = agentAccumulatedFyc.getNoFirstCommission() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getNoFirstCommission();
BigDecimal rycOld = agentAccumulatedFyc.getRyc() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getRyc();
BigDecimal noRycOld = agentAccumulatedFyc.getNoRyc() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getNoRyc();
//未生效累计积分(不限业务场景)= 未生效累计积分(不限业务场景) - 增量积分 //未生效累计积分(不限业务场景)= 未生效累计积分(不限业务场景) - 增量积分
BigDecimal noEffect = agentAccumulatedFyc.getNoEffect().subtract(calmTask.getFyc()); BigDecimal noEffect = noEffectOld.subtract(fycValue);
agentAccumulatedFyc.setNoEffect(noEffect.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : noEffect); agentAccumulatedFyc.setNoEffect(noEffect.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : noEffect);
//已生效累计积分(不限业务场景) = 已生效累计积分(不限业务场景) + 增量积分 //已生效累计积分(不限业务场景) = 已生效累计积分(不限业务场景) + 增量积分
BigDecimal effect = agentAccumulatedFyc.getEffect().add(calmTask.getFyc()); BigDecimal effect = effectOld.add(fycValue);
agentAccumulatedFyc.setEffect(effect); agentAccumulatedFyc.setEffect(effect);
//累计积分 = 未生效累计积分 + 已生效累计积分 //累计积分 = 未生效累计积分 + 已生效累计积分
agentAccumulatedFyc.setTotalFyc(agentAccumulatedFyc.getNoEffect().add(agentAccumulatedFyc.getEffect())); agentAccumulatedFyc.setTotalFyc(agentAccumulatedFyc.getNoEffect().add(agentAccumulatedFyc.getEffect()));
if (calmTask.getFortunePeriod() == 1) {
if (calmTask.getFortunePeriod() != null && calmTask.getFortunePeriod() == 1) {
//首期 //首期
//已生效累计首期佣金积分值(佣金场景) = 已生效累计首期佣金积分值(佣金场景) + 增量积分 //已生效累计首期佣金积分值(佣金场景) = 已生效累计首期佣金积分值(佣金场景) + 增量积分
BigDecimal firstCommission = agentAccumulatedFyc.getFirstCommission().add(calmTask.getFyc()); BigDecimal firstCommission = firstCommissionOld.add(fycValue);
agentAccumulatedFyc.setFirstCommission(firstCommission); agentAccumulatedFyc.setFirstCommission(firstCommission);
//未生效累计首期佣金积分值(佣金场景)= 未生效累计首期佣金积分值(佣金场景)- 增量积分 //未生效累计首期佣金积分值(佣金场景)= 未生效累计首期佣金积分值(佣金场景)- 增量积分
BigDecimal noFirstCommission = agentAccumulatedFyc.getNoFirstCommission().subtract(calmTask.getFyc()); BigDecimal noFirstCommission = noFirstCommissionOld.subtract(fycValue);
agentAccumulatedFyc.setNoFirstCommission(noFirstCommission.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : noFirstCommission); agentAccumulatedFyc.setNoFirstCommission(noFirstCommission.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : noFirstCommission);
}else { } else {
//非首期 //非首期
//已生效累计非首期佣金积分值(佣金场景) = 已生效累计非首期佣金积分值(佣金场景) + 增量积分 //已生效累计非首期佣金积分值(佣金场景) = 已生效累计非首期佣金积分值(佣金场景) + 增量积分
BigDecimal ryc = agentAccumulatedFyc.getRyc().add(calmTask.getFyc()); BigDecimal ryc = rycOld.add(fycValue);
agentAccumulatedFyc.setRyc(ryc); agentAccumulatedFyc.setRyc(ryc);
//未生效累计非首期佣金积分值(佣金场景)= 未生效累计非首期佣金积分值(佣金场景)- 增量积分 //未生效累计非首期佣金积分值(佣金场景)= 未生效累计非首期佣金积分值(佣金场景)- 增量积分
BigDecimal noRyc = agentAccumulatedFyc.getNoRyc().subtract(calmTask.getFyc()); BigDecimal noRyc = noRycOld.subtract(fycValue);
agentAccumulatedFyc.setNoRyc(noRyc.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : noRyc); agentAccumulatedFyc.setNoRyc(noRyc.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : noRyc);
} }
//晋升职级累计积分 = 已生效累计积分 - 已生效累计非首期佣金积分值 //晋升职级累计积分 = 已生效累计积分 - 已生效累计非首期佣金积分值
BigDecimal promotion = agentAccumulatedFyc.getEffect().subtract(agentAccumulatedFyc.getRyc()); // 注意:此处 effect 和 ryc 已更新,使用更新后的值,但仍需判空保护
BigDecimal effectAfter = agentAccumulatedFyc.getEffect() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getEffect();
BigDecimal rycAfter = agentAccumulatedFyc.getRyc() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getRyc();
BigDecimal promotion = effectAfter.subtract(rycAfter);
agentAccumulatedFyc.setPromotion(promotion.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : promotion); agentAccumulatedFyc.setPromotion(promotion.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : promotion);
//最后计算日期,记录最后一次计算累计FYC的日期 //最后计算日期,记录最后一次计算累计FYC的日期
agentAccumulatedFyc.setLastCalcDate(LocalDateTime.now()); agentAccumulatedFyc.setLastCalcDate(LocalDateTime.now());
...@@ -115,7 +129,7 @@ public class CalmSendJobHandler { ...@@ -115,7 +129,7 @@ public class CalmSendJobHandler {
//新增积分总表日志表 //新增积分总表日志表
AgentAccumulatedFycLog log = new AgentAccumulatedFycLog(); AgentAccumulatedFycLog log = new AgentAccumulatedFycLog();
BeanUtils.copyProperties(agentAccumulatedFyc,log); BeanUtils.copyProperties(agentAccumulatedFyc, log);
log.setId(null); log.setId(null);
log.setFycBizId(agentAccumulatedFyc.getFycBizId()); log.setFycBizId(agentAccumulatedFyc.getFycBizId());
log.setFycLogBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_AGENT_ACCUMULATED_FYC_LOG.getCode())); log.setFycLogBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_AGENT_ACCUMULATED_FYC_LOG.getCode()));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment