refactor(ReviewActivity): 优化提交流程的时间间隔控制逻辑

- 添加常量 PUSH_TO_NEXT_MIN_INTERVAL_MS 定义最小间隔时间为 1100 毫秒
- 将 firstPushToNextAt 重命名为 firstPushToNextSuccessAt 并初始化为 0L
- 在成功响应后记录首次推送成功时间戳
- 使用新的成功时间戳计算延迟间隔
- 将硬编码的 600 毫秒替换为常量 PUSH_TO_NEXT_MIN_INTERVAL_MS
这个提交包含在:
徐勤民 2026-04-20 16:46:10 +08:00
父节点 97394226fb
当前提交 292a4352ac

查看文件

@ -29,6 +29,10 @@ import io.reactivex.schedulers.Schedulers
import java.util.concurrent.TimeUnit
class ReviewActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM, ActivityReviewBinding>() {
private companion object {
const val PUSH_TO_NEXT_MIN_INTERVAL_MS = 1100L
}
override fun getLayoutId(): Int = R.layout.activity_review
override fun fullscreen(): Boolean = true
@ -101,7 +105,7 @@ class ReviewActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM, Ac
isSubmitting = true
submitDisposable?.dispose()
val service = HttpManager.getApi(Service::class.java)
val firstPushToNextAt = System.currentTimeMillis()
var firstPushToNextSuccessAt = 0L
submitDisposable = service.pushToNext(
PushToNextRequest(
workProcessInstanceId = workProcessInstanceId,
@ -115,6 +119,7 @@ class ReviewActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM, Ac
IllegalStateException(if (response.msg.isBlank()) "同意失败" else response.msg)
)
}
firstPushToNextSuccessAt = System.currentTimeMillis()
val needHandlerActivityIds = response.data.result.orEmpty().mapNotNull { it.activityId }.distinct()
if (needHandlerActivityIds.isEmpty()) {
Observable.just(emptyList())
@ -136,8 +141,8 @@ class ReviewActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM, Ac
}
}
}.flatMap { selectedHandler ->
val elapsed = System.currentTimeMillis() - firstPushToNextAt
val remainingDelayMs = (600L - elapsed).coerceAtLeast(0L)
val elapsed = System.currentTimeMillis() - firstPushToNextSuccessAt
val remainingDelayMs = (PUSH_TO_NEXT_MIN_INTERVAL_MS - elapsed).coerceAtLeast(0L)
Observable.timer(remainingDelayMs, TimeUnit.MILLISECONDS)
.flatMap {
service.pushToNext(