diff --git a/src/main/java/com/ffii/tsms/modules/claim/entity/ClaimRepository.kt b/src/main/java/com/ffii/tsms/modules/claim/entity/ClaimRepository.kt index 66d2654..c68da66 100644 --- a/src/main/java/com/ffii/tsms/modules/claim/entity/ClaimRepository.kt +++ b/src/main/java/com/ffii/tsms/modules/claim/entity/ClaimRepository.kt @@ -1,9 +1,13 @@ package com.ffii.tsms.modules.claim.entity import com.ffii.core.support.AbstractRepository +import com.ffii.tsms.modules.claim.entity.projections.ClaimSearchInfo +import org.springframework.data.jpa.repository.Query import org.springframework.data.repository.query.Param interface ClaimRepository : AbstractRepository { fun findAllByDeletedFalse(): List fun findAllByCodeContains(@Param("code") code:String): List +// @Query("select c.id, c.created, c.code, sum(cd.amount) as amount, c.type, c.status, c.remark from Claim c left join ClaimDetail cd on cd.claim.id = c.id where c.deleted = false group by c.id") +// fun findClaimSearchInfoBy(): List } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/claim/entity/projections/ClaimSearchInfo.kt b/src/main/java/com/ffii/tsms/modules/claim/entity/projections/ClaimSearchInfo.kt new file mode 100644 index 0000000..19c402f --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/claim/entity/projections/ClaimSearchInfo.kt @@ -0,0 +1,14 @@ +package com.ffii.tsms.modules.claim.entity.projections + +import java.math.BigDecimal +import java.time.LocalDate + +interface ClaimSearchInfo { + val id: Long? + val created: LocalDate? + val code: String? + val amount: BigDecimal? + val type: String? + val status: String? + val remark: String? +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/claim/service/ClaimService.kt b/src/main/java/com/ffii/tsms/modules/claim/service/ClaimService.kt index 4597503..68675bd 100644 --- a/src/main/java/com/ffii/tsms/modules/claim/service/ClaimService.kt +++ b/src/main/java/com/ffii/tsms/modules/claim/service/ClaimService.kt @@ -6,6 +6,7 @@ import com.ffii.tsms.modules.claim.entity.Claim import com.ffii.tsms.modules.claim.entity.ClaimDetail import com.ffii.tsms.modules.claim.entity.ClaimDetailRepository import com.ffii.tsms.modules.claim.entity.ClaimRepository +import com.ffii.tsms.modules.claim.entity.projections.ClaimSearchInfo import com.ffii.tsms.modules.claim.web.models.SaveClaimResponse import com.ffii.tsms.modules.data.entity.StaffRepository import com.ffii.tsms.modules.data.service.StaffsService @@ -36,8 +37,20 @@ open class ClaimService( private val userRepository: UserRepository, private val staffsService: StaffsService, ) : AbstractBaseEntityService(jdbcDao, claimRepository) { - open fun allClaims(): List { - return claimRepository.findAllByDeletedFalse() + open fun allClaims(): List> { + val sql = StringBuilder("select " + + "c.id, " + + "c.created, " + + "c.code, " + + "sum(cd.amount) as amount, " + + "c.type, " + + "c.status, " + + "c.remark " + + "from claim c " + + "left join claim_detail cd on cd.claimId = c.id " + + "where c.deleted = false " + + "group by c.id") + return jdbcDao.queryForList(sql.toString()) } open fun allClaimsByCodeContains(code: String): List { diff --git a/src/main/java/com/ffii/tsms/modules/claim/web/ClaimController.kt b/src/main/java/com/ffii/tsms/modules/claim/web/ClaimController.kt index 3d3dd77..ffa6735 100644 --- a/src/main/java/com/ffii/tsms/modules/claim/web/ClaimController.kt +++ b/src/main/java/com/ffii/tsms/modules/claim/web/ClaimController.kt @@ -2,6 +2,7 @@ package com.ffii.tsms.modules.claim.web import com.ffii.tsms.modules.claim.entity.Claim import com.ffii.tsms.modules.claim.entity.ClaimDetail +import com.ffii.tsms.modules.claim.entity.projections.ClaimSearchInfo import com.ffii.tsms.modules.claim.service.ClaimService import com.ffii.tsms.modules.claim.web.models.SaveClaimDetailRequest import com.ffii.tsms.modules.claim.web.models.SaveClaimRequest @@ -29,7 +30,7 @@ import java.time.LocalDate class ClaimController(private val claimService: ClaimService) { @GetMapping - fun allClaims(): List { + fun allClaims(): List> { return claimService.allClaims() }