| @@ -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?, | |||||
| ) | |||||