diff --git a/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java b/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java new file mode 100644 index 0000000..b6acdd9 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java @@ -0,0 +1,41 @@ +package com.casic.br.app.model; + +public class AddHiddenTroubleModel { + + private int code; + private String data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getData() { + return data; + } + + public void setData(String 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; + } +} diff --git a/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java b/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java new file mode 100644 index 0000000..b6acdd9 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java @@ -0,0 +1,41 @@ +package com.casic.br.app.model; + +public class AddHiddenTroubleModel { + + private int code; + private String data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getData() { + return data; + } + + public void setData(String 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; + } +} 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 12ae597..cf194ff 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 @@ -64,6 +64,15 @@ ): String /** + * 添加隐患 + */ + @POST("/inspection-record/addAlarm") + suspend fun addHiddenTrouble( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取隐患目录列表 */ @GET("/alarm-menu/listPage") diff --git a/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java b/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java new file mode 100644 index 0000000..b6acdd9 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java @@ -0,0 +1,41 @@ +package com.casic.br.app.model; + +public class AddHiddenTroubleModel { + + private int code; + private String data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getData() { + return data; + } + + public void setData(String 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; + } +} 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 12ae597..cf194ff 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 @@ -64,6 +64,15 @@ ): String /** + * 添加隐患 + */ + @POST("/inspection-record/addAlarm") + suspend fun addHiddenTrouble( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取隐患目录列表 */ @GET("/alarm-menu/listPage") 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 ce420df..0d438c4 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 @@ -2,7 +2,9 @@ import com.casic.br.app.utils.AuthenticationHelper import com.casic.br.app.utils.LocaleConstant +import com.google.gson.Gson import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaType @@ -30,6 +32,9 @@ RetrofitFactory.createRetrofit(httpConfig, timeout = 20) } + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>>() {}.type + /** * 验证PublicKey */ @@ -84,6 +89,29 @@ } /** + * 添加隐患 + */ + suspend fun addHiddenTrouble( + mainType: String, + subType: String, + hiddenTroubleName: String, + hiddenTroubleContent: String, + hiddenTroubleImageArray: Array> + ): String { + val param = JsonObject() + param.addProperty("mainClass", mainType) + param.addProperty("subClass", subType) + param.addProperty("name", hiddenTroubleName) + param.addProperty("content", hiddenTroubleContent) + param.add("imageList", gson.toJsonTree(hiddenTroubleImageArray, typeToken).asJsonArray) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addHiddenTrouble(AuthenticationHelper.token, requestBody) + } + + /** * 获取隐患目录列表 */ suspend fun getHiddenTroubleMenuByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java b/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java new file mode 100644 index 0000000..b6acdd9 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java @@ -0,0 +1,41 @@ +package com.casic.br.app.model; + +public class AddHiddenTroubleModel { + + private int code; + private String data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getData() { + return data; + } + + public void setData(String 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; + } +} 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 12ae597..cf194ff 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 @@ -64,6 +64,15 @@ ): String /** + * 添加隐患 + */ + @POST("/inspection-record/addAlarm") + suspend fun addHiddenTrouble( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取隐患目录列表 */ @GET("/alarm-menu/listPage") 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 ce420df..0d438c4 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 @@ -2,7 +2,9 @@ import com.casic.br.app.utils.AuthenticationHelper import com.casic.br.app.utils.LocaleConstant +import com.google.gson.Gson import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaType @@ -30,6 +32,9 @@ RetrofitFactory.createRetrofit(httpConfig, timeout = 20) } + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>>() {}.type + /** * 验证PublicKey */ @@ -84,6 +89,29 @@ } /** + * 添加隐患 + */ + suspend fun addHiddenTrouble( + mainType: String, + subType: String, + hiddenTroubleName: String, + hiddenTroubleContent: String, + hiddenTroubleImageArray: Array> + ): String { + val param = JsonObject() + param.addProperty("mainClass", mainType) + param.addProperty("subClass", subType) + param.addProperty("name", hiddenTroubleName) + param.addProperty("content", hiddenTroubleContent) + param.add("imageList", gson.toJsonTree(hiddenTroubleImageArray, typeToken).asJsonArray) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addHiddenTrouble(AuthenticationHelper.token, requestBody) + } + + /** * 获取隐患目录列表 */ suspend fun getHiddenTroubleMenuByPage(keywords: String, offset: Int): String { 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 ebe0009..5e070c9 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 @@ -14,6 +14,7 @@ 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.HiddenTroubleViewModel import com.casic.br.app.vm.ImageFileViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -27,9 +28,9 @@ import com.pengxh.kt.lite.extensions.dp2px 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 com.pengxh.kt.lite.utils.LoadingDialogHub import kotlinx.coroutines.delay import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch @@ -43,13 +44,14 @@ private val kTag = "AddHiddenTroubleActivity" private val context = this private val selectedImages = ArrayList() - private val imagePaths = ArrayList() + 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 lateinit var hiddenTroubleViewModel: HiddenTroubleViewModel private var mainDicModels: MutableList = ArrayList() private var subDicModels: MutableList = ArrayList() private var selectedMainTypePosition = 0 @@ -64,6 +66,16 @@ } override fun observeRequestState() { + hiddenTroubleViewModel.loadState.observe(this) { + if (it == LoadState.Loading) { + LoadingDialogHub.show(this, "隐患添加中,请稍后...") + } else { + LoadingDialogHub.dismiss() + finish() + "隐患添加成功".show(this) + } + } + imageFileViewModel.loadState.observe(this) { if (it == LoadState.Loading) { "图片上传中,请稍后...".show(this) @@ -102,7 +114,9 @@ imageFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() - imagePaths.add(url) + val map = HashMap() + map["alarmImage"] = url + imagePaths.add(map) recyclerViewImages.add(url.combineFilePath()) imageAdapter.notifyImageItemRangeInserted(recyclerViewImages) } @@ -115,6 +129,13 @@ RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) ) binding.recyclerView.adapter = imageAdapter + + hiddenTroubleViewModel = ViewModelProvider(this)[HiddenTroubleViewModel::class.java] + hiddenTroubleViewModel.addTroubleResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "troubleId: ${it.data}") + } + } } override fun initEvent() { @@ -129,7 +150,6 @@ override fun onNothingSelected(parent: AdapterView<*>?) { } - } binding.subTypeSpinner.onItemSelectedListener = @@ -162,9 +182,14 @@ }) binding.dialogConfirmButton.setOnClickListener { - Log.d(kTag, selectedMainTypePosition.toString()) - Log.d(kTag, selectedSubTypePosition.toString()) - Log.d(kTag, imagePaths.toJson()) + hiddenTroubleViewModel.addHiddenTrouble( + this, + selectedMainTypePosition.toString(), + selectedSubTypePosition.toString(), + binding.hiddenTroubleNameView.text.toString(), + binding.hiddenTroubleContentView.text.toString(), + imagePaths.toTypedArray() + ) } binding.dialogCancelButton.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java b/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java new file mode 100644 index 0000000..b6acdd9 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/AddHiddenTroubleModel.java @@ -0,0 +1,41 @@ +package com.casic.br.app.model; + +public class AddHiddenTroubleModel { + + private int code; + private String data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getData() { + return data; + } + + public void setData(String 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; + } +} 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 12ae597..cf194ff 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 @@ -64,6 +64,15 @@ ): String /** + * 添加隐患 + */ + @POST("/inspection-record/addAlarm") + suspend fun addHiddenTrouble( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取隐患目录列表 */ @GET("/alarm-menu/listPage") 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 ce420df..0d438c4 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 @@ -2,7 +2,9 @@ import com.casic.br.app.utils.AuthenticationHelper import com.casic.br.app.utils.LocaleConstant +import com.google.gson.Gson import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaType @@ -30,6 +32,9 @@ RetrofitFactory.createRetrofit(httpConfig, timeout = 20) } + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>>() {}.type + /** * 验证PublicKey */ @@ -84,6 +89,29 @@ } /** + * 添加隐患 + */ + suspend fun addHiddenTrouble( + mainType: String, + subType: String, + hiddenTroubleName: String, + hiddenTroubleContent: String, + hiddenTroubleImageArray: Array> + ): String { + val param = JsonObject() + param.addProperty("mainClass", mainType) + param.addProperty("subClass", subType) + param.addProperty("name", hiddenTroubleName) + param.addProperty("content", hiddenTroubleContent) + param.add("imageList", gson.toJsonTree(hiddenTroubleImageArray, typeToken).asJsonArray) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addHiddenTrouble(AuthenticationHelper.token, requestBody) + } + + /** * 获取隐患目录列表 */ suspend fun getHiddenTroubleMenuByPage(keywords: String, offset: Int): String { 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 ebe0009..5e070c9 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 @@ -14,6 +14,7 @@ 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.HiddenTroubleViewModel import com.casic.br.app.vm.ImageFileViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -27,9 +28,9 @@ import com.pengxh.kt.lite.extensions.dp2px 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 com.pengxh.kt.lite.utils.LoadingDialogHub import kotlinx.coroutines.delay import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch @@ -43,13 +44,14 @@ private val kTag = "AddHiddenTroubleActivity" private val context = this private val selectedImages = ArrayList() - private val imagePaths = ArrayList() + 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 lateinit var hiddenTroubleViewModel: HiddenTroubleViewModel private var mainDicModels: MutableList = ArrayList() private var subDicModels: MutableList = ArrayList() private var selectedMainTypePosition = 0 @@ -64,6 +66,16 @@ } override fun observeRequestState() { + hiddenTroubleViewModel.loadState.observe(this) { + if (it == LoadState.Loading) { + LoadingDialogHub.show(this, "隐患添加中,请稍后...") + } else { + LoadingDialogHub.dismiss() + finish() + "隐患添加成功".show(this) + } + } + imageFileViewModel.loadState.observe(this) { if (it == LoadState.Loading) { "图片上传中,请稍后...".show(this) @@ -102,7 +114,9 @@ imageFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() - imagePaths.add(url) + val map = HashMap() + map["alarmImage"] = url + imagePaths.add(map) recyclerViewImages.add(url.combineFilePath()) imageAdapter.notifyImageItemRangeInserted(recyclerViewImages) } @@ -115,6 +129,13 @@ RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) ) binding.recyclerView.adapter = imageAdapter + + hiddenTroubleViewModel = ViewModelProvider(this)[HiddenTroubleViewModel::class.java] + hiddenTroubleViewModel.addTroubleResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "troubleId: ${it.data}") + } + } } override fun initEvent() { @@ -129,7 +150,6 @@ override fun onNothingSelected(parent: AdapterView<*>?) { } - } binding.subTypeSpinner.onItemSelectedListener = @@ -162,9 +182,14 @@ }) binding.dialogConfirmButton.setOnClickListener { - Log.d(kTag, selectedMainTypePosition.toString()) - Log.d(kTag, selectedSubTypePosition.toString()) - Log.d(kTag, imagePaths.toJson()) + hiddenTroubleViewModel.addHiddenTrouble( + this, + selectedMainTypePosition.toString(), + selectedSubTypePosition.toString(), + binding.hiddenTroubleNameView.text.toString(), + binding.hiddenTroubleContentView.text.toString(), + imagePaths.toTypedArray() + ) } binding.dialogCancelButton.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt b/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt index cdefdf7..dd2dedd 100644 --- a/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData import com.casic.br.app.extensions.getResponseCode import com.casic.br.app.extensions.getResponseMessage +import com.casic.br.app.model.AddHiddenTroubleModel import com.casic.br.app.model.HiddenTroubleDetailModel import com.casic.br.app.model.HiddenTroubleModel import com.casic.br.app.retrofit.RetrofitServiceManager @@ -17,9 +18,44 @@ class HiddenTroubleViewModel : BaseViewModel() { private val gson by lazy { Gson() } + val addTroubleResult = MutableLiveData() val troublesResult = MutableLiveData() val troubleDetailResult = MutableLiveData() + fun addHiddenTrouble( + context: Context, + mainType: String, + subType: String, + hiddenTroubleName: String, + hiddenTroubleContent: String, + hiddenTroubleImageArray: Array> + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.addHiddenTrouble( + mainType, + subType, + hiddenTroubleName, + hiddenTroubleContent, + hiddenTroubleImageArray + ) + when (response.getResponseCode()) { + 200 -> { + loadState.value = LoadState.Success + addTroubleResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + loadState.value = LoadState.Fail + response.getResponseMessage().show(context) + } + } + }, { + loadState.value = LoadState.Fail + it.localizedMessage?.show(context) + }) + fun getHiddenTroubleMenuByPage(context: Context, keywords: String, offset: Int) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.getHiddenTroubleMenuByPage(keywords, offset)