多图片上传
This commit is contained in:
@@ -135,6 +135,14 @@ class FoodCollectionActivity : ComponentActivity() {
|
|||||||
return@setOnClickListener
|
return@setOnClickListener
|
||||||
}
|
}
|
||||||
vectorThread()
|
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 {
|
binding.btnTakePhoto.clickWithDebounce {
|
||||||
takePhoto()
|
takePhoto()
|
||||||
@@ -248,6 +256,7 @@ class FoodCollectionActivity : ComponentActivity() {
|
|||||||
|
|
||||||
collectList[index].let {
|
collectList[index].let {
|
||||||
it.bitmap = cropBitmap
|
it.bitmap = cropBitmap
|
||||||
|
it.imageFile = file
|
||||||
it.isShowCamera = false
|
it.isShowCamera = false
|
||||||
}
|
}
|
||||||
collectionAdapter.notifyItemChanged(index)
|
collectionAdapter.notifyItemChanged(index)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import com.sw.inbound.utils.ext.hideKeyboard
|
|||||||
abstract class BaseDialog(
|
abstract class BaseDialog(
|
||||||
context: Context,
|
context: Context,
|
||||||
var defWidth: Int = 1500.dp,
|
var defWidth: Int = 1500.dp,
|
||||||
var defHeight: Int = 900.dp
|
var defHeight: Int = 800.dp
|
||||||
) : Dialog(context, R.style.DialogTheme) {
|
) : Dialog(context, R.style.DialogTheme) {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
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.SupplierInfo
|
||||||
import com.sw.inbound.model.response.User
|
import com.sw.inbound.model.response.User
|
||||||
import okhttp3.MultipartBody
|
import okhttp3.MultipartBody
|
||||||
|
import okhttp3.RequestBody
|
||||||
import retrofit2.http.Body
|
import retrofit2.http.Body
|
||||||
import retrofit2.http.GET
|
import retrofit2.http.GET
|
||||||
import retrofit2.http.Header
|
import retrofit2.http.Header
|
||||||
import retrofit2.http.Multipart
|
import retrofit2.http.Multipart
|
||||||
import retrofit2.http.POST
|
import retrofit2.http.POST
|
||||||
import retrofit2.http.Part
|
import retrofit2.http.Part
|
||||||
|
import retrofit2.http.PartMap
|
||||||
import retrofit2.http.Query
|
import retrofit2.http.Query
|
||||||
import retrofit2.http.Url
|
import retrofit2.http.Url
|
||||||
|
|
||||||
@@ -154,6 +156,14 @@ interface ApiService {
|
|||||||
@Part file: MultipartBody.Part,
|
@Part file: MultipartBody.Part,
|
||||||
): ApiResponse<String>
|
): 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.graphics.Bitmap
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
data class FoodClassInfo(
|
data class FoodClassInfo(
|
||||||
var class_names: List<String>,
|
var class_names: List<String>,
|
||||||
@@ -12,6 +13,7 @@ data class FoodClassInfo(
|
|||||||
data class FoodCollectionBean(
|
data class FoodCollectionBean(
|
||||||
var imageUri: Uri? = null,
|
var imageUri: Uri? = null,
|
||||||
var bitmap: Bitmap? = null,
|
var bitmap: Bitmap? = null,
|
||||||
|
var imageFile: File? = null,
|
||||||
var imageVector: FloatArray? = null,
|
var imageVector: FloatArray? = null,
|
||||||
var isShowCamera: Boolean = false,
|
var isShowCamera: Boolean = false,
|
||||||
var isFinish: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.network.api.ApiService
|
||||||
import com.sw.inbound.utils.ContextUtils
|
import com.sw.inbound.utils.ContextUtils
|
||||||
import com.sw.inbound.utils.FileUtils
|
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 timber.log.Timber
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -206,4 +212,27 @@ class RemoteRepository @Inject constructor(
|
|||||||
apiService.selfPurchaseWarehousing(list = list)
|
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)
|
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