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