多图片上传
This commit is contained in:
@@ -135,6 +135,14 @@ class FoodCollectionActivity : ComponentActivity() {
|
||||
return@setOnClickListener
|
||||
}
|
||||
vectorThread()
|
||||
val goods = searchGoodsList[clickIndex]
|
||||
val files = collectList.filter { it.imageFile!=null }.map { it.imageFile!! }
|
||||
if (files.isEmpty()) {
|
||||
return@setOnClickListener
|
||||
}
|
||||
viewModel.uploadMultipleImages(goods.id!!, goods.goodsName!!, files) {
|
||||
|
||||
}
|
||||
}
|
||||
binding.btnTakePhoto.clickWithDebounce {
|
||||
takePhoto()
|
||||
@@ -248,6 +256,7 @@ class FoodCollectionActivity : ComponentActivity() {
|
||||
|
||||
collectList[index].let {
|
||||
it.bitmap = cropBitmap
|
||||
it.imageFile = file
|
||||
it.isShowCamera = false
|
||||
}
|
||||
collectionAdapter.notifyItemChanged(index)
|
||||
|
||||
@@ -16,7 +16,7 @@ import com.sw.inbound.utils.ext.hideKeyboard
|
||||
abstract class BaseDialog(
|
||||
context: Context,
|
||||
var defWidth: Int = 1500.dp,
|
||||
var defHeight: Int = 900.dp
|
||||
var defHeight: Int = 800.dp
|
||||
) : Dialog(context, R.style.DialogTheme) {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
||||
@@ -17,12 +17,14 @@ import com.sw.inbound.model.response.StorageType
|
||||
import com.sw.inbound.model.response.SupplierInfo
|
||||
import com.sw.inbound.model.response.User
|
||||
import okhttp3.MultipartBody
|
||||
import okhttp3.RequestBody
|
||||
import retrofit2.http.Body
|
||||
import retrofit2.http.GET
|
||||
import retrofit2.http.Header
|
||||
import retrofit2.http.Multipart
|
||||
import retrofit2.http.POST
|
||||
import retrofit2.http.Part
|
||||
import retrofit2.http.PartMap
|
||||
import retrofit2.http.Query
|
||||
import retrofit2.http.Url
|
||||
|
||||
@@ -154,6 +156,14 @@ interface ApiService {
|
||||
@Part file: MultipartBody.Part,
|
||||
): ApiResponse<String>
|
||||
|
||||
@Multipart
|
||||
@POST
|
||||
suspend fun uploadMultipleImages(
|
||||
@Url url: String = "${GlobalData.appBaseUrl}/neglect/inboundWeighingScale/add",
|
||||
@PartMap params: Map<String, RequestBody>,
|
||||
@Part parts: List<MultipartBody.Part>
|
||||
): ApiResponse<String>
|
||||
|
||||
/**
|
||||
* 搜索物品列表
|
||||
*/
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.sw.inbound.objbox
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.net.Uri
|
||||
import java.io.File
|
||||
|
||||
data class FoodClassInfo(
|
||||
var class_names: List<String>,
|
||||
@@ -12,6 +13,7 @@ data class FoodClassInfo(
|
||||
data class FoodCollectionBean(
|
||||
var imageUri: Uri? = null,
|
||||
var bitmap: Bitmap? = null,
|
||||
var imageFile: File? = null,
|
||||
var imageVector: FloatArray? = null,
|
||||
var isShowCamera: Boolean = false,
|
||||
var isFinish:Boolean = false
|
||||
|
||||
@@ -19,6 +19,12 @@ import com.sw.inbound.model.response.User
|
||||
import com.sw.inbound.network.api.ApiService
|
||||
import com.sw.inbound.utils.ContextUtils
|
||||
import com.sw.inbound.utils.FileUtils
|
||||
import okhttp3.MediaType
|
||||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||
import okhttp3.MultipartBody
|
||||
import okhttp3.RequestBody
|
||||
import okhttp3.RequestBody.Companion.asRequestBody
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
import timber.log.Timber
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
@@ -206,4 +212,27 @@ class RemoteRepository @Inject constructor(
|
||||
apiService.selfPurchaseWarehousing(list = list)
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun uploadMultipleImages(fileList: List<File>, param: Map<String, String>): ApiResponse<String> {
|
||||
val paramsMap = mutableMapOf<String, RequestBody>()
|
||||
param.forEach { (key, value) ->
|
||||
paramsMap[key] = value.toRequestBody("text/plain".toMediaTypeOrNull())
|
||||
}
|
||||
|
||||
// 准备文件参数
|
||||
val fileParts = mutableListOf<MultipartBody.Part>()
|
||||
fileList.forEachIndexed { index, file ->
|
||||
val requestFile = file
|
||||
.asRequestBody("multipart/form-data".toMediaTypeOrNull())
|
||||
val filePart = MultipartBody.Part.createFormData(
|
||||
"goodsPics",
|
||||
file.name,
|
||||
requestFile
|
||||
)
|
||||
fileParts.add(filePart)
|
||||
}
|
||||
return safeApiCall {
|
||||
apiService.uploadMultipleImages(params = paramsMap, parts = fileParts)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -377,6 +377,18 @@ class ReceiptViewModel @Inject constructor(
|
||||
callback(true)
|
||||
}
|
||||
}
|
||||
|
||||
fun uploadMultipleImages(goodsId:String, goodsName:String, files:List<File>, callback: (String?) -> Unit) {
|
||||
launchWithLoading {
|
||||
val map = mutableMapOf<String, String>()
|
||||
map["goodsId"] = goodsId
|
||||
map["goodsName"] = goodsName
|
||||
val resp = repository.uploadMultipleImages(fileList = files, param = map)
|
||||
if (!parseResponse(resp)) {
|
||||
callback(null)
|
||||
return@launchWithLoading
|
||||
}
|
||||
callback(resp.data)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user