From 2807b2f6894ce413dea6f2b882f3923a7906d0e4 Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Fri, 19 May 2023 17:12:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=99=BB=E5=BD=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=92=8C=E9=97=AE=E9=A2=98=E5=9B=9E=E4=BC=A0=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/navinfo/omqs/bean/EvaluationInfo.kt | 24 +++++++-- .../com/navinfo/omqs/bean/LoginUserBean.kt | 4 +- .../java/com/navinfo/omqs/bean/SysUserBean.kt | 8 +++ .../navinfo/omqs/http/DefaultUserResponse.kt | 7 +++ .../java/com/navinfo/omqs/http/NetResult.kt | 8 +-- .../com/navinfo/omqs/http/NetworkService.kt | 9 ++++ .../navinfo/omqs/http/NetworkServiceImpl.kt | 35 ++++++++++--- .../omqs/http/RetrofitNetworkServiceAPI.kt | 9 ++++ .../omqs/http/taskupload/TaskUploadScope.kt | 51 +++++++++++++++++-- .../omqs/ui/activity/login/LoginViewModel.kt | 40 ++++++++++++--- .../ui/fragment/tasklist/TaskViewModel.kt | 4 +- app/src/main/res/layout/activity_login.xml | 4 +- app/src/main/res/layout/adapter_task_list.xml | 5 +- 13 files changed, 176 insertions(+), 32 deletions(-) create mode 100644 app/src/main/java/com/navinfo/omqs/bean/SysUserBean.kt create mode 100644 app/src/main/java/com/navinfo/omqs/http/DefaultUserResponse.kt diff --git a/app/src/main/java/com/navinfo/omqs/bean/EvaluationInfo.kt b/app/src/main/java/com/navinfo/omqs/bean/EvaluationInfo.kt index 8515940f..f93034a8 100644 --- a/app/src/main/java/com/navinfo/omqs/bean/EvaluationInfo.kt +++ b/app/src/main/java/com/navinfo/omqs/bean/EvaluationInfo.kt @@ -12,7 +12,7 @@ data class EvaluationInfo( val linkPid: String = "",//Link号 @SerializedName("linkStatus") - val linkStatus: String = "",//Link状态 + val linkStatus: Int = 0,//Link状态 @SerializedName("markId") val markId: String = "",//Link状态 @@ -27,7 +27,7 @@ data class EvaluationInfo( val featureName: String = "",//问题类型 @SerializedName("problemType") - val problemType: String = "",//问题现象 + val problemType: String = "",//问题现象 0错误 1多余 2遗漏 服务字段定义为Integer,使用包装类,对应无值情况为空 @SerializedName("problemPhenomenon") val problemPhenomenon: String = "",//问题现象 @@ -48,6 +48,24 @@ data class EvaluationInfo( val evaluationDate: String = "",//测评日期(yyyy-mm-dd) @SerializedName("evaluationWay") - val evaluationWay: String = "现场测评"//测评方式 + val evaluationWay: String = "2",//测评方式 1生产测评 2现场测评 服务字段定义为Integer,使用包装类,对应无值情况为空 + + @SerializedName("roadClassfcation") + val roadClassfcation: String = "",//道路种别 + + @SerializedName("roadFunctionGrade") + val roadFunctionGrade: String = "",//道路功能等级 + + @SerializedName("noEvaluationreason") + val noEvaluationreason: String = "",//未测评原因 + + @SerializedName("linkLength") + val linkLength: Double = 0.0,//link长度(m 保留3位小数) + + @SerializedName("dataLevel") + val dataLevel: String = "",//数据级别 + + @SerializedName("linstringLength") + val linstringLength: Double = 0.0,//错误要素长度(m) ) : Parcelable diff --git a/app/src/main/java/com/navinfo/omqs/bean/LoginUserBean.kt b/app/src/main/java/com/navinfo/omqs/bean/LoginUserBean.kt index bfd9bcbd..27cc9587 100644 --- a/app/src/main/java/com/navinfo/omqs/bean/LoginUserBean.kt +++ b/app/src/main/java/com/navinfo/omqs/bean/LoginUserBean.kt @@ -1,6 +1,6 @@ package com.navinfo.omqs.bean data class LoginUserBean( - var username: String = "", - var password: String = "" + var userCode: String = "", + var passWord: String = "" ) \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/bean/SysUserBean.kt b/app/src/main/java/com/navinfo/omqs/bean/SysUserBean.kt new file mode 100644 index 00000000..d9ce0e6c --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/bean/SysUserBean.kt @@ -0,0 +1,8 @@ +package com.navinfo.omqs.bean + +data class SysUserBean( + var userName: String = "", + var passWord: String = "", + var userCode: String = "", + var roleId: Int = 0, +) \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/DefaultUserResponse.kt b/app/src/main/java/com/navinfo/omqs/http/DefaultUserResponse.kt new file mode 100644 index 00000000..cea3dcc6 --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/http/DefaultUserResponse.kt @@ -0,0 +1,7 @@ +package com.navinfo.omqs.http + +class DefaultUserResponse { + var success: Boolean = false + var msg: String = "" + var obj: T? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/NetResult.kt b/app/src/main/java/com/navinfo/omqs/http/NetResult.kt index 4222a09f..5c0f96ce 100644 --- a/app/src/main/java/com/navinfo/omqs/http/NetResult.kt +++ b/app/src/main/java/com/navinfo/omqs/http/NetResult.kt @@ -31,8 +31,8 @@ package com.navinfo.omqs.http sealed class NetResult { data class Success(val data: T?) : NetResult() - data class Failure(val code: Int, val msg: String) : NetResult() - data class Error(val exception: Exception) : NetResult() + data class Failure(val code: Int, val msg: String) : NetResult() + data class Error(val exception: Exception) : NetResult() object Loading : NetResult() /** @@ -42,8 +42,8 @@ sealed class NetResult { override fun toString(): String { return when (this) { is Success<*> -> "网络访问成功,返回正确结果Success[data=$data]" - is Failure -> "网络访问成功,返回错误结果Failure[$msg]" - is Error -> "网络访问出错 Error[exception=$exception]" + is Failure<*> -> "网络访问成功,返回错误结果Failure[$msg]" + is Error<*> -> "网络访问出错 Error[exception=$exception]" is Loading -> "网络访问中 Loading" } } diff --git a/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt b/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt index fbeb5ff9..2698d9b6 100644 --- a/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt +++ b/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt @@ -2,6 +2,10 @@ package com.navinfo.omqs.http import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.collect.library.data.entity.TaskBean +import com.navinfo.omqs.bean.LoginUserBean +import com.navinfo.omqs.bean.SysUserBean +import okhttp3.ResponseBody +import retrofit2.Response /** @@ -16,4 +20,9 @@ interface NetworkService { * 获取任务列表 */ suspend fun getTaskList(evaluatorNo:String): NetResult>> + + /** + * 登录接口 + */ + suspend fun loginUser(loginUserBean: LoginUserBean): NetResult> } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt index a7dc4eed..ffa4f2f1 100644 --- a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt +++ b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt @@ -2,8 +2,12 @@ package com.navinfo.omqs.http import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.collect.library.data.entity.TaskBean +import com.navinfo.omqs.bean.LoginUserBean +import com.navinfo.omqs.bean.SysUserBean import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext +import okhttp3.ResponseBody +import retrofit2.Response import javax.inject.Inject /** @@ -24,13 +28,13 @@ class NetworkServiceImpl @Inject constructor( if (result.code() == 200) { NetResult.Success(result.body()) } else { - NetResult.Failure(result.code(), result.message()) + NetResult.Failure(result.code(), result.message()) } } else { - NetResult.Failure(result.code(), result.message()) + NetResult.Failure(result.code(), result.message()) } } catch (e: Exception) { - NetResult.Error(e) + NetResult.Error(e) } } @@ -43,13 +47,32 @@ class NetworkServiceImpl @Inject constructor( if (result.code() == 200) { NetResult.Success(result.body()) } else { - NetResult.Failure(result.code(), result.message()) + NetResult.Failure(result.code(), result.message()) } } else { - NetResult.Failure(result.code(), result.message()) + NetResult.Failure(result.code(), result.message()) } } catch (e: Exception) { - NetResult.Error(e) + NetResult.Error(e) + } + } + + override suspend fun loginUser(loginUserBean: LoginUserBean): NetResult> = + //在IO线程中运行 + withContext(Dispatchers.IO) { + return@withContext try { + val result = netApi.retrofitLoginUser(loginUserBean) + if (result.isSuccessful) { + if (result.code() == 200) { + NetResult.Success(result.body()) + } else { + NetResult.Failure(result.code(), result.message()) + } + } else { + NetResult.Failure(result.code(), result.message()) + } + } catch (e: Exception) { + NetResult.Error(e) } } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt b/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt index b8f3919f..cee824a5 100644 --- a/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt +++ b/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt @@ -3,6 +3,8 @@ package com.navinfo.omqs.http import com.navinfo.omqs.bean.EvaluationInfo import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.collect.library.data.entity.TaskBean +import com.navinfo.omqs.bean.LoginUserBean +import com.navinfo.omqs.bean.SysUserBean import okhttp3.ResponseBody import retrofit2.Response import retrofit2.http.* @@ -40,6 +42,13 @@ interface RetrofitNetworkServiceAPI { @GET("/drdc/MapDownload/maplist") suspend fun retrofitGetOfflineMapCityList(): Response> + /** + * 登录接口 + */ + @Headers("Content-Type: application/json") + @POST("/devcp/loginUser") + suspend fun retrofitLoginUser(@Body loginUserBean: LoginUserBean): Response> + /** * 下载文件 */ diff --git a/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt b/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt index 10fb6570..f2976f61 100644 --- a/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt +++ b/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt @@ -121,26 +121,71 @@ class TaskUploadScope( if (objects != null&&objects.size>0) { val copyList = realm.copyFromRealm(objects) copyList.forEach { + var problemType = "0" + if(it.problemType=="错误"){ + problemType = "0" + }else if(it.problemType=="多余"){ + problemType = "1" + }else if(it.problemType=="遗漏"){ + problemType = "2" + } + var evaluationWay = "2"; +/* if(it.evaluationWay=="生产测评"){ + evaluationWay = "1" + }else if(it.evaluationWay=="现场测评"){ + evaluationWay = "2" + }*/ val evaluationInfo = EvaluationInfo( evaluationTaskId = taskBean.id.toString(), linkPid = hadLinkDvoBean.linkPid,//"84207223282277331" - linkStatus = "已测评", + linkStatus = 1, markId = hadLinkDvoBean.mesh,//"20065597" trackPhotoNumber = "", markGeometry = it.geometry, featureName = it.classType, - problemType = it.problemType, + problemType = problemType, problemPhenomenon = it.phenomenon, problemDesc = it.description, problemLink = it.problemLink, problemReason = it.cause, evaluatorName = it.checkUserId, evaluationDate = it.checkTime, - evaluationWay = "现场测评" + evaluationWay = evaluationWay, + roadClassfcation = "", + roadFunctionGrade = "", + noEvaluationreason = "", + linkLength = 0.0, + dataLevel = "", + linstringLength = 0.0, ) bodyList.add(evaluationInfo) } + }else{ + val evaluationInfo = EvaluationInfo( + evaluationTaskId = taskBean.id.toString(), + linkPid = hadLinkDvoBean.linkPid,//"84207223282277331" + linkStatus = 0, + markId = hadLinkDvoBean.mesh,//"20065597" + trackPhotoNumber = "", + markGeometry = "", + featureName = "", + problemType = "", + problemPhenomenon = "", + problemDesc = "", + problemLink = "", + problemReason = "", + evaluatorName = "", + evaluationDate = "", + evaluationWay = "", + roadClassfcation = "", + roadFunctionGrade = "", + noEvaluationreason = "", + linkLength = 0.0, + dataLevel = "", + linstringLength = 0.0, + ) + bodyList.add(evaluationInfo) } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt index bfbd5c4e..949dfa60 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt @@ -10,7 +10,6 @@ import androidx.lifecycle.viewModelScope import com.blankj.utilcode.util.ResourceUtils import com.navinfo.omqs.Constant import com.navinfo.omqs.bean.LoginUserBean -import com.navinfo.omqs.db.MyRealmModule import com.navinfo.omqs.db.RoomAppDatabase import com.navinfo.omqs.http.NetResult import com.navinfo.omqs.http.NetworkService @@ -19,6 +18,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel import io.realm.Realm import io.realm.RealmConfiguration import kotlinx.coroutines.* +import retrofit2.Response import java.io.File import java.io.IOException import javax.inject.Inject @@ -74,7 +74,7 @@ class LoginViewModel @Inject constructor( var jobLogin: Job? = null; init { - loginUser.value = LoginUserBean(username = "admin", password = "123456") + loginUser.value = LoginUserBean(userCode = "02911", passWord = "123456") } @@ -82,7 +82,7 @@ class LoginViewModel @Inject constructor( * 处理注册按钮 */ fun onClick(view: View) { - loginUser.value!!.username = "admin2" + loginUser.value!!.userCode = "admin2" loginUser.value = loginUser.value } @@ -111,12 +111,36 @@ class LoginViewModel @Inject constructor( // withContext(Dispatchers.IO) { //网络访问 loginStatus.postValue(LoginStatus.LOGIN_STATUS_NET_LOADING) - //假装网络访问,等待2秒 - delay(1000) + //登录访问 + when (val result = networkService.loginUser(LoginUserBean(userName,password))) { + is NetResult.Success<*> ->{ + if (result.data!=null) { + try { + + } catch (e: IOException) { + loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_FAILURE) + } + } + } + is NetResult.Error<*> ->{ + withContext(Dispatchers.Main) { + Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT) + .show() + } + } + is NetResult.Failure<*> ->{ + withContext(Dispatchers.Main) { + Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT) + .show() + } + } + else -> {} + } + //文件夹初始化 try { loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_INIT) - createUserFolder(context, "02911") + createUserFolder(context, userName) } catch (e: IOException) { loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_FAILURE) } @@ -134,13 +158,13 @@ class LoginViewModel @Inject constructor( roomAppDatabase.getOfflineMapDao().insertOrUpdate(result.data) } } - is NetResult.Error -> { + is NetResult.Error<*> -> { withContext(Dispatchers.Main) { Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT) .show() } } - is NetResult.Failure -> { + is NetResult.Failure<*> -> { withContext(Dispatchers.Main) { Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT) .show() diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index 6ea1334c..382ed521 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -91,13 +91,13 @@ class TaskViewModel @Inject constructor( } } } - is NetResult.Error -> { + is NetResult.Error<*> -> { withContext(Dispatchers.Main) { Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT) .show() } } - is NetResult.Failure -> { + is NetResult.Failure<*> -> { withContext(Dispatchers.Main) { Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT) .show() diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 415ee1e6..a756f978 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -92,7 +92,7 @@ android:hint="@string/input_user_name" android:lines="1" android:background="@drawable/shape_login_inputlayout_bg" - android:text="@{loginUserModel.loginUser.username}" + android:text="@{loginUserModel.loginUser.userCode}" tools:ignore="TouchTargetSizeCheck" /> @@ -113,7 +113,7 @@ android:lines="1" android:inputType="textPassword" android:background="@drawable/shape_login_inputlayout_bg" - android:text="@{loginUserModel.loginUser.password}" + android:text="@{loginUserModel.loginUser.passWord}" tools:ignore="TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/adapter_task_list.xml b/app/src/main/res/layout/adapter_task_list.xml index 50771d23..a8de167f 100644 --- a/app/src/main/res/layout/adapter_task_list.xml +++ b/app/src/main/res/layout/adapter_task_list.xml @@ -72,7 +72,8 @@ style="@style/btn_default_stroke_horizontal_round" android:layout_width="72dp" android:layout_alignParentRight="true" - android:layout_alignParentBottom="true" + android:layout_below="@id/task_data_version" + android:layout_marginTop="5dp" android:gravity="center" android:text="下载" android:textSize="@dimen/card_title_font_2size" /> @@ -108,7 +109,7 @@ style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="16dp" - android:layout_below="@id/task_color" + android:layout_below="@id/task_download_btn" android:paddingTop="10dp" android:progressDrawable="@drawable/progress_bg" android:visibility="invisible" />