Commit 0bd6a45b by 陈健智

工具集互动量更新-影响力计算逻辑调整

parent accfb4d0
......@@ -734,10 +734,14 @@ public class ToolsetServiceImpl implements ToolsetService {
? data.getPlatformType() : "网媒", data.getChannel()));
// 1.分别将等级为S,A,B,C的渠道各自加和
if (Objects.nonNull(channelInfluence)){
// 2024/5/21修改:无论表中是否匹配,当类型为D,取值=1
// 2024/5/21修改:即使表中匹配,当类型为D,取值=1
if (Objects.equals("D", channelInfluence.getLevel())){
channelInfluence.setInfluence(1d);
}
// 对于表中匹配上的非D级渠道:当表中的渠道影响力为0或1时,给予对应等级的默认值
if (!Objects.equals("D", channelInfluence.getLevel()) && (0 == channelInfluence.getInfluence() || 1 == channelInfluence.getInfluence())){
channelInfluence.setInfluence(getMatchedDefaultChannelInf(channelInfluence.getLevel()));
}
levelSumH.compute(channelInfluence.getLevel(), (k, v) -> Objects.isNull(v)
? channelInfluence.getInfluence()
: BigDecimal.valueOf(v).add(BigDecimal.valueOf(channelInfluence.getInfluence())).doubleValue());
......@@ -764,6 +768,21 @@ public class ToolsetServiceImpl implements ToolsetService {
return BigDecimal.valueOf(result).setScale(1, RoundingMode.HALF_UP).doubleValue();
}
private double getMatchedDefaultChannelInf(String level){
switch (level){
case "A":
return 72.1;
case "B":
return 57.1;
case "C":
return 37.5;
case "S":
return 88.1;
default:
return 1d;
}
}
/**
* 计算实时传播力(RMI)
* @param data
......@@ -885,7 +904,8 @@ public class ToolsetServiceImpl implements ToolsetService {
* @return
*/
private double computeFinalInf(double inf, double RMI){
return BigDecimal.valueOf(inf).add(BigDecimal.valueOf(RMI)).divide(BigDecimal.valueOf(2), 1, RoundingMode.HALF_UP).doubleValue();
double finalInf = BigDecimal.valueOf(inf).add(BigDecimal.valueOf(RMI)).divide(BigDecimal.valueOf(2), 1, RoundingMode.HALF_UP).doubleValue();
return finalInf > 1 ? finalInf : 1d;
}
/**
......
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