diff --git a/src/main/java/com/ffii/fpsms/config/security/SecurityConfig.java b/src/main/java/com/ffii/fpsms/config/security/SecurityConfig.java index 5ce0bc9..842f330 100644 --- a/src/main/java/com/ffii/fpsms/config/security/SecurityConfig.java +++ b/src/main/java/com/ffii/fpsms/config/security/SecurityConfig.java @@ -74,7 +74,11 @@ public class SecurityConfig { return new BCryptPasswordEncoder(); } - /** FP-MTMS Version Checklist | Functions Ref. No. 51 | v1.0.0 | 2026-08-05 */ + /** + * FP-MTMS Version Checklist | Functions Ref. No. 51 | v1.0.0 | 2026-08-05 + * FP-MTMS Version Checklist | Functions Ref. No. 3 | v1.0.5 | 2026-08-05 + * (stockAdjustment/submit → INVENTORY_ADJUST only) + */ @Bean @Order(1) public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { @@ -113,7 +117,7 @@ public class SecurityConfig { .requestMatchers(HttpMethod.GET, "/label-printer-monitor/odometer-stats") .hasAnyAuthority("TESTING", "ADMIN") .requestMatchers(HttpMethod.POST, "/stockAdjustment/submit") - .hasAnyAuthority("ADMIN", "INVENTORY_ADJUST") + .hasAuthority("INVENTORY_ADJUST") .requestMatchers(HttpMethod.GET, "/inventoryLotLine/trace") .hasAuthority("ITEM_TRACING") .requestMatchers(HttpMethod.GET, "/inventoryLotLine/trace/location/**") diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotLineRepository.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotLineRepository.kt index a7bb2a4..b2b190f 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotLineRepository.kt +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotLineRepository.kt @@ -196,19 +196,23 @@ WHERE ill.id = :id fun findAllByWarehouseCodeAndDeletedIsFalse(@Param("warehouseCode") warehouseCode: String): List + /** FP-MTMS Version Checklist | Functions Ref. No. 53 | v1.0.0 | 2026-08-05 — 卡片「貨品種類數量」:僅 available,與明細 fallback / 預建來源一致 */ @Query(""" SELECT COUNT(DISTINCT ill.inventoryLot.item.id) FROM InventoryLotLine ill WHERE ill.warehouse.id IN :warehouseIds AND ill.deleted = false + AND ill.status = 'available' """) fun countDistinctItemsByWarehouseIds(@Param("warehouseIds") warehouseIds: List): Long + /** FP-MTMS Version Checklist | Functions Ref. No. 53 | v1.0.0 | 2026-08-05 — 卡片 lot 筆數:僅 available */ @Query(""" SELECT COUNT(ill.id) FROM InventoryLotLine ill WHERE ill.warehouse.id IN :warehouseIds AND ill.deleted = false + AND ill.status = 'available' """) fun countAllByWarehouseIds(@Param("warehouseIds") warehouseIds: List): Long