From 12a8eedcbeeae91fcf0c262633663e5a63b2df4b Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Fri, 16 Jan 2026 15:00:35 +0800 Subject: [PATCH] =?UTF-8?q?1.16=20=E8=B5=84=E9=87=91=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E8=B4=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/domain/vo/cash/FundsDTO.java | 1 + .../example/demo/mapper/cash/CashRefundMapper.java | 3 +- .../serviceImpl/cash/CashRefundServiceImpl.java | 44 ++++++++++++++++++++++ src/main/resources/cashMapper/CashRefundMapper.xml | 26 ++++++++++--- 4 files changed, 67 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java b/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java index bac675a..82ec9de 100644 --- a/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java +++ b/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java @@ -38,6 +38,7 @@ public class FundsDTO { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date payTime; private Integer status; + private List statuses; @ExcelIgnore @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date startTime; diff --git a/src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java b/src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java index fe052f6..ebedef9 100644 --- a/src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java +++ b/src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java @@ -40,5 +40,6 @@ public interface CashRefundMapper { CashRecordDTO selectById(Integer id); List selectfunds(FundsDTO fundsDTO); - int selectRefundCount(Integer id); + + List selectRefundCount(List needQueryIds); } \ No newline at end of file diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java index 89bb5f8..e5f3dc6 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -582,8 +582,52 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); @Override public PageInfo funds(Integer pageNum, Integer pageSize, FundsDTO fundsDTO) { + // 1. 分页查询主数据 PageHelper.startPage(pageNum, pageSize); + if(fundsDTO.getStatuses()==null||fundsDTO.getStatuses().isEmpty()){ + List list_a = Arrays.asList(4,6); + fundsDTO.setStatuses(list_a); + } List list = cashRefundMapper.selectfunds(fundsDTO); + +// 2. 收集 status == 6 的记录 ID(注意:status 是 int) + List needQueryIds = new ArrayList<>(); + for (FundsDTO dto : list) { + if (dto.getStatuses() != null && dto.getStatuses().contains(6)) { + needQueryIds.add(dto.getId()); + } + } + +// 3. 批量查询额外信息(关键:必须有返回对象的方法!) + if (!needQueryIds.isEmpty()) { + // 👇 请替换为你的实际 Mapper 方法(返回 List) + List detailList = cashRefundMapper.selectRefundCount(needQueryIds); + + // 4. 构建 HashMap: id -> RefundDetailDTO + Map detailMap = new HashMap<>(); + for (FundsDTO detail : detailList) { + detailMap.put(detail.getId(), detail); // 假设 detail 有 getId() + } + + // 5. 回填到账金额和到账币种 + for (FundsDTO dto : list) { + if (dto.getStatuses() != null && dto.getStatuses().contains(6)) { + FundsDTO detail = detailMap.get(dto.getId()); + if (detail != null) { + // 将到账金额转为负数(正数 → 负数) + BigDecimal amount = detail.getReceivedAmount(); + if (amount != null) { + dto.setReceivedAmount(amount.negate()); // 👈 关键:取负数 + } else { + dto.setReceivedAmount(null); // 或设为 BigDecimal.ZERO,根据业务需求 + } + // 币种保持不变 + dto.setReceivedCurrency(detail.getReceivedCurrency()); + } + } + } + } + return new PageInfo<>(list); } diff --git a/src/main/resources/cashMapper/CashRefundMapper.xml b/src/main/resources/cashMapper/CashRefundMapper.xml index 017a929..ba66276 100644 --- a/src/main/resources/cashMapper/CashRefundMapper.xml +++ b/src/main/resources/cashMapper/CashRefundMapper.xml @@ -430,7 +430,7 @@ crc.pay_time, crc.status from cash_record_collection crc - where crc.status = 4|| crc.status = 6 + and crc.jwcode = #{jwcode} @@ -447,14 +447,28 @@ AND crc.pay_type like CONCAT('%', #{payType}, '%') - AND crc.orderCode like CONCAT('%', #{orderCode}, '%') + AND crc.order_code like CONCAT('%', #{orderCode}, '%') - - and crc.status = #{status} + + and crc.status IN + + #{statuses} + + - + select crr.refund_currency as receivedCurrency, + crr.refund_amount as receivedAmount + from cash_record_refund crr + + + and crr.related_id IN + + #{needQueryId} + + +