From 8e9559ffada57caa3fc45a52e4dbe0cf586e8450 Mon Sep 17 00:00:00 2001 From: "cyril.tsui" Date: Tue, 24 Jun 2025 12:59:32 +0800 Subject: [PATCH] add release pick order button --- .../modules/pickOrder/entity/PickOrder.kt | 1 - .../pickOrder/enums/PickOrderEnumConverter.kt | 4 +- .../pickOrder/service/PickOrderService.kt | 39 ++++++++++++++----- .../pickOrder/web/PickOrderController.kt | 6 +++ 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrder.kt b/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrder.kt index 3a266fc..ea3f0a9 100644 --- a/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrder.kt +++ b/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrder.kt @@ -43,7 +43,6 @@ open class PickOrder: BaseEntity() { @Column(name = "completeDate") open var completeDate: LocalDateTime? = null - @Size(max = 30) @Convert(converter = PickOrderTypeConverter::class) @Column(name = "type", length = 30) open var type: PickOrderType? = null diff --git a/src/main/java/com/ffii/fpsms/modules/pickOrder/enums/PickOrderEnumConverter.kt b/src/main/java/com/ffii/fpsms/modules/pickOrder/enums/PickOrderEnumConverter.kt index bbed2bc..d314cca 100644 --- a/src/main/java/com/ffii/fpsms/modules/pickOrder/enums/PickOrderEnumConverter.kt +++ b/src/main/java/com/ffii/fpsms/modules/pickOrder/enums/PickOrderEnumConverter.kt @@ -20,8 +20,8 @@ class PickOrderStatusConverter : AttributeConverter{ // Pick Order Type @Converter(autoApply = true) class PickOrderTypeConverter : AttributeConverter{ - override fun convertToDatabaseColumn(status: PickOrderType?): String? { - return status?.value + override fun convertToDatabaseColumn(type: PickOrderType?): String? { + return type?.value } override fun convertToEntityAttribute(value: String?): PickOrderType? { 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 d3dadf4..ae06ff6 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 @@ -1,6 +1,7 @@ package com.ffii.fpsms.modules.pickOrder.service import com.ffii.core.response.RecordsRes +import com.ffii.fpsms.modules.common.SecurityUtils import com.ffii.fpsms.modules.master.web.models.MessageResponse import com.ffii.fpsms.modules.pickOrder.entity.PickOrder import com.ffii.fpsms.modules.pickOrder.entity.PickOrderRepository @@ -11,6 +12,7 @@ import com.ffii.fpsms.modules.pickOrder.web.models.* import com.ffii.fpsms.modules.stock.service.StockOutLineService import com.ffii.fpsms.modules.stock.service.SuggestedPickLotService import com.ffii.fpsms.modules.stock.web.model.SuggestedPickLotForPoRequest +import com.ffii.fpsms.modules.user.service.UserService import org.springframework.context.annotation.Lazy import org.springframework.data.domain.PageRequest import org.springframework.stereotype.Service @@ -19,12 +21,14 @@ import java.math.BigDecimal import java.time.LocalDate import java.time.LocalDateTime import java.time.format.DateTimeFormatter +import kotlin.jvm.optionals.getOrNull @Service open class PickOrderService( val pickOrderRepository: PickOrderRepository, val stockOutLineService: StockOutLineService, val suggestedPickLotService: SuggestedPickLotService, + val userService: UserService, ) { open fun localDateTimeParse(dateTime: String?, pattern: String? = "YYYY-MM-DD hh:mm:ss"): LocalDateTime? { try { @@ -115,7 +119,8 @@ open class PickOrderService( val pos = pickOrderRepository.findAllByConsoCode(consoCode) // Suggestions for Pick Order - val suggestions = suggestedPickLotService.suggestionForPickOrders(SuggestedPickLotForPoRequest(pickOrders = pos)) + val suggestions = + suggestedPickLotService.suggestionForPickOrders(SuggestedPickLotForPoRequest(pickOrders = pos)) val suggestedList = suggestions.suggestedList // Mapping: PickOrder -> PickOrderInConso @@ -202,16 +207,16 @@ open class PickOrderService( val finalItems = finalPos .flatMap { it.pickOrderLines } .groupBy { it.item.id } - .map { (_itemId, _line) -> + .map { (_itemId, _line) -> val itemSuggestions = _line .flatMap { it.suggestPickLots } .groupBy { it.inventoryLotLine.id to it.pickSuggested } - .map{ (_key, _lot) -> + .map { (_key, _lot) -> SuggestPickLotInConso( id = _key.first, type = _lot.first().type, inventoryLotLine = _lot.first().inventoryLotLine, - qty = _lot.fold(zero) { sum, item -> sum + (item.qty ?: zero)}, + qty = _lot.fold(zero) { sum, item -> sum + (item.qty ?: zero) }, pickSuggested = _key.second ) } @@ -220,7 +225,7 @@ open class PickOrderService( id = _line.first().item.id, code = _line.first().item.code, name = _line.first().item.name, - qty = _line.fold(zero) { sum, item -> sum + (item.qty ?: zero)}, + qty = _line.fold(zero) { sum, item -> sum + (item.qty ?: zero) }, suggestPickLots = itemSuggestions, actualPickLots = mutableListOf() ) @@ -235,11 +240,27 @@ open class PickOrderService( return response } -// open fun releaseConsoPickOrder(request: ReleaseConsoPickOrderRequest): MessageResponse { -// val pos = pickOrderRepository.findAllByConsoCode(request.consoCode) + open fun releaseConsoPickOrderInfo() { + + } + + open fun releaseConsoPickOrderAction(request: ReleaseConsoPickOrderRequest) { + val releasedBy = SecurityUtils.getUser().getOrNull() + val assignTo = request.assignTo?.let { userService.find(it) }?.getOrNull() + println("123") + val pos = pickOrderRepository.findAllByConsoCode(request.consoCode) + println("456") + pos.forEach { + it.apply { + this.releasedBy = releasedBy + this.assignTo = assignTo + status = PickOrderStatus.RELEASED + } + } + println(pos[0].releasedBy?.id) + pickOrderRepository.saveAll(pos) // val suggestedPickLots = suggestedPickLotService.convertRequestsToEntities(request.suggestedPickLots) // // suggestedPickLotService.saveAll(suggestedPickLots) -// // TODO: Add Response -// } + } } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt b/src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt index 272ccbe..e404cc3 100644 --- a/src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt +++ b/src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt @@ -6,6 +6,7 @@ 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.ConsoPickOrderRequest import com.ffii.fpsms.modules.pickOrder.web.models.ConsoPickOrderResponse +import com.ffii.fpsms.modules.pickOrder.web.models.ReleaseConsoPickOrderRequest import com.ffii.fpsms.modules.pickOrder.web.models.SearchPickOrderRequest import jakarta.validation.Valid import org.springframework.data.domain.Page @@ -54,4 +55,9 @@ class PickOrderController( fun consoPickOrderDetail(@PathVariable consoCode: String): ConsoPickOrderResponse { return pickOrderService.consoPickOrderDetail(consoCode); } + + @PostMapping("/releaseConso") + fun releaseConsoPickOrders(@Valid @RequestBody request: ReleaseConsoPickOrderRequest) { + pickOrderService.releaseConsoPickOrderAction(request) + } } \ No newline at end of file