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