diff --git a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/agency/agency/TeamManualSalaryPaymentDTO.java b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/agency/agency/TeamManualSalaryPaymentDTO.java index 30e15bea..d25592d8 100644 --- a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/agency/agency/TeamManualSalaryPaymentDTO.java +++ b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/agency/agency/TeamManualSalaryPaymentDTO.java @@ -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; + /** * 当前工资余额. */ diff --git a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/team/TeamSalaryBackServiceImpl.java b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/team/TeamSalaryBackServiceImpl.java index 821f7c95..51a9ba4c 100644 --- a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/team/TeamSalaryBackServiceImpl.java +++ b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/team/TeamSalaryBackServiceImpl.java @@ -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()); } diff --git a/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/dto/clienobject/team/TeamManualSalaryCO.java b/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/dto/clienobject/team/TeamManualSalaryCO.java index 8cdfb263..46b8ed1c 100644 --- a/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/dto/clienobject/team/TeamManualSalaryCO.java +++ b/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/dto/clienobject/team/TeamManualSalaryCO.java @@ -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; } diff --git a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImpl.java b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImpl.java index 53a1d9af..f4b53d54 100644 --- a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImpl.java +++ b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/team/impl/TeamManualSalaryPaymentClientServiceImpl.java @@ -355,9 +355,17 @@ public class TeamManualSalaryPaymentClientServiceImpl implements List 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 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 details, Boolean anchor) { @@ -571,11 +591,16 @@ public class TeamManualSalaryPaymentClientServiceImpl implements } private BigDecimal getOverIssuedSalary(List details) { + return getOverIssuedSalary(details, null); + } + + private BigDecimal getOverIssuedSalary(List details, Boolean anchor) { if (CollectionUtils.isEmpty(details)) { return BigDecimal.ZERO.setScale(2, RoundingMode.DOWN); } Set 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 {