工资结算南亚区域特殊处理
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);
|
log.warn("团队账单结算teamBillMemberTargets."+teamBillMemberTargets);
|
||||||
|
|
||||||
// 结算账单.
|
// 结算账单.
|
||||||
@ -183,13 +190,6 @@ public class TeamBillSettleListener implements MessageListener {
|
|||||||
return;
|
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())) {
|
if (Objects.isNull(regionPolicyManager.getPolicyType()) || Objects.equals(TeamPolicyTypeEnum.MONEY.name(), regionPolicyManager.getPolicyType())) {
|
||||||
log.warn("美金入账{}", teamProfile);
|
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.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.TeamMemberTarget;
|
||||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamPolicyManager;
|
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.infra.database.rds.entity.team.BillDiamondBalance;
|
||||||
import com.red.circle.other.inner.enums.team.TeamMemberTargetIndex;
|
import com.red.circle.other.inner.enums.team.TeamMemberTargetIndex;
|
||||||
import com.red.circle.tool.core.collection.CollectionUtils;
|
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||||
@ -129,6 +130,88 @@ public final class TeamBillCycleUtils {
|
|||||||
return calculatorPolicyTarget(List.of(target), policy).get(0);
|
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.setLevel(teamPolicy.getLevel());
|
||||||
resultTarget.setSatisfyLevel(Boolean.TRUE);
|
resultTarget.setSatisfyLevel(Boolean.TRUE);
|
||||||
resultTarget.setPropsRewards(teamPolicy.getPropsRewards());
|
resultTarget.setPropsRewards(teamPolicy.getPropsRewards());
|
||||||
|
return resultTarget;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return resultTarget;
|
return resultTarget;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user