| @@ -48,4 +48,6 @@ interface PickOrderRepository : AbstractRepository<PickOrder, Long> { | |||||
| """) | """) | ||||
| fun findLatestConsoCodeByPrefix(prefix: String): String? | fun findLatestConsoCodeByPrefix(prefix: String): String? | ||||
| fun findAllByIdIn(id: List<Serializable>): List<PickOrder> | fun findAllByIdIn(id: List<Serializable>): List<PickOrder> | ||||
| fun findPickOrderInfoByIdIn(id: List<Serializable>): List<PickOrderInfo> | |||||
| } | } | ||||
| @@ -3,7 +3,7 @@ package com.ffii.fpsms.modules.pickOrder.entity.projection | |||||
| import org.springframework.beans.factory.annotation.Value | import org.springframework.beans.factory.annotation.Value | ||||
| import java.time.LocalDateTime | import java.time.LocalDateTime | ||||
| data class PickOrderItemInfo( | |||||
| data class PickOrderLineInfo( | |||||
| val name: String?, | val name: String?, | ||||
| val type: String?, | val type: String?, | ||||
| ) | ) | ||||
| @@ -19,6 +19,6 @@ interface PickOrderInfo { | |||||
| @get:Value("#{target.releasedBy?.name}") | @get:Value("#{target.releasedBy?.name}") | ||||
| val releasedBy: String? | val releasedBy: String? | ||||
| @get:Value("#{target.pickOrderLines?.size() > 0 ? target.pickOrderLines.![new com.ffii.fpsms.modules.pickOrder.entity.projection.PickOrderItemInfo(item.name, item.type)] : null}") | |||||
| val items: List<PickOrderItemInfo?>? | |||||
| @get:Value("#{target.pickOrderLines?.size() > 0 ? target.pickOrderLines.![new com.ffii.fpsms.modules.pickOrder.entity.projection.PickOrderLineInfo(item.name, item.type)] : null}") | |||||
| val items: List<PickOrderLineInfo?>? | |||||
| } | } | ||||
| @@ -1,12 +1,16 @@ | |||||
| package com.ffii.fpsms.modules.pickOrder.service | package com.ffii.fpsms.modules.pickOrder.service | ||||
| import com.ffii.core.response.RecordsRes | import com.ffii.core.response.RecordsRes | ||||
| import com.ffii.fpsms.modules.pickOrder.entity.PickOrder | |||||
| 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.entity.projection.PickOrderLineInfo | |||||
| import com.ffii.fpsms.modules.pickOrder.web.models.ConsoPickOrderRequest | import com.ffii.fpsms.modules.pickOrder.web.models.ConsoPickOrderRequest | ||||
| import com.ffii.fpsms.modules.pickOrder.web.models.SearchPickOrderRequest | import com.ffii.fpsms.modules.pickOrder.web.models.SearchPickOrderRequest | ||||
| import org.springframework.context.annotation.Lazy | |||||
| import org.springframework.data.domain.PageRequest | import org.springframework.data.domain.PageRequest | ||||
| import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||
| import java.io.Serializable | |||||
| import java.time.LocalDate | import java.time.LocalDate | ||||
| import java.time.LocalDateTime | import java.time.LocalDateTime | ||||
| import java.time.format.DateTimeFormatter | import java.time.format.DateTimeFormatter | ||||
| @@ -49,11 +53,12 @@ open class PickOrderService( | |||||
| // Consolidating Pick Orders | // Consolidating Pick Orders | ||||
| open fun assignConsoCode(): String { | open fun assignConsoCode(): String { | ||||
| val suffixFormat = "%03d" | val suffixFormat = "%03d" | ||||
| val pattern = "YYYYMMDD" | |||||
| val pattern = "yyyyMMdd" | |||||
| val formatter = DateTimeFormatter.ofPattern(pattern) | val formatter = DateTimeFormatter.ofPattern(pattern) | ||||
| val prefix = "PICK" | val prefix = "PICK" | ||||
| val midfix = LocalDate.now().format(formatter) | val midfix = LocalDate.now().format(formatter) | ||||
| println(midfix) | |||||
| val suffix = String.format(suffixFormat, 1) | val suffix = String.format(suffixFormat, 1) | ||||
| val latestConsoCode = pickOrderRepository.findLatestConsoCodeByPrefix("${prefix}-${midfix}") | val latestConsoCode = pickOrderRepository.findLatestConsoCodeByPrefix("${prefix}-${midfix}") | ||||
| @@ -68,9 +73,17 @@ open class PickOrderService( | |||||
| return listOf<String>(prefix, midfix, suffix).joinToString("-") | return listOf<String>(prefix, midfix, suffix).joinToString("-") | ||||
| } | } | ||||
| // open fun consoPickOrders(request: ConsoPickOrderRequest) { | |||||
| // val assignConsoCode = assignConsoCode() | |||||
| // val pickOrders = pickOrderRepository.findAllByIdIn(request.ids) | |||||
| // pickOrders. | |||||
| // } | |||||
| open fun consoPickOrders(request: ConsoPickOrderRequest): List<PickOrderInfo> { | |||||
| val newConsoCode = assignConsoCode() | |||||
| val pickOrders = pickOrderRepository.findAllByIdIn(request.ids) | |||||
| val pickOrderInfos = mutableListOf<PickOrderInfo>() | |||||
| pickOrders.forEach { | |||||
| it.consoCode = newConsoCode | |||||
| } | |||||
| val updatedPickOrders = pickOrderRepository.saveAll(pickOrders) | |||||
| val updatedPickOrderInfos = updatedPickOrders.map { po -> po.id as Serializable }.let { pickOrderRepository.findPickOrderInfoByIdIn(it) } | |||||
| return updatedPickOrderInfos | |||||
| } | |||||
| } | } | ||||
| @@ -4,6 +4,7 @@ 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.service.PickOrderService | 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.SearchPickOrderRequest | import com.ffii.fpsms.modules.pickOrder.web.models.SearchPickOrderRequest | ||||
| import jakarta.validation.Valid | import jakarta.validation.Valid | ||||
| import org.springframework.data.domain.Page | import org.springframework.data.domain.Page | ||||
| @@ -12,6 +13,7 @@ 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.ModelAttribute | ||||
| import org.springframework.web.bind.annotation.PostMapping | import org.springframework.web.bind.annotation.PostMapping | ||||
| import org.springframework.web.bind.annotation.RequestBody | |||||
| 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.RequestParam | ||||
| import org.springframework.web.bind.annotation.RestController | import org.springframework.web.bind.annotation.RestController | ||||
| @@ -34,4 +36,10 @@ class PickOrderController( | |||||
| fun allPickOrdersByPage(@ModelAttribute request: SearchPickOrderRequest): RecordsRes<PickOrderInfo> { | fun allPickOrdersByPage(@ModelAttribute request: SearchPickOrderRequest): RecordsRes<PickOrderInfo> { | ||||
| return pickOrderService.allPickOrdersByPage(request); | return pickOrderService.allPickOrdersByPage(request); | ||||
| } | } | ||||
| // Consolidating Pick Orders | |||||
| @PostMapping("/conso") | |||||
| fun consoPickOrders(@Valid @RequestBody request: ConsoPickOrderRequest): List<PickOrderInfo> { | |||||
| return pickOrderService.consoPickOrders(request) | |||||
| } | |||||
| } | } | ||||