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,
|
||||
Set<Integer> dateNumbers);
|
||||
|
||||
/**
|
||||
* 按支付用户或实际收款用户批量获得数据.
|
||||
*/
|
||||
List<TeamSalaryPayment> listByPaymentOrRecipientUserIdsAndDateNumbers(String sysOrigin,
|
||||
Set<Long> userIds, Set<Integer> dateNumbers);
|
||||
|
||||
/**
|
||||
* 基于父ID修改子记录状态为已退款.
|
||||
*
|
||||
|
||||
@ -205,6 +205,26 @@ public class TeamSalaryPaymentServiceImpl implements TeamSalaryPaymentService {
|
||||
(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
|
||||
public void updateDetails(String id, List<TeamSalaryPaymentDetails> salarySendDetails) {
|
||||
|
||||
|
||||
@ -238,9 +238,11 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
||||
.collect(Collectors.toSet());
|
||||
Map<Long, TeamMember> memberMap = teamMemberService.mapByMemberIds(memberIds);
|
||||
Map<Long, TeamProfile> teamProfileMap = teamProfileService.mapProfileByIds(teamIds);
|
||||
Map<String, TeamSalaryPayment> salaryPaymentMap =
|
||||
teamSalaryPaymentService.mapByUserIdsAndDateNumbers(sysOrigin, memberIds,
|
||||
getMergedSalaryPaymentBillBelongs(billBelong));
|
||||
Set<Integer> salaryPaymentBillBelongs = getMergedSalaryPaymentBillBelongs(billBelong);
|
||||
List<TeamSalaryPayment> salaryPayments = teamSalaryPaymentService
|
||||
.listByPaymentOrRecipientUserIdsAndDateNumbers(sysOrigin, memberIds,
|
||||
salaryPaymentBillBelongs);
|
||||
Map<String, TeamSalaryPayment> salaryPaymentMap = toSalaryPaymentMap(salaryPayments);
|
||||
|
||||
Map<String, TeamPolicyManager> policyCache = CollectionUtils.newHashMap();
|
||||
return targets.stream()
|
||||
@ -252,6 +254,17 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
||||
.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,
|
||||
String sortOrder) {
|
||||
if (CollectionUtils.isEmpty(rows) || StringUtils.isBlank(sortField)
|
||||
@ -355,6 +368,8 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
||||
List<TeamSalaryPayment> cyclePayments = listCyclePayments(salaryPaymentMap,
|
||||
target.getUserId(), billBelong);
|
||||
PaymentSummary paymentSummary = summarizePayments(cyclePayments);
|
||||
PaymentSummary receivedPaymentSummary = summarizeReceivedPayments(
|
||||
new ArrayList<>(salaryPaymentMap.values()), target.getUserId());
|
||||
BigDecimal expectedMemberSalary = salaryValue(billTarget.getMemberSalary());
|
||||
BigDecimal expectedAgentSalary = salaryValue(billTarget.getOwnSalary());
|
||||
BigDecimal expectedSalary = expectedTotalSalary(billTarget);
|
||||
@ -391,12 +406,12 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
||||
.setPayableSalary(payableSalary)
|
||||
.setPayableMemberSalary(payableMemberSalary)
|
||||
.setPayableAgentSalary(payableAgentSalary)
|
||||
.setTotalIssuedSalary(paymentSummary.getTotalIssuedSalary())
|
||||
.setMemberIssuedSalary(paymentSummary.getMemberIssuedSalary())
|
||||
.setAgentIssuedSalary(paymentSummary.getAgentIssuedSalary())
|
||||
.setOverIssuedSalary(paymentSummary.getOverIssuedSalary())
|
||||
.setMemberOverIssuedSalary(paymentSummary.getMemberOverIssuedSalary())
|
||||
.setAgentOverIssuedSalary(paymentSummary.getAgentOverIssuedSalary())
|
||||
.setTotalIssuedSalary(receivedPaymentSummary.getTotalIssuedSalary())
|
||||
.setMemberIssuedSalary(receivedPaymentSummary.getMemberIssuedSalary())
|
||||
.setAgentIssuedSalary(receivedPaymentSummary.getAgentIssuedSalary())
|
||||
.setOverIssuedSalary(receivedPaymentSummary.getOverIssuedSalary())
|
||||
.setMemberOverIssuedSalary(receivedPaymentSummary.getMemberOverIssuedSalary())
|
||||
.setAgentOverIssuedSalary(receivedPaymentSummary.getAgentOverIssuedSalary())
|
||||
.setCurrentSalaryBalance(getAccurateBalance(target.getUserId()))
|
||||
.setPaid(currentLevelSettled);
|
||||
|
||||
@ -569,7 +584,21 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
||||
}
|
||||
|
||||
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 agentIssuedSalary = sumDetailsSalary(details, Boolean.FALSE);
|
||||
BigDecimal totalIssuedSalary = memberIssuedSalary.add(agentIssuedSalary)
|
||||
@ -582,6 +611,22 @@ public class TeamManualSalaryPaymentClientServiceImpl implements
|
||||
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) {
|
||||
return details.stream()
|
||||
.filter(detail -> Objects.equals(detail.getAnchor(), anchor))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user