diff --git a/app/src/main/java/com/casic/br/app/model/DictionaryModel.java b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java new file mode 100644 index 0000000..d4aec98 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/model/DictionaryModel.java b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java new file mode 100644 index 0000000..d4aec98 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 8c431ef..12ae597 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -9,6 +9,7 @@ import retrofit2.http.POST import retrofit2.http.Part import retrofit2.http.PartMap +import retrofit2.http.Path import retrofit2.http.Query import retrofit2.http.QueryMap @@ -128,4 +129,13 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): String + + /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/model/DictionaryModel.java b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java new file mode 100644 index 0000000..d4aec98 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 8c431ef..12ae597 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -9,6 +9,7 @@ import retrofit2.http.POST import retrofit2.http.Part import retrofit2.http.PartMap +import retrofit2.http.Path import retrofit2.http.Query import retrofit2.http.QueryMap @@ -128,4 +129,13 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): String + + /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 8712d19..ce420df 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -155,4 +155,12 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token, imagePart) } + + /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token, dictCode) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/model/DictionaryModel.java b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java new file mode 100644 index 0000000..d4aec98 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 8c431ef..12ae597 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -9,6 +9,7 @@ import retrofit2.http.POST import retrofit2.http.Part import retrofit2.http.PartMap +import retrofit2.http.Path import retrofit2.http.Query import retrofit2.http.QueryMap @@ -128,4 +129,13 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): String + + /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 8712d19..ce420df 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -155,4 +155,12 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token, imagePart) } + + /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token, dictCode) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt index 7311844..8b48da0 100644 --- a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.app.view +import android.R import android.os.Bundle import android.util.Log import android.view.View +import android.widget.ArrayAdapter import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.br.app.adapter.EditableImageAdapter import com.casic.br.app.databinding.ActivityAddHiddenTroubleBinding import com.casic.br.app.extensions.combineFilePath +import com.casic.br.app.model.DictionaryModel import com.casic.br.app.utils.GlideLoadEngine +import com.casic.br.app.vm.ConfigViewModel import com.casic.br.app.vm.ImageFileViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia @@ -21,6 +27,7 @@ import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import kotlinx.coroutines.delay import kotlinx.coroutines.flow.flow @@ -29,6 +36,7 @@ import top.zibin.luban.OnCompressListener import java.io.File + class AddHiddenTroubleActivity : KotlinBaseActivity() { private val kTag = "AddHiddenTroubleActivity" @@ -37,8 +45,12 @@ private val imagePaths = ArrayList() private val recyclerViewImages = ArrayList() private val marginOffset by lazy { 1.dp2px(this) } + private val gson by lazy { Gson() } private lateinit var imageAdapter: EditableImageAdapter private lateinit var imageFileViewModel: ImageFileViewModel + private lateinit var configViewModel: ConfigViewModel + private var mainDicModels: MutableList = ArrayList() + private var subDicModels: MutableList = ArrayList() override fun initViewBinding(): ActivityAddHiddenTroubleBinding { return ActivityAddHiddenTroubleBinding.inflate(layoutInflater) @@ -57,6 +69,32 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + val mainDicJsonValue = intent.getStringExtra(Constant.INTENT_PARAM) + //转为实体类 + mainDicModels = gson.fromJson>( + mainDicJsonValue, object : TypeToken>() {}.type + ) + val mainTypeArray = ArrayList() + mainDicModels.forEach { + mainTypeArray.add(it.name) + } + val mainTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, mainTypeArray) + binding.mainTypeSpinner.adapter = mainTypeAdapter + + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(context, "pitfallSmallType") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + subDicModels = it.data + val subTypeArray = ArrayList() + subDicModels.forEach { dic -> + subTypeArray.add(dic.name) + } + val subTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, subTypeArray) + binding.subTypeSpinner.adapter = subTypeAdapter + } + } + imageFileViewModel = ViewModelProvider(this)[ImageFileViewModel::class.java] imageFileViewModel.resultModel.observe(this) { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/br/app/model/DictionaryModel.java b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java new file mode 100644 index 0000000..d4aec98 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 8c431ef..12ae597 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -9,6 +9,7 @@ import retrofit2.http.POST import retrofit2.http.Part import retrofit2.http.PartMap +import retrofit2.http.Path import retrofit2.http.Query import retrofit2.http.QueryMap @@ -128,4 +129,13 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): String + + /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 8712d19..ce420df 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -155,4 +155,12 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token, imagePart) } + + /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token, dictCode) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt index 7311844..8b48da0 100644 --- a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.app.view +import android.R import android.os.Bundle import android.util.Log import android.view.View +import android.widget.ArrayAdapter import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.br.app.adapter.EditableImageAdapter import com.casic.br.app.databinding.ActivityAddHiddenTroubleBinding import com.casic.br.app.extensions.combineFilePath +import com.casic.br.app.model.DictionaryModel import com.casic.br.app.utils.GlideLoadEngine +import com.casic.br.app.vm.ConfigViewModel import com.casic.br.app.vm.ImageFileViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia @@ -21,6 +27,7 @@ import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import kotlinx.coroutines.delay import kotlinx.coroutines.flow.flow @@ -29,6 +36,7 @@ import top.zibin.luban.OnCompressListener import java.io.File + class AddHiddenTroubleActivity : KotlinBaseActivity() { private val kTag = "AddHiddenTroubleActivity" @@ -37,8 +45,12 @@ private val imagePaths = ArrayList() private val recyclerViewImages = ArrayList() private val marginOffset by lazy { 1.dp2px(this) } + private val gson by lazy { Gson() } private lateinit var imageAdapter: EditableImageAdapter private lateinit var imageFileViewModel: ImageFileViewModel + private lateinit var configViewModel: ConfigViewModel + private var mainDicModels: MutableList = ArrayList() + private var subDicModels: MutableList = ArrayList() override fun initViewBinding(): ActivityAddHiddenTroubleBinding { return ActivityAddHiddenTroubleBinding.inflate(layoutInflater) @@ -57,6 +69,32 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + val mainDicJsonValue = intent.getStringExtra(Constant.INTENT_PARAM) + //转为实体类 + mainDicModels = gson.fromJson>( + mainDicJsonValue, object : TypeToken>() {}.type + ) + val mainTypeArray = ArrayList() + mainDicModels.forEach { + mainTypeArray.add(it.name) + } + val mainTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, mainTypeArray) + binding.mainTypeSpinner.adapter = mainTypeAdapter + + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(context, "pitfallSmallType") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + subDicModels = it.data + val subTypeArray = ArrayList() + subDicModels.forEach { dic -> + subTypeArray.add(dic.name) + } + val subTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, subTypeArray) + binding.subTypeSpinner.adapter = subTypeAdapter + } + } + imageFileViewModel = ViewModelProvider(this)[ImageFileViewModel::class.java] imageFileViewModel.resultModel.observe(this) { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index b0f7dbf..6df0bec 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -23,6 +23,8 @@ import com.casic.br.app.R import com.casic.br.app.databinding.ActivityStartCheckBinding import com.casic.br.app.extensions.initImmersionBar +import com.casic.br.app.model.DictionaryModel +import com.casic.br.app.vm.ConfigViewModel import com.casic.br.app.vm.FileUploadViewModel import com.casic.br.app.widgets.CheckResultDialog import com.casic.br.app.widgets.SelectSceneDialog @@ -30,6 +32,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.rotateImage +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.widget.TitleBarView import java.io.ByteArrayOutputStream import java.io.IOException @@ -61,10 +64,20 @@ private lateinit var cameraProviderFuture: ListenableFuture private lateinit var imageCapture: ImageCapture private lateinit var imageAnalysis: ImageAnalysis + private lateinit var configViewModel: ConfigViewModel private lateinit var fileUploadViewModel: FileUploadViewModel private var isRecognizing = false + private var mainDicModels: MutableList = ArrayList() override fun initOnCreate(savedInstanceState: Bundle?) { + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(context, "pitfallBigType") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + mainDicModels = it.data + } + } + fileUploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] fileUploadViewModel.recognizeResult.observe(this) { if (it.code == 200) { @@ -221,7 +234,7 @@ } binding.addButton.setOnClickListener { - navigatePageTo() + navigatePageTo(mainDicModels.toJson()) } binding.listButton.setOnClickListener { diff --git a/app/src/main/java/com/casic/br/app/model/DictionaryModel.java b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java new file mode 100644 index 0000000..d4aec98 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 8c431ef..12ae597 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -9,6 +9,7 @@ import retrofit2.http.POST import retrofit2.http.Part import retrofit2.http.PartMap +import retrofit2.http.Path import retrofit2.http.Query import retrofit2.http.QueryMap @@ -128,4 +129,13 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): String + + /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 8712d19..ce420df 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -155,4 +155,12 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token, imagePart) } + + /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token, dictCode) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt index 7311844..8b48da0 100644 --- a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.app.view +import android.R import android.os.Bundle import android.util.Log import android.view.View +import android.widget.ArrayAdapter import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.br.app.adapter.EditableImageAdapter import com.casic.br.app.databinding.ActivityAddHiddenTroubleBinding import com.casic.br.app.extensions.combineFilePath +import com.casic.br.app.model.DictionaryModel import com.casic.br.app.utils.GlideLoadEngine +import com.casic.br.app.vm.ConfigViewModel import com.casic.br.app.vm.ImageFileViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia @@ -21,6 +27,7 @@ import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import kotlinx.coroutines.delay import kotlinx.coroutines.flow.flow @@ -29,6 +36,7 @@ import top.zibin.luban.OnCompressListener import java.io.File + class AddHiddenTroubleActivity : KotlinBaseActivity() { private val kTag = "AddHiddenTroubleActivity" @@ -37,8 +45,12 @@ private val imagePaths = ArrayList() private val recyclerViewImages = ArrayList() private val marginOffset by lazy { 1.dp2px(this) } + private val gson by lazy { Gson() } private lateinit var imageAdapter: EditableImageAdapter private lateinit var imageFileViewModel: ImageFileViewModel + private lateinit var configViewModel: ConfigViewModel + private var mainDicModels: MutableList = ArrayList() + private var subDicModels: MutableList = ArrayList() override fun initViewBinding(): ActivityAddHiddenTroubleBinding { return ActivityAddHiddenTroubleBinding.inflate(layoutInflater) @@ -57,6 +69,32 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + val mainDicJsonValue = intent.getStringExtra(Constant.INTENT_PARAM) + //转为实体类 + mainDicModels = gson.fromJson>( + mainDicJsonValue, object : TypeToken>() {}.type + ) + val mainTypeArray = ArrayList() + mainDicModels.forEach { + mainTypeArray.add(it.name) + } + val mainTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, mainTypeArray) + binding.mainTypeSpinner.adapter = mainTypeAdapter + + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(context, "pitfallSmallType") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + subDicModels = it.data + val subTypeArray = ArrayList() + subDicModels.forEach { dic -> + subTypeArray.add(dic.name) + } + val subTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, subTypeArray) + binding.subTypeSpinner.adapter = subTypeAdapter + } + } + imageFileViewModel = ViewModelProvider(this)[ImageFileViewModel::class.java] imageFileViewModel.resultModel.observe(this) { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index b0f7dbf..6df0bec 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -23,6 +23,8 @@ import com.casic.br.app.R import com.casic.br.app.databinding.ActivityStartCheckBinding import com.casic.br.app.extensions.initImmersionBar +import com.casic.br.app.model.DictionaryModel +import com.casic.br.app.vm.ConfigViewModel import com.casic.br.app.vm.FileUploadViewModel import com.casic.br.app.widgets.CheckResultDialog import com.casic.br.app.widgets.SelectSceneDialog @@ -30,6 +32,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.rotateImage +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.widget.TitleBarView import java.io.ByteArrayOutputStream import java.io.IOException @@ -61,10 +64,20 @@ private lateinit var cameraProviderFuture: ListenableFuture private lateinit var imageCapture: ImageCapture private lateinit var imageAnalysis: ImageAnalysis + private lateinit var configViewModel: ConfigViewModel private lateinit var fileUploadViewModel: FileUploadViewModel private var isRecognizing = false + private var mainDicModels: MutableList = ArrayList() override fun initOnCreate(savedInstanceState: Bundle?) { + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(context, "pitfallBigType") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + mainDicModels = it.data + } + } + fileUploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] fileUploadViewModel.recognizeResult.observe(this) { if (it.code == 200) { @@ -221,7 +234,7 @@ } binding.addButton.setOnClickListener { - navigatePageTo() + navigatePageTo(mainDicModels.toJson()) } binding.listButton.setOnClickListener { diff --git a/app/src/main/java/com/casic/br/app/vm/ConfigViewModel.kt b/app/src/main/java/com/casic/br/app/vm/ConfigViewModel.kt new file mode 100644 index 0000000..4fddeda --- /dev/null +++ b/app/src/main/java/com/casic/br/app/vm/ConfigViewModel.kt @@ -0,0 +1,33 @@ +package com.casic.br.app.vm + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.casic.br.app.extensions.getResponseCode +import com.casic.br.app.extensions.getResponseMessage +import com.casic.br.app.model.DictionaryModel +import com.casic.br.app.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.base.BaseViewModel +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show + +class ConfigViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val dictionary = MutableLiveData() + + fun getDictionaryByCode(context: Context, dictCode: String) = launch({ + val response = RetrofitServiceManager.getDictionaryByCode(dictCode) + val responseCode = response.getResponseCode() + if (responseCode == 200) { + dictionary.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.getResponseMessage().show(context) + } + }, { + it.printStackTrace() + }) +} \ No newline at end of file