@@ -2,10 +2,42 @@ package com.ffii.fpsms.modules.pickOrder.entity | |||||
import com.ffii.core.support.AbstractRepository | import com.ffii.core.support.AbstractRepository | ||||
import com.ffii.fpsms.modules.pickOrder.entity.projection.PickOrderInfo | import com.ffii.fpsms.modules.pickOrder.entity.projection.PickOrderInfo | ||||
import com.ffii.fpsms.modules.pickOrder.web.models.SearchPickOrderRequest | |||||
import org.springframework.data.domain.Page | |||||
import org.springframework.data.domain.Pageable | |||||
import org.springframework.data.jpa.repository.Query | import org.springframework.data.jpa.repository.Query | ||||
import org.springframework.data.repository.query.Param | |||||
import org.springframework.stereotype.Repository | import org.springframework.stereotype.Repository | ||||
import java.time.LocalDateTime | |||||
@Repository | @Repository | ||||
interface PickOrderRepository: AbstractRepository<PickOrder, Long> { | |||||
interface PickOrderRepository : AbstractRepository<PickOrder, Long> { | |||||
fun findPickOrderInfoByDeletedIsFalse(): List<PickOrderInfo> | fun findPickOrderInfoByDeletedIsFalse(): List<PickOrderInfo> | ||||
@Query( | |||||
""" | |||||
select po from PickOrder po | |||||
where (lower(:code) = 'all' or lower(po.code) like concat('%',lower(:code),'%')) | |||||
and (:targetDateFrom is null or po.targetDate >= :targetDateFrom) | |||||
and (:targetDateTo is null or po.targetDate <= :targetDateTo) | |||||
and (lower(:type) = 'all' or lower(po.type) like concat('%',lower(:type),'%')) | |||||
and (lower(:status) = 'all' or lower(po.status) like concat('%',lower(:status),'%')) | |||||
and (lower(:items) = 'all' or exists ( | |||||
select 1 from PickOrderLine pol | |||||
where pol.pickOrder = po | |||||
and (lower(:items) = 'all' or lower(pol.item.name) like concat('%',lower(:items),'%')) | |||||
) | |||||
) | |||||
and po.deleted = false | |||||
""" | |||||
) | |||||
fun findPickOrderInfoByConditionsAndPageable( | |||||
code: String, | |||||
targetDateFrom: LocalDateTime?, | |||||
targetDateTo: LocalDateTime?, | |||||
type: String, | |||||
status: String, | |||||
items: String, | |||||
pageable: Pageable, | |||||
): Page<PickOrderInfo> | |||||
} | } |
@@ -1,17 +1,49 @@ | |||||
package com.ffii.fpsms.modules.pickOrder.service | package com.ffii.fpsms.modules.pickOrder.service | ||||
import com.ffii.core.response.RecordsRes | |||||
import com.ffii.fpsms.modules.pickOrder.entity.PickOrderRepository | import com.ffii.fpsms.modules.pickOrder.entity.PickOrderRepository | ||||
import com.ffii.fpsms.modules.pickOrder.entity.projection.PickOrderInfo | import com.ffii.fpsms.modules.pickOrder.entity.projection.PickOrderInfo | ||||
import com.ffii.fpsms.modules.pickOrder.web.models.SearchPickOrderRequest | |||||
import org.springframework.data.domain.PageRequest | |||||
import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||
import java.time.LocalDateTime | |||||
import java.time.format.DateTimeFormatter | |||||
@Service | @Service | ||||
open class PickOrderService( | open class PickOrderService( | ||||
val pickOrderRepository: PickOrderRepository, | val pickOrderRepository: PickOrderRepository, | ||||
) { | ) { | ||||
open fun LocalDateTimeParse(dateTime: String?, pattern: String? = "YYYY-MM-DD hh:mm:ss"): LocalDateTime? { | |||||
try { | |||||
val formatter = DateTimeFormatter.ofPattern(pattern) | |||||
return LocalDateTime.parse(dateTime, formatter) | |||||
} catch (e: Exception) { | |||||
return null | |||||
} | |||||
} | |||||
open fun allPickOrders(): List<PickOrderInfo> { | open fun allPickOrders(): List<PickOrderInfo> { | ||||
return pickOrderRepository.findPickOrderInfoByDeletedIsFalse() | return pickOrderRepository.findPickOrderInfoByDeletedIsFalse() | ||||
} | } | ||||
open fun allPickOrdersByPage(request: SearchPickOrderRequest): RecordsRes<PickOrderInfo> { | |||||
val pageable = PageRequest.of(request.pageNum ?: 1, request.pageSize ?: 10); | |||||
val response = pickOrderRepository.findPickOrderInfoByConditionsAndPageable( | |||||
code = request.code ?: "all", | |||||
targetDateFrom = LocalDateTimeParse(request.targetDateFrom), | |||||
targetDateTo = LocalDateTimeParse(request.targetDateTo), | |||||
type = request.type ?: "all", | |||||
status = request.status ?: "all", | |||||
items = request.items ?: "all", | |||||
pageable = pageable | |||||
) | |||||
val records = response.content | |||||
val total = response.totalElements | |||||
return RecordsRes<PickOrderInfo>(records, total.toInt()) | |||||
} | |||||
// Consolidating Pick Orders | // Consolidating Pick Orders | ||||
open fun consoPickOrders() { | open fun consoPickOrders() { | ||||
@@ -1,18 +1,36 @@ | |||||
package com.ffii.fpsms.modules.pickOrder.web | package com.ffii.fpsms.modules.pickOrder.web | ||||
import com.ffii.core.response.RecordsRes | |||||
import com.ffii.fpsms.modules.pickOrder.entity.PickOrderRepository | |||||
import com.ffii.fpsms.modules.pickOrder.entity.projection.PickOrderInfo | import com.ffii.fpsms.modules.pickOrder.entity.projection.PickOrderInfo | ||||
import com.ffii.fpsms.modules.pickOrder.service.PickOrderService | import com.ffii.fpsms.modules.pickOrder.service.PickOrderService | ||||
import com.ffii.fpsms.modules.pickOrder.web.models.SearchPickOrderRequest | |||||
import jakarta.validation.Valid | |||||
import org.springframework.data.domain.Page | |||||
import org.springframework.data.domain.PageRequest | |||||
import org.springframework.data.domain.Pageable | |||||
import org.springframework.web.bind.annotation.GetMapping | import org.springframework.web.bind.annotation.GetMapping | ||||
import org.springframework.web.bind.annotation.ModelAttribute | |||||
import org.springframework.web.bind.annotation.RequestMapping | import org.springframework.web.bind.annotation.RequestMapping | ||||
import org.springframework.web.bind.annotation.RequestParam | |||||
import org.springframework.web.bind.annotation.RestController | import org.springframework.web.bind.annotation.RestController | ||||
import java.time.DateTimeException | |||||
import java.time.LocalDateTime | |||||
import java.time.format.DateTimeFormatter | |||||
@RestController | @RestController | ||||
@RequestMapping("/pickOrder") | @RequestMapping("/pickOrder") | ||||
class PickOrderController( | class PickOrderController( | ||||
private val pickOrderService: PickOrderService, | private val pickOrderService: PickOrderService, | ||||
private val pickOrderRepository: PickOrderRepository, | |||||
) { | ) { | ||||
@GetMapping("/list") | @GetMapping("/list") | ||||
fun allPickOrders(): List<PickOrderInfo> { | fun allPickOrders(): List<PickOrderInfo> { | ||||
return pickOrderService.allPickOrders(); | return pickOrderService.allPickOrders(); | ||||
} | } | ||||
@GetMapping("/listByPage") | |||||
fun test(@ModelAttribute request: SearchPickOrderRequest): RecordsRes<PickOrderInfo> { | |||||
return pickOrderService.allPickOrdersByPage(request); | |||||
} | |||||
} | } |
@@ -0,0 +1,14 @@ | |||||
package com.ffii.fpsms.modules.pickOrder.web.models | |||||
import org.springframework.web.bind.annotation.RequestParam | |||||
data class SearchPickOrderRequest ( | |||||
val code: String?, | |||||
val targetDateFrom: String?, | |||||
val targetDateTo: String?, | |||||
val type: String?, | |||||
val status: String?, | |||||
val items: String?, | |||||
val pageSize: Int?, | |||||
val pageNum: Int?, | |||||
) |