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 e34a196..5effd7a 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 @@ -55,4 +55,6 @@ interface PickOrderRepository : AbstractRepository { fun findPickOrderInfoByIdIn(id: List): List fun findAllByConsoCode(consoCode: String): List + + fun findAllByConsoCodeAndStatus(consoCode: String, status: PickOrderStatus): 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 7383d65..cf42365 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 @@ -14,6 +14,7 @@ import com.ffii.fpsms.modules.stock.web.model.SuggestedPickLotForPoRequest import com.ffii.fpsms.modules.user.service.UserService import org.springframework.data.domain.PageRequest import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional import java.io.Serializable import java.math.BigDecimal import java.time.LocalDate @@ -100,6 +101,7 @@ open class PickOrderService( val pickOrders = pickOrderRepository.findAllByIdInAndStatus(request.ids, PickOrderStatus.CONSOLIDATED) pickOrders.forEach { it.consoCode = null + it.status = PickOrderStatus.PENDING } val updatedPickOrders = pickOrderRepository.saveAll(pickOrders) @@ -117,9 +119,9 @@ open class PickOrderService( val pos = pickOrderRepository.findAllByConsoCode(consoCode) // Suggestions for Pick Order - val suggestions = - suggestedPickLotService.suggestionForPickOrders(SuggestedPickLotForPoRequest(pickOrders = pos)) - val suggestedList = suggestions.suggestedList +// val suggestions = +// suggestedPickLotService.suggestionForPickOrders(SuggestedPickLotForPoRequest(pickOrders = pos)) +// val suggestedList = suggestions.suggestedList // Mapping: PickOrder -> PickOrderInConso val finalPos = pos.map { po -> @@ -135,10 +137,10 @@ open class PickOrderService( val uom = pol.uom // Check If already have suggestion - var suggestion = pol.suggestedPickLots - if (suggestion.isEmpty()) { - suggestion = suggestedList.filter { it.pickOrderLine?.id == pol.id }.toMutableList() - } + val suggestion = pol.suggestedPickLots +// if (suggestion.isEmpty()) { +// suggestion = suggestedList.filter { it.pickOrderLine?.id == pol.id }.toMutableList() +// } // Mapping: SuggestedPickLot -> SuggestPickLotInConso val finalSuggestion = suggestion.map { @@ -240,7 +242,7 @@ open class PickOrderService( open fun releaseConsoPickOrderInfo(request: ReleaseConsoPickOrderRequest): ReleasePickOrderInfoResponse { val zero = BigDecimal.ZERO - val pos = pickOrderRepository.findAllByConsoCode(request.consoCode) + val pos = pickOrderRepository.findAllByConsoCodeAndStatus(request.consoCode, PickOrderStatus.CONSOLIDATED) val requiredItems = pos .flatMap { it.pickOrderLines } .groupBy { it.item?.id } @@ -271,10 +273,11 @@ open class PickOrderService( ) } + @Transactional(rollbackFor = [java.lang.Exception::class]) open fun releaseConsoPickOrderAction(request: ReleaseConsoPickOrderRequest) { val releasedBy = SecurityUtils.getUser().getOrNull() val assignTo = request.assignTo?.let { userService.find(it) }?.getOrNull() - val pos = pickOrderRepository.findAllByConsoCode(request.consoCode) + val pos = pickOrderRepository.findAllByConsoCodeAndStatus(request.consoCode, PickOrderStatus.CONSOLIDATED) pos.forEach { it.apply { this.releasedBy = releasedBy @@ -282,6 +285,11 @@ open class PickOrderService( status = PickOrderStatus.RELEASED } } + + val suggestions = + suggestedPickLotService.suggestionForPickOrders(SuggestedPickLotForPoRequest(pickOrders = pos)) + + suggestedPickLotService.saveAll(suggestions.suggestedList) pickOrderRepository.saveAll(pos) } } \ 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 7cb56ea..c54011b 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 @@ -54,7 +54,7 @@ class PickOrderController( } @GetMapping("/releaseConso") - fun releaseConsoPickOrderInfo(@Valid @RequestBody request: ReleaseConsoPickOrderRequest): ReleasePickOrderInfoResponse { + fun releaseConsoPickOrderInfo(@Valid @RequestParam request: ReleaseConsoPickOrderRequest): ReleasePickOrderInfoResponse { return pickOrderService.releaseConsoPickOrderInfo(request); }