提交入库参数、采集数据优化
This commit is contained in:
@@ -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,25 +555,29 @@ class FoodCollectionActivity : ComponentActivity() {
|
||||
/**
|
||||
* 显示等待提示框
|
||||
*/
|
||||
fun showWaitingDialog(tip: String?): Dialog? {
|
||||
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)
|
||||
return mDialogWaiting
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 隐藏等待提示框
|
||||
*/
|
||||
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)
|
||||
@@ -579,6 +589,7 @@ class FoodCollectionActivity : ComponentActivity() {
|
||||
val tvTip = contentView?.findViewById<TextView>(R.id.tvTip)
|
||||
tvTip?.text = tip
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除Coil缓存
|
||||
|
||||
@@ -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<GoodsInfo> = 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<SearchGoodsInfo.Record> {
|
||||
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<String, RequestBody>()
|
||||
map["goodsId"] = goodsId.toRequestBody()
|
||||
map["goodsName"] = goodsName.toRequestBody()
|
||||
viewModel.uploadMultipleImages(files = list, params = map)
|
||||
receiptViewModel.uploadMultipleImages(files = list, params = map)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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("未查询到数据")
|
||||
|
||||
@@ -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<FoodCollectionBean>) :
|
||||
class FoodCollectionAdapter(var list: MutableList<FoodCollectionBean>) :
|
||||
BaseQuickAdapter<FoodCollectionBean, FoodCollectionAdapter.VH>(list) {
|
||||
|
||||
inner class VH(var binding: ListItemFoodCollectionBinding) : QuickViewHolder(binding.root)
|
||||
@@ -32,24 +29,24 @@ class FoodCollectionAdapter (var list: MutableList<FoodCollectionBean>) :
|
||||
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 {
|
||||
binding.ivFinish.run {
|
||||
if (it.isFinish) visible() else gone()
|
||||
}
|
||||
binding.ivDelete.run {
|
||||
if (it.isShowCamera) gone() else visible()
|
||||
}
|
||||
if (it.isShowCamera) {
|
||||
load(null)
|
||||
postDelayed({
|
||||
scaleType = ImageView.ScaleType.CENTER
|
||||
setImageResource(R.mipmap.ic_camera256)
|
||||
},100)
|
||||
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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
//收货接口-单价(含税)
|
||||
|
||||
@@ -66,6 +66,7 @@ data class SearchGoodsInfo(
|
||||
*/
|
||||
val consumeValue: String? = "",
|
||||
val purchaseValue: String? = "",
|
||||
val unit: String? = "",
|
||||
|
||||
@SerializedName("specification")
|
||||
val specification: String? = "",
|
||||
|
||||
@@ -48,7 +48,7 @@ fun HomeScreen(
|
||||
// 避免每次进入都获取字典类型
|
||||
LaunchedEffect(Unit) {
|
||||
Timber.d("LaunchedEffect(Unit)")
|
||||
viewModel.getInitInfo()
|
||||
// viewModel.getInitInfo()
|
||||
}
|
||||
|
||||
BackHandler {
|
||||
|
||||
@@ -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<User?>(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
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,8 +10,14 @@
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="center"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivCameraFlag"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="center"
|
||||
tools:src="@mipmap/ic_camera256"/>
|
||||
android:src="@mipmap/ic_camera256"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivDelete"
|
||||
|
||||
Reference in New Issue
Block a user