fix manual salary received total display
This commit is contained in:
parent
8460125d79
commit
c02050274b
@ -89,6 +89,12 @@ public interface TeamSalaryPaymentService {
|
|||||||
Map<String, TeamSalaryPayment> mapByUserIdsAndDateNumbers(String sysOrigin, Set<Long> userIds,
|
Map<String, TeamSalaryPayment> mapByUserIdsAndDateNumbers(String sysOrigin, Set<Long> userIds,
|
||||||
Set<Integer> dateNumbers);
|
Set<Integer> dateNumbers);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按支付用户或实际收款用户批量获得数据.
|
||||||
|
*/
|
||||||
|
List<TeamSalaryPayment> listByPaymentOrRecipientUserIdsAndDateNumbers(String sysOrigin,
|
||||||
|
Set<Long> userIds, Set<Integer> dateNumbers);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基于父ID修改子记录状态为已退款.
|
* 基于父ID修改子记录状态为已退款.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -205,6 +205,26 @@ public class TeamSalaryPaymentServiceImpl implements TeamSalaryPaymentService {
|
|||||||
(first, second) -> first));
|
(first, second) -> first));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<TeamSalaryPayment> listByPaymentOrRecipientUserIdsAndDateNumbers(String sysOrigin,
|
||||||
|
Set<Long> userIds, Set<Integer> dateNumbers) {
|
||||||
|
|
||||||
|
if (StringUtils.isBlank(sysOrigin) || CollectionUtils.isEmpty(userIds)
|
||||||
|
|| CollectionUtils.isEmpty(dateNumbers)) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
Criteria criteria = Criteria.where("sysOrigin").is(sysOrigin)
|
||||||
|
.and("dateNumber").in(dateNumbers)
|
||||||
|
.orOperator(
|
||||||
|
Criteria.where("userId").in(userIds),
|
||||||
|
Criteria.where("salarySendDetails.teamMemberId").in(userIds),
|
||||||
|
Criteria.where("salarySendDetails.teamOwnId").in(userIds)
|
||||||
|
);
|
||||||
|
|
||||||
|
return mongoTemplate.find(Query.query(criteria), TeamSalaryPayment.class);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateDetails(String id, List<TeamSalaryPaymentDetails> salarySendDetails) {
|
public void updateDetails(String id, List<TeamSalaryPaymentDetails> salarySendDetails) {
|
||||||
|
|
||||||
|
|||||||
@ -238,9 +238,11 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
|||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
Map<Long, TeamMember> memberMap = teamMemberService.mapByMemberIds(memberIds);
|
Map<Long, TeamMember> memberMap = teamMemberService.mapByMemberIds(memberIds);
|
||||||
Map<Long, TeamProfile> teamProfileMap = teamProfileService.mapProfileByIds(teamIds);
|
Map<Long, TeamProfile> teamProfileMap = teamProfileService.mapProfileByIds(teamIds);
|
||||||
Map<String, TeamSalaryPayment> salaryPaymentMap =
|
Set<Integer> salaryPaymentBillBelongs = getMergedSalaryPaymentBillBelongs(billBelong);
|
||||||
teamSalaryPaymentService.mapByUserIdsAndDateNumbers(sysOrigin, memberIds,
|
List<TeamSalaryPayment> salaryPayments = teamSalaryPaymentService
|
||||||
getMergedSalaryPaymentBillBelongs(billBelong));
|
.listByPaymentOrRecipientUserIdsAndDateNumbers(sysOrigin, memberIds,
|
||||||
|
salaryPaymentBillBelongs);
|
||||||
|
Map<String, TeamSalaryPayment> salaryPaymentMap = toSalaryPaymentMap(salaryPayments);
|
||||||
|
|
||||||
Map<String, TeamPolicyManager> policyCache = CollectionUtils.newHashMap();
|
Map<String, TeamPolicyManager> policyCache = CollectionUtils.newHashMap();
|
||||||
return targets.stream()
|
return targets.stream()
|
||||||
@ -252,6 +254,17 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Map<String, TeamSalaryPayment> toSalaryPaymentMap(List<TeamSalaryPayment> payments) {
|
||||||
|
if (CollectionUtils.isEmpty(payments)) {
|
||||||
|
return CollectionUtils.newHashMap();
|
||||||
|
}
|
||||||
|
return payments.stream()
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.filter(payment -> StringUtils.isNotBlank(payment.getId()))
|
||||||
|
.collect(Collectors.toMap(TeamSalaryPayment::getId, payment -> payment,
|
||||||
|
(first, second) -> first));
|
||||||
|
}
|
||||||
|
|
||||||
private List<ManualSalaryRow> sortRows(List<ManualSalaryRow> rows, String sortField,
|
private List<ManualSalaryRow> sortRows(List<ManualSalaryRow> rows, String sortField,
|
||||||
String sortOrder) {
|
String sortOrder) {
|
||||||
if (CollectionUtils.isEmpty(rows) || StringUtils.isBlank(sortField)
|
if (CollectionUtils.isEmpty(rows) || StringUtils.isBlank(sortField)
|
||||||
@ -355,6 +368,8 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
|||||||
List<TeamSalaryPayment> cyclePayments = listCyclePayments(salaryPaymentMap,
|
List<TeamSalaryPayment> cyclePayments = listCyclePayments(salaryPaymentMap,
|
||||||
target.getUserId(), billBelong);
|
target.getUserId(), billBelong);
|
||||||
PaymentSummary paymentSummary = summarizePayments(cyclePayments);
|
PaymentSummary paymentSummary = summarizePayments(cyclePayments);
|
||||||
|
PaymentSummary receivedPaymentSummary = summarizeReceivedPayments(
|
||||||
|
new ArrayList<>(salaryPaymentMap.values()), target.getUserId());
|
||||||
BigDecimal expectedMemberSalary = salaryValue(billTarget.getMemberSalary());
|
BigDecimal expectedMemberSalary = salaryValue(billTarget.getMemberSalary());
|
||||||
BigDecimal expectedAgentSalary = salaryValue(billTarget.getOwnSalary());
|
BigDecimal expectedAgentSalary = salaryValue(billTarget.getOwnSalary());
|
||||||
BigDecimal expectedSalary = expectedTotalSalary(billTarget);
|
BigDecimal expectedSalary = expectedTotalSalary(billTarget);
|
||||||
@ -391,12 +406,12 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
|||||||
.setPayableSalary(payableSalary)
|
.setPayableSalary(payableSalary)
|
||||||
.setPayableMemberSalary(payableMemberSalary)
|
.setPayableMemberSalary(payableMemberSalary)
|
||||||
.setPayableAgentSalary(payableAgentSalary)
|
.setPayableAgentSalary(payableAgentSalary)
|
||||||
.setTotalIssuedSalary(paymentSummary.getTotalIssuedSalary())
|
.setTotalIssuedSalary(receivedPaymentSummary.getTotalIssuedSalary())
|
||||||
.setMemberIssuedSalary(paymentSummary.getMemberIssuedSalary())
|
.setMemberIssuedSalary(receivedPaymentSummary.getMemberIssuedSalary())
|
||||||
.setAgentIssuedSalary(paymentSummary.getAgentIssuedSalary())
|
.setAgentIssuedSalary(receivedPaymentSummary.getAgentIssuedSalary())
|
||||||
.setOverIssuedSalary(paymentSummary.getOverIssuedSalary())
|
.setOverIssuedSalary(receivedPaymentSummary.getOverIssuedSalary())
|
||||||
.setMemberOverIssuedSalary(paymentSummary.getMemberOverIssuedSalary())
|
.setMemberOverIssuedSalary(receivedPaymentSummary.getMemberOverIssuedSalary())
|
||||||
.setAgentOverIssuedSalary(paymentSummary.getAgentOverIssuedSalary())
|
.setAgentOverIssuedSalary(receivedPaymentSummary.getAgentOverIssuedSalary())
|
||||||
.setCurrentSalaryBalance(getAccurateBalance(target.getUserId()))
|
.setCurrentSalaryBalance(getAccurateBalance(target.getUserId()))
|
||||||
.setPaid(currentLevelSettled);
|
.setPaid(currentLevelSettled);
|
||||||
|
|
||||||
@ -569,7 +584,21 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private PaymentSummary summarizePayments(List<TeamSalaryPayment> cyclePayments) {
|
private PaymentSummary summarizePayments(List<TeamSalaryPayment> cyclePayments) {
|
||||||
List<TeamSalaryPaymentDetails> details = listValidSalaryDetails(cyclePayments);
|
return summarizeDetails(listValidSalaryDetails(cyclePayments));
|
||||||
|
}
|
||||||
|
|
||||||
|
private PaymentSummary summarizeReceivedPayments(List<TeamSalaryPayment> cyclePayments,
|
||||||
|
Long receiverUserId) {
|
||||||
|
if (Objects.isNull(receiverUserId)) {
|
||||||
|
return emptyPaymentSummary();
|
||||||
|
}
|
||||||
|
List<TeamSalaryPaymentDetails> details = listValidSalaryDetails(cyclePayments).stream()
|
||||||
|
.filter(detail -> Objects.equals(receiverUserId, getSalaryReceiverUserId(detail)))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
return summarizeDetails(details);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PaymentSummary summarizeDetails(List<TeamSalaryPaymentDetails> details) {
|
||||||
BigDecimal memberIssuedSalary = sumDetailsSalary(details, Boolean.TRUE);
|
BigDecimal memberIssuedSalary = sumDetailsSalary(details, Boolean.TRUE);
|
||||||
BigDecimal agentIssuedSalary = sumDetailsSalary(details, Boolean.FALSE);
|
BigDecimal agentIssuedSalary = sumDetailsSalary(details, Boolean.FALSE);
|
||||||
BigDecimal totalIssuedSalary = memberIssuedSalary.add(agentIssuedSalary)
|
BigDecimal totalIssuedSalary = memberIssuedSalary.add(agentIssuedSalary)
|
||||||
@ -582,6 +611,22 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
|||||||
overIssuedSalary, memberOverIssuedSalary, agentOverIssuedSalary);
|
overIssuedSalary, memberOverIssuedSalary, agentOverIssuedSalary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PaymentSummary emptyPaymentSummary() {
|
||||||
|
BigDecimal zero = BigDecimal.ZERO.setScale(2, RoundingMode.DOWN);
|
||||||
|
return new PaymentSummary(zero, zero, zero, zero, zero, zero);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Long getSalaryReceiverUserId(TeamSalaryPaymentDetails details) {
|
||||||
|
if (Objects.isNull(details)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (Boolean.TRUE.equals(details.getAnchor())
|
||||||
|
&& !Boolean.TRUE.equals(details.getHostSalaryToAgent())) {
|
||||||
|
return details.getTeamMemberId();
|
||||||
|
}
|
||||||
|
return details.getTeamOwnId();
|
||||||
|
}
|
||||||
|
|
||||||
private BigDecimal sumDetailsSalary(List<TeamSalaryPaymentDetails> details, Boolean anchor) {
|
private BigDecimal sumDetailsSalary(List<TeamSalaryPaymentDetails> details, Boolean anchor) {
|
||||||
return details.stream()
|
return details.stream()
|
||||||
.filter(detail -> Objects.equals(detail.getAnchor(), anchor))
|
.filter(detail -> Objects.equals(detail.getAnchor(), anchor))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user