调整收付款问题
This commit is contained in:
+25
-39
@@ -210,14 +210,22 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl<FormalSettlemen
|
||||
vo.setPayments(paymentMapper.selectList(Wrappers.<FormalSettlementPayment>lambdaQuery()
|
||||
.eq(FormalSettlementPayment::getFormalSettlementId, id).orderByDesc(FormalSettlementPayment::getCreateTime)));
|
||||
vo.setInvoices(listInvoices(settlement));
|
||||
List<Long> preSettlementIds = sources.stream().map(FormalSettlementSource::getPreSettlementId).toList();
|
||||
Set<Long> relationApplicationIds = paymentApplicationSettlementMapper.selectList(
|
||||
Wrappers.<PaymentApplicationSettlement>lambdaQuery()
|
||||
.select(PaymentApplicationSettlement::getPaymentApplicationId)
|
||||
.eq(PaymentApplicationSettlement::getFormalSettlementId, id)
|
||||
.eq(PaymentApplicationSettlement::getIsDeleted, 0)).stream()
|
||||
.map(PaymentApplicationSettlement::getPaymentApplicationId).filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
LambdaQueryWrapper<PaymentApplication> paymentApplicationQuery = Wrappers.<PaymentApplication>lambdaQuery();
|
||||
if (preSettlementIds.isEmpty()) {
|
||||
paymentApplicationQuery.eq(PaymentApplication::getSettlementId, id);
|
||||
} else {
|
||||
paymentApplicationQuery.and(query -> query.eq(PaymentApplication::getSettlementId, id)
|
||||
.or().in(PaymentApplication::getPreSettlementId, preSettlementIds));
|
||||
}
|
||||
paymentApplicationQuery.and(query -> {
|
||||
query.eq(PaymentApplication::getSettlementId, id);
|
||||
if (!relationApplicationIds.isEmpty()) {
|
||||
query.or(wrapper -> wrapper.in(PaymentApplication::getId, relationApplicationIds));
|
||||
}
|
||||
})
|
||||
.eq(PaymentApplication::getPaymentType, "settlement_payment")
|
||||
.eq(PaymentApplication::getIsDeleted, 0);
|
||||
vo.setPaymentApplications(paymentApplicationMapper.selectList(paymentApplicationQuery
|
||||
.orderByDesc(PaymentApplication::getCreateTime)).stream()
|
||||
.map(item -> PaymentApplicationWrapper.build().entityVO(item)).toList());
|
||||
@@ -350,8 +358,10 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl<FormalSettlemen
|
||||
applySummaryRequest(settlement.getId(), request.getSummaryFees());
|
||||
refreshSettlementAmount(settlement);
|
||||
rebuildInvoices(settlement, request.getInvoices());
|
||||
saveChange(settlement.getId(), "结算单基本信息", null, creating ? "新增" : "调整",
|
||||
(creating ? "创建" : "保存") + "正式结算单" + settlement.getFormalSettlementNo(), request.getRemark());
|
||||
if (!creating) {
|
||||
saveChange(settlement.getId(), "结算单基本信息", null, "调整",
|
||||
"保存正式结算单" + settlement.getFormalSettlementNo(), request.getRemark());
|
||||
}
|
||||
return settlement.getId();
|
||||
}
|
||||
|
||||
@@ -1016,18 +1026,10 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl<FormalSettlemen
|
||||
}
|
||||
|
||||
private PaymentSummary calculatePaymentSummary(FormalSettlement settlement) {
|
||||
List<Long> preSettlementIds = sourceMapper.selectList(Wrappers.<FormalSettlementSource>lambdaQuery()
|
||||
.eq(FormalSettlementSource::getFormalSettlementId, settlement.getId())
|
||||
.eq(FormalSettlementSource::getIsDeleted, 0)).stream()
|
||||
.map(FormalSettlementSource::getPreSettlementId).filter(Objects::nonNull).toList();
|
||||
LambdaQueryWrapper<PaymentApplication> query = Wrappers.<PaymentApplication>lambdaQuery()
|
||||
.eq(PaymentApplication::getSettlementId, settlement.getId())
|
||||
.eq(PaymentApplication::getPaymentType, "settlement_payment")
|
||||
.eq(PaymentApplication::getIsDeleted, 0);
|
||||
if (preSettlementIds.isEmpty()) {
|
||||
query.eq(PaymentApplication::getSettlementId, settlement.getId());
|
||||
} else {
|
||||
query.and(wrapper -> wrapper.eq(PaymentApplication::getSettlementId, settlement.getId())
|
||||
.or().in(PaymentApplication::getPreSettlementId, preSettlementIds));
|
||||
}
|
||||
List<PaymentApplicationSettlement> relations = paymentApplicationSettlementMapper.selectList(
|
||||
Wrappers.<PaymentApplicationSettlement>lambdaQuery()
|
||||
.eq(PaymentApplicationSettlement::getFormalSettlementId, settlement.getId())
|
||||
@@ -1045,7 +1047,8 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl<FormalSettlemen
|
||||
.map(PaymentApplication::getPaidAmount).map(this::money)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
Map<Long, String> relationStatuses = relationApplicationIds.isEmpty() ? Map.of() : paymentApplicationMapper.selectList(
|
||||
Wrappers.<PaymentApplication>lambdaQuery().in(PaymentApplication::getId, relationApplicationIds))
|
||||
Wrappers.<PaymentApplication>lambdaQuery().select(PaymentApplication::getId, PaymentApplication::getApprovalStatus)
|
||||
.in(PaymentApplication::getId, relationApplicationIds).eq(PaymentApplication::getIsDeleted, 0))
|
||||
.stream().collect(Collectors.toMap(PaymentApplication::getId, PaymentApplication::getApprovalStatus));
|
||||
appliedAmount = appliedAmount.add(relations.stream()
|
||||
.filter(item -> REVIEWING.equals(relationStatuses.get(item.getPaymentApplicationId())))
|
||||
@@ -1055,30 +1058,13 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl<FormalSettlemen
|
||||
.filter(item -> APPROVED.equals(relationStatuses.get(item.getPaymentApplicationId())))
|
||||
.map(PaymentApplicationSettlement::getPaidAmount).map(this::money)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
List<FormalSettlementPayment> legacyPayments = paymentMapper.selectList(
|
||||
Wrappers.<FormalSettlementPayment>lambdaQuery()
|
||||
.eq(FormalSettlementPayment::getFormalSettlementId, settlement.getId())
|
||||
.eq(FormalSettlementPayment::getIsDeleted, 0));
|
||||
appliedAmount = appliedAmount.add(legacyPayments.stream()
|
||||
.filter(item -> REVIEWING.equals(item.getBillStatus()))
|
||||
.map(FormalSettlementPayment::getAppliedAmount).map(this::money)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
paidAmount = paidAmount.add(legacyPayments.stream()
|
||||
.filter(item -> APPROVED.equals(item.getBillStatus()))
|
||||
.map(FormalSettlementPayment::getPaidAmount).map(this::money)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
paidAmount = paidAmount.add(sourceMapper.selectList(Wrappers.<FormalSettlementSource>lambdaQuery()
|
||||
.eq(FormalSettlementSource::getFormalSettlementId, settlement.getId())
|
||||
.eq(FormalSettlementSource::getIsDeleted, 0)).stream()
|
||||
.map(FormalSettlementSource::getAdvancePaidAmount).map(this::money)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
if ("receivable".equals(settlement.getSettlementType())) {
|
||||
paidAmount = paidAmount.add(receiptClaimSettlementMapper.selectList(
|
||||
paidAmount = receiptClaimSettlementMapper.selectList(
|
||||
Wrappers.<ReceiptClaimSettlement>lambdaQuery()
|
||||
.eq(ReceiptClaimSettlement::getFormalSettlementId, settlement.getId())
|
||||
.eq(ReceiptClaimSettlement::getStatus, 1))
|
||||
.stream().map(ReceiptClaimSettlement::getAllocatedReceiptAmount).map(this::money)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
return new PaymentSummary(money(appliedAmount), money(paidAmount));
|
||||
}
|
||||
|
||||
+9
-10
@@ -140,22 +140,21 @@ public class PreSettlementServiceImpl extends BaseServiceImpl<PreSettlementMappe
|
||||
List<PaymentApplication> applications = paymentApplicationMapper.selectList(
|
||||
Wrappers.<PaymentApplication>lambdaQuery()
|
||||
.select(PaymentApplication::getPreSettlementId, PaymentApplication::getAppliedAmount,
|
||||
PaymentApplication::getPaidAmount, PaymentApplication::getApprovalStatus)
|
||||
PaymentApplication::getPaidAmount)
|
||||
.eq(PaymentApplication::getPaymentType, "progress_advance")
|
||||
.in(PaymentApplication::getPreSettlementId, preSettlementIds)
|
||||
.in(PaymentApplication::getApprovalStatus, STATUS_REVIEWING, STATUS_APPROVED)
|
||||
.eq(PaymentApplication::getApprovalStatus, STATUS_APPROVED)
|
||||
.eq(PaymentApplication::getIsDeleted, 0));
|
||||
Map<Long, BigDecimal> reviewingAmounts = new HashMap<>();
|
||||
Map<Long, BigDecimal> approvedAmounts = new HashMap<>();
|
||||
Map<Long, BigDecimal> appliedAmounts = new HashMap<>();
|
||||
Map<Long, BigDecimal> paidAmounts = new HashMap<>();
|
||||
applications.forEach(application -> {
|
||||
boolean reviewing = STATUS_REVIEWING.equals(application.getApprovalStatus());
|
||||
Map<Long, BigDecimal> amounts = reviewing ? reviewingAmounts : approvedAmounts;
|
||||
BigDecimal amount = reviewing ? application.getAppliedAmount() : application.getPaidAmount();
|
||||
amounts.merge(application.getPreSettlementId(), money(amount), BigDecimal::add);
|
||||
Long preSettlementId = application.getPreSettlementId();
|
||||
appliedAmounts.merge(preSettlementId, money(application.getAppliedAmount()), BigDecimal::add);
|
||||
paidAmounts.merge(preSettlementId, money(application.getPaidAmount()), BigDecimal::add);
|
||||
});
|
||||
records.forEach(record -> {
|
||||
record.setAdvanceAppliedAmount(money(reviewingAmounts.get(record.getId())));
|
||||
record.setAdvancePaidAmount(money(approvedAmounts.get(record.getId())));
|
||||
record.setAdvanceAppliedAmount(money(appliedAmounts.get(record.getId())));
|
||||
record.setAdvancePaidAmount(money(paidAmounts.get(record.getId())));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user