多图片上传优化

This commit is contained in:
2025-11-21 14:37:54 +08:00
parent 88e841f212
commit 10475831fa
4 changed files with 36 additions and 7 deletions
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.graphics.Bitmap import android.graphics.Bitmap
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.camera.view.PreviewView import androidx.camera.view.PreviewView
@@ -33,6 +34,8 @@ import com.sw.inbound.utils.ext.clickWithDebounce
import com.sw.inbound.utils.ext.dp import com.sw.inbound.utils.ext.dp
import com.sw.inbound.utils.ext.gone import com.sw.inbound.utils.ext.gone
import com.sw.inbound.utils.ext.hideKeyboard import com.sw.inbound.utils.ext.hideKeyboard
import com.sw.inbound.utils.ext.invisible
import com.sw.inbound.utils.ext.toObject
import com.sw.inbound.utils.ext.toast import com.sw.inbound.utils.ext.toast
import com.sw.inbound.utils.ext.visible import com.sw.inbound.utils.ext.visible
import com.sw.inbound.viewmodel.ReceiptViewModel import com.sw.inbound.viewmodel.ReceiptViewModel
@@ -124,7 +127,7 @@ class FoodCollectionActivity : ComponentActivity() {
} }
} }
binding.btnSave.setOnClickListener { binding.btnSave.setOnClickListener { _ ->
if (clickIndex == -1) { if (clickIndex == -1) {
toast("请选择物品名称") toast("请选择物品名称")
return@setOnClickListener return@setOnClickListener
@@ -141,7 +144,13 @@ class FoodCollectionActivity : ComponentActivity() {
return@setOnClickListener return@setOnClickListener
} }
viewModel.uploadMultipleImages(goods.id!!, goods.goodsName!!, files) { viewModel.uploadMultipleImages(goods.id!!, goods.goodsName!!, files) {
Timber.tag(TAG).d("uploadMultipleImages: ${it}")
//{"code":"00000","data":null,"msg":"成功","total":0}
val resp = it?.toObject<RespData>()
val isSuccess = resp?.code == "00000"
binding.ivFinish.run {
if (isSuccess) visible() else invisible()
}
} }
} }
binding.btnTakePhoto.clickWithDebounce { binding.btnTakePhoto.clickWithDebounce {
@@ -234,6 +243,7 @@ class FoodCollectionActivity : ComponentActivity() {
searchGoodsList.clear() searchGoodsList.clear()
searchAdapter.notifyDataSetChanged() searchAdapter.notifyDataSetChanged()
loadEmptyView() loadEmptyView()
binding.ivFinish.invisible()
} }
private val cameraCallback: (Uri) -> Unit = { uri -> private val cameraCallback: (Uri) -> Unit = { uri ->
@@ -382,4 +392,9 @@ class FoodCollectionActivity : ComponentActivity() {
} }
} }
data class RespData(
var code:String?=null,
var data:String?=null,
var msg:String?=null,
)
} }
@@ -159,9 +159,9 @@ interface ApiService {
@Multipart @Multipart
@POST @POST
suspend fun uploadMultipleImages( suspend fun uploadMultipleImages(
@Url url: String = "${GlobalData.appBaseUrl}/neglect/inboundWeighingScale/add", @Url url: String = "${GlobalData.appBaseUrl}/terminal/neglect/inboundWeighingScale/add",
@PartMap params: Map<String, RequestBody>, @PartMap params: HashMap<String, RequestBody>,
@Part parts: List<MultipartBody.Part> @Part goodsPics: List<MultipartBody.Part>
): ApiResponse<String> ): ApiResponse<String>
/** /**
@@ -214,7 +214,7 @@ class RemoteRepository @Inject constructor(
} }
suspend fun uploadMultipleImages(fileList: List<File>, param: Map<String, String>): ApiResponse<String> { suspend fun uploadMultipleImages(fileList: List<File>, param: Map<String, String>): ApiResponse<String> {
val paramsMap = mutableMapOf<String, RequestBody>() val paramsMap = hashMapOf<String, RequestBody>()
param.forEach { (key, value) -> param.forEach { (key, value) ->
paramsMap[key] = value.toRequestBody("text/plain".toMediaTypeOrNull()) paramsMap[key] = value.toRequestBody("text/plain".toMediaTypeOrNull())
} }
@@ -232,7 +232,7 @@ class RemoteRepository @Inject constructor(
fileParts.add(filePart) fileParts.add(filePart)
} }
return safeApiCall { return safeApiCall {
apiService.uploadMultipleImages(params = paramsMap, parts = fileParts) apiService.uploadMultipleImages(params = paramsMap, goodsPics = fileParts)
} }
} }
} }
@@ -339,6 +339,20 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" /> android:layout_weight="1" />
<ImageView
android:id="@+id/ivFinish"
android:layout_width="30dp"
android:layout_height="30dp"
android:padding="5dp"
android:src="@mipmap/ic_finish"
android:visibility="invisible"/>
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView <TextView
android:id="@+id/btnSave" android:id="@+id/btnSave"
android:layout_width="270dp" android:layout_width="270dp"