工资结算南亚区域特殊处理
This commit is contained in:
parent
083efd892d
commit
adedfdf5d1
@ -159,8 +159,15 @@ public class TeamBillSettleListener implements MessageListener {
|
||||
}
|
||||
});
|
||||
|
||||
List<TeamBillMemberTarget> teamBillMemberTargets = calculatorTarget(teamMemberTargets,
|
||||
regionPolicyManager);
|
||||
// 获得区域配置细信息
|
||||
SysRegionConfig regionConfig = sysRegionConfigService.getById(teamProfile.getRegion());
|
||||
if (Objects.isNull(regionConfig)) {
|
||||
log.warn("没有获得团队的区域数据,团队ID:{}", teamProfile.getId());
|
||||
return;
|
||||
}
|
||||
|
||||
List<TeamBillMemberTarget> teamBillMemberTargets =
|
||||
TeamBillCycleUtils.calculatorPolicyTargetNew(teamMemberTargets, regionPolicyManager, regionConfig);
|
||||
log.warn("团队账单结算teamBillMemberTargets."+teamBillMemberTargets);
|
||||
|
||||
// 结算账单.
|
||||
@ -183,13 +190,6 @@ public class TeamBillSettleListener implements MessageListener {
|
||||
return;
|
||||
}
|
||||
|
||||
// 获得区域配置细信息
|
||||
SysRegionConfig regionConfig = sysRegionConfigService.getById(teamProfile.getRegion());
|
||||
if (Objects.isNull(regionConfig)) {
|
||||
log.warn("没有获得团队的区域数据,团队ID:{}", teamProfile.getId());
|
||||
return;
|
||||
}
|
||||
|
||||
if (Objects.isNull(regionPolicyManager.getPolicyType()) || Objects.equals(TeamPolicyTypeEnum.MONEY.name(), regionPolicyManager.getPolicyType())) {
|
||||
log.warn("美金入账{}", teamProfile);
|
||||
// 成员入账
|
||||
|
||||
@ -6,6 +6,7 @@ import com.red.circle.other.infra.database.mongo.dto.team.TeamBillPolicyType;
|
||||
import com.red.circle.other.infra.database.mongo.dto.team.TeamPolicy;
|
||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMemberTarget;
|
||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamPolicyManager;
|
||||
import com.red.circle.other.infra.database.mongo.entity.user.region.SysRegionConfig;
|
||||
import com.red.circle.other.infra.database.rds.entity.team.BillDiamondBalance;
|
||||
import com.red.circle.other.inner.enums.team.TeamMemberTargetIndex;
|
||||
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||
@ -129,6 +130,88 @@ public final class TeamBillCycleUtils {
|
||||
return calculatorPolicyTarget(List.of(target), policy).get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算成员工作情况.
|
||||
*/
|
||||
public static List<TeamBillMemberTarget> calculatorPolicyTargetNew(List<TeamMemberTarget> targets,
|
||||
TeamPolicyManager policy, SysRegionConfig regionConfig) {
|
||||
|
||||
if (CollectionUtils.isEmpty(targets)) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
|
||||
List<TeamPolicy> teamPolicies = Objects.nonNull(policy)
|
||||
? policy.getPolicy().stream()
|
||||
.sorted(Comparator.comparing(TeamPolicy::getLevel, Comparator.reverseOrder()))
|
||||
.collect(Collectors.toList())
|
||||
: Lists.newArrayList();
|
||||
|
||||
return targets.stream().map(target -> {
|
||||
long targetTimeHours = target.sumAllTargetTime() / 60;
|
||||
Long acceptGiftValue = target.sumAcceptGiftValue();
|
||||
Integer effectiveDay = target.sumEffectiveDay();
|
||||
|
||||
TeamBillMemberTarget resultTarget = new TeamBillMemberTarget()
|
||||
.setTargetId(target.getTimeId())
|
||||
.setSysOrigin(target.getSysOrigin())
|
||||
.setUserId(target.getUserId())
|
||||
.setAcceptGiftValue(target.sumAcceptGiftValue())
|
||||
.setGiveGiftValue(target.sumGiveGiftValue())
|
||||
.setRoomValue(target.sumRoomValue())
|
||||
.setOnlineTime(target.sumAllTargetTime())
|
||||
.setMemberSalary(BigDecimal.ZERO)
|
||||
.setOwnSalary(BigDecimal.ZERO)
|
||||
.setTotalSalary(BigDecimal.ZERO)
|
||||
.setSatisfyLevel(Boolean.FALSE);
|
||||
|
||||
for (TeamPolicy teamPolicy : teamPolicies) {
|
||||
Long policyOnlineTimeHours = NumUtils.isNullDefaultZero(teamPolicy.getOnlineTime());
|
||||
Long policyGiftValue = NumUtils.isNullDefaultZero(teamPolicy.getTarget());
|
||||
|
||||
// 南亚区域特殊处理
|
||||
if ("SA".equals(regionConfig.getRegionCode())) {
|
||||
if (acceptGiftValue < policyGiftValue) {
|
||||
continue;
|
||||
}
|
||||
if (!Boolean.TRUE.equals(target.getIsOwn())) {
|
||||
resultTarget.setMemberSalary(teamPolicy.getMemberSalary().multiply(new BigDecimal("0.9")).setScale(2, RoundingMode.DOWN));
|
||||
resultTarget.setTotalSalary(teamPolicy.getMemberSalary().multiply(new BigDecimal("0.9")).setScale(2, RoundingMode.DOWN));
|
||||
} else {
|
||||
resultTarget.setMemberSalary(teamPolicy.getMemberSalary());
|
||||
resultTarget.setOwnSalary(teamPolicy.getOwnSalary());
|
||||
resultTarget.setTotalSalary(teamPolicy.getTotalSalary());
|
||||
}
|
||||
resultTarget.setLevel(teamPolicy.getLevel());
|
||||
resultTarget.setSatisfyLevel(Boolean.TRUE);
|
||||
resultTarget.setPropsRewards(teamPolicy.getPropsRewards());
|
||||
return resultTarget;
|
||||
} else {
|
||||
|
||||
// 20240918 政策新增有效天字段,大于1小时(60分钟)即可获取当天有效天
|
||||
Integer policyEffectiveDay = NumUtils.isNullDefaultZero(teamPolicy.getEffectiveDay());
|
||||
if (targetTimeHours >= policyOnlineTimeHours && acceptGiftValue >= policyGiftValue && effectiveDay >= policyEffectiveDay) {
|
||||
resultTarget.setMemberSalary(teamPolicy.getMemberSalary());
|
||||
resultTarget.setOwnSalary(teamPolicy.getOwnSalary());
|
||||
resultTarget.setTotalSalary(teamPolicy.getTotalSalary());
|
||||
resultTarget.setLevel(teamPolicy.getLevel());
|
||||
resultTarget.setSatisfyLevel(Boolean.TRUE);
|
||||
resultTarget.setPropsRewards(teamPolicy.getPropsRewards());
|
||||
return resultTarget;
|
||||
} else if (acceptGiftValue >= policyGiftValue && !Boolean.TRUE.equals(target.getIsOwn())) {
|
||||
resultTarget.setMemberSalary(teamPolicy.getMemberSalary().multiply(new BigDecimal("0.9")).setScale(2, RoundingMode.DOWN));
|
||||
resultTarget.setTotalSalary(teamPolicy.getMemberSalary().multiply(new BigDecimal("0.9")).setScale(2, RoundingMode.DOWN));
|
||||
resultTarget.setLevel(teamPolicy.getLevel());
|
||||
resultTarget.setSatisfyLevel(Boolean.TRUE);
|
||||
resultTarget.setPropsRewards(teamPolicy.getPropsRewards());
|
||||
return resultTarget;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return resultTarget;
|
||||
}).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算成员工作情况.
|
||||
*/
|
||||
@ -182,6 +265,7 @@ public final class TeamBillCycleUtils {
|
||||
resultTarget.setLevel(teamPolicy.getLevel());
|
||||
resultTarget.setSatisfyLevel(Boolean.TRUE);
|
||||
resultTarget.setPropsRewards(teamPolicy.getPropsRewards());
|
||||
return resultTarget;
|
||||
}
|
||||
}
|
||||
return resultTarget;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user