This commit is contained in:
mazengfei
2026-01-30 16:38:42 +08:00
parent efcf3d436b
commit 6439720182
4 changed files with 90 additions and 9 deletions
@@ -51,6 +51,8 @@ import com.sw.inbound.utils.ext.visible
import com.sw.inbound.viewmodel.ReceiptViewModel import com.sw.inbound.viewmodel.ReceiptViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import io.objectbox.Box import io.objectbox.Box
import io.objectbox.exception.DbException
import io.objectbox.exception.FileCorruptException
import io.objectbox.kotlin.boxFor import io.objectbox.kotlin.boxFor
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
@@ -255,7 +257,7 @@ class FoodCollectionActivity : ComponentActivity() {
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
private fun clearData() { private fun clearData() {
val count = collectList.count { it.imageFile !=null } val count = collectList.count { it.imageFile != null }
if (count == 0) return if (count == 0) return
clearCoilCache(this) clearCoilCache(this)
collectList.forEach { collectList.forEach {
@@ -308,7 +310,17 @@ class FoodCollectionActivity : ComponentActivity() {
toast("操作失败") toast("操作失败")
return@let return@let
} }
val foodList = FoodModule.queryFoodNameScore(imageVector) val foodList = try {
FoodModule.queryFoodNameScore(imageVector)
} catch (e: DbException) {
try {
ObjectBox.init(this)
} catch (e: Exception) {
e.printStackTrace()
}
toast("数据库异常,请稍后重试")
return@let
}
val filterList = val filterList =
foodList.filter { it.score < FoodModule.BAG_RATE && it.name.contains("黑袋子") } foodList.filter { it.score < FoodModule.BAG_RATE && it.name.contains("黑袋子") }
if (filterList.isNotEmpty()) { if (filterList.isNotEmpty()) {
@@ -342,7 +354,20 @@ class FoodCollectionActivity : ComponentActivity() {
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
hideWaitingDialog() hideWaitingDialog()
toast("程序异常${e.message}") val errMsg = e.message ?: ""
if (errMsg.contains("Could not get from cursor") ||
e is FileCorruptException ||
e is DbException
) {
try {
ObjectBox.init(this)
} catch (e: Exception) {
e.printStackTrace()
}
toast("请重试")
} else {
toast("程序异常$errMsg")
}
} }
} }
@@ -354,7 +379,7 @@ class FoodCollectionActivity : ComponentActivity() {
// .filter { it.imageVector != null } // .filter { it.imageVector != null }
.forEachIndexed { index, it -> .forEachIndexed { index, it ->
//image2VectorTask(it.bitmap!!, index) //image2VectorTask(it.bitmap!!, index)
it.imageVector?.let{ imageVector -> it.imageVector?.let { imageVector ->
image2VectorTask(imageVector = imageVector, position = index) image2VectorTask(imageVector = imageVector, position = index)
} }
} }
@@ -559,7 +584,8 @@ class FoodCollectionActivity : ComponentActivity() {
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).text = tip if (!TextUtils.isEmpty(tip)) (view.findViewById<View?>(R.id.tvTip) as TextView).text =
tip
mDialogWaiting = CustomDialog(this, view, R.style.MyDialog) mDialogWaiting = CustomDialog(this, view, R.style.MyDialog)
mDialogWaiting!!.show() mDialogWaiting!!.show()
mDialogWaiting!!.setCancelable(true) mDialogWaiting!!.setCancelable(true)
@@ -3,7 +3,11 @@ package com.sw.inbound.activity
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.text.SpannableStringBuilder import android.text.SpannableStringBuilder
import android.text.TextUtils
import android.text.style.ForegroundColorSpan import android.text.style.ForegroundColorSpan
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.activity.viewModels import androidx.activity.viewModels
@@ -19,6 +23,7 @@ import com.sw.inbound.databinding.ActivityGoodsListBinding
import com.sw.inbound.databinding.LayoutCameraPreviewBinding import com.sw.inbound.databinding.LayoutCameraPreviewBinding
import com.sw.inbound.databinding.ListItemReceiptGoodsBinding import com.sw.inbound.databinding.ListItemReceiptGoodsBinding
import com.sw.inbound.databinding.ListItemSelfProcurementBinding import com.sw.inbound.databinding.ListItemSelfProcurementBinding
import com.sw.inbound.dialog.CustomDialog
import com.sw.inbound.dialog.DialogManager import com.sw.inbound.dialog.DialogManager
import com.sw.inbound.dialog.DropdownPopup import com.sw.inbound.dialog.DropdownPopup
import com.sw.inbound.dialog.GoodsRecognizeDialog import com.sw.inbound.dialog.GoodsRecognizeDialog
@@ -566,10 +571,14 @@ abstract class GoodsListActivity : ComponentActivity() {
) )
Timber.tag("SelfProcurementActivity") Timber.tag("SelfProcurementActivity")
.d("receiptSubmit确认收货提交数据:${uploadInfo.toJsonString()}") .d("receiptSubmit确认收货提交数据:${uploadInfo.toJsonString()}")
showWaitingDialog2("加载中")
receiptViewModel.confirmReceipt(uploadInfo) { success -> receiptViewModel.confirmReceipt(uploadInfo) { success ->
hideWaitingDialog()
if (success) { if (success) {
toast("确认收货成功") toast("确认收货成功")
finish() binding.root.postDelayed({
finish()
}, 200)
} else { } else {
toast("确认收货失败") toast("确认收货失败")
} }
@@ -601,10 +610,14 @@ abstract class GoodsListActivity : ComponentActivity() {
} }
Timber.tag("SelfProcurementActivity") Timber.tag("SelfProcurementActivity")
.d("selfProcurementSubmit自采入库提交数据:${submitData.toJsonString()}") .d("selfProcurementSubmit自采入库提交数据:${submitData.toJsonString()}")
showWaitingDialog2("加载中")
receiptViewModel.addToWarehouse(submitData) { success -> receiptViewModel.addToWarehouse(submitData) { success ->
hideWaitingDialog()
if (success) { if (success) {
toast("提交入库成功") toast("提交入库成功")
finish() binding.root.postDelayed({
finish()
}, 200)
} else { } else {
toast("提交入库失败") toast("提交入库失败")
} }
@@ -659,4 +672,45 @@ abstract class GoodsListActivity : ComponentActivity() {
} }
} }
private var mDialogWaiting: CustomDialog? = null
/**
* 显示等待提示框
*/
fun showWaitingDialog(tip: String?) {
runOnUiThread {
hideWaitingDialog()
val view = View.inflate(this, R.layout.dialog_waiting, null)
if (!TextUtils.isEmpty(tip)) (view.findViewById<View?>(R.id.tvTip) as TextView).text =
tip
mDialogWaiting = CustomDialog(this, view, R.style.MyDialog)
mDialogWaiting!!.show()
mDialogWaiting!!.setCancelable(true)
}
}
/**
* 隐藏等待提示框
*/
fun hideWaitingDialog() {
runOnUiThread {
mDialogWaiting?.dismiss()
mDialogWaiting = null
}
}
fun showWaitingDialog2(tip: String?) {
runOnUiThread {
if (mDialogWaiting == null) {
hideWaitingDialog()
val view = View.inflate(this, R.layout.dialog_waiting, null)
mDialogWaiting = CustomDialog(this, view, R.style.MyDialog)
mDialogWaiting!!.show()
mDialogWaiting!!.setCancelable(true)
}
val contentView = mDialogWaiting?.findViewById<ViewGroup>(android.R.id.content)
val tvTip = contentView?.findViewById<TextView>(R.id.tvTip)
tvTip?.text = tip
}
}
} }
@@ -15,6 +15,7 @@ import io.objectbox.Box
import io.objectbox.kotlin.boxFor import io.objectbox.kotlin.boxFor
import io.objectbox.query.IdWithScore import io.objectbox.query.IdWithScore
import io.objectbox.query.Query import io.objectbox.query.Query
import okhttp3.internal.closeQuietly
import org.pytorch.IValue import org.pytorch.IValue
import org.pytorch.Module import org.pytorch.Module
import org.pytorch.torchvision.TensorImageUtils import org.pytorch.torchvision.TensorImageUtils
+2 -2
View File
@@ -9,8 +9,8 @@
android:paddingBottom="10dp"> android:paddingBottom="10dp">
<ProgressBar <ProgressBar
android:layout_width="60dp" android:layout_width="50dp"
android:layout_height="60dp" android:layout_height="50dp"
android:indeterminateTint="@color/teal_200" android:indeterminateTint="@color/teal_200"
android:indeterminateTintMode="src_atop" /> android:indeterminateTintMode="src_atop" />