ソースを参照

do search fix

production
CANCERYS\kw093 3週間前
コミット
1bd3af87b1
2個のファイルの変更29行の追加1行の削除
  1. +25
    -1
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DeliveryOrderService.kt
  2. +4
    -0
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/models/DoDetailResponse.kt

+ 25
- 1
src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DeliveryOrderService.kt ファイルの表示

@@ -90,6 +90,7 @@ import com.ffii.fpsms.modules.deliveryOrder.entity.models.DeliveryOrderLineInfo
import com.ffii.fpsms.modules.master.entity.Items
import com.ffii.fpsms.modules.pickOrder.entity.PickOrderLine
import com.ffii.fpsms.modules.stock.entity.InventoryLotLine
import com.ffii.fpsms.modules.stock.entity.enum.InventoryLotLineStatus
import com.ffii.fpsms.modules.stock.entity.projection.StockOutLineInfo
import java.util.Locale
import org.slf4j.Logger
@@ -462,9 +463,24 @@ open class DeliveryOrderService(
return deliveryOrderRepository.findByIdAndDeletedIsFalse(id);
}
*/
private fun computeAvailableStockQtyForItem(itemId: Long): BigDecimal {
val availableLots = inventoryLotLineRepository
.findAllByInventoryLotItemIdAndStatus(itemId, InventoryLotLineStatus.AVAILABLE)
return availableLots.sumOf { lot ->
(lot.inQty ?: BigDecimal.ZERO)
.minus(lot.outQty ?: BigDecimal.ZERO)
.minus(lot.holdQty ?: BigDecimal.ZERO)
}
}

open fun getDetailedDo(id: Long): DoDetailResponse? {
val deliveryOrder = deliveryOrderRepository.findByIdAndDeletedIsFalse(id) ?: return null

val itemIds = deliveryOrder.deliveryOrderLines.mapNotNull { it.item?.id }.distinct()
val stockQtyByItemId = itemIds.associateWith { itemId ->
computeAvailableStockQtyForItem(itemId)
}

return DoDetailResponse(
id = deliveryOrder.id!!,
code = deliveryOrder.code ?: "",
@@ -478,6 +494,12 @@ open class DeliveryOrderService(
status = deliveryOrder.status?.value,
isExtra = deliveryOrder.isExtra,
deliveryOrderLines = deliveryOrder.deliveryOrderLines.map { line ->
val itemId = line.item?.id
val stockQty = itemId?.let { stockQtyByItemId[it] } ?: BigDecimal.ZERO
val requiredQty = line.qty ?: BigDecimal.ZERO
val availableStatus =
if (stockQty >= requiredQty) "available" else "insufficient"

DoDetailLineResponse(
id = line.id!!,
itemNo = line.itemNo,
@@ -487,7 +509,9 @@ open class DeliveryOrderService(
itemName = line.item?.name,
uomCode = line.uom?.code,
uom = line.uom?.udfudesc,
shortUom = line.uom?.udfShortDesc
shortUom = line.uom?.udfShortDesc,
stockQty = stockQty,
availableStatus = availableStatus,
)
}
)


+ 4
- 0
src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/models/DoDetailResponse.kt ファイルの表示

@@ -33,6 +33,10 @@ data class DoDetailLineResponse(
val uom: String?,
val uomCode: String?,
val shortUom: String?,
/** Sum of (inQty - outQty - holdQty) on AVAILABLE lot lines for this item. */
val stockQty: java.math.BigDecimal?,
/** `available` when stockQty >= qty, else `insufficient`. */
val availableStatus: String?,
)
data class StoreLaneSummary(
val storeId: String,


読み込み中…
キャンセル
保存