From 7ab88bd04e211fdda26b7b5300569e75ab11f5e4 Mon Sep 17 00:00:00 2001 From: "cyril.tsui" Date: Thu, 19 Jun 2025 12:34:14 +0800 Subject: [PATCH] update --- .../pickOrder/entity/PickOrderRepository.kt | 13 +++++++--- .../pickOrder/service/PickOrderService.kt | 25 ++++++++++++++++++- .../web/models/ConsoPickOrderRequest.kt | 5 ++++ .../web/models/SearchPickOrderRequest.kt | 2 +- 4 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderRequest.kt diff --git a/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrderRepository.kt b/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrderRepository.kt index 644ce9c..b9b15ff 100644 --- a/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrderRepository.kt +++ b/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrderRepository.kt @@ -8,6 +8,7 @@ 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.io.Serializable import java.time.LocalDateTime @Repository @@ -22,10 +23,10 @@ interface PickOrderRepository : AbstractRepository { 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 ( + and (lower(:itemName) = '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 (lower(:itemName) = 'all' or lower(pol.item.name) like concat('%',lower(:itemName),'%')) ) ) and po.deleted = false @@ -37,7 +38,13 @@ interface PickOrderRepository : AbstractRepository { targetDateTo: LocalDateTime?, type: String, status: String, - items: String, + itemName: String, pageable: Pageable, ): Page + + @Query(""" + select po.consoCode from PickOrder po where po.consoCode like :prefix% order by po.consoCode desc limit 1 + """) + fun findLatestConsoCodeByPrefix(prefix: String): String? + fun findAllByIdIn(id: List): List } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt b/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt index d376063..0145d6f 100644 --- a/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt +++ b/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt @@ -6,6 +6,7 @@ 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.LocalDate import java.time.LocalDateTime import java.time.format.DateTimeFormatter @@ -35,7 +36,7 @@ open class PickOrderService( targetDateTo = LocalDateTimeParse(request.targetDateTo), type = request.type ?: "all", status = request.status ?: "all", - items = request.items ?: "all", + itemName = request.itemName ?: "all", pageable = pageable ) @@ -45,6 +46,28 @@ open class PickOrderService( } // Consolidating Pick Orders + open fun assignConsoCode(): String { + val suffixFormat = "%03d" + val pattern = "YYYYMMDD" + val formatter = DateTimeFormatter.ofPattern(pattern) + + val prefix = "PICK" + val midfix = LocalDate.now().format(formatter) + val suffix = String.format(suffixFormat, 1) + + val latestConsoCode = pickOrderRepository.findLatestConsoCodeByPrefix("${prefix}-${midfix}") + + if (latestConsoCode != null) { + val splitLatestConsoCode = latestConsoCode.split("-") + if (splitLatestConsoCode.size > 2) { + val latestNo = splitLatestConsoCode[2].toInt() + return listOf(prefix, midfix, String.format(suffixFormat, latestNo + 1)).joinToString("-") + } + } + + return listOf(prefix, midfix, suffix).joinToString("-") + } + open fun consoPickOrders() { } diff --git a/src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderRequest.kt b/src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderRequest.kt new file mode 100644 index 0000000..41d6a7c --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderRequest.kt @@ -0,0 +1,5 @@ +package com.ffii.fpsms.modules.pickOrder.web.models + +data class ConsoPickOrderRequest ( + val ids: List +) \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/SearchPickOrderRequest.kt b/src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/SearchPickOrderRequest.kt index 75a890d..98fe005 100644 --- a/src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/SearchPickOrderRequest.kt +++ b/src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/SearchPickOrderRequest.kt @@ -8,7 +8,7 @@ data class SearchPickOrderRequest ( val targetDateTo: String?, val type: String?, val status: String?, - val items: String?, + val itemName: String?, val pageSize: Int?, val pageNum: Int?, ) \ No newline at end of file