liujie
2026-09-20 25999c575dd42b4715e49d3fe57e73c2c3204ccb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.estate.expert.admin.domain.business.contract;
 
import com.estate.expert.admin.domain.business.client.ClientType;
import com.estate.expert.admin.domain.common.EntityBaseRepository;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
 
public interface ContractRepository extends EntityBaseRepository<Contract> {
 
    @Query("select c from Contract c where ( :keyword is null or :keyword = '' or c.name like %:keyword% " +
            "or c.creator.name like %:keyword% ) " +
            "and (c.client is null or :clientType is null or c.client.type = :clientType) " +
            "and (:creatorId is null or c.creator.id = :creatorId)" +
            "and c.deleted = false " +
            "order by c.updateTime desc")
    Page<Contract> findContracts(
            @Param("keyword") String keyword,
            @Param("clientType") ClientType clientType,
            @Param("creatorId") Integer creatorId,
            Pageable page);
}