打开app不再清除本地数据,不再发送数据到结算终端,改为新增人脸采集接口,全量增量接口优化

This commit is contained in:
2026-02-03 14:59:22 +08:00
parent c5325f6ad6
commit 9fea23303c
23 changed files with 857 additions and 363 deletions
@@ -1,6 +1,5 @@
package com.sw.platecabinet.activity
import android.app.Dialog
import android.content.Context
import android.os.Build
import android.os.Bundle
@@ -15,23 +14,19 @@ import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowCompat
import androidx.lifecycle.lifecycleScope
import androidx.viewbinding.ViewBinding
import com.google.gson.Gson
import com.sw.inbound.utils.DateTimeUtils
import com.sw.plate.App
import com.sw.plate.utils.Base64
import com.sw.plate.utils.ScanGunKeyEventHelper
import com.sw.plate.utils.ToastUtils
import com.sw.plate.utils.arcface.facedb.FaceDatabase
import com.sw.plate.utils.arcface.facedb.entity.FaceEntity
import com.sw.plate.utils.arcface.viewmodel.RecognizeViewModel
import com.sw.plate.utils.comn.SerialApi
import com.sw.plate.utils.comn.SerialPortManager
import com.sw.platecabinet.MyApp
import com.sw.platecabinet.R
import com.sw.platecabinet.databinding.ItemTitleTimeBinding
import com.sw.platecabinet.dialog.BalanceNotEnoughDialog
import com.sw.platecabinet.ext.setClickListeners
import com.sw.platecabinet.ext.clickWithCoroutines
import com.sw.platecabinet.model.response.EquipmentUserInfo
import com.sw.platecabinet.model.response.UserFaceModel
import com.sw.platecabinet.utils.IntervalExecutor
@@ -60,10 +55,10 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
protected var keyEventHelper: ScanGunKeyEventHelper? = null
// 管理员对应的viewmodel
private val settingViewModel by viewModels<SettingViewModel>()
val settingViewModel by viewModels<SettingViewModel>()
// 用户对应的viewModel
protected val viewModel by viewModels<UserViewModel>()
protected val userViewModel by viewModels<UserViewModel>()
private var startTime: Long = 0
@@ -88,8 +83,6 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
registerKeyEvent()
val durationTime = System.currentTimeMillis() - startTime
Timber.d("启动时间:$durationTime")
startFaceTask()
}
/**
@@ -115,7 +108,7 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
if (scanInfo.length > 6) {
plateNumber = scanInfo.take(6)
}
Log.d("TAG", "handleScanKeyInfo: "+ Gson().toJson(MyApp.plateList))
Log.d("TAG", "handleScanKeyInfo: " + Gson().toJson(MyApp.plateList))
if (MyApp.plateList == null) {
initPlateList()
}
@@ -146,12 +139,12 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
fun updateTime() {
headerBinding?.let {
it.tvLeftDate.setClickListeners(
it.tvLeftDate.clickWithCoroutines(
onDoubleClick = {
onLeftDoubleClick()
}
)
it.tvRightTime.setClickListeners(
it.tvRightTime.clickWithCoroutines(
onDoubleClick = {
onRightDoubleClick()
}
@@ -426,7 +419,6 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
// private val dealyMillis = 10 * 60 * 1000L
private val initialDelay = 5 * 60 * 1000L
private val dealyMillis = 5 * 60 * 1000L
private var taskPageNo = 1
fun startFaceTask() {
faceTaskJob =
intervalExecutor.startIntervalTaskWithInitialDelay(initialDelay, dealyMillis) {
@@ -435,28 +427,28 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
}
private var faceTimestamp = 0L
private fun getFaceIncrementList() {
//private var taskPageNo = 1
private fun getFaceIncrementList(pageNo: Int = 1) {
val timestamp = SpTool.lastFaceTimestamp
if (timestamp == 0L) {
return
}
settingViewModel.getFaceIncrementList(
pageNo = taskPageNo,
pageNo = pageNo,
timestamp = timestamp
) { list ->
runOnUiThread {
if (taskPageNo == 1 && list.isEmpty()) {
if (pageNo == 1 && list.isEmpty()) {
//未查询到增量数据
return@runOnUiThread
}
updateFaceData(list)
if (list.size >= settingViewModel.PAGE_SIZE) {
faceTimestamp = list.last().faceUpdateTimestamp ?: 0
taskPageNo++
getFaceIncrementList()
return@runOnUiThread
}
//if (list.size >= settingViewModel.PAGE_SIZE) {
// faceTimestamp = list.last().faceUpdateTimestamp ?: 0
// taskPageNo++
// getFaceIncrementList(taskPageNo)
// return@runOnUiThread
//}
if (list.isNotEmpty()) {
faceTimestamp = list.last().faceUpdateTimestamp ?: 0
}
@@ -481,7 +473,8 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
null,
Base64.decode(model.faceFeatureStr)
).also {
it.userType = "1"
//1-会员、2-临时用户
it.userType = if (model.isMember) "1" else "2"
}
faceList.add(faceEntity)
}
@@ -512,4 +505,13 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
MyApp.plateList = list
}
fun clearAllFace(block: () -> Unit) {
Thread {
val faceDao = FaceDatabase.getInstance(App.getContext()).faceDao()
faceDao.deleteAll()
faceDao.resetId()
runOnUiThread { block() }
}.start()
}
}