From b498137206abb924ad188fdd786e47c9f22ad327 Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Tue, 10 Mar 2026 16:01:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B5=81=E6=B0=B4=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E6=9F=A5=E8=AF=A2=E5=90=8E=E7=AB=AF=E5=A5=91=E7=BA=A6?= =?UTF-8?q?=E4=B8=8E=E6=B5=8B=E8=AF=95=E9=AA=A8=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/dto/CcdiBankStatementQueryDTO.java | 72 ++++++++++++++ .../domain/vo/CcdiBankStatementDetailVO.java | 93 +++++++++++++++++++ .../vo/CcdiBankStatementFilterOptionsVO.java | 24 +++++ .../domain/vo/CcdiBankStatementListVO.java | 41 ++++++++ .../domain/vo/CcdiBankStatementOptionVO.java | 22 +++++ .../mapper/CcdiBankStatementMapper.java | 3 + .../service/ICcdiBankStatementService.java | 19 ++++ .../CcdiBankStatementServiceImplTest.java | 36 +++++++ 8 files changed, 310 insertions(+) create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/CcdiBankStatementQueryDTO.java create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementDetailVO.java create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementFilterOptionsVO.java create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementListVO.java create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementOptionVO.java create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiBankStatementService.java create mode 100644 ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiBankStatementServiceImplTest.java diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/CcdiBankStatementQueryDTO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/CcdiBankStatementQueryDTO.java new file mode 100644 index 0000000..348a5b2 --- /dev/null +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/CcdiBankStatementQueryDTO.java @@ -0,0 +1,72 @@ +package com.ruoyi.ccdi.project.domain.dto; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 流水明细查询DTO + * + * @author ruoyi + */ +@Data +public class CcdiBankStatementQueryDTO { + + /** 项目ID */ + private Long projectId; + + /** 页签类型 */ + private String tabType; + + /** 交易开始时间 */ + private String transactionStartTime; + + /** 交易结束时间 */ + private String transactionEndTime; + + /** 对方名称 */ + private String counterpartyName; + + /** 对方名称是否匹配空值 */ + private Boolean counterpartyNameEmpty; + + /** 摘要 */ + private String userMemo; + + /** 摘要是否匹配空值 */ + private Boolean userMemoEmpty; + + /** 本方主体 */ + private List ourSubjects; + + /** 本方银行 */ + private List ourBanks; + + /** 本方账户 */ + private List ourAccounts; + + /** 最小金额 */ + private BigDecimal amountMin; + + /** 最大金额 */ + private BigDecimal amountMax; + + /** 对方账户 */ + private String counterpartyAccount; + + /** 对方账户是否匹配空值 */ + private Boolean counterpartyAccountEmpty; + + /** 交易类型 */ + private String transactionType; + + /** 交易类型是否匹配空值 */ + private Boolean transactionTypeEmpty; + + /** 排序字段 */ + private String orderBy; + + /** 排序方向 */ + private String orderDirection; +} diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementDetailVO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementDetailVO.java new file mode 100644 index 0000000..838202f --- /dev/null +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementDetailVO.java @@ -0,0 +1,93 @@ +package com.ruoyi.ccdi.project.domain.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 流水明细详情VO + * + * @author ruoyi + */ +@Data +public class CcdiBankStatementDetailVO { + + /** 流水ID */ + private Long bankStatementId; + + /** 项目ID */ + private Long projectId; + + /** 交易时间 */ + private String trxDate; + + /** 币种 */ + private String currency; + + /** 本方账户 */ + private String leAccountNo; + + /** 本方主体 */ + private String leAccountName; + + /** 对方名称 */ + private String customerAccountName; + + /** 对方账户 */ + private String customerAccountNo; + + /** 对方银行 */ + private String customerBank; + + /** 对方备注 */ + private String customerReference; + + /** 摘要 */ + private String userMemo; + + /** 银行摘要 */ + private String bankComments; + + /** 银行交易号 */ + private String bankTrxNumber; + + /** 本方银行 */ + private String bank; + + /** 交易类型 */ + private String cashType; + + /** 借方金额 */ + private BigDecimal amountDr; + + /** 贷方金额 */ + private BigDecimal amountCr; + + /** 余额 */ + private BigDecimal amountBalance; + + /** 页面展示金额 */ + private BigDecimal displayAmount; + + /** 交易标志 */ + private String trxFlag; + + /** 分类ID */ + private Integer trxType; + + /** 异常类型 */ + private String exceptionType; + + /** 是否内部交易 */ + private Integer internalFlag; + + /** 交易方式 */ + private String paymentMethod; + + /** 身份证号 */ + private String cretNo; + + /** 创建时间 */ + private Date createDate; +} diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementFilterOptionsVO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementFilterOptionsVO.java new file mode 100644 index 0000000..f513fe1 --- /dev/null +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementFilterOptionsVO.java @@ -0,0 +1,24 @@ +package com.ruoyi.ccdi.project.domain.vo; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * 流水明细筛选项集合VO + * + * @author ruoyi + */ +@Data +public class CcdiBankStatementFilterOptionsVO { + + /** 本方主体选项 */ + private List ourSubjectOptions = new ArrayList<>(); + + /** 本方银行选项 */ + private List ourBankOptions = new ArrayList<>(); + + /** 本方账户选项 */ + private List ourAccountOptions = new ArrayList<>(); +} diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementListVO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementListVO.java new file mode 100644 index 0000000..74531cf --- /dev/null +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementListVO.java @@ -0,0 +1,41 @@ +package com.ruoyi.ccdi.project.domain.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 流水明细列表VO + * + * @author ruoyi + */ +@Data +public class CcdiBankStatementListVO { + + /** 流水ID */ + private Long bankStatementId; + + /** 交易时间 */ + private String trxDate; + + /** 本方账户 */ + private String leAccountNo; + + /** 本方主体 */ + private String leAccountName; + + /** 对方名称 */ + private String customerAccountName; + + /** 对方账户 */ + private String customerAccountNo; + + /** 摘要 */ + private String userMemo; + + /** 交易类型 */ + private String cashType; + + /** 页面展示金额 */ + private BigDecimal displayAmount; +} diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementOptionVO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementOptionVO.java new file mode 100644 index 0000000..43903be --- /dev/null +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementOptionVO.java @@ -0,0 +1,22 @@ +package com.ruoyi.ccdi.project.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 流水明细筛选项VO + * + * @author ruoyi + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CcdiBankStatementOptionVO { + + /** 展示文案 */ + private String label; + + /** 实际值 */ + private String value; +} diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiBankStatementMapper.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiBankStatementMapper.java index 952d2fb..78f6bd3 100644 --- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiBankStatementMapper.java +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiBankStatementMapper.java @@ -2,6 +2,7 @@ package com.ruoyi.ccdi.project.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.ccdi.project.domain.entity.CcdiBankStatement; +import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementFilterOptionsVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -24,4 +25,6 @@ public interface CcdiBankStatementMapper extends BaseMapper { int deleteByProjectIdAndBatchId(@Param("projectId") Long projectId, @Param("batchId") Integer batchId); + + CcdiBankStatementFilterOptionsVO selectFilterOptions(@Param("projectId") Long projectId); } diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiBankStatementService.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiBankStatementService.java new file mode 100644 index 0000000..e949cdd --- /dev/null +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiBankStatementService.java @@ -0,0 +1,19 @@ +package com.ruoyi.ccdi.project.service; + +import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementFilterOptionsVO; + +/** + * 流水明细查询Service接口 + * + * @author ruoyi + */ +public interface ICcdiBankStatementService { + + /** + * 查询项目级筛选项 + * + * @param projectId 项目ID + * @return 筛选项 + */ + CcdiBankStatementFilterOptionsVO getFilterOptions(Long projectId); +} diff --git a/ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiBankStatementServiceImplTest.java b/ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiBankStatementServiceImplTest.java new file mode 100644 index 0000000..928ce6f --- /dev/null +++ b/ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiBankStatementServiceImplTest.java @@ -0,0 +1,36 @@ +package com.ruoyi.ccdi.project.service.impl; + +import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementFilterOptionsVO; +import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementOptionVO; +import com.ruoyi.ccdi.project.mapper.CcdiBankStatementMapper; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class CcdiBankStatementServiceImplTest { + + @InjectMocks + private CcdiBankStatementServiceImpl service; + + @Mock + private CcdiBankStatementMapper bankStatementMapper; + + @Test + void getFilterOptions_shouldReturnProjectWideOptions() { + CcdiBankStatementFilterOptionsVO options = new CcdiBankStatementFilterOptionsVO(); + options.setOurSubjectOptions(List.of(new CcdiBankStatementOptionVO("主体A", "主体A"))); + when(bankStatementMapper.selectFilterOptions(100L)).thenReturn(options); + + CcdiBankStatementFilterOptionsVO result = service.getFilterOptions(100L); + + assertEquals(1, result.getOurSubjectOptions().size()); + } +}