@@ -2,10 +2,42 @@ package com.ffii.fpsms.modules.pickOrder.entity | |||
import com.ffii.core.support.AbstractRepository | |||
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.repository.query.Param | |||
import org.springframework.stereotype.Repository | |||
import java.time.LocalDateTime | |||
@Repository | |||
interface PickOrderRepository: AbstractRepository<PickOrder, Long> { | |||
interface PickOrderRepository : AbstractRepository<PickOrder, Long> { | |||
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 | |||
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.web.models.SearchPickOrderRequest | |||
import org.springframework.data.domain.PageRequest | |||
import org.springframework.stereotype.Service | |||
import java.time.LocalDateTime | |||
import java.time.format.DateTimeFormatter | |||
@Service | |||
open class PickOrderService( | |||
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> { | |||
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 | |||
open fun consoPickOrders() { | |||
@@ -1,18 +1,36 @@ | |||
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.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.ModelAttribute | |||
import org.springframework.web.bind.annotation.RequestMapping | |||
import org.springframework.web.bind.annotation.RequestParam | |||
import org.springframework.web.bind.annotation.RestController | |||
import java.time.DateTimeException | |||
import java.time.LocalDateTime | |||
import java.time.format.DateTimeFormatter | |||
@RestController | |||
@RequestMapping("/pickOrder") | |||
class PickOrderController( | |||
private val pickOrderService: PickOrderService, | |||
private val pickOrderRepository: PickOrderRepository, | |||
) { | |||
@GetMapping("/list") | |||
fun allPickOrders(): List<PickOrderInfo> { | |||
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?, | |||
) |