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