From a4599c48c51b29ff9486aa66afbd7e5281b3870b Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Mon, 31 Aug 2026 17:04:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=94=B6=E4=BB=98=E6=AC=BE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FormalSettlementController.java | 9 ++++ .../service/IReceiptFlowService.java | 2 + .../impl/PreSettlementServiceImpl.java | 1 + .../service/impl/ReceiptFlowServiceImpl.java | 50 +++++++++++++++++++ 4 files changed, 62 insertions(+) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/FormalSettlementController.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/FormalSettlementController.java index b8d2420..ef083be 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/FormalSettlementController.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/FormalSettlementController.java @@ -28,6 +28,7 @@ import org.springblade.transport.pojo.vo.FormalSettlementVO; import org.springblade.transport.pojo.vo.PreSettlementVO; import org.springblade.transport.service.IFormalSettlementService; import org.springblade.transport.service.IPreSettlementService; +import org.springblade.transport.service.IReceiptFlowService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -51,6 +52,7 @@ import java.util.Map; public class FormalSettlementController extends BladeController { private final IFormalSettlementService formalSettlementService; private final IPreSettlementService preSettlementService; + private final IReceiptFlowService receiptFlowService; @GetMapping("/list") @ApiOperationSupport(order = 1) @@ -166,4 +168,11 @@ public class FormalSettlementController extends BladeController { public R> applyPayments(@RequestBody FormalSettlementBatchPaymentRequest request) { return R.data(formalSettlementService.applyPayments(request)); } + + @GetMapping("/receipt-claims") + @ApiOperationSupport(order = 19) + @Operation(summary = "应收正式结算单收款认领信息") + public R>> receiptClaims(@RequestParam Long formalSettlementId) { + return R.data(receiptFlowService.settlementClaims(formalSettlementId)); + } } diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/IReceiptFlowService.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/IReceiptFlowService.java index 816990d..4fe2905 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/IReceiptFlowService.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/IReceiptFlowService.java @@ -48,6 +48,8 @@ public interface IReceiptFlowService extends BaseService { List> settlementCandidates(String keyword, Long flowId); + List> settlementClaims(Long formalSettlementId); + Long claim(ReceiptClaimRequest request); int sync(ReceiptFlowSyncRequest request); diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PreSettlementServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PreSettlementServiceImpl.java index 360ad1f..537c720 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PreSettlementServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PreSettlementServiceImpl.java @@ -183,6 +183,7 @@ public class PreSettlementServiceImpl extends BaseServiceImpl details = listDetails(id); vo.setDetails(details); List detailIds = details.stream().map(PreSettlementDetail::getId).toList(); diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ReceiptFlowServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ReceiptFlowServiceImpl.java index 8834724..c78f80f 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ReceiptFlowServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ReceiptFlowServiceImpl.java @@ -151,6 +151,56 @@ public class ReceiptFlowServiceImpl extends BaseServiceImpl> settlementClaims(Long formalSettlementId) { + if (formalSettlementId == null) { + throw new ServiceException("正式结算单ID不能为空"); + } + FormalSettlement settlement = formalSettlementMapper.selectById(formalSettlementId); + if (settlement == null || Objects.equals(settlement.getIsDeleted(), 1)) { + throw new ServiceException("正式结算单不存在"); + } + List relations = claimSettlementMapper.selectList( + Wrappers.lambdaQuery() + .eq(ReceiptClaimSettlement::getFormalSettlementId, formalSettlementId) + .eq(ReceiptClaimSettlement::getStatus, 1) + .orderByDesc(ReceiptClaimSettlement::getCreateTime)); + if (relations.isEmpty()) { + return List.of(); + } + List claimIds = relations.stream().map(ReceiptClaimSettlement::getReceiptClaimId) + .filter(Objects::nonNull).distinct().toList(); + List flowIds = relations.stream().map(ReceiptClaimSettlement::getReceiptFlowId) + .filter(Objects::nonNull).distinct().toList(); + Map claims = claimIds.isEmpty() ? Map.of() : claimMapper.selectBatchIds(claimIds) + .stream().collect(Collectors.toMap(ReceiptClaim::getId, Function.identity())); + Map flows = flowIds.isEmpty() ? Map.of() : listByIds(flowIds) + .stream().collect(Collectors.toMap(KingdeeReceiptFlow::getId, Function.identity())); + return relations.stream().map(relation -> { + ReceiptClaim claim = claims.get(relation.getReceiptClaimId()); + KingdeeReceiptFlow flow = flows.get(relation.getReceiptFlowId()); + if (claim == null || flow == null) { + return null; + } + Map row = new LinkedHashMap<>(); + row.put("receiptClaimId", claim.getId()); + row.put("receiptFlowId", flow.getId()); + row.put("receiptNoticeNo", flow.getReceiptNoticeNo()); + row.put("payerName", flow.getPayerName()); + row.put("receiptAmount", money(flow.getReceiptAmount())); + row.put("allocatedReceiptAmount", money(relation.getAllocatedReceiptAmount())); + row.put("transactionTime", flow.getTransactionTime()); + row.put("counterpartyName", flow.getCounterpartyName()); + row.put("detailSerialNo", flow.getDetailSerialNo()); + row.put("claimerName", claim.getClaimerName()); + row.put("claimerDeptName", claim.getClaimerDeptName()); + row.put("claimDate", claim.getClaimDate()); + row.put("claimStatus", claim.getClaimStatus()); + row.put("claimStatusName", CLAIMED.equals(claim.getClaimStatus()) ? "已认领" : "已作废"); + return row; + }).filter(Objects::nonNull).toList(); + } + @Override @Transactional(rollbackFor = Exception.class) public Long claim(ReceiptClaimRequest request) {