jason.lam il y a 2 mois
Parent
révision
5ab3fdb2e3
6 fichiers modifiés avec 55 ajouts et 14 suppressions
  1. +0
    -1
      src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrder.kt
  2. +2
    -2
      src/main/java/com/ffii/fpsms/modules/pickOrder/enums/PickOrderEnumConverter.kt
  3. +30
    -9
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt
  4. +6
    -0
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt
  5. +2
    -1
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderRequest.kt
  6. +15
    -1
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderResponse.kt

+ 0
- 1
src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrder.kt Voir le fichier

@@ -43,7 +43,6 @@ open class PickOrder: BaseEntity<Long>() {
@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


+ 2
- 2
src/main/java/com/ffii/fpsms/modules/pickOrder/enums/PickOrderEnumConverter.kt Voir le fichier

@@ -20,8 +20,8 @@ class PickOrderStatusConverter : AttributeConverter<PickOrderStatus, String>{
// Pick Order Type
@Converter(autoApply = true)
class PickOrderTypeConverter : AttributeConverter<PickOrderType, String>{
override fun convertToDatabaseColumn(status: PickOrderType?): String? {
return status?.value
override fun convertToDatabaseColumn(type: PickOrderType?): String? {
return type?.value
}

override fun convertToEntityAttribute(value: String?): PickOrderType? {


+ 30
- 9
src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt Voir le fichier

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

+ 6
- 0
src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickOrderController.kt Voir le fichier

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

+ 2
- 1
src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderRequest.kt Voir le fichier

@@ -10,5 +10,6 @@ data class ConsoPickOrderRequest (
// Release Consolidated Pick Order
data class ReleaseConsoPickOrderRequest (
val consoCode: String,
val suggestedPickLots: List<SaveSuggestedPickLotRequest>
val assignTo: Long?,
// val suggestedPickLots: List<SaveSuggestedPickLotRequest>
)

+ 15
- 1
src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderResponse.kt Voir le fichier

@@ -3,7 +3,21 @@ package com.ffii.fpsms.modules.pickOrder.web.models
import java.math.BigDecimal
import java.time.LocalDateTime

// Final Response
// Final Response - Release Conso Pick Order Page
data class ReleasePickOrderInfoResponse(
val consoCode: String,
val inventory: List<ReleasePickOrderInfoInventory>
)

data class ReleasePickOrderInfoInventory(
val id: Long?,
val itemCode: String?,
val itemName: String?,
val availableQty: BigDecimal?,
val requiredQty: BigDecimal?,
)

// Final Response - Conso Pick Order Detail
data class ConsoPickOrderResponse(
val consoCode: String,
val pickOrders: List<PickOrderInConso>,


Chargement…
Annuler
Enregistrer