From efcf3d436b480e4925bd606ca0f258f485a30cb6 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Fri, 30 Jan 2026 15:07:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=85=A5=E5=BA=93=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E3=80=81=E9=87=87=E9=9B=86=E6=95=B0=E6=8D=AE=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/FoodCollectionActivity.kt | 49 ++++++++++++------- .../sw/inbound/activity/GoodsListActivity.kt | 20 +++++--- .../sw/inbound/activity/ReceiptActivity.kt | 6 +-- .../inbound/adapter/FoodCollectionAdapter.kt | 41 +++++++--------- .../com/sw/inbound/dialog/GoodsStoreDialog.kt | 10 ++-- .../inbound/model/response/SearchGoodsInfo.kt | 1 + .../java/com/sw/inbound/ui/page/HomeScreen.kt | 2 +- .../com/sw/inbound/viewmodel/UserViewModel.kt | 8 +-- .../res/layout/list_item_food_collection.xml | 8 ++- 9 files changed, 80 insertions(+), 65 deletions(-) diff --git a/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt b/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt index 801fd2f..dc82452 100644 --- a/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt +++ b/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt @@ -249,6 +249,7 @@ class FoodCollectionActivity : ComponentActivity() { toast("每次只允许保存${MAX_COUNT}条数据") return } + showWaitingDialog2("加载中") cameraUtils.takePhoto(cameraCallback) } @@ -287,6 +288,7 @@ class FoodCollectionActivity : ComponentActivity() { val index = collectList.indexOfFirst { it.imageFile == null } if (index == -1) { toast("每次只允许保存${MAX_COUNT}条数据") + showWaitingDialog2("加载中") rerurn@ cameraCallback } // toast("index=$index") @@ -302,6 +304,7 @@ class FoodCollectionActivity : ComponentActivity() { FoodModule.bitmap2FloatArray(cropBitmap, false) } catch (e: Exception) { e.printStackTrace() + hideWaitingDialog() toast("操作失败") return@let } @@ -309,6 +312,7 @@ class FoodCollectionActivity : ComponentActivity() { val filterList = foodList.filter { it.score < FoodModule.BAG_RATE && it.name.contains("黑袋子") } if (filterList.isNotEmpty()) { + hideWaitingDialog() toast("当前物品可能被袋子遮挡,请检查后重试") return@let } @@ -333,9 +337,11 @@ class FoodCollectionActivity : ComponentActivity() { if (bitmap.isRecycled.not()) { bitmap.recycle() } + hideWaitingDialog() } } catch (e: Exception) { e.printStackTrace() + hideWaitingDialog() toast("程序异常${e.message}") } } @@ -549,35 +555,40 @@ class FoodCollectionActivity : ComponentActivity() { /** * 显示等待提示框 */ - fun showWaitingDialog(tip: String?): Dialog? { - hideWaitingDialog() - val view = View.inflate(this, R.layout.dialog_waiting, null) - if (!TextUtils.isEmpty(tip)) (view.findViewById(R.id.tvTip) as TextView).text = tip - mDialogWaiting = CustomDialog(this, view, R.style.MyDialog) - mDialogWaiting!!.show() - mDialogWaiting!!.setCancelable(true) - return mDialogWaiting + fun showWaitingDialog(tip: String?) { + runOnUiThread { + hideWaitingDialog() + val view = View.inflate(this, R.layout.dialog_waiting, null) + if (!TextUtils.isEmpty(tip)) (view.findViewById(R.id.tvTip) as TextView).text = tip + mDialogWaiting = CustomDialog(this, view, R.style.MyDialog) + mDialogWaiting!!.show() + mDialogWaiting!!.setCancelable(true) + } } /** * 隐藏等待提示框 */ fun hideWaitingDialog() { - mDialogWaiting?.dismiss() - mDialogWaiting = null + runOnUiThread { + mDialogWaiting?.dismiss() + mDialogWaiting = null + } } fun showWaitingDialog2(tip: String?) { - 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) + 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(android.R.id.content) + val tvTip = contentView?.findViewById(R.id.tvTip) + tvTip?.text = tip } - val contentView = mDialogWaiting?.findViewById(android.R.id.content) - val tvTip = contentView?.findViewById(R.id.tvTip) - tvTip?.text = tip } /** diff --git a/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt b/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt index 81345b0..820d599 100644 --- a/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt +++ b/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt @@ -45,6 +45,7 @@ import com.sw.inbound.utils.ext.roundedDecimalPlace import com.sw.inbound.utils.ext.toJsonString import com.sw.inbound.utils.ext.toast import com.sw.inbound.viewmodel.ReceiptViewModel +import com.sw.inbound.viewmodel.UserViewModel import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking @@ -77,7 +78,8 @@ abstract class GoodsListActivity : ComponentActivity() { var id: String = "" var supplierId: String = "" lateinit var binding: ActivityGoodsListBinding - val viewModel: ReceiptViewModel by viewModels() + val receiptViewModel: ReceiptViewModel by viewModels() + val userViewModel: UserViewModel by viewModels() val goodsList: MutableList = mutableListOf() abstract fun initRecyclerView() @@ -167,6 +169,8 @@ abstract class GoodsListActivity : ComponentActivity() { //val array = arrayOf("1","2","qwe") //Timber.tag(TAG).d("测试:${array[2].toInt()}") + + userViewModel.getInitInfo() } private var weightCallback: ((weight: Int) -> Unit)? = null @@ -346,7 +350,7 @@ abstract class GoodsListActivity : ComponentActivity() { } return@let } - viewModel.recognizeGoodsList( + receiptViewModel.recognizeGoodsList( //nameList = foodList, scoreList = foodList, ) { goodsList -> @@ -488,7 +492,7 @@ abstract class GoodsListActivity : ComponentActivity() { pageNo: Int, pageSize: Int = PAGE_SIZE ): List { - return viewModel.searchGoodsInfoList2( + return receiptViewModel.searchGoodsInfoList2( goodsName = searchName, pageNo = pageNo, pageSize = pageSize @@ -562,7 +566,7 @@ abstract class GoodsListActivity : ComponentActivity() { ) Timber.tag("SelfProcurementActivity") .d("receiptSubmit确认收货提交数据:${uploadInfo.toJsonString()}") - viewModel.confirmReceipt(uploadInfo) { success -> + receiptViewModel.confirmReceipt(uploadInfo) { success -> if (success) { toast("确认收货成功") finish() @@ -597,7 +601,7 @@ abstract class GoodsListActivity : ComponentActivity() { } Timber.tag("SelfProcurementActivity") .d("selfProcurementSubmit自采入库提交数据:${submitData.toJsonString()}") - viewModel.addToWarehouse(submitData) { success -> + receiptViewModel.addToWarehouse(submitData) { success -> if (success) { toast("提交入库成功") finish() @@ -618,13 +622,13 @@ abstract class GoodsListActivity : ComponentActivity() { // } fun createNewGoods(file: File, param: GoodsAddParam, callback: (Boolean) -> Unit) { - viewModel.uploadImage(file) { imgUrl -> + receiptViewModel.uploadImage(file) { imgUrl -> if (imgUrl.isNullOrBlank()) { toast("图片上传失败") return@uploadImage } param.relativeUrl = imgUrl - viewModel.createNewGoods(param = param, callback = callback) + receiptViewModel.createNewGoods(param = param, callback = callback) } } @@ -651,7 +655,7 @@ abstract class GoodsListActivity : ComponentActivity() { val map = hashMapOf() map["goodsId"] = goodsId.toRequestBody() map["goodsName"] = goodsName.toRequestBody() - viewModel.uploadMultipleImages(files = list, params = map) + receiptViewModel.uploadMultipleImages(files = list, params = map) } } diff --git a/app/src/main/java/com/sw/inbound/activity/ReceiptActivity.kt b/app/src/main/java/com/sw/inbound/activity/ReceiptActivity.kt index a935f95..fab2dd4 100644 --- a/app/src/main/java/com/sw/inbound/activity/ReceiptActivity.kt +++ b/app/src/main/java/com/sw/inbound/activity/ReceiptActivity.kt @@ -1,16 +1,12 @@ package com.sw.inbound.activity import android.annotation.SuppressLint -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.lifecycleScope -import androidx.lifecycle.repeatOnLifecycle import androidx.recyclerview.widget.LinearLayoutManager import com.sw.inbound.adapter.ReceiptGoodsAdapter import com.sw.inbound.model.response.DictType import com.sw.inbound.utils.ext.gone import com.sw.inbound.utils.ext.toast import com.sw.inbound.utils.ext.visible -import kotlinx.coroutines.launch class ReceiptActivity : GoodsListActivity() { @@ -42,7 +38,7 @@ class ReceiptActivity : GoodsListActivity() { } } if (isNewReceipt.not()) { - viewModel.getReceiveDetail(id) { detail -> + receiptViewModel.getReceiveDetail(id) { detail -> runOnUiThread { if (detail == null) { toast("未查询到数据") diff --git a/app/src/main/java/com/sw/inbound/adapter/FoodCollectionAdapter.kt b/app/src/main/java/com/sw/inbound/adapter/FoodCollectionAdapter.kt index 61a0b6e..aa83f7e 100644 --- a/app/src/main/java/com/sw/inbound/adapter/FoodCollectionAdapter.kt +++ b/app/src/main/java/com/sw/inbound/adapter/FoodCollectionAdapter.kt @@ -1,24 +1,21 @@ package com.sw.inbound.adapter import android.content.Context -import android.net.Uri import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup import android.widget.ImageView import androidx.core.net.toUri import coil.load -import coil.transform.CircleCropTransformation import coil.transform.RoundedCornersTransformation import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.viewholder.QuickViewHolder -import com.sw.inbound.R import com.sw.inbound.databinding.ListItemFoodCollectionBinding import com.sw.inbound.objbox.FoodCollectionBean -import kotlin.let -import kotlin.run +import com.sw.inbound.utils.ext.gone +import com.sw.inbound.utils.ext.invisible +import com.sw.inbound.utils.ext.visible -class FoodCollectionAdapter (var list: MutableList) : +class FoodCollectionAdapter(var list: MutableList) : BaseQuickAdapter(list) { inner class VH(var binding: ListItemFoodCollectionBinding) : QuickViewHolder(binding.root) @@ -32,24 +29,24 @@ class FoodCollectionAdapter (var list: MutableList) : override fun onBindViewHolder(holder: VH, position: Int, item: FoodCollectionBean?) { val binding = holder.binding item?.let { - binding.ivFinish.visibility = if (it.isFinish) View.VISIBLE else View.GONE - binding.ivDelete.visibility = if (it.isShowCamera) View.GONE else View.VISIBLE - binding.imageView.run { - if (it.isShowCamera) { - load(null) - postDelayed({ - scaleType = ImageView.ScaleType.CENTER - setImageResource(R.mipmap.ic_camera256) - },100) - } else { + binding.ivFinish.run { + if (it.isFinish) visible() else gone() + } + binding.ivDelete.run { + if (it.isShowCamera) gone() else visible() + } + if (it.isShowCamera) { + binding.imageView.invisible() + binding.ivCameraFlag.visible() + //binding.imageView.load(null) + } else { + binding.ivCameraFlag.invisible() + binding.imageView.run { + visible() scaleType = ImageView.ScaleType.FIT_CENTER - //setImageURI(it.imageUri) -// load(it.bitmap) -// setImageBitmap(it.bitmap!!) - //setImageURI(it.imageFile?.toUri()) load(it.imageFile?.toUri()) { crossfade(true) - transformations(RoundedCornersTransformation(5f,5f,5f,5f)) + transformations(RoundedCornersTransformation(5f, 5f, 5f, 5f)) } } } diff --git a/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt b/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt index f6043fc..3bfcd4d 100644 --- a/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt +++ b/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt @@ -289,8 +289,8 @@ class GoodsStoreDialog( context.toast("请采集图片") return } - val unit = binding.tvProcurementUnit.text.trim().toString() - if (unit.isBlank()) { + val unitName = binding.tvProcurementUnit.text.trim().toString() + if (unitName.isBlank()) { context.toast("请选择入库单位") return } @@ -339,9 +339,9 @@ class GoodsStoreDialog( goodId = goods.id, goodName = goods.goodsName, consumeValue = goods.purchaseValue, - //goodsPurId = binding.tvProcurementUnit.tag.toString(), - kcUnitId = binding.tvProcurementUnit.tag.toString(), - unitName = unit, + goodsPurId = binding.tvProcurementUnit.tag.toString(), + kcUnitId = goods.unit, + unitName = unitName, //收货接口-数量 receivedNum = count, //收货接口-单价(含税) diff --git a/app/src/main/java/com/sw/inbound/model/response/SearchGoodsInfo.kt b/app/src/main/java/com/sw/inbound/model/response/SearchGoodsInfo.kt index db6c6ee..c77ccf1 100644 --- a/app/src/main/java/com/sw/inbound/model/response/SearchGoodsInfo.kt +++ b/app/src/main/java/com/sw/inbound/model/response/SearchGoodsInfo.kt @@ -66,6 +66,7 @@ data class SearchGoodsInfo( */ val consumeValue: String? = "", val purchaseValue: String? = "", + val unit: String? = "", @SerializedName("specification") val specification: String? = "", diff --git a/app/src/main/java/com/sw/inbound/ui/page/HomeScreen.kt b/app/src/main/java/com/sw/inbound/ui/page/HomeScreen.kt index efc4c68..850b118 100644 --- a/app/src/main/java/com/sw/inbound/ui/page/HomeScreen.kt +++ b/app/src/main/java/com/sw/inbound/ui/page/HomeScreen.kt @@ -48,7 +48,7 @@ fun HomeScreen( // 避免每次进入都获取字典类型 LaunchedEffect(Unit) { Timber.d("LaunchedEffect(Unit)") - viewModel.getInitInfo() +// viewModel.getInitInfo() } BackHandler { diff --git a/app/src/main/java/com/sw/inbound/viewmodel/UserViewModel.kt b/app/src/main/java/com/sw/inbound/viewmodel/UserViewModel.kt index 91503b2..f277807 100644 --- a/app/src/main/java/com/sw/inbound/viewmodel/UserViewModel.kt +++ b/app/src/main/java/com/sw/inbound/viewmodel/UserViewModel.kt @@ -21,18 +21,18 @@ class UserViewModel @Inject constructor( private val repo: RemoteRepository ) : BaseViewModel(repo) { - private var isFirstLaunch by mutableStateOf(true) +// private var isFirstLaunch by mutableStateOf(true) private val _user = MutableStateFlow(null) val user = _user.asStateFlow() fun getInitInfo() { - Timber.d("getInitInfo isFirstLaunch = $isFirstLaunch") +// Timber.d("getInitInfo isFirstLaunch = $isFirstLaunch") //if (isFirstLaunch) { - getUserInfo() +// getUserInfo() getDictType() - isFirstLaunch = false +// isFirstLaunch = false //} } diff --git a/app/src/main/res/layout/list_item_food_collection.xml b/app/src/main/res/layout/list_item_food_collection.xml index 3bff1b7..b3a9762 100644 --- a/app/src/main/res/layout/list_item_food_collection.xml +++ b/app/src/main/res/layout/list_item_food_collection.xml @@ -10,8 +10,14 @@ android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="match_parent" + android:scaleType="center"/> + + + android:src="@mipmap/ic_camera256"/>