diff --git a/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt new file mode 100644 index 0000000..33786db --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt @@ -0,0 +1,28 @@ +package com.casic.smarttube.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s) + } else { + builder.append(s).append(",") + } + } + return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt new file mode 100644 index 0000000..33786db --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt @@ -0,0 +1,28 @@ +package com.casic.smarttube.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s) + } else { + builder.append(s).append(",") + } + } + return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index e22936c..d0786e8 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,7 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" -// const val SERVER_BASE_URL = "http://192.168.43.19:11643" - const val SERVER_BASE_URL = "http://111.198.10.15:11304" + const val SERVER_BASE_URL = "http://111.198.10.15:11311" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt new file mode 100644 index 0000000..33786db --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt @@ -0,0 +1,28 @@ +package com.casic.smarttube.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s) + } else { + builder.append(s).append(",") + } + } + return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index e22936c..d0786e8 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,7 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" -// const val SERVER_BASE_URL = "http://192.168.43.19:11643" - const val SERVER_BASE_URL = "http://111.198.10.15:11304" + const val SERVER_BASE_URL = "http://111.198.10.15:11311" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f6c50be..d0f4d8f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.smarttube.utils.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* @@ -198,4 +199,13 @@ @Header("token") token: String, @Path("devcode") devcode: String ): String + + /** + * 查询工单 + * */ + @POST("/tube/qrcode-entry/add") + suspend fun addDevice( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt new file mode 100644 index 0000000..33786db --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt @@ -0,0 +1,28 @@ +package com.casic.smarttube.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s) + } else { + builder.append(s).append(",") + } + } + return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index e22936c..d0786e8 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,7 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" -// const val SERVER_BASE_URL = "http://192.168.43.19:11643" - const val SERVER_BASE_URL = "http://111.198.10.15:11304" + const val SERVER_BASE_URL = "http://111.198.10.15:11311" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f6c50be..d0f4d8f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.smarttube.utils.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* @@ -198,4 +199,13 @@ @Header("token") token: String, @Path("devcode") devcode: String ): String + + /** + * 查询工单 + * */ + @POST("/tube/qrcode-entry/add") + suspend fun addDevice( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index bb79624..79f45d1 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -4,9 +4,12 @@ import com.casic.smarttube.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject import java.io.File @@ -181,4 +184,39 @@ suspend fun obtainTubeLastData(devcode: String): String { return api.obtainTubeLastData(AuthenticationHelper.token!!, devcode) } + + /** + * 添加设备 + */ + suspend fun addDevice( + deviceCode: String, + deviceName: String, + ownerShip: String, + interval: String, + longitude: String, + latitude: String, + imagePaths: String, + scene: String, + addDeviceTime: String, + userId: String, + deptId: String + ): String { + val paramObject = JSONObject() + paramObject.put("deviceCode", deviceCode) + paramObject.put("deviceName", deviceName) + paramObject.put("projectName", ownerShip) + paramObject.put("frequency", interval) + paramObject.put("lng", longitude) + paramObject.put("lat", latitude) + paramObject.put("image", imagePaths) + paramObject.put("description", scene) + paramObject.put("createTime", addDeviceTime) + paramObject.put("ownerId", userId) + paramObject.put("deptId", deptId) + paramObject.put("version", "19") + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addDevice(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt new file mode 100644 index 0000000..33786db --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt @@ -0,0 +1,28 @@ +package com.casic.smarttube.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s) + } else { + builder.append(s).append(",") + } + } + return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index e22936c..d0786e8 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,7 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" -// const val SERVER_BASE_URL = "http://192.168.43.19:11643" - const val SERVER_BASE_URL = "http://111.198.10.15:11304" + const val SERVER_BASE_URL = "http://111.198.10.15:11311" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f6c50be..d0f4d8f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.smarttube.utils.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* @@ -198,4 +199,13 @@ @Header("token") token: String, @Path("devcode") devcode: String ): String + + /** + * 查询工单 + * */ + @POST("/tube/qrcode-entry/add") + suspend fun addDevice( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index bb79624..79f45d1 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -4,9 +4,12 @@ import com.casic.smarttube.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject import java.io.File @@ -181,4 +184,39 @@ suspend fun obtainTubeLastData(devcode: String): String { return api.obtainTubeLastData(AuthenticationHelper.token!!, devcode) } + + /** + * 添加设备 + */ + suspend fun addDevice( + deviceCode: String, + deviceName: String, + ownerShip: String, + interval: String, + longitude: String, + latitude: String, + imagePaths: String, + scene: String, + addDeviceTime: String, + userId: String, + deptId: String + ): String { + val paramObject = JSONObject() + paramObject.put("deviceCode", deviceCode) + paramObject.put("deviceName", deviceName) + paramObject.put("projectName", ownerShip) + paramObject.put("frequency", interval) + paramObject.put("lng", longitude) + paramObject.put("lat", latitude) + paramObject.put("image", imagePaths) + paramObject.put("description", scene) + paramObject.put("createTime", addDeviceTime) + paramObject.put("ownerId", userId) + paramObject.put("deptId", deptId) + paramObject.put("version", "19") + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addDevice(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 6fea005..66f5ff9 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -16,11 +16,13 @@ import com.casic.smarttube.extensions.combineImagePath import com.casic.smarttube.extensions.compressImage import com.casic.smarttube.extensions.isNumber -import com.casic.smarttube.utils.DialogHelper -import com.casic.smarttube.utils.GlideLoadEngine -import com.casic.smarttube.utils.LocationHelper -import com.casic.smarttube.utils.QrConfigCreator +import com.casic.smarttube.extensions.reformat +import com.casic.smarttube.model.UserDetailModel +import com.casic.smarttube.utils.* +import com.casic.smarttube.vm.DeviceViewModel import com.casic.smarttube.vm.UploadImageViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -33,7 +35,9 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_add_device.* @@ -46,6 +50,7 @@ private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var uploadImageViewModel: UploadImageViewModel + private lateinit var deviceViewModel: DeviceViewModel private val context: Context = this@AddDeviceActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 @@ -64,6 +69,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) + deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) } override fun initEvent() { @@ -197,10 +203,59 @@ addDeviceTimeView.text = System.currentTimeMillis().timestampToCompleteDate() - //TODO 添加设备 submitButton.setOnClickListener { - + val deviceCode = deviceCodeView.text.toString().trim() + if (deviceCode.isBlank()) { + "请输入设备编号".show(context) + return@setOnClickListener + } + val ownerShip = ownerShipView.text.toString().trim() + if (ownerShip.isBlank()) { + "请输入设备所属项目".show(context) + return@setOnClickListener + } + val longitude = longitudeView.text.toString().trim() + val latitude = latitudeView.text.toString().trim() + if (longitude.isBlank() || latitude.isBlank()) { + "请先获取当前经纬度".show(context) + return@setOnClickListener + } + val userDetailJson = + SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String + if (userDetailJson.isNotBlank()) { + val userData = Gson().fromJson( + userDetailJson, object : TypeToken() {}.type + ) + deviceViewModel.addDevice( + deviceCode, + deviceNameView.text.toString(), + ownerShip, + collectIntervalView.text.toString(), + longitude, + latitude, + imagePaths.reformat(), + sceneEditView.text.toString().trim(), + addDeviceTimeView.text.toString(), + userData.id.toString(), + userData.deptId + ) + } } + + deviceViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "处理中,请稍后") + } + LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + LoadState.Fail -> { + DialogHelper.dismissLoadingDialog() + } + } + }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt new file mode 100644 index 0000000..33786db --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt @@ -0,0 +1,28 @@ +package com.casic.smarttube.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s) + } else { + builder.append(s).append(",") + } + } + return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index e22936c..d0786e8 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,7 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" -// const val SERVER_BASE_URL = "http://192.168.43.19:11643" - const val SERVER_BASE_URL = "http://111.198.10.15:11304" + const val SERVER_BASE_URL = "http://111.198.10.15:11311" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f6c50be..d0f4d8f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.smarttube.utils.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* @@ -198,4 +199,13 @@ @Header("token") token: String, @Path("devcode") devcode: String ): String + + /** + * 查询工单 + * */ + @POST("/tube/qrcode-entry/add") + suspend fun addDevice( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index bb79624..79f45d1 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -4,9 +4,12 @@ import com.casic.smarttube.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject import java.io.File @@ -181,4 +184,39 @@ suspend fun obtainTubeLastData(devcode: String): String { return api.obtainTubeLastData(AuthenticationHelper.token!!, devcode) } + + /** + * 添加设备 + */ + suspend fun addDevice( + deviceCode: String, + deviceName: String, + ownerShip: String, + interval: String, + longitude: String, + latitude: String, + imagePaths: String, + scene: String, + addDeviceTime: String, + userId: String, + deptId: String + ): String { + val paramObject = JSONObject() + paramObject.put("deviceCode", deviceCode) + paramObject.put("deviceName", deviceName) + paramObject.put("projectName", ownerShip) + paramObject.put("frequency", interval) + paramObject.put("lng", longitude) + paramObject.put("lat", latitude) + paramObject.put("image", imagePaths) + paramObject.put("description", scene) + paramObject.put("createTime", addDeviceTime) + paramObject.put("ownerId", userId) + paramObject.put("deptId", deptId) + paramObject.put("version", "19") + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addDevice(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 6fea005..66f5ff9 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -16,11 +16,13 @@ import com.casic.smarttube.extensions.combineImagePath import com.casic.smarttube.extensions.compressImage import com.casic.smarttube.extensions.isNumber -import com.casic.smarttube.utils.DialogHelper -import com.casic.smarttube.utils.GlideLoadEngine -import com.casic.smarttube.utils.LocationHelper -import com.casic.smarttube.utils.QrConfigCreator +import com.casic.smarttube.extensions.reformat +import com.casic.smarttube.model.UserDetailModel +import com.casic.smarttube.utils.* +import com.casic.smarttube.vm.DeviceViewModel import com.casic.smarttube.vm.UploadImageViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -33,7 +35,9 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_add_device.* @@ -46,6 +50,7 @@ private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var uploadImageViewModel: UploadImageViewModel + private lateinit var deviceViewModel: DeviceViewModel private val context: Context = this@AddDeviceActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 @@ -64,6 +69,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) + deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) } override fun initEvent() { @@ -197,10 +203,59 @@ addDeviceTimeView.text = System.currentTimeMillis().timestampToCompleteDate() - //TODO 添加设备 submitButton.setOnClickListener { - + val deviceCode = deviceCodeView.text.toString().trim() + if (deviceCode.isBlank()) { + "请输入设备编号".show(context) + return@setOnClickListener + } + val ownerShip = ownerShipView.text.toString().trim() + if (ownerShip.isBlank()) { + "请输入设备所属项目".show(context) + return@setOnClickListener + } + val longitude = longitudeView.text.toString().trim() + val latitude = latitudeView.text.toString().trim() + if (longitude.isBlank() || latitude.isBlank()) { + "请先获取当前经纬度".show(context) + return@setOnClickListener + } + val userDetailJson = + SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String + if (userDetailJson.isNotBlank()) { + val userData = Gson().fromJson( + userDetailJson, object : TypeToken() {}.type + ) + deviceViewModel.addDevice( + deviceCode, + deviceNameView.text.toString(), + ownerShip, + collectIntervalView.text.toString(), + longitude, + latitude, + imagePaths.reformat(), + sceneEditView.text.toString().trim(), + addDeviceTimeView.text.toString(), + userData.id.toString(), + userData.deptId + ) + } } + + deviceViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "处理中,请稍后") + } + LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + LoadState.Fail -> { + DialogHelper.dismissLoadingDialog() + } + } + }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt index c87c743..c868af4 100644 --- a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt @@ -4,10 +4,7 @@ import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.separateResponseCode import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.DeviceDetailModel -import com.casic.smarttube.model.DeviceHistoryDataModel -import com.casic.smarttube.model.LastDataModel -import com.casic.smarttube.model.MapDeviceModel +import com.casic.smarttube.model.* import com.casic.smarttube.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -23,6 +20,7 @@ val deviceDetailModel = MutableLiveData() val historyDataModel = MutableLiveData() val lastDataModel = MutableLiveData() + val addDeviceResult = MutableLiveData() fun obtainMapDeviceList() = launch({ val response = RetrofitServiceManager.obtainMapDeviceList() @@ -87,4 +85,45 @@ }, { it.printStackTrace() }) + + fun addDevice( + deviceCode: String, + deviceName: String, + ownerShip: String, + interval: String, + longitude: String, + latitude: String, + imagePaths: String, + scene: String, + addDeviceTime: String, + userId: String, + deptId: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.addDevice( + deviceCode, + deviceName, + ownerShip, + interval, + longitude, + latitude, + imagePaths, + scene, + addDeviceTime, + userId, + deptId + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + addDeviceResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt new file mode 100644 index 0000000..33786db --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt @@ -0,0 +1,28 @@ +package com.casic.smarttube.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s) + } else { + builder.append(s).append(",") + } + } + return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index e22936c..d0786e8 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,7 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" -// const val SERVER_BASE_URL = "http://192.168.43.19:11643" - const val SERVER_BASE_URL = "http://111.198.10.15:11304" + const val SERVER_BASE_URL = "http://111.198.10.15:11311" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f6c50be..d0f4d8f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.smarttube.utils.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* @@ -198,4 +199,13 @@ @Header("token") token: String, @Path("devcode") devcode: String ): String + + /** + * 查询工单 + * */ + @POST("/tube/qrcode-entry/add") + suspend fun addDevice( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index bb79624..79f45d1 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -4,9 +4,12 @@ import com.casic.smarttube.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject import java.io.File @@ -181,4 +184,39 @@ suspend fun obtainTubeLastData(devcode: String): String { return api.obtainTubeLastData(AuthenticationHelper.token!!, devcode) } + + /** + * 添加设备 + */ + suspend fun addDevice( + deviceCode: String, + deviceName: String, + ownerShip: String, + interval: String, + longitude: String, + latitude: String, + imagePaths: String, + scene: String, + addDeviceTime: String, + userId: String, + deptId: String + ): String { + val paramObject = JSONObject() + paramObject.put("deviceCode", deviceCode) + paramObject.put("deviceName", deviceName) + paramObject.put("projectName", ownerShip) + paramObject.put("frequency", interval) + paramObject.put("lng", longitude) + paramObject.put("lat", latitude) + paramObject.put("image", imagePaths) + paramObject.put("description", scene) + paramObject.put("createTime", addDeviceTime) + paramObject.put("ownerId", userId) + paramObject.put("deptId", deptId) + paramObject.put("version", "19") + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addDevice(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 6fea005..66f5ff9 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -16,11 +16,13 @@ import com.casic.smarttube.extensions.combineImagePath import com.casic.smarttube.extensions.compressImage import com.casic.smarttube.extensions.isNumber -import com.casic.smarttube.utils.DialogHelper -import com.casic.smarttube.utils.GlideLoadEngine -import com.casic.smarttube.utils.LocationHelper -import com.casic.smarttube.utils.QrConfigCreator +import com.casic.smarttube.extensions.reformat +import com.casic.smarttube.model.UserDetailModel +import com.casic.smarttube.utils.* +import com.casic.smarttube.vm.DeviceViewModel import com.casic.smarttube.vm.UploadImageViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -33,7 +35,9 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_add_device.* @@ -46,6 +50,7 @@ private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var uploadImageViewModel: UploadImageViewModel + private lateinit var deviceViewModel: DeviceViewModel private val context: Context = this@AddDeviceActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 @@ -64,6 +69,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) + deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) } override fun initEvent() { @@ -197,10 +203,59 @@ addDeviceTimeView.text = System.currentTimeMillis().timestampToCompleteDate() - //TODO 添加设备 submitButton.setOnClickListener { - + val deviceCode = deviceCodeView.text.toString().trim() + if (deviceCode.isBlank()) { + "请输入设备编号".show(context) + return@setOnClickListener + } + val ownerShip = ownerShipView.text.toString().trim() + if (ownerShip.isBlank()) { + "请输入设备所属项目".show(context) + return@setOnClickListener + } + val longitude = longitudeView.text.toString().trim() + val latitude = latitudeView.text.toString().trim() + if (longitude.isBlank() || latitude.isBlank()) { + "请先获取当前经纬度".show(context) + return@setOnClickListener + } + val userDetailJson = + SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String + if (userDetailJson.isNotBlank()) { + val userData = Gson().fromJson( + userDetailJson, object : TypeToken() {}.type + ) + deviceViewModel.addDevice( + deviceCode, + deviceNameView.text.toString(), + ownerShip, + collectIntervalView.text.toString(), + longitude, + latitude, + imagePaths.reformat(), + sceneEditView.text.toString().trim(), + addDeviceTimeView.text.toString(), + userData.id.toString(), + userData.deptId + ) + } } + + deviceViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "处理中,请稍后") + } + LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + LoadState.Fail -> { + DialogHelper.dismissLoadingDialog() + } + } + }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt index c87c743..c868af4 100644 --- a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt @@ -4,10 +4,7 @@ import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.separateResponseCode import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.DeviceDetailModel -import com.casic.smarttube.model.DeviceHistoryDataModel -import com.casic.smarttube.model.LastDataModel -import com.casic.smarttube.model.MapDeviceModel +import com.casic.smarttube.model.* import com.casic.smarttube.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -23,6 +20,7 @@ val deviceDetailModel = MutableLiveData() val historyDataModel = MutableLiveData() val lastDataModel = MutableLiveData() + val addDeviceResult = MutableLiveData() fun obtainMapDeviceList() = launch({ val response = RetrofitServiceManager.obtainMapDeviceList() @@ -87,4 +85,45 @@ }, { it.printStackTrace() }) + + fun addDevice( + deviceCode: String, + deviceName: String, + ownerShip: String, + interval: String, + longitude: String, + latitude: String, + imagePaths: String, + scene: String, + addDeviceTime: String, + userId: String, + deptId: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.addDevice( + deviceCode, + deviceName, + ownerShip, + interval, + longitude, + latitude, + imagePaths, + scene, + addDeviceTime, + userId, + deptId + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + addDeviceResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml index 201e6f0..3429043 100644 --- a/app/src/main/res/layout/activity_add_device.xml +++ b/app/src/main/res/layout/activity_add_device.xml @@ -57,12 +57,8 @@ - - diff --git a/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt new file mode 100644 index 0000000..33786db --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/extensions/ArrayList.kt @@ -0,0 +1,28 @@ +package com.casic.smarttube.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s) + } else { + builder.append(s).append(",") + } + } + return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index e22936c..d0786e8 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,7 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" -// const val SERVER_BASE_URL = "http://192.168.43.19:11643" - const val SERVER_BASE_URL = "http://111.198.10.15:11304" + const val SERVER_BASE_URL = "http://111.198.10.15:11311" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f6c50be..d0f4d8f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.smarttube.utils.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* @@ -198,4 +199,13 @@ @Header("token") token: String, @Path("devcode") devcode: String ): String + + /** + * 查询工单 + * */ + @POST("/tube/qrcode-entry/add") + suspend fun addDevice( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index bb79624..79f45d1 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -4,9 +4,12 @@ import com.casic.smarttube.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject import java.io.File @@ -181,4 +184,39 @@ suspend fun obtainTubeLastData(devcode: String): String { return api.obtainTubeLastData(AuthenticationHelper.token!!, devcode) } + + /** + * 添加设备 + */ + suspend fun addDevice( + deviceCode: String, + deviceName: String, + ownerShip: String, + interval: String, + longitude: String, + latitude: String, + imagePaths: String, + scene: String, + addDeviceTime: String, + userId: String, + deptId: String + ): String { + val paramObject = JSONObject() + paramObject.put("deviceCode", deviceCode) + paramObject.put("deviceName", deviceName) + paramObject.put("projectName", ownerShip) + paramObject.put("frequency", interval) + paramObject.put("lng", longitude) + paramObject.put("lat", latitude) + paramObject.put("image", imagePaths) + paramObject.put("description", scene) + paramObject.put("createTime", addDeviceTime) + paramObject.put("ownerId", userId) + paramObject.put("deptId", deptId) + paramObject.put("version", "19") + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addDevice(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 6fea005..66f5ff9 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -16,11 +16,13 @@ import com.casic.smarttube.extensions.combineImagePath import com.casic.smarttube.extensions.compressImage import com.casic.smarttube.extensions.isNumber -import com.casic.smarttube.utils.DialogHelper -import com.casic.smarttube.utils.GlideLoadEngine -import com.casic.smarttube.utils.LocationHelper -import com.casic.smarttube.utils.QrConfigCreator +import com.casic.smarttube.extensions.reformat +import com.casic.smarttube.model.UserDetailModel +import com.casic.smarttube.utils.* +import com.casic.smarttube.vm.DeviceViewModel import com.casic.smarttube.vm.UploadImageViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -33,7 +35,9 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_add_device.* @@ -46,6 +50,7 @@ private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var uploadImageViewModel: UploadImageViewModel + private lateinit var deviceViewModel: DeviceViewModel private val context: Context = this@AddDeviceActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 @@ -64,6 +69,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) + deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) } override fun initEvent() { @@ -197,10 +203,59 @@ addDeviceTimeView.text = System.currentTimeMillis().timestampToCompleteDate() - //TODO 添加设备 submitButton.setOnClickListener { - + val deviceCode = deviceCodeView.text.toString().trim() + if (deviceCode.isBlank()) { + "请输入设备编号".show(context) + return@setOnClickListener + } + val ownerShip = ownerShipView.text.toString().trim() + if (ownerShip.isBlank()) { + "请输入设备所属项目".show(context) + return@setOnClickListener + } + val longitude = longitudeView.text.toString().trim() + val latitude = latitudeView.text.toString().trim() + if (longitude.isBlank() || latitude.isBlank()) { + "请先获取当前经纬度".show(context) + return@setOnClickListener + } + val userDetailJson = + SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String + if (userDetailJson.isNotBlank()) { + val userData = Gson().fromJson( + userDetailJson, object : TypeToken() {}.type + ) + deviceViewModel.addDevice( + deviceCode, + deviceNameView.text.toString(), + ownerShip, + collectIntervalView.text.toString(), + longitude, + latitude, + imagePaths.reformat(), + sceneEditView.text.toString().trim(), + addDeviceTimeView.text.toString(), + userData.id.toString(), + userData.deptId + ) + } } + + deviceViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "处理中,请稍后") + } + LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + LoadState.Fail -> { + DialogHelper.dismissLoadingDialog() + } + } + }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt index c87c743..c868af4 100644 --- a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt @@ -4,10 +4,7 @@ import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.separateResponseCode import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.DeviceDetailModel -import com.casic.smarttube.model.DeviceHistoryDataModel -import com.casic.smarttube.model.LastDataModel -import com.casic.smarttube.model.MapDeviceModel +import com.casic.smarttube.model.* import com.casic.smarttube.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -23,6 +20,7 @@ val deviceDetailModel = MutableLiveData() val historyDataModel = MutableLiveData() val lastDataModel = MutableLiveData() + val addDeviceResult = MutableLiveData() fun obtainMapDeviceList() = launch({ val response = RetrofitServiceManager.obtainMapDeviceList() @@ -87,4 +85,45 @@ }, { it.printStackTrace() }) + + fun addDevice( + deviceCode: String, + deviceName: String, + ownerShip: String, + interval: String, + longitude: String, + latitude: String, + imagePaths: String, + scene: String, + addDeviceTime: String, + userId: String, + deptId: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.addDevice( + deviceCode, + deviceName, + ownerShip, + interval, + longitude, + latitude, + imagePaths, + scene, + addDeviceTime, + userId, + deptId + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + addDeviceResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml index 201e6f0..3429043 100644 --- a/app/src/main/res/layout/activity_add_device.xml +++ b/app/src/main/res/layout/activity_add_device.xml @@ -57,12 +57,8 @@ - - diff --git a/app/src/main/res/layout/popu_map_info.xml b/app/src/main/res/layout/popu_map_info.xml index ec42d1d..92c3206 100644 --- a/app/src/main/res/layout/popu_map_info.xml +++ b/app/src/main/res/layout/popu_map_info.xml @@ -19,7 +19,7 @@ + android:text="最新浓度:数据加载中..." />