From cfc3545fc70e46e41f873b0f03fa73588853d937 Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Tue, 10 Mar 2026 16:06:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=B5=81=E6=B0=B4=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E6=9F=A5=E8=AF=A2Mapper=E4=B8=8E=E5=8A=A8=E6=80=81SQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/CcdiBankStatementMapper.java | 11 + .../ccdi/project/CcdiBankStatementMapper.xml | 296 ++++++++++++++++++ .../CcdiBankStatementServiceImplTest.java | 19 ++ 3 files changed, 326 insertions(+) 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 78f6bd3..f3d0601 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 @@ -1,8 +1,12 @@ package com.ruoyi.ccdi.project.mapper; 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.CcdiBankStatementDetailVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementFilterOptionsVO; +import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementListVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -26,5 +30,12 @@ public interface CcdiBankStatementMapper extends BaseMapper { int deleteByProjectIdAndBatchId(@Param("projectId") Long projectId, @Param("batchId") Integer batchId); + Page selectStatementPage(Page page, + @Param("query") CcdiBankStatementQueryDTO query); + + List selectStatementListForExport(@Param("query") CcdiBankStatementQueryDTO query); + + CcdiBankStatementDetailVO selectStatementDetailById(@Param("bankStatementId") Long bankStatementId); + CcdiBankStatementFilterOptionsVO selectFilterOptions(@Param("projectId") Long projectId); } 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 da66c4a..d19fe03 100644 --- a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml +++ b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml @@ -59,6 +59,302 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from ccdi_bank_statement + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CASE + WHEN bs.TRX_DATE IS NULL OR TRIM(bs.TRX_DATE) = '' THEN NULL + WHEN LENGTH(TRIM(bs.TRX_DATE)) = 10 THEN STR_TO_DATE(CONCAT(TRIM(bs.TRX_DATE), ' 00:00:00'), '%Y-%m-%d %H:%i:%s') + ELSE STR_TO_DATE(TRIM(bs.TRX_DATE), '%Y-%m-%d %H:%i:%s') + END + + + + CASE + WHEN IFNULL(bs.AMOUNT_CR, 0) > 0 THEN IFNULL(bs.AMOUNT_CR, 0) + ELSE 0 - IFNULL(bs.AMOUNT_DR, 0) + END + + + + CASE + WHEN IFNULL(bs.AMOUNT_CR, 0) > 0 THEN IFNULL(bs.AMOUNT_CR, 0) + ELSE IFNULL(bs.AMOUNT_DR, 0) + END + + + + bs.bank_statement_id AS bankStatementId, + bs.TRX_DATE AS trxDate, + bs.LE_ACCOUNT_NO AS leAccountNo, + bs.LE_ACCOUNT_NAME AS leAccountName, + bs.CUSTOMER_ACCOUNT_NAME AS customerAccountName, + bs.CUSTOMER_ACCOUNT_NO AS customerAccountNo, + bs.USER_MEMO AS userMemo, + bs.CASH_TYPE AS cashType, + AS displayAmount + + + + bs.project_id = #{query.projectId} + + AND IFNULL(bs.AMOUNT_CR, 0) > 0 + + + AND IFNULL(bs.AMOUNT_DR, 0) > 0 + + + AND = ]]> + CASE + WHEN LENGTH(TRIM(#{query.transactionStartTime})) = 10 + THEN STR_TO_DATE(CONCAT(TRIM(#{query.transactionStartTime}), ' 00:00:00'), '%Y-%m-%d %H:%i:%s') + ELSE STR_TO_DATE(TRIM(#{query.transactionStartTime}), '%Y-%m-%d %H:%i:%s') + END + + + AND + CASE + WHEN LENGTH(TRIM(#{query.transactionEndTime})) = 10 + THEN STR_TO_DATE(CONCAT(TRIM(#{query.transactionEndTime}), ' 23:59:59'), '%Y-%m-%d %H:%i:%s') + ELSE STR_TO_DATE(TRIM(#{query.transactionEndTime}), '%Y-%m-%d %H:%i:%s') + END + + + AND ( + + bs.CUSTOMER_ACCOUNT_NAME LIKE CONCAT('%', TRIM(#{query.counterpartyName}), '%') + + + OR + + + bs.CUSTOMER_ACCOUNT_NAME IS NULL OR TRIM(bs.CUSTOMER_ACCOUNT_NAME) = '' + + ) + + + AND ( + + bs.USER_MEMO LIKE CONCAT('%', TRIM(#{query.userMemo}), '%') + + + OR + + + bs.USER_MEMO IS NULL OR TRIM(bs.USER_MEMO) = '' + + ) + + + AND bs.LE_ACCOUNT_NAME IN + + #{item} + + + + AND bs.BANK IN + + #{item} + + + + AND bs.LE_ACCOUNT_NO IN + + #{item} + + + + AND = ]]> #{query.amountMin} + + + AND #{query.amountMax} + + + AND ( + + bs.CUSTOMER_ACCOUNT_NO LIKE CONCAT('%', TRIM(#{query.counterpartyAccount}), '%') + + + OR + + + bs.CUSTOMER_ACCOUNT_NO IS NULL OR TRIM(bs.CUSTOMER_ACCOUNT_NO) = '' + + ) + + + AND ( + + bs.CASH_TYPE LIKE CONCAT('%', TRIM(#{query.transactionType}), '%') + + + OR + + + bs.CASH_TYPE IS NULL OR TRIM(bs.CASH_TYPE) = '' + + ) + + + + + + + ORDER BY ASC, bs.bank_statement_id ASC + + + ORDER BY DESC, bs.bank_statement_id DESC + + + ORDER BY ASC, bs.bank_statement_id ASC + + + ORDER BY DESC, bs.bank_statement_id DESC + + + + + + + + + + + + + + + + + + insert into ccdi_bank_statement ( project_id, LE_ID, ACCOUNT_ID, group_id, 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 index 928ce6f..0312252 100644 --- 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 @@ -1,6 +1,9 @@ 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.vo.CcdiBankStatementFilterOptionsVO; +import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementListVO; import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementOptionVO; import com.ruoyi.ccdi.project.mapper.CcdiBankStatementMapper; import org.junit.jupiter.api.Test; @@ -12,6 +15,9 @@ import org.mockito.junit.jupiter.MockitoExtension; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.same; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) @@ -33,4 +39,17 @@ class CcdiBankStatementServiceImplTest { assertEquals(1, result.getOurSubjectOptions().size()); } + + @Test + void pageQuery_shouldNormalizeSortFieldAndDirection() { + Page page = new Page<>(1, 10); + CcdiBankStatementQueryDTO queryDTO = new CcdiBankStatementQueryDTO(); + queryDTO.setProjectId(100L); + queryDTO.setOrderBy("amount"); + queryDTO.setOrderDirection("desc"); + + service.selectStatementPage(page, queryDTO); + + verify(bankStatementMapper).selectStatementPage(eq(page), same(queryDTO)); + } }