餐盘柜优化-不绑定用户可多次取盘

This commit is contained in:
mazengfei
2026-01-16 16:45:13 +08:00
parent cf2d2db42f
commit 1b4762916a
5 changed files with 44 additions and 61 deletions
@@ -113,24 +113,14 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
if (scanInfo.length > 6) { if (scanInfo.length > 6) {
plateNumber = scanInfo.take(6) plateNumber = scanInfo.take(6)
} }
// ToastUtils.showToast(plateNumber) //柜子未关联该餐盘,直接找空位置放入盘子
var item = MyApp.plateList?.firstOrNull { it.plateNumber == plateNumber } val item = MyApp.plateList?.firstOrNull { it.plateNumber.isNullOrBlank() }
if (item == null) { if (item == null) {
//柜子未关联该餐盘,直接找空位置放入盘子 //柜子已满
item = MyApp.plateList?.firstOrNull { it.plateNumber.isNullOrBlank() } MainActivity.start(context = context, pageType = PageType.PLATE_CABINET_FULL)
if (item ==null) {
//柜子已满
MainActivity.start(context = context, pageType = PageType.PLATE_CABINET_FULL)
return
}
//找到位置,放入餐盘,清除已有id和时间
item.plateNumber = plateNumber
item.faceId = null
item.updateTime = null
PlateUtils.open(this, item.equipmentBoxCode, true)
return return
} }
//放入餐盘,清除已有id和时间 //找到位置,放入餐盘,清除已有id和时间
item.plateNumber = plateNumber item.plateNumber = plateNumber
item.faceId = null item.faceId = null
item.updateTime = null item.updateTime = null
@@ -270,7 +260,9 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
runOnUiThread { runOnUiThread {
hideWaitingDialog() hideWaitingDialog()
val view = View.inflate(this, R.layout.dialog_waiting, null) val view = View.inflate(this, R.layout.dialog_waiting, null)
if (!TextUtils.isEmpty(tip)) (view.findViewById<View?>(R.id.tvTip) as TextView).setText(tip) if (!TextUtils.isEmpty(tip)) (view.findViewById<View?>(R.id.tvTip) as TextView).setText(
tip
)
mDialogWaiting = CustomLoadingDialog(this, view, R.style.MyDialog) mDialogWaiting = CustomLoadingDialog(this, view, R.style.MyDialog)
mDialogWaiting!!.show() mDialogWaiting!!.show()
mDialogWaiting!!.setCancelable(true) mDialogWaiting!!.setCancelable(true)
@@ -210,14 +210,14 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
Timber.i("recognizeUserId observe userId = ${result?.faceEntity?.userName}") Timber.i("recognizeUserId observe userId = ${result?.faceEntity?.userName}")
currentUserId = result?.faceEntity?.userName currentUserId = result?.faceEntity?.userName
// viewModel.getUserInfoById(memberId = userId) // viewModel.getUserInfoById(memberId = userId)
//ToastUtils.showToast(userId) // ToastUtils.showToast(currentUserId)
// if (!currentUserId.isNullOrBlank()) { // if (!currentUserId.isNullOrBlank()) {
//// ToastUtils.showToast("您已采集过人脸信息") //// ToastUtils.showToast("您已采集过人脸信息")
// return@Observer // return@Observer
// } // }
if (currentPlateInfo?.faceId == currentUserId) { // if (currentPlateInfo?.faceId == currentUserId) {
return@Observer // return@Observer
} // }
openPlate(currentUserId) openPlate(currentUserId)
}) })
@@ -249,17 +249,8 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
Log.d(TAG, "openPlate: userId=$userId") Log.d(TAG, "openPlate: userId=$userId")
getPlateData { items -> getPlateData { items ->
Log.d(TAG, "openPlate: items:${Gson().toJson(items)}") Log.d(TAG, "openPlate: items:${Gson().toJson(items)}")
var item = items.firstOrNull { it.faceId == userId }
Log.d(TAG, "openPlate: item1:${item}")
if (item != null) {
//餐盘已取
ToastUtils.showToast("您已拿过餐盘!")
return@getPlateData
}
// 未查询到当前用户,查询第一个未绑定的餐盘 // 未查询到当前用户,查询第一个未绑定的餐盘
item = items.firstOrNull { val item = items.firstOrNull { it.plateNumber.isNullOrEmpty().not() }
it.plateNumber.isNullOrEmpty().not() && it.faceId.isNullOrBlank()
}
Log.d(TAG, "openPlate: item2:${item}") Log.d(TAG, "openPlate: item2:${item}")
if (item == null) { if (item == null) {
//暂无餐盘 //暂无餐盘
@@ -269,6 +260,7 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
Log.d(TAG, "openPlate: item3:${item}") Log.d(TAG, "openPlate: item3:${item}")
item.faceId = userId item.faceId = userId
item.updateTime = DateTimeUtils.getDateTimeString() item.updateTime = DateTimeUtils.getDateTimeString()
item.plateNumber = null
//打开柜子 //打开柜子
PlateUtils.open(this, item.equipmentBoxCode, false) PlateUtils.open(this, item.equipmentBoxCode, false)
@@ -548,7 +540,6 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
private fun pauseCamera() { private fun pauseCamera() {
isRecognition = false isRecognition = false
recognizeViewModel.onPreviewFrame(ByteArray(1382400), true) recognizeViewModel.onPreviewFrame(ByteArray(1382400), true)
} }
@@ -126,24 +126,24 @@ class SettingListFragment :
item: EquipmentUserInfo, item: EquipmentUserInfo,
position: Int position: Int
) { ) {
if (item.isPlaceholder()) { // if (item.isPlaceholder()) {
this.llRoot.isVisible = false // this.llRoot.isVisible = false
return // return
} // }
this.llRoot.isVisible = true this.llRoot.isVisible = true
this.tvNum.text = formatNumber(item.equipmentBoxCode ?: "") this.tvNum.text = formatNumber(item.equipmentBoxCode ?: "")
if (item.isBound()) { if (item.plateNumber.isNullOrBlank().not()) {
val date = DateTimeUtils.parseDateTime(item.updateTime) // val date = DateTimeUtils.parseDateTime(item.updateTime)
val timeInMillis = date?.time ?: 0L // val timeInMillis = date?.time ?: 0L
val isOldTime = DateTimeUtils.isMoreThanHoursFromNow(timeInMillis) // val isOldTime = DateTimeUtils.isMoreThanHoursFromNow(timeInMillis)
this.llRoot.setBackgroundResource(R.drawable.grid_item_bind) this.llRoot.setBackgroundResource(R.drawable.grid_item_bind)
this.tvNum.setTextColor(resources.getColor(R.color.bind_4E535D)) this.tvNum.setTextColor(resources.getColor(R.color.bind_4E535D))
this.tvLastTime.setTextColor( // this.tvLastTime.setTextColor(
if (isOldTime) resources.getColor(R.color.bind_time_old) else resources.getColor( // if (isOldTime) resources.getColor(R.color.bind_time_old) else resources.getColor(
R.color.bind_585868 // R.color.bind_585868
) // )
) // )
this.llOpen.setBackgroundResource(R.drawable.grid_button_bind) this.llOpen.setBackgroundResource(R.drawable.grid_button_bind)
this.tvOpen.setTextColor(resources.getColor(R.color.bind_FFCC99)) this.tvOpen.setTextColor(resources.getColor(R.color.bind_FFCC99))
this.llBindInfo.visibility = View.VISIBLE this.llBindInfo.visibility = View.VISIBLE
@@ -152,7 +152,7 @@ class SettingListFragment :
// this.tvName.text = item.name.maskName() // this.tvName.text = item.name.maskName()
this.tvName.text = item.plateNumber this.tvName.text = item.plateNumber
this.tvLastTime.text = DateTimeUtils.getTimeAgo(date) // this.tvLastTime.text = DateTimeUtils.getTimeAgo(date)
} else { } else {
this.llRoot.setBackgroundResource(R.drawable.grid_item_unbind) this.llRoot.setBackgroundResource(R.drawable.grid_item_unbind)
this.tvNum.setTextColor(resources.getColor(R.color.bind_FFCC99)) this.tvNum.setTextColor(resources.getColor(R.color.bind_FFCC99))
@@ -160,7 +160,7 @@ class SettingListFragment :
this.tvOpen.setTextColor(resources.getColor(R.color.unbind_32283C)) this.tvOpen.setTextColor(resources.getColor(R.color.unbind_32283C))
this.llBindInfo.visibility = View.GONE this.llBindInfo.visibility = View.GONE
this.tvUnbind.visibility = View.VISIBLE this.tvUnbind.visibility = View.VISIBLE
this.tvUnbind.text = if (item.plateNumber.isNullOrBlank()) "未绑定" else "未绑定(${item.plateNumber})" // this.tvUnbind.text = "未绑定"
} }
// this.llRoot.setOnClickListener { // this.llRoot.setOnClickListener {
//// Timber.d("itemClick llRoot ${item.name}, position = $position") //// Timber.d("itemClick llRoot ${item.name}, position = $position")
@@ -66,12 +66,12 @@ data class EquipmentUserInfo(
// var isIntercept: Boolean = false // var isIntercept: Boolean = false
) : Parcelable { ) : Parcelable {
/** // /**
* 是否已绑定 // * 是否已绑定
*/ // */
fun isBound(): Boolean { // fun isBound(): Boolean {
return faceId.isNullOrBlank().not() // return faceId.isNullOrBlank().not()
} // }
// /** // /**
// * 是否是其他设备 // * 是否是其他设备
@@ -80,11 +80,11 @@ data class EquipmentUserInfo(
// return equipmentCode != null && equipmentCode != "" && GlobalData.globalEquipmentCode != equipmentCode // return equipmentCode != null && equipmentCode != "" && GlobalData.globalEquipmentCode != equipmentCode
// } // }
fun hasEquipmentBox(): Boolean { // fun hasEquipmentBox(): Boolean {
return !TextUtils.isEmpty(equipmentBoxCode) // return !TextUtils.isEmpty(equipmentBoxCode)
} // }
//
fun isPlaceholder(): Boolean { // fun isPlaceholder(): Boolean {
return equipmentBoxCode.isNullOrBlank() // return equipmentBoxCode.isNullOrBlank()
} // }
} }
+2 -2
View File
@@ -50,7 +50,6 @@
android:textStyle="bold" android:textStyle="bold"
tools:text="马*飞(8000)" /> tools:text="马*飞(8000)" />
<TextView <TextView
android:id="@+id/tv_last_time" android:id="@+id/tv_last_time"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -59,7 +58,8 @@
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="9小时前使用" android:text="9小时前使用"
android:textColor="#585868" android:textColor="#585868"
android:textSize="14sp" /> android:textSize="14sp"
android:visibility="gone"/>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout