Commit 4e64db6c by zhangxingmin

push

parent ea8b5c39
...@@ -8,6 +8,7 @@ import com.yd.common.utils.RandomStringGenerator; ...@@ -8,6 +8,7 @@ import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAgentDetailFycService; import com.yd.csf.api.service.ApiAgentDetailFycService;
import com.yd.csf.feign.enums.FycSourceTypeEnum; import com.yd.csf.feign.enums.FycSourceTypeEnum;
import com.yd.csf.feign.enums.OprSourceEnum; import com.yd.csf.feign.enums.OprSourceEnum;
import com.yd.csf.service.enums.RuleItemEnum;
import com.yd.csf.service.model.*; import com.yd.csf.service.model.*;
import com.yd.csf.service.service.*; import com.yd.csf.service.service.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -81,7 +82,7 @@ public class CalmSendJobHandler { ...@@ -81,7 +82,7 @@ public class CalmSendJobHandler {
AgentAccumulatedFyc agentAccumulatedFyc = iAgentAccumulatedFycService.queryOne(calmTask.getBrokerBizId()); AgentAccumulatedFyc agentAccumulatedFyc = iAgentAccumulatedFycService.queryOne(calmTask.getBrokerBizId());
if (agentAccumulatedFyc != null) { if (agentAccumulatedFyc != null) {
// 安全获取任务佣金增量值,若为 null 则用 0 代替 // 安全获取任务佣金增量值,若为 null 则用 0 代替
BigDecimal fycValue = calmTask.getFyc() == null ? BigDecimal.ZERO : calmTask.getFyc(); BigDecimal fycValue = calmTask.getAfterFyc() == null ? BigDecimal.ZERO : calmTask.getAfterFyc();
// 安全获取原有字段值,若为 null 则视为 0 // 安全获取原有字段值,若为 null 则视为 0
BigDecimal noEffectOld = agentAccumulatedFyc.getNoEffect() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getNoEffect(); BigDecimal noEffectOld = agentAccumulatedFyc.getNoEffect() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getNoEffect();
...@@ -90,10 +91,12 @@ public class CalmSendJobHandler { ...@@ -90,10 +91,12 @@ public class CalmSendJobHandler {
BigDecimal noFirstCommissionOld = agentAccumulatedFyc.getNoFirstCommission() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getNoFirstCommission(); BigDecimal noFirstCommissionOld = agentAccumulatedFyc.getNoFirstCommission() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getNoFirstCommission();
BigDecimal rycOld = agentAccumulatedFyc.getRyc() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getRyc(); BigDecimal rycOld = agentAccumulatedFyc.getRyc() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getRyc();
BigDecimal noRycOld = agentAccumulatedFyc.getNoRyc() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getNoRyc(); BigDecimal noRycOld = agentAccumulatedFyc.getNoRyc() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getNoRyc();
BigDecimal firstSalesCommissionOld = agentAccumulatedFyc.getFirstSalesCommission() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getFirstSalesCommission();
BigDecimal noFirstSalesCommissionOld = agentAccumulatedFyc.getNoFirstSalesCommission() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getNoFirstSalesCommission();
//未生效累计积分(不限业务场景)= 未生效累计积分(不限业务场景) - 增量积分 //未生效累计积分(不限业务场景)= 未生效累计积分(不限业务场景) - 增量积分
BigDecimal noEffect = noEffectOld.subtract(fycValue); 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 = effectOld.add(fycValue); BigDecimal effect = effectOld.add(fycValue);
agentAccumulatedFyc.setEffect(effect); agentAccumulatedFyc.setEffect(effect);
...@@ -107,7 +110,17 @@ public class CalmSendJobHandler { ...@@ -107,7 +110,17 @@ public class CalmSendJobHandler {
agentAccumulatedFyc.setFirstCommission(firstCommission); agentAccumulatedFyc.setFirstCommission(firstCommission);
//未生效累计首期佣金积分值(佣金场景)= 未生效累计首期佣金积分值(佣金场景)- 增量积分 //未生效累计首期佣金积分值(佣金场景)= 未生效累计首期佣金积分值(佣金场景)- 增量积分
BigDecimal noFirstCommission = noFirstCommissionOld.subtract(fycValue); 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);
if (RuleItemEnum.SALES.getRuleItemBizId().equals(calmTask.getRuleItemBizId())) {
//销售佣金项目
//已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个)) = 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个)) + 增量积分
BigDecimal firstSalesCommission = firstSalesCommissionOld.add(fycValue);
agentAccumulatedFyc.setFirstSalesCommission(firstSalesCommission);
//未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))= 未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))- 增量积分
BigDecimal noFirstSalesCommission = noFirstSalesCommissionOld.subtract(fycValue);
agentAccumulatedFyc.setNoFirstSalesCommission(noFirstSalesCommission.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : noFirstSalesCommission);
}
} else { } else {
//非首期 //非首期
//已生效累计非首期佣金积分值(佣金场景) = 已生效累计非首期佣金积分值(佣金场景) + 增量积分 //已生效累计非首期佣金积分值(佣金场景) = 已生效累计非首期佣金积分值(佣金场景) + 增量积分
...@@ -115,14 +128,14 @@ public class CalmSendJobHandler { ...@@ -115,14 +128,14 @@ public class CalmSendJobHandler {
agentAccumulatedFyc.setRyc(ryc); agentAccumulatedFyc.setRyc(ryc);
//未生效累计非首期佣金积分值(佣金场景)= 未生效累计非首期佣金积分值(佣金场景)- 增量积分 //未生效累计非首期佣金积分值(佣金场景)= 未生效累计非首期佣金积分值(佣金场景)- 增量积分
BigDecimal noRyc = noRycOld.subtract(fycValue); 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);
} }
//晋升职级累计积分 = 已生效累计积分 - 已生效累计非首期佣金积分值 //晋升职级累计积分 = 已生效累计积分 - 已生效累计非首期佣金积分值
// 注意:此处 effect 和 ryc 已更新,使用更新后的值,但仍需判空保护 // 注意:此处 effect 和 ryc 已更新,使用更新后的值,但仍需判空保护
BigDecimal effectAfter = agentAccumulatedFyc.getEffect() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getEffect(); BigDecimal effectAfter = agentAccumulatedFyc.getEffect() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getEffect();
BigDecimal rycAfter = agentAccumulatedFyc.getRyc() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getRyc(); BigDecimal rycAfter = agentAccumulatedFyc.getRyc() == null ? BigDecimal.ZERO : agentAccumulatedFyc.getRyc();
BigDecimal promotion = effectAfter.subtract(rycAfter); 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());
iAgentAccumulatedFycService.saveOrUpdate(agentAccumulatedFyc); iAgentAccumulatedFycService.saveOrUpdate(agentAccumulatedFyc);
......
...@@ -529,6 +529,13 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -529,6 +529,13 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
String token2 = request2.getHeader("Authorization"); String token2 = request2.getHeader("Authorization");
log.info("使用编程式事务,确保方法内的事务一致性 token==============,{}",token2); log.info("使用编程式事务,确保方法内的事务一致性 token==============,{}",token2);
//保单币种->港币的汇率
BigDecimal exchangeRate = BigDecimal.ZERO;
if (!CollectionUtils.isEmpty(queryPolicyAndBrokerDtoList)) {
QueryPolicyAndBrokerDto queryPolicyAndBrokerDto = queryPolicyAndBrokerDtoList.get(0);
exchangeRate = queryExchangeRateByFeign(queryPolicyAndBrokerDto.getCurrency(), "HKD");
}
//基本法计算值收集列表 //基本法计算值收集列表
List<AlgorithmCollectResDto> collectResDtos = new ArrayList<>(); List<AlgorithmCollectResDto> collectResDtos = new ArrayList<>();
for (QueryPolicyAndBrokerDto brokerDto : queryPolicyAndBrokerDtoList) { for (QueryPolicyAndBrokerDto brokerDto : queryPolicyAndBrokerDtoList) {
...@@ -609,7 +616,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -609,7 +616,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
//异步处理-构建冷静期定时任务 //异步处理-构建冷静期定时任务
log.info("异步处理-构建冷静期定时任务=>请求前入参:{}",JSON.toJSONString(collectResDtos)); log.info("异步处理-构建冷静期定时任务=>请求前入参:{}",JSON.toJSONString(collectResDtos));
apiExpectedFortuneAsyncService.buildCalmDateTask(collectResDtos,policyNo); apiExpectedFortuneAsyncService.buildCalmDateTask(collectResDtos,policyNo,exchangeRate);
return Result.success(); return Result.success();
} catch (Exception e) { } catch (Exception e) {
...@@ -628,8 +635,6 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -628,8 +635,6 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
}); });
} }
/** /**
* 查询和当前转介人相关关系(推荐,一级管理,二级管理,辅导)的客户端用户ID列表数据 * 查询和当前转介人相关关系(推荐,一级管理,二级管理,辅导)的客户端用户ID列表数据
* @param brokerDto * @param brokerDto
......
package com.yd.csf.service.enums;
/**
* 基本法项目枚举
*/
public enum RuleItemEnum {
SALES("rule_item_config_FePX0vpJQ9bU1vEo","销售佣金"),
;
//基本法项目配置表唯一业务ID
private String ruleItemBizId;
//基本法项目名称
private String itemName;
//构造函数
RuleItemEnum(String ruleItemBizId, String itemName) {
this.ruleItemBizId = ruleItemBizId;
this.itemName = itemName;
}
public String getRuleItemBizId() {
return ruleItemBizId;
}
public String getItemName() {
return itemName;
}
}
...@@ -105,7 +105,19 @@ public class AgentAccumulatedFyc implements Serializable { ...@@ -105,7 +105,19 @@ public class AgentAccumulatedFyc implements Serializable {
private BigDecimal noRyc; private BigDecimal noRyc;
/** /**
* 晋升职级累计积分 = 已生效累计积分 - 已生效累计非首期佣金积分值 * 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/
@TableField("first_sales_commission")
private BigDecimal firstSalesCommission;
/**
* 未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/
@TableField("no_first_sales_commission")
private BigDecimal noFirstSalesCommission;
/**
* 晋升职级累计积分 = 初始化已生效积分(不限业务场景) + 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/ */
@TableField("promotion") @TableField("promotion")
private BigDecimal promotion; private BigDecimal promotion;
......
...@@ -116,7 +116,19 @@ public class AgentAccumulatedFycLog implements Serializable { ...@@ -116,7 +116,19 @@ public class AgentAccumulatedFycLog implements Serializable {
private BigDecimal noRyc; private BigDecimal noRyc;
/** /**
* 晋升职级累计积分 = 已生效累计积分 - 已生效累计非首期佣金积分值 * 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/
@TableField("first_sales_commission")
private BigDecimal firstSalesCommission;
/**
* 未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/
@TableField("no_first_sales_commission")
private BigDecimal noFirstSalesCommission;
/**
* 晋升职级累计积分 = 初始化已生效积分(不限业务场景) + 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/ */
@TableField("promotion") @TableField("promotion")
private BigDecimal promotion; private BigDecimal promotion;
......
...@@ -48,17 +48,29 @@ public class AgentDetailFyc implements Serializable { ...@@ -48,17 +48,29 @@ public class AgentDetailFyc implements Serializable {
private String sourceType; private String sourceType;
/** /**
* 积分来源名称
*/
@TableField("source_name")
private String sourceName;
/**
* 佣金项目类型
*/
@TableField("commission_type")
private Integer commissionType;
/**
* 佣金项目名称
*/
@TableField("commission_name")
private String commissionName;
/**
* 积分来源基本法项目配置表唯一业务ID * 积分来源基本法项目配置表唯一业务ID
*/ */
@TableField("rule_item_biz_id") @TableField("rule_item_biz_id")
private String ruleItemBizId; private String ruleItemBizId;
// /**
// * 保单发佣批次ID
// */
// @TableField("batch_bizId")
// private String batchBizId;
/** /**
* 积分提供的保单号 * 积分提供的保单号
*/ */
...@@ -66,6 +78,12 @@ public class AgentDetailFyc implements Serializable { ...@@ -66,6 +78,12 @@ public class AgentDetailFyc implements Serializable {
private String policyNo; private String policyNo;
/** /**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@TableField("fortune_period")
private Integer fortunePeriod;
/**
* 积分提供者(客户端用户表唯一业务ID) * 积分提供者(客户端用户表唯一业务ID)
*/ */
@TableField("provide_id") @TableField("provide_id")
...@@ -84,10 +102,22 @@ public class AgentDetailFyc implements Serializable { ...@@ -84,10 +102,22 @@ public class AgentDetailFyc implements Serializable {
private BigDecimal afterFyc; private BigDecimal afterFyc;
/** /**
* 变化值(-代表减少) * 汇率转化前积分值(变化值(-代表减少))
*/ */
@TableField("change_fyc") @TableField("change_fyc")
private String changeFyc; private BigDecimal changeFyc;
/**
* 汇率(保单币种->港币的汇率)
*/
@TableField("exchange_rate")
private BigDecimal exchangeRate;
/**
* 汇率转化后积分值(变化值(-代表减少))
*/
@TableField("change_after_fyc")
private BigDecimal changeAfterFyc;
/** /**
* 积分解冻时间 * 积分解冻时间
......
...@@ -58,6 +58,12 @@ public class CalmTask implements Serializable { ...@@ -58,6 +58,12 @@ public class CalmTask implements Serializable {
private String policyNo; private String policyNo;
/** /**
* 积分来源基本法项目配置表唯一业务ID
*/
@TableField("rule_item_biz_id")
private String ruleItemBizId;
/**
* 佣金项目 * 佣金项目
*/ */
@TableField("commission_name") @TableField("commission_name")
...@@ -82,12 +88,24 @@ public class CalmTask implements Serializable { ...@@ -82,12 +88,24 @@ public class CalmTask implements Serializable {
private String brokerName; private String brokerName;
/** /**
* 佣金值(积分值) * 汇率转换前佣金值(积分值)
*/ */
@TableField("fyc") @TableField("fyc")
private BigDecimal fyc; private BigDecimal fyc;
/** /**
* 汇率(保单币种->港币的汇率)
*/
@TableField("exchange_rate")
private BigDecimal exchangeRate;
/**
* 汇率转换后佣金值(积分值)
*/
@TableField("after_fyc")
private BigDecimal afterFyc;
/**
* 冷静期结束日期 * 冷静期结束日期
*/ */
@TableField("cooling_off_end_date") @TableField("cooling_off_end_date")
......
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