expose manual salary role breakdown

This commit is contained in:
hy001 2026-05-21 14:05:38 +08:00
parent d0d48d71ac
commit 8460125d79
4 changed files with 96 additions and 2 deletions

View File

@ -86,21 +86,61 @@ public class TeamManualSalaryPaymentDTO implements Serializable {
*/
private BigDecimal expectedSalary;
/**
* 当前账期主播应发工资.
*/
private BigDecimal expectedMemberSalary;
/**
* 当前账期代理应发工资.
*/
private BigDecimal expectedAgentSalary;
/**
* 待结算工资 = 当前账期应发工资 - 当前账期实收工资.
*/
private BigDecimal payableSalary;
/**
* 主播待结算工资 = 主播应发工资 - 主播实收工资.
*/
private BigDecimal payableMemberSalary;
/**
* 代理待结算工资 = 代理应发工资 - 代理实收工资.
*/
private BigDecimal payableAgentSalary;
/**
* 当前账期总发放工资.
*/
private BigDecimal totalIssuedSalary;
/**
* 当前账期主播实收工资.
*/
private BigDecimal memberIssuedSalary;
/**
* 当前账期代理实收工资.
*/
private BigDecimal agentIssuedSalary;
/**
* 当前账期多发工资.
*/
private BigDecimal overIssuedSalary;
/**
* 当前账期主播多发工资.
*/
private BigDecimal memberOverIssuedSalary;
/**
* 当前账期代理多发工资.
*/
private BigDecimal agentOverIssuedSalary;
/**
* 当前工资余额.
*/

View File

@ -216,9 +216,17 @@ public class TeamSalaryBackServiceImpl implements TeamSalaryBackService {
.setPolicyLevel(dto.getPolicyLevel())
.setSatisfyLevel(dto.getSatisfyLevel())
.setExpectedSalary(dto.getExpectedSalary())
.setExpectedMemberSalary(dto.getExpectedMemberSalary())
.setExpectedAgentSalary(dto.getExpectedAgentSalary())
.setPayableSalary(dto.getPayableSalary())
.setPayableMemberSalary(dto.getPayableMemberSalary())
.setPayableAgentSalary(dto.getPayableAgentSalary())
.setTotalIssuedSalary(dto.getTotalIssuedSalary())
.setMemberIssuedSalary(dto.getMemberIssuedSalary())
.setAgentIssuedSalary(dto.getAgentIssuedSalary())
.setOverIssuedSalary(dto.getOverIssuedSalary())
.setMemberOverIssuedSalary(dto.getMemberOverIssuedSalary())
.setAgentOverIssuedSalary(dto.getAgentOverIssuedSalary())
.setCurrentSalaryBalance(dto.getCurrentSalaryBalance())
.setPaid(dto.getPaid());
}

View File

@ -40,9 +40,17 @@ public class TeamManualSalaryCO implements Serializable {
private Integer policyLevel;
private Boolean satisfyLevel;
private BigDecimal expectedSalary;
private BigDecimal expectedMemberSalary;
private BigDecimal expectedAgentSalary;
private BigDecimal payableSalary;
private BigDecimal payableMemberSalary;
private BigDecimal payableAgentSalary;
private BigDecimal totalIssuedSalary;
private BigDecimal memberIssuedSalary;
private BigDecimal agentIssuedSalary;
private BigDecimal overIssuedSalary;
private BigDecimal memberOverIssuedSalary;
private BigDecimal agentOverIssuedSalary;
private BigDecimal currentSalaryBalance;
private Boolean paid;
}

View File

@ -355,9 +355,17 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
List<TeamSalaryPayment> cyclePayments = listCyclePayments(salaryPaymentMap,
target.getUserId(), billBelong);
PaymentSummary paymentSummary = summarizePayments(cyclePayments);
BigDecimal expectedMemberSalary = salaryValue(billTarget.getMemberSalary());
BigDecimal expectedAgentSalary = salaryValue(billTarget.getOwnSalary());
BigDecimal expectedSalary = expectedTotalSalary(billTarget);
BigDecimal payableSalary = expectedSalary.subtract(paymentSummary.getTotalIssuedSalary())
.setScale(2, RoundingMode.DOWN);
BigDecimal payableMemberSalary = expectedMemberSalary
.subtract(paymentSummary.getMemberIssuedSalary())
.setScale(2, RoundingMode.DOWN);
BigDecimal payableAgentSalary = expectedAgentSalary
.subtract(paymentSummary.getAgentIssuedSalary())
.setScale(2, RoundingMode.DOWN);
boolean currentLevelSettled = areCurrentRolesSettled(cyclePayments, target.getUserId(), region,
billTarget, payableSalary);
List<PolicyPayment> policyPayments = buildSettlementPayments(policyManager, billTarget,
@ -378,9 +386,17 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
.setPolicyLevel(billTarget.getLevel())
.setSatisfyLevel(billTarget.getSatisfyLevel())
.setExpectedSalary(expectedSalary)
.setExpectedMemberSalary(expectedMemberSalary)
.setExpectedAgentSalary(expectedAgentSalary)
.setPayableSalary(payableSalary)
.setPayableMemberSalary(payableMemberSalary)
.setPayableAgentSalary(payableAgentSalary)
.setTotalIssuedSalary(paymentSummary.getTotalIssuedSalary())
.setMemberIssuedSalary(paymentSummary.getMemberIssuedSalary())
.setAgentIssuedSalary(paymentSummary.getAgentIssuedSalary())
.setOverIssuedSalary(paymentSummary.getOverIssuedSalary())
.setMemberOverIssuedSalary(paymentSummary.getMemberOverIssuedSalary())
.setAgentOverIssuedSalary(paymentSummary.getAgentOverIssuedSalary())
.setCurrentSalaryBalance(getAccurateBalance(target.getUserId()))
.setPaid(currentLevelSettled);
@ -558,8 +574,12 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
BigDecimal agentIssuedSalary = sumDetailsSalary(details, Boolean.FALSE);
BigDecimal totalIssuedSalary = memberIssuedSalary.add(agentIssuedSalary)
.setScale(2, RoundingMode.DOWN);
BigDecimal memberOverIssuedSalary = getOverIssuedSalary(details, Boolean.TRUE);
BigDecimal agentOverIssuedSalary = getOverIssuedSalary(details, Boolean.FALSE);
BigDecimal overIssuedSalary = memberOverIssuedSalary.add(agentOverIssuedSalary)
.setScale(2, RoundingMode.DOWN);
return new PaymentSummary(totalIssuedSalary, memberIssuedSalary, agentIssuedSalary,
getOverIssuedSalary(details));
overIssuedSalary, memberOverIssuedSalary, agentOverIssuedSalary);
}
private BigDecimal sumDetailsSalary(List<TeamSalaryPaymentDetails> details, Boolean anchor) {
@ -571,11 +591,16 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
}
private BigDecimal getOverIssuedSalary(List<TeamSalaryPaymentDetails> details) {
return getOverIssuedSalary(details, null);
}
private BigDecimal getOverIssuedSalary(List<TeamSalaryPaymentDetails> details, Boolean anchor) {
if (CollectionUtils.isEmpty(details)) {
return BigDecimal.ZERO.setScale(2, RoundingMode.DOWN);
}
Set<String> issuedKeys = new HashSet<>();
return details.stream()
.filter(detail -> Objects.isNull(anchor) || Objects.equals(detail.getAnchor(), anchor))
.sorted(Comparator.comparing(detail -> Optional.ofNullable(detail.getCreateTime())
.orElse(new Timestamp(0))))
.filter(detail -> !issuedKeys.add(paymentDetailsPolicyKey(detail)))
@ -681,13 +706,18 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
private final BigDecimal memberIssuedSalary;
private final BigDecimal agentIssuedSalary;
private final BigDecimal overIssuedSalary;
private final BigDecimal memberOverIssuedSalary;
private final BigDecimal agentOverIssuedSalary;
private PaymentSummary(BigDecimal totalIssuedSalary, BigDecimal memberIssuedSalary,
BigDecimal agentIssuedSalary, BigDecimal overIssuedSalary) {
BigDecimal agentIssuedSalary, BigDecimal overIssuedSalary,
BigDecimal memberOverIssuedSalary, BigDecimal agentOverIssuedSalary) {
this.totalIssuedSalary = totalIssuedSalary;
this.memberIssuedSalary = memberIssuedSalary;
this.agentIssuedSalary = agentIssuedSalary;
this.overIssuedSalary = overIssuedSalary;
this.memberOverIssuedSalary = memberOverIssuedSalary;
this.agentOverIssuedSalary = agentOverIssuedSalary;
}
private BigDecimal getTotalIssuedSalary() {
@ -705,6 +735,14 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
private BigDecimal getOverIssuedSalary() {
return overIssuedSalary;
}
private BigDecimal getMemberOverIssuedSalary() {
return memberOverIssuedSalary;
}
private BigDecimal getAgentOverIssuedSalary() {
return agentOverIssuedSalary;
}
}
private static class ManualSalaryRow {