diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankStatementController.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankStatementController.java index cec48f6f..f8c99b56 100644 --- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankStatementController.java +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiBankStatementController.java @@ -3,6 +3,7 @@ package com.ruoyi.ccdi.project.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.ccdi.project.domain.dto.CcdiBankStatementQueryDTO; import com.ruoyi.ccdi.project.domain.excel.CcdiBankStatementExcel; +import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementCounterpartyVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementDetailVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementFilterOptionsVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementListVO; @@ -55,6 +56,19 @@ public class CcdiBankStatementController extends BaseController { return getDataTable(result.getRecords(), result.getTotal()); } + /** + * 分页查询对手方聚合列表 + */ + @GetMapping("/counterparty/list") + @Operation(summary = "分页查询对手方聚合列表") + public TableDataInfo counterpartyList(CcdiBankStatementQueryDTO queryDTO) { + projectAccessService.assertCanRead(queryDTO.getProjectId()); + PageDomain pageDomain = TableSupport.buildPageRequest(); + Page page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize()); + Page result = bankStatementService.selectCounterpartyPage(page, queryDTO); + return getDataTable(result.getRecords(), result.getTotal()); + } + /** * 查询项目级筛选项 */ diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementCounterpartyVO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementCounterpartyVO.java new file mode 100644 index 00000000..9a98039c --- /dev/null +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiBankStatementCounterpartyVO.java @@ -0,0 +1,44 @@ +package com.ruoyi.ccdi.project.domain.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 流水对手方聚合VO + * + * @author ruoyi + */ +@Data +public class CcdiBankStatementCounterpartyVO { + + /** 对方名称 */ + private String customerAccountName; + + /** 对方名称是否为空 */ + private Boolean nameEmpty; + + /** 关联账号数 */ + private Integer accountCount; + + /** 流入合计 */ + private BigDecimal inAmount; + + /** 流入笔数 */ + private Long inCount; + + /** 流出合计 */ + private BigDecimal outAmount; + + /** 流出笔数 */ + private Long outCount; + + /** 总交易金额 */ + private BigDecimal totalAmount; + + /** 总笔数 */ + private Long totalCount; + + /** 最近交易时间 */ + private String latestTrxDate; +} 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 4a6ba154..0836a0f4 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.ccdi.project.domain.entity.CcdiBankStatement; import com.ruoyi.ccdi.project.domain.dto.CcdiBankStatementQueryDTO; +import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementCounterpartyVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementDetailVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementFilterOptionsVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementListVO; @@ -38,6 +39,9 @@ public interface CcdiBankStatementMapper extends BaseMapper { Page selectStatementPage(Page page, @Param("query") CcdiBankStatementQueryDTO query); + Page selectCounterpartyPage(Page page, + @Param("query") CcdiBankStatementQueryDTO query); + List selectStatementListForExport(@Param("query") CcdiBankStatementQueryDTO query); CcdiBankStatementDetailVO selectStatementDetailById(@Param("bankStatementId") Long bankStatementId); 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 index 9abf6079..7fd5c1f9 100644 --- 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 @@ -3,6 +3,7 @@ package com.ruoyi.ccdi.project.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.ccdi.project.domain.dto.CcdiBankStatementQueryDTO; import com.ruoyi.ccdi.project.domain.excel.CcdiBankStatementExcel; +import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementCounterpartyVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementDetailVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementFilterOptionsVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementListVO; @@ -34,6 +35,16 @@ public interface ICcdiBankStatementService { Page selectStatementPage(Page page, CcdiBankStatementQueryDTO queryDTO); + /** + * 分页查询对手方聚合列表 + * + * @param page 分页对象 + * @param queryDTO 查询条件 + * @return 分页结果 + */ + Page selectCounterpartyPage(Page page, + CcdiBankStatementQueryDTO queryDTO); + /** * 查询导出列表 * diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankStatementServiceImpl.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankStatementServiceImpl.java index da644921..9fcdc720 100644 --- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankStatementServiceImpl.java +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiBankStatementServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.ccdi.project.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.ccdi.project.domain.dto.CcdiBankStatementQueryDTO; import com.ruoyi.ccdi.project.domain.excel.CcdiBankStatementExcel; +import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementCounterpartyVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementDetailVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementFilterOptionsVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementHitTagVO; @@ -57,6 +58,16 @@ public class CcdiBankStatementServiceImpl implements ICcdiBankStatementService { return result; } + @Override + public Page selectCounterpartyPage( + Page page, + CcdiBankStatementQueryDTO queryDTO + ) { + CcdiBankStatementQueryDTO normalizedQuery = queryDTO == null ? new CcdiBankStatementQueryDTO() : queryDTO; + normalizeQuery(normalizedQuery); + return bankStatementMapper.selectCounterpartyPage(page, normalizedQuery); + } + @Override public List selectStatementListForExport(CcdiBankStatementQueryDTO queryDTO) { CcdiBankStatementQueryDTO normalizedQuery = queryDTO == null ? new CcdiBankStatementQueryDTO() : queryDTO; @@ -153,6 +164,7 @@ public class CcdiBankStatementServiceImpl implements ICcdiBankStatementService { queryDTO.setCounterpartyAccount(normalizeText(queryDTO.getCounterpartyAccount())); queryDTO.setTransactionType(normalizeText(queryDTO.getTransactionType())); queryDTO.setOurSubjects(normalizeList(queryDTO.getOurSubjects())); + queryDTO.setOurCertNos(normalizeList(queryDTO.getOurCertNos())); queryDTO.setOurBanks(normalizeList(queryDTO.getOurBanks())); queryDTO.setOurAccounts(normalizeList(queryDTO.getOurAccounts())); queryDTO.setCounterpartyNameEmpty(Boolean.TRUE.equals(queryDTO.getCounterpartyNameEmpty())); @@ -180,6 +192,21 @@ public class CcdiBankStatementServiceImpl implements ICcdiBankStatementService { if ("trxDate".equalsIgnoreCase(normalized)) { return "trxDate"; } + if ("latestTrxDate".equalsIgnoreCase(normalized)) { + return "latestTrxDate"; + } + if ("inAmount".equalsIgnoreCase(normalized)) { + return "inAmount"; + } + if ("outAmount".equalsIgnoreCase(normalized)) { + return "outAmount"; + } + if ("totalAmount".equalsIgnoreCase(normalized)) { + return "totalAmount"; + } + if ("totalCount".equalsIgnoreCase(normalized)) { + return "totalCount"; + } return "trxDate"; } diff --git a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml index 8a210870..f4f29f56 100644 --- a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml +++ b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml @@ -72,6 +72,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + @@ -284,6 +298,45 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + TRIM(IFNULL(bs.CUSTOMER_ACCOUNT_NAME, '')) + + + + + + ORDER BY inAmount ASC, totalCount DESC, customerAccountName ASC + + + ORDER BY inAmount DESC, totalCount DESC, customerAccountName ASC + + + ORDER BY outAmount ASC, totalCount DESC, customerAccountName ASC + + + ORDER BY outAmount DESC, totalCount DESC, customerAccountName ASC + + + ORDER BY totalCount ASC, totalAmount DESC, customerAccountName ASC + + + ORDER BY totalCount DESC, totalAmount DESC, customerAccountName ASC + + + ORDER BY latestTrxDate ASC, totalAmount DESC, customerAccountName ASC + + + ORDER BY latestTrxDate DESC, totalAmount DESC, customerAccountName ASC + + + ORDER BY totalAmount ASC, totalCount DESC, customerAccountName ASC + + + ORDER BY totalAmount DESC, totalCount DESC, customerAccountName ASC + + + + + +