refactor(repository): 重构OCR结果保存接口实现

- 移除 multipart 表单上传方式,改用JSON请求体
- 新增 SaveOcrResultRequest 数据类封装请求参数
- 简化HTTP客户端调用逻辑,移除手动请求体构建
- 更新SprayingResultVM中的API调用方式以匹配新接口
这个提交包含在:
徐勤民 2026-04-21 19:03:21 +08:00
父节点 3eda1f1305
当前提交 aab4eb9413
共有 3 个文件被更改,包括 19 次插入17 次删除

查看文件

@ -0,0 +1,9 @@
package com.nova.brain.glass.model.data
data class SaveOcrResultRequest(
val taskId: String,
val productionInfoId: String,
val ocrResult: String,
val result: String,
val filePath: String
)

查看文件

@ -12,6 +12,7 @@ import com.nova.brain.glass.model.data.BatchUploadResponse
import com.nova.brain.glass.model.data.OcrResultData
import com.nova.brain.glass.model.data.RecognizeByPathRequest
import com.nova.brain.glass.model.data.RecognizeByPathResponse
import com.nova.brain.glass.model.data.SaveOcrResultRequest
import com.nova.brain.glass.model.data.SubmitTaskRequest
import com.nova.brain.glass.model.data.SubmitTaskResponse
import com.nova.brain.glass.model.data.PushToNextData
@ -30,7 +31,6 @@ import okhttp3.RequestBody
import okhttp3.ResponseBody
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Headers
import retrofit2.http.Multipart
import retrofit2.http.Part
import retrofit2.http.POST
@ -79,15 +79,8 @@ interface Service {
@POST("/skyscopicsecond-api/api/aiGlasses/recognizeByPath")
fun recognizeByPath(@Body body: RecognizeByPathRequest): Observable<RecognizeByPathResponse>
@Multipart
@POST("/skyscopicsecond-api/api/aiGlasses/saveOcrResult")
fun saveOcrResult(
@Part("taskId") taskId: RequestBody,
@Part("productionInfoId") productionInfoId: RequestBody,
@Part("ocrResult") ocrResult: RequestBody,
@Part("result") result: RequestBody,
@Part("filePath") filePath: RequestBody
): Observable<SubmitTaskResponse>
fun saveOcrResult(@Body body: SaveOcrResultRequest): Observable<SubmitTaskResponse>
@POST("/skyscopicsecond-api/api/aiGlasses/submitTask")
fun submitTask(@Body body: SubmitTaskRequest): Observable<SubmitTaskResponse>

查看文件

@ -3,6 +3,7 @@ package com.nova.brain.glass.viewmodel
import androidx.lifecycle.MutableLiveData
import com.nova.brain.glass.MyApplication
import com.nova.brain.glass.model.ItemItem
import com.nova.brain.glass.model.data.SaveOcrResultRequest
import com.nova.brain.glass.model.data.SubmitTaskRequest
import com.nova.brain.glass.repository.Service
import com.xuqm.base.di.manager.HttpManager
@ -10,8 +11,6 @@ import com.xuqm.base.viewmodel.BaseListViewModel
import com.xuqm.base.viewmodel.callback.Response
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody.Companion.toRequestBody
enum class SubmitTaskState {
IDLE,
@ -75,15 +74,16 @@ class SprayingResultVM : BaseListViewModel<ItemItem>() {
) {
if (saveOcrState.value == SaveOcrState.LOADING) return
saveOcrState.value = SaveOcrState.LOADING
val plain = "text/plain".toMediaTypeOrNull()
add(
HttpManager.getApi(MyApplication.appComponent2, Service::class.java)
.saveOcrResult(
taskId = taskId.toRequestBody(plain),
productionInfoId = productionInfoId.toRequestBody(plain),
ocrResult = ocrResultJson.toRequestBody(plain),
result = resultJson.toRequestBody(plain),
filePath = filePath.toRequestBody(plain)
SaveOcrResultRequest(
taskId = taskId,
productionInfoId = productionInfoId,
ocrResult = ocrResultJson,
result = resultJson,
filePath = filePath
)
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())