diff --git a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoPickOrderService.kt b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoPickOrderService.kt index c77b676..5a8c379 100644 --- a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoPickOrderService.kt +++ b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoPickOrderService.kt @@ -927,29 +927,34 @@ open class DoPickOrderService( return allPickOrderLines.size } open fun findReleasedDoPickOrdersForSelection( - shopName: String?, - storeId: String?, - truck: String? -): List { - val doPickOrders = doPickOrderRepository.findByTicketStatusIn( - listOf(DoPickOrderStatus.released, DoPickOrderStatus.pending) - ) + shopName: String?, + storeId: String?, + truck: String? + ): List { - var filtered = doPickOrders + val today = LocalDate.now() - if (!storeId.isNullOrBlank()) { - filtered = filtered.filter { it.storeId == storeId } - } - if (!shopName.isNullOrBlank()) { - filtered = filtered.filter { - it.shopName?.contains(shopName, ignoreCase = true) == true || - it.shopCode?.contains(shopName, ignoreCase = true) == true + var filtered = doPickOrderRepository.findByTicketStatusIn( + listOf(DoPickOrderStatus.released, DoPickOrderStatus.pending) + ) + + if (!storeId.isNullOrBlank()) { + filtered = filtered.filter { it.storeId == storeId } + } + if (!shopName.isNullOrBlank()) { + filtered = filtered.filter { + it.shopName?.contains(shopName, ignoreCase = true) == true || + it.shopCode?.contains(shopName, ignoreCase = true) == true + } + } + if (!truck.isNullOrBlank()) { + filtered = filtered.filter { it.truckLanceCode == truck } + } + filtered = filtered.filter { dpo -> + dpo.requiredDeliveryDate + ?.isBefore(today) + ?: false } - } - if (!truck.isNullOrBlank()) { - filtered = filtered.filter { it.truckLanceCode == truck } - } - return filtered.map { dpo -> val lines = doPickOrderLineRepository.findByDoPickOrderIdAndDeletedFalse(dpo.id!!) val deliveryOrderCodes = lines diff --git a/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt b/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt index 770f052..7b682bc 100644 --- a/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt +++ b/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt @@ -3877,20 +3877,21 @@ println("DEBUG sol polIds in linesResults: " + linesResults.mapNotNull { it["sto // stockouts:包含所有出库行(即使 lot 为空) val stockouts = lineRows .filter { it["stockOutLineId_any"] != null } + .distinctBy { row -> + Pair(row["stockOutLineId_any"], row["lotId_any"]) + } .map { row -> val noLot = (row["lotId_any"] == null) mapOf( "id" to row["stockOutLineId_any"], "status" to row["stockOutLineStatus_any"], "qty" to row["stockOutLineQty_any"], - "lotId" to row["lotId_any"], // 可能为 null - "lotNo" to (row["lotNo_any"] ?: ""), // 用 *_any - "location" to (row["location_any"] ?: ""), // 用 *_any - "availableQty" to row["availableQty_any"], // 用 *_any + "lotId" to row["lotId_any"], + "lotNo" to (row["lotNo_any"] ?: ""), + "location" to (row["location_any"] ?: ""), + "availableQty" to row["availableQty_any"], "noLot" to noLot ) - //println("DEBUG sol_any stockOutLineId: " + row["stockOutLineId_any"]) - //println("DEBUG sol_any pickOrderLineId: " + row["pickOrderLineId"]) } mapOf(