Procházet zdrojové kódy

update expiry search

stable1
CANCERYS\kw093 před 2 týdny
rodič
revize
505f448365
3 změnil soubory, kde provedl 45 přidání a 9 odebrání
  1. +13
    -2
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickExecutionIssueService.kt
  2. +12
    -2
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickExecutionIssueController.kt
  3. +20
    -5
      src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotLineRepository.kt

+ 13
- 2
src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickExecutionIssueService.kt Zobrazit soubor

@@ -1811,9 +1811,20 @@ open fun getBadItemOnlyList(): List<PickExecutionIssue> {
return pickExecutionIssueRepository.findBadItemOnlyList(IssueCategory.lot_issue)
}

open fun getExpiryItemList(): List<ExpiryItemResponse> {
open fun getExpiryItemList(
expiryDate: LocalDate? = null,
itemCode: String? = null,
itemName: String? = null,
): List<ExpiryItemResponse> {
val today = LocalDate.now()
val lotLines = inventoryLotLineRepository.findExpiredItems(today)
val normalizedItemCode = itemCode?.trim()?.takeIf { it.isNotEmpty() }
val normalizedItemName = itemName?.trim()?.takeIf { it.isNotEmpty() }
val lotLines = inventoryLotLineRepository.findExpiredItems(
today = today,
expiryDate = expiryDate,
itemCode = normalizedItemCode,
itemName = normalizedItemName,
)
return lotLines.map { lotLine ->
val lot = lotLine.inventoryLot


+ 12
- 2
src/main/java/com/ffii/fpsms/modules/pickOrder/web/PickExecutionIssueController.kt Zobrazit soubor

@@ -6,7 +6,9 @@ import com.ffii.fpsms.modules.pickOrder.entity.PickExecutionIssue
import com.ffii.fpsms.modules.pickOrder.enums.PickExecutionIssueEnum
import com.ffii.fpsms.modules.pickOrder.service.PickExecutionIssueService // 修复导入路径
import com.ffii.fpsms.modules.pickOrder.web.models.*
import org.springframework.format.annotation.DateTimeFormat
import org.springframework.web.bind.annotation.*
import java.time.LocalDate


@RestController
@@ -65,8 +67,16 @@ class PickExecutionIssueController(
}

@GetMapping("/issues/expiryItem")
fun getExpiryItemIssues(): List<ExpiryItemResponse> {
return pickExecutionIssueService.getExpiryItemList()
fun getExpiryItemIssues(
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) expiryDate: LocalDate?,
@RequestParam(required = false) itemCode: String?,
@RequestParam(required = false) itemName: String?,
): List<ExpiryItemResponse> {
return pickExecutionIssueService.getExpiryItemList(
expiryDate = expiryDate,
itemCode = itemCode,
itemName = itemName,
)
}

@PostMapping("/submitMissItem")


+ 20
- 5
src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotLineRepository.kt Zobrazit soubor

@@ -25,7 +25,7 @@ interface InventoryLotLineRepository : AbstractRepository<InventoryLotLine, Long
* - Recomputes [InventoryLotLine.status] in SQL (same rules as [InventoryLotLineService.deriveInventoryLotLineStatus]).
* - Bumps version in SQL so no stale JPA save is needed on this row afterward.
*/
/*
@Modifying(clearAutomatically = true, flushAutomatically = true)
@Transactional
@Query(
@@ -52,7 +52,7 @@ interface InventoryLotLineRepository : AbstractRepository<InventoryLotLine, Long
@Param("delta") delta: BigDecimal,
@Param("expectedVersion") expectedVersion: Int,
): Int
*/
fun findByIdAndDeletedIsFalse(id: Serializable): InventoryLotLine;

fun findInventoryLotLineInfoByInventoryLotItemIdIn(ids: List<Serializable>): List<InventoryLotLineInfo>
@@ -172,15 +172,30 @@ interface InventoryLotLineRepository : AbstractRepository<InventoryLotLine, Long
""")
fun countAllByWarehouseIds(@Param("warehouseIds") warehouseIds: List<Long>): Long

@EntityGraph(
type = EntityGraph.EntityGraphType.FETCH,
attributePaths = ["inventoryLot", "inventoryLot.item", "warehouse"]
)
@Query("""
SELECT ill FROM InventoryLotLine ill
JOIN ill.inventoryLot il
JOIN il.item i
WHERE il.expiryDate < :today
AND coalesce(ill.inQty, 0) <> coalesce(ill.outQty, 0)
AND ill.deleted = false
AND (:expiryDate IS NULL OR il.expiryDate = :expiryDate)
AND (:itemCode IS NULL OR LOWER(i.code) LIKE LOWER(CONCAT('%', :itemCode, '%')))
AND (:itemName IS NULL OR LOWER(i.name) LIKE LOWER(CONCAT('%', :itemName, '%')))
AND coalesce(ill.inQty, 0) <> coalesce(ill.outQty, 0)
AND ill.deleted = false
AND il.deleted = false
AND i.deleted = false
ORDER BY il.expiryDate ASC
""")
fun findExpiredItems(@Param("today") today: LocalDate): List<InventoryLotLine>
fun findExpiredItems(
@Param("today") today: LocalDate,
@Param("expiryDate") expiryDate: LocalDate?,
@Param("itemCode") itemCode: String?,
@Param("itemName") itemName: String?,
): List<InventoryLotLine>

/**
* Same business key as transfer merge target lookup; restricted to [status] (e.g. AVAILABLE).


Načítá se…
Zrušit
Uložit