CANCERYS\kw093 12 часов назад
Родитель
Сommit
338f2a6d00
5 измененных файлов: 36 добавлений и 31 удалений
  1. +6
    -6
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoPickOrderQueryService.kt
  2. +2
    -2
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoPickOrderService.kt
  3. +2
    -2
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt
  4. +21
    -21
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt
  5. +5
    -0
      src/main/resources/db/changelog/changes/20260408_01_Enson/04_create_index.sql

+ 6
- 6
src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoPickOrderQueryService.kt Просмотреть файл

@@ -21,7 +21,7 @@ class DoPickOrderQueryService(
fun getSummaryByStore(storeId: String, requiredDate: LocalDate?, releaseType: String): StoreLaneSummary {
val targetDate = requiredDate ?: LocalDate.now()
println(" DEBUG: Getting summary for store=$storeId, date=$targetDate, releaseType=$releaseType")
//println(" DEBUG: Getting summary for store=$storeId, date=$targetDate, releaseType=$releaseType")
val actualStoreId = when (storeId) {
"2/F" -> "2/F"
@@ -57,10 +57,10 @@ class DoPickOrderQueryService(
else -> completedRecords // "all" 或其他值,不过滤
}
println(" DEBUG: Found ${activeRecords.size} active records for date $targetDate")
println(" DEBUG: After releaseType filter: ${filteredActiveRecordsByReleaseType.size} active records")
println(" DEBUG: Found ${completedRecords.size} completed records for date $targetDate")
println(" DEBUG: After releaseType filter: ${filteredCompletedRecordsByReleaseType.size} completed records")
//println(" DEBUG: Found ${activeRecords.size} active records for date $targetDate")
// println(" DEBUG: After releaseType filter: ${filteredActiveRecordsByReleaseType.size} active records")
//println(" DEBUG: Found ${completedRecords.size} completed records for date $targetDate")
//println(" DEBUG: After releaseType filter: ${filteredCompletedRecordsByReleaseType.size} completed records")
// Filter active records (check for non-issue lines)
val filteredActiveRecords = filteredActiveRecordsByReleaseType.filter { doPickOrder ->
@@ -98,7 +98,7 @@ class DoPickOrderQueryService(
val defaultTruckId = 5577L
val defaultTruck = truckRepository.findById(defaultTruckId).orElse(null)
val defaultTruckLaneCode = defaultTruck?.truckLanceCode ?: ""
println(" DEBUG: After filtering, ${allRecords.size} records remain (${filteredActiveRecords.size} active + ${filteredCompletedRecords.size} completed)")
//println(" DEBUG: After filtering, ${allRecords.size} records remain (${filteredActiveRecords.size} active + ${filteredCompletedRecords.size} completed)")
val grouped = allRecords.groupBy { it.truckDepartureTime to it.truckLanceCode }
.mapValues { (_, list) ->


+ 2
- 2
src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoPickOrderService.kt Просмотреть файл

@@ -503,7 +503,7 @@ open class DoPickOrderService(
// 3. 只有当所有 lines 都是 "issue" 状态时才过滤掉
val hasNonIssueLines = nonIssueLines > 0
println(" DEBUG: DoPickOrder $doPickOrderId - Total lines: $totalLines, Non-issue lines: $nonIssueLines, Has non-issue lines: $hasNonIssueLines")
// println(" DEBUG: DoPickOrder $doPickOrderId - Total lines: $totalLines, Non-issue lines: $nonIssueLines, Has non-issue lines: $hasNonIssueLines")
return hasNonIssueLines
@@ -553,7 +553,7 @@ open class DoPickOrderService(
// 关键修改:获取这个 do_pick_order 下的所有 pick orders 并分配给用户
val doPickOrderLines = doPickOrderLineRepository.findByDoPickOrderIdAndDeletedFalse(firstOrder.id!!)
println(" DEBUG: Found ${doPickOrderLines.size} pick orders in do_pick_order ${firstOrder.id}")
//println(" DEBUG: Found ${doPickOrderLines.size} pick orders in do_pick_order ${firstOrder.id}")
doPickOrderLines.forEach { line ->
if (line.pickOrderId != null) {


+ 2
- 2
src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt Просмотреть файл

@@ -1535,7 +1535,7 @@ open fun getCompletedJobOrderPickOrderLotDetails(pickOrderId: Long): List<Map<St
il.lotNo ASC
""".trimIndent()
println(" Executing SQL for Job Order pick order lot details: $sql")
// println(" Executing SQL for Job Order pick order lot details: $sql")
println(" With parameters: pickOrderId = $pickOrderId")
val results = jdbcDao.queryForList(sql, mapOf("pickOrderId" to pickOrderId))
@@ -1750,7 +1750,7 @@ open fun getCompletedJobOrderPickOrderLotDetailsForCompletedPick(pickOrderId: Lo
il.lotNo ASC
""".trimIndent()
println(" Executing SQL for completed pick order lot details: $sql")
// println(" Executing SQL for completed pick order lot details: $sql")
println(" With parameters: pickOrderId = $pickOrderId")
val results = jdbcDao.queryForList(sql, mapOf("pickOrderId" to pickOrderId))


+ 21
- 21
src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt Просмотреть файл

@@ -2276,7 +2276,7 @@ open class PickOrderService(
i.code ASC
""".trimIndent()

println(" Executing optimized SQL: $sql")
// println(" Executing optimized SQL: $sql")

val result = jdbcDao.queryForList(sql, emptyMap<String, Any>())

@@ -2790,7 +2790,7 @@ open class PickOrderService(
il.lotNo ASC
""".trimIndent()

println(" Executing SQL for all pick order lots with details: $sql")
//println(" Executing SQL for all pick order lots with details: $sql")
println(" With parameters: userId = $userId, pickOrderIds = $pickOrderIdsStr")

val results = jdbcDao.queryForList(sql, mapOf("userId" to userId))
@@ -2818,7 +2818,7 @@ open class PickOrderService(
it.status?.value in listOf("assigned", "released", "picking")
}

println(" Found ${pickOrders.size} FG pick orders using repository")
//println(" Found ${pickOrders.size} FG pick orders using repository")

val results = pickOrders.map { po ->
val deliveryOrder = po.deliveryOrder
@@ -2925,17 +2925,17 @@ open class PickOrderService(
ORDER BY MIN(po.targetDate) DESC, MIN(po.code) ASC
""".trimIndent()

println(" Executing SQL for FG pick orders by userId: $sql")
println(" With parameters: userId = $userId")
// println(" Executing SQL for FG pick orders by userId: $sql")
// println(" With parameters: userId = $userId")

val results = jdbcDao.queryForList(sql, mapOf("userId" to userId))

if (results.isEmpty()) {
println("❌ No active FG pick orders found for user: $userId")
// println("❌ No active FG pick orders found for user: $userId")
return emptyList()
}

println(" Found ${results.size} active FG pick orders for user: $userId")
// println(" Found ${results.size} active FG pick orders for user: $userId")

// 添加调试信息
results.forEachIndexed { index, row ->
@@ -3436,7 +3436,7 @@ ORDER BY
il.lotNo ASC
""".trimIndent()

println(" Executing SQL for all pick order lots with details (no auto-assign): $sql")
//println(" Executing SQL for all pick order lots with details (no auto-assign): $sql")
println(" With parameters: userId = $userId, pickOrderIds = $pickOrderIdsStr")

val results = jdbcDao.queryForList(sql, mapOf("userId" to userId))
@@ -4252,7 +4252,7 @@ open fun getAllPickOrderLotsWithDetailsHierarchical(userId: Long): Map<String, A
ORDER BY orderDate ASC
""".trimIndent()

println(" Executing SQL: $sql")
//println(" Executing SQL: $sql")
println(" With parameters: storeId = $storeId")

val results = jdbcDao.queryForList(sql, mapOf("storeId" to storeId))
@@ -4741,7 +4741,7 @@ open fun getAllPickOrderLotsWithDetailsHierarchical(userId: Long): Map<String, A
)
}
} catch (e: Exception) {
println("❌ Error in mapCompletedDoPickOrders: ${e.message}")
//println("❌ Error in mapCompletedDoPickOrders: ${e.message}")
e.printStackTrace()
emptyList()
}
@@ -4774,8 +4774,8 @@ open fun getAllPickOrderLotsWithDetailsHierarchical(userId: Long): Map<String, A
}
open fun getLotDetailsByDoPickOrderRecordId3(doPickOrderRecordId: Long): LotDetailsByDoPickOrderRecordResponse {
println("=== Debug: getLotDetailsByDoPickOrderRecordId3 (Repository-based) ===")
println("doPickOrderRecordId: $doPickOrderRecordId")
// println("=== Debug: getLotDetailsByDoPickOrderRecordId3 (Repository-based) ===")
//println("doPickOrderRecordId: $doPickOrderRecordId")
val zero = BigDecimal.ZERO
val today = LocalDate.now()
@@ -4787,7 +4787,7 @@ open fun getAllPickOrderLotsWithDetailsHierarchical(userId: Long): Map<String, A
pickOrders = emptyList()
)
println(" Found DoPickOrderRecord: id=${dpor.id}, ticketNo=${dpor.ticketNo}")
//println(" Found DoPickOrderRecord: id=${dpor.id}, ticketNo=${dpor.ticketNo}")
// 2) 构建 fgInfo
val fgInfo = FgInfoResponse(
@@ -4802,39 +4802,39 @@ open fun getAllPickOrderLotsWithDetailsHierarchical(userId: Long): Map<String, A
// 3) 通过 DoPickOrderLineRecord 获取 pickOrderIds
val lineRecords = doPickOrderLineRecordRepository.findByDoPickOrderIdAndDeletedFalse(dpor.recordId!!)
println(" Found ${lineRecords.size} DoPickOrderLineRecord records")
// println(" Found ${lineRecords.size} DoPickOrderLineRecord records")
var pickOrderIds = lineRecords.mapNotNull { it.pickOrderId }.distinct()
// 备用方案:如果 lineRecords 中没有 pickOrderId,尝试使用 DoPickOrderRecord.pickOrderId
if (pickOrderIds.isEmpty() && dpor.pickOrderId != null) {
println(" WARNING: No pickOrderIds in lineRecords, using DoPickOrderRecord.pickOrderId=${dpor.pickOrderId}")
// println(" WARNING: No pickOrderIds in lineRecords, using DoPickOrderRecord.pickOrderId=${dpor.pickOrderId}")
pickOrderIds = listOf(dpor.pickOrderId!!)
}
if (pickOrderIds.isEmpty()) {
println("❌ ERROR: No pickOrderIds found for doPickOrderRecordId=$doPickOrderRecordId")
//println("❌ ERROR: No pickOrderIds found for doPickOrderRecordId=$doPickOrderRecordId")
return LotDetailsByDoPickOrderRecordResponse(
fgInfo = fgInfo,
pickOrders = emptyList()
)
}
println(" Using pickOrderIds: $pickOrderIds")
// println(" Using pickOrderIds: $pickOrderIds")
// 4) 批量加载所有相关数据
val pickOrders = pickOrderRepository.findAllById(pickOrderIds)
.filter { !it.deleted }
if (pickOrders.isEmpty()) {
println("❌ ERROR: No pick orders found for ids: $pickOrderIds")
// println("❌ ERROR: No pick orders found for ids: $pickOrderIds")
return LotDetailsByDoPickOrderRecordResponse(
fgInfo = fgInfo,
pickOrders = emptyList()
)
}
println(" Found ${pickOrders.size} pick orders")
// println(" Found ${pickOrders.size} pick orders")
// 5) 收集所有 pickOrderLineIds
val allPickOrderLineIds = pickOrders
@@ -4842,7 +4842,7 @@ open fun getAllPickOrderLotsWithDetailsHierarchical(userId: Long): Map<String, A
.filter { !it.deleted }
.mapNotNull { it.id }
println(" Found ${allPickOrderLineIds.size} pick order lines")
// println(" Found ${allPickOrderLineIds.size} pick order lines")
// 6) 批量加载 suggestions 和 stock out lines
val allSuggestions = if (allPickOrderLineIds.isNotEmpty()) {
@@ -5054,7 +5054,7 @@ open fun getAllPickOrderLotsWithDetailsHierarchical(userId: Long): Map<String, A
)
}
println("✅ Successfully built response with ${pickOrderDtos.size} pick orders")
//println("✅ Successfully built response with ${pickOrderDtos.size} pick orders")
return LotDetailsByDoPickOrderRecordResponse(
fgInfo = fgInfo,


+ 5
- 0
src/main/resources/db/changelog/changes/20260408_01_Enson/04_create_index.sql Просмотреть файл

@@ -0,0 +1,5 @@
-- liquibase formatted sql
-- changeset Enson:create_index_20260408

CREATE INDEX idx_inventory_lot_lotNo_itemId_deleted
ON fpsmsdb.inventory_lot (lotNo, itemId, deleted);

Загрузка…
Отмена
Сохранить