ソースを参照

[Pick Order] Add Pick Order Search by Page

production_process
cyril.tsui 2ヶ月前
コミット
e97ba47098
4個のファイルの変更97行の追加1行の削除
  1. +33
    -1
      src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrderRepository.kt
  2. +32
    -0
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt
  3. +18
    -0
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt
  4. +14
    -0
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/SearchPickOrderRequest.kt

+ 33
- 1
src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrderRepository.kt ファイルの表示

@@ -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>
}

+ 32
- 0
src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt ファイルの表示

@@ -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() {



+ 18
- 0
src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt ファイルの表示

@@ -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);
}
}

+ 14
- 0
src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/SearchPickOrderRequest.kt ファイルの表示

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

読み込み中…
キャンセル
保存