|
|
|
@@ -433,6 +433,7 @@ open class StockTakeRecordService( |
|
|
|
|
|
|
|
val result = mutableListOf<AllPickedStockTakeListReponse>() |
|
|
|
var idCounter = 1L |
|
|
|
val globalLatestRoundKey = resolveGlobalLatestStockTakeRoundKey() |
|
|
|
|
|
|
|
// 3. 为每个 stockTakeSection 创建一个卡片 |
|
|
|
distinctSections.forEach { stockTakeSection -> |
|
|
|
@@ -455,8 +456,10 @@ open class StockTakeRecordService( |
|
|
|
val lastStockTakeDate = completedStockTakes.firstOrNull()?.actualEnd |
|
|
|
|
|
|
|
|
|
|
|
val latestStockTake = stockTakesForSection |
|
|
|
.maxByOrNull { it.actualStart ?: it.planStart ?: LocalDateTime.MIN } |
|
|
|
val latestStockTake = resolveLatestStockTakeForSection( |
|
|
|
stockTakesForSection, |
|
|
|
globalLatestRoundKey |
|
|
|
) |
|
|
|
|
|
|
|
val status = if (latestStockTake != null) { |
|
|
|
latestStockTake.status?.value ?: "pending" |
|
|
|
@@ -575,6 +578,31 @@ open class StockTakeRecordService( |
|
|
|
return result.sortedBy { it.stockTakeSession } |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 區域內用於卡片展示的 stock_take:若該區域參與全系統最新輪次,優先取該輪次內最新一筆; |
|
|
|
* 否則退回區域內 planStart/actualStart 最新一筆(供未開 onlyLatestRound 時顯示舊輪)。 |
|
|
|
*/ |
|
|
|
private fun resolveLatestStockTakeForSection( |
|
|
|
stockTakesForSection: List<StockTake>, |
|
|
|
globalLatestRoundKey: Long? |
|
|
|
): StockTake? { |
|
|
|
if (stockTakesForSection.isEmpty()) return null |
|
|
|
val byActivity = compareBy<StockTake> { |
|
|
|
it.actualStart ?: it.planStart ?: LocalDateTime.MIN |
|
|
|
}.thenBy { it.id ?: 0L } |
|
|
|
|
|
|
|
return if (globalLatestRoundKey != null && globalLatestRoundKey > 0L) { |
|
|
|
val inGlobalRound = stockTakesForSection.filter { st -> |
|
|
|
val rk = st.stockTakeRoundId ?: st.id |
|
|
|
rk == globalLatestRoundKey |
|
|
|
} |
|
|
|
inGlobalRound.maxWithOrNull(byActivity) |
|
|
|
?: stockTakesForSection.maxWithOrNull(byActivity) |
|
|
|
} else { |
|
|
|
stockTakesForSection.maxWithOrNull(byActivity) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 全系統最新盤點輪次 id(MAX(stockTakeRoundId));舊資料無 roundId 時退回 planStart 最新一筆。 |
|
|
|
*/ |
|
|
|
|