From e97521d0df92f21c4e95a3c29de0e8cc05b6b1c7 Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Fri, 17 Apr 2026 23:57:14 +0800 Subject: [PATCH] updated 2 --- .../master/entity/BomProcessRepository.kt | 20 +++++++++++++++++++ .../master/entity/ItemUomRespository.kt | 1 + .../master/entity/UomConversionRepository.kt | 1 + .../pickOrder/entity/PickOrderRepository.kt | 1 + 4 files changed, 23 insertions(+) diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/BomProcessRepository.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/BomProcessRepository.kt index a21c853..d15a0e9 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/BomProcessRepository.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/BomProcessRepository.kt @@ -1,13 +1,33 @@ package com.ffii.fpsms.modules.master.entity import com.ffii.core.support.AbstractRepository +import org.springframework.data.jpa.repository.Query +import org.springframework.data.repository.query.Param import org.springframework.stereotype.Repository import java.util.Optional +interface BomDurationAggregate { + val bomId: Long + val totalMinutes: Long +} + @Repository interface BomProcessRepository : AbstractRepository { fun findBySeqNoAndBomIdAndDeletedIsFalse(seqNo: Int, bomId: Long): BomProcess? fun findByBomIdOrderBySeqNo(bomId: Long): List fun findByBomId(bomId: Long): List fun findAllByBomIdAndDeletedFalse(bomId: Long): List + + @Query( + """ + SELECT + bp.bom.id AS bomId, + COALESCE(SUM(COALESCE(bp.durationInMinute, 0)), 0) AS totalMinutes + FROM BomProcess bp + WHERE bp.deleted = false + AND bp.bom.id IN :bomIds + GROUP BY bp.bom.id + """ + ) + fun sumDurationByBomIds(@Param("bomIds") bomIds: Collection): List } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt index fa738be..c84cd49 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt @@ -32,6 +32,7 @@ interface ItemUomRespository : AbstractRepository { fun findByItemIdAndUomIdAndStockUnitAndDeletedIsFalse(itemId: Long, uomId: Long, stockUnit: Boolean): ItemUom? fun findFirstByItemIdAndStockUnitIsTrueAndDeletedIsFalseOrderByIdAsc(itemId: Long): ItemUom? + fun findAllByItemIdInAndStockUnitIsTrueAndDeletedIsFalse(itemIds: Collection): List @Query( """ diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/UomConversionRepository.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/UomConversionRepository.kt index 7bc7f6e..4e5621b 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/UomConversionRepository.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/UomConversionRepository.kt @@ -13,6 +13,7 @@ interface UomConversionRepository : AbstractRepository { fun findByCodeAndDeletedFalse(code: String): UomConversion?; fun findByM18IdAndDeletedFalse(m18Id: Long): UomConversion?; + fun findAllByIdInAndDeletedFalse(ids: Collection): List fun findByLastModifyDateAndM18IdAndDeletedFalse(lastModifyDate: LocalDateTime, m18Id: Long): UomConversion?; fun findByUdfudescAndDeletedFalse(udfudesc: String): UomConversion?; diff --git a/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrderRepository.kt b/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrderRepository.kt index d1e894b..c4a864d 100644 --- a/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrderRepository.kt +++ b/src/main/java/com/ffii/fpsms/modules/pickOrder/entity/PickOrderRepository.kt @@ -93,6 +93,7 @@ interface PickOrderRepository : AbstractRepository { fun findAllByStatusAndAssignToIsNullAndDeletedFalse(status: PickOrderStatus): List //fun findAllByJoid(jobOrderId: Long): List fun findAllByJobOrder_Id(jobOrderId: Long): List +fun findAllByJobOrder_IdInAndDeletedFalseOrderByJobOrder_IdAscCreatedDesc(jobOrderIds: Collection): List fun findTopByJobOrder_IdOrderByCreatedDesc(jobOrderId: Long): PickOrder? fun findAllByStatusIn(statuses: List): List