Merge branch 'master' of gitlab.navinfo.com:CollectVehicle/OneMapQS

 Conflicts:
	app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt
This commit is contained in:
squallzhjch
2023-05-08 14:33:52 +08:00
152 changed files with 341 additions and 154 deletions

View File

@@ -11,7 +11,7 @@
"name": "道路种别"
},
{
"table": "OMDB_RD_LINK_DIRECT",
"table": "OMDB_LINK_DIRECT",
"code": 2010,
"name": "道路方向"
},

View File

@@ -47,11 +47,6 @@ class Constant {
*/
lateinit var DOWNLOAD_PATH: String
/**
* 服务器地址
*/
const val SERVER_ADDRESS = "http://fastmap.navinfo.com/"
const val DEBUG = true
var IS_VIDEO_SPEED by kotlin.properties.Delegates.notNull<Boolean>()

View File

@@ -1,74 +0,0 @@
package com.navinfo.omqs.bean
import com.google.gson.annotations.SerializedName
import com.navinfo.collect.library.data.entity.HadLinkDvoBean
import com.navinfo.omqs.Constant
import com.navinfo.omqs.tools.FileManager
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey
open class TaskBean @JvmOverloads constructor(
/**
* 测评任务id
*/
@PrimaryKey
var id: Int = 0,
/**
* 测评任务名称
*/
var evaluationTaskName: String = "",
/**
* 市编码
*/
var cityCode: String = "",
/**
*市名称
*/
var cityName: String = "",
/**
* omdb标准版
*/
var dataVersion: String = "",
/**
* 测评人名称
*/
var evaluatorName: String = "",
/**
* 项目标签
*/
var project: String = "",
/**
* 图幅号
*/
@SerializedName("hadLinkDvo")
var hadLinkDvoList: RealmList<HadLinkDvoBean> = RealmList<HadLinkDvoBean>(),
/**
* 文件大小
*/
var fileSize: Long = 0L,
/**
* 当前下载进度
*/
var currentSize: Long = 0L,
/**
* 当前下载状态
*/
var status: Int = FileDownloadStatus.NONE,
/**
* 上传状态
*/
var syncStatus: Int = FileManager.Companion.FileUploadStatus.NONE,
@Ignore
var message: String = "",
var color: Int = 0xFF00AA
) : RealmObject() {
fun getDownLoadUrl(): String {
return "${Constant.SERVER_ADDRESS}devcp/download?fileStr=$id"
}
}

View File

@@ -1,7 +1,6 @@
package com.navinfo.omqs.db
import com.navinfo.collect.library.data.entity.HadLinkDvoBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import io.realm.annotations.RealmModule
@RealmModule(classes = [TaskBean::class])

View File

@@ -7,6 +7,7 @@ import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.reflect.TypeToken
import com.navinfo.collect.library.data.dao.impl.TraceDataBase
import com.navinfo.collect.library.system.Constant.SERVER_ADDRESS
import com.navinfo.omqs.Constant
import com.navinfo.omqs.OMQSApplication
import com.navinfo.omqs.db.RoomAppDatabase
@@ -82,7 +83,7 @@ class GlobalModule {
converterFactory: GsonConverterFactory,
): Retrofit {
val retrofitBuilder = Retrofit.Builder()
.baseUrl(Constant.SERVER_ADDRESS)
.baseUrl(SERVER_ADDRESS)
.client(client.get())
.addConverterFactory(converterFactory)

View File

@@ -1,7 +1,7 @@
package com.navinfo.omqs.http
import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
/**

View File

@@ -1,7 +1,7 @@
package com.navinfo.omqs.http
import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import javax.inject.Inject

View File

@@ -2,9 +2,8 @@ package com.navinfo.omqs.http
import com.navinfo.omqs.bean.EvaluationInfo
import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.Response
import retrofit2.http.*

View File

@@ -4,13 +4,10 @@ import android.content.Context
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.Observer
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.hilt.ImportOMDBHiltFactory
import com.navinfo.omqs.hilt.OMDBDataBaseHiltFactory
import com.navinfo.omqs.http.RetrofitNetworkServiceAPI
import dagger.hilt.android.qualifiers.ActivityContext
import java.util.concurrent.ConcurrentHashMap
import javax.inject.Inject
/**

View File

@@ -5,7 +5,7 @@ import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer
import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.db.ImportOMDBHelper
import com.navinfo.omqs.tools.FileManager
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus

View File

@@ -3,7 +3,7 @@ package com.navinfo.omqs.http.taskupload
import android.content.Context
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.Observer
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.http.RetrofitNetworkServiceAPI
import java.util.concurrent.ConcurrentHashMap

View File

@@ -8,16 +8,10 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer
import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.omqs.bean.EvaluationInfo
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.omqs.http.NetResult
import com.navinfo.omqs.tools.FileManager
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.tools.FileManager.Companion.FileUploadStatus
import io.realm.Realm
import kotlinx.coroutines.*
import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import java.util.*
class TaskUploadScope(
@@ -67,7 +61,6 @@ class TaskUploadScope(
}
}
/**
* 更新状态
* @param status [OfflineMapCityBean.Status]
@@ -76,10 +69,13 @@ class TaskUploadScope(
if (taskBean.syncStatus != status) {
taskBean.syncStatus = status
uploadData.postValue(taskBean)
launch {
val realm = Realm.getDefaultInstance()
realm.executeTransaction {
it.copyToRealmOrUpdate(taskBean)
//同步中不进行状态记录,只做界面变更显示
if(status!=FileUploadStatus.UPLOADING){
launch {
val realm = Realm.getDefaultInstance()
realm.executeTransaction {
it.copyToRealmOrUpdate(taskBean)
}
}
}
}
@@ -112,11 +108,17 @@ class TaskUploadScope(
}
val realm = Realm.getDefaultInstance()
val bodyList: MutableList<EvaluationInfo> = ArrayList()
if (taskBean.syncStatus == FileUploadStatus.WAITING){
change(FileUploadStatus.UPLOADING)
}
taskBean.hadLinkDvoList.forEach { hadLinkDvoBean ->
val objects = realm.where(QsRecordBean::class.java)
.equalTo("linkId", /*"84207223282277331"*/hadLinkDvoBean.linkPid).findAll()
if (objects != null) {
if (objects != null&&objects.size>0) {
val copyList = realm.copyFromRealm(objects)
copyList.forEach {
val evaluationInfo = EvaluationInfo(
@@ -139,26 +141,26 @@ class TaskUploadScope(
bodyList.add(evaluationInfo)
}
}
}
if (bodyList.size == 0) {
if (taskBean.syncStatus == FileUploadStatus.WAITING)
change(FileUploadStatus.NONE)
return
}
val result = uploadManager.netApi.postRequest(bodyList)// .enqueue(object :
if(bodyList.size>0){
val result = uploadManager.netApi.postRequest(bodyList)// .enqueue(object :
// Callback<ResponseBody> {
if (result.isSuccessful) {
if (result.code() == 200) {
// handle the response
change(FileUploadStatus.DONE)
if (result.isSuccessful) {
if (result.code() == 200) {
// taskBean.syncStatus = FileUploadStatus.DONE
// handle the response
change(FileUploadStatus.DONE)
} else {
// handle the failure
change(FileUploadStatus.ERROR)
}
} else {
// handle the failure
change(FileUploadStatus.ERROR)
}
} else {
change(FileUploadStatus.ERROR)
}else{
change(FileUploadStatus.NONE)
}
} catch (e: Throwable) {
change(FileUploadStatus.ERROR)

View File

@@ -3,7 +3,7 @@ package com.navinfo.omqs.tools
import android.content.Context
import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import java.io.File
class FileManager {
@@ -27,6 +27,7 @@ class FileManager {
const val DONE = 1 //完成
const val ERROR = 2 //错误
const val WAITING = 3 //等待中
const val UPLOADING = 4 //同步中
}
//初始化数据文件夹

View File

@@ -176,7 +176,7 @@ class LoginViewModel @Inject constructor(
.directory(userFolder)
.name("OMQS.realm")
.encryptionKey(password)
.modules(Realm.getDefaultModule(), MyRealmModule())
// .modules(Realm.getDefaultModule(), MyRealmModule())
.schemaVersion(1)
.build()
Realm.setDefaultConfiguration(config)

View File

@@ -31,7 +31,7 @@ import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.ImportConfig
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.db.RealmOperateHelper
import com.navinfo.omqs.ui.dialog.CommonDialog
import com.navinfo.omqs.ui.manager.TakePhotoManager

View File

@@ -1,18 +1,11 @@
package com.navinfo.omqs.ui.fragment.tasklist
import android.content.Context
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.Observer
import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.omqs.databinding.AdapterQsRecordListBinding
import com.navinfo.omqs.databinding.AdapterTaskListBinding
import com.navinfo.omqs.http.taskdownload.TaskDownloadManager
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder

View File

@@ -1,25 +1,19 @@
package com.navinfo.omqs.ui.fragment.tasklist
import android.content.Context
import android.graphics.Color
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.Observer
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.databinding.AdapterTaskListBinding
import com.navinfo.omqs.http.taskdownload.TaskDownloadManager
import com.navinfo.omqs.http.taskupload.TaskUploadManager
import com.navinfo.omqs.tools.FileManager
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus
import com.navinfo.omqs.tools.FileManager.Companion.FileUploadStatus
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder
import java.io.File
import java.util.*
import javax.inject.Inject
/**
* 离线地图城市列表 RecyclerView 适配器
@@ -130,6 +124,9 @@ class TaskListAdapter(
FileUploadStatus.WAITING -> {
binding.taskUploadBtn.text = "等待同步"
}
FileUploadStatus.UPLOADING -> {
binding.taskUploadBtn.text = "同步中"
}
}
}

View File

@@ -10,7 +10,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.http.NetResult
import com.navinfo.omqs.http.NetworkService
import com.navinfo.omqs.tools.FileManager

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/black" />
<solid android:color="@color/white" />
<stroke
android:width="1dp"
android:color="@color/deepskyblue" />
android:color="@color/highFontColor" />
<corners
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"

View File

@@ -4,7 +4,7 @@
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cv_gray_153" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/cv_gray_153" />
</shape>
</item>
@@ -12,7 +12,7 @@
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape>
</item>
@@ -20,7 +20,7 @@
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape>
</item>
@@ -28,7 +28,7 @@
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cvm_red" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/cvm_red" />
</shape>
</item>
@@ -36,7 +36,7 @@
<shape>
<padding android:bottom="@dimen/default_widget_padding" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="@dimen/default_widget_padding"></padding>
<solid android:color="@color/transp" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/colorPrimary" />
</shape>
</item>

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cv_gray_153" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/cv_gray_153" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape>
</item>
<item android:state_checked="true">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape>
</item>
<item android:state_selected="true">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cvm_red" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/cvm_red" />
</shape>
</item>
<item>
<shape>
<padding android:bottom="@dimen/default_widget_padding" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="@dimen/default_widget_padding"></padding>
<solid android:color="@color/transp" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/colorPrimary" />
</shape>
</item>
</selector>

View File

@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ivory"
android:background="@color/white"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:paddingRight="10dp"
@@ -32,7 +32,7 @@
<TextView
android:id="@+id/offline_map_download_btn"
style="@style/map_download_style_btn"
style="@style/btn_default_stroke_horizontal_round"
android:layout_width="60dp"
android:layout_alignParentRight="true"
android:layout_gravity="center_vertical"

View File

@@ -13,7 +13,7 @@
android:id="@+id/qs_record_index"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@mipmap/marker"
android:drawableLeft="@mipmap/marker2"
android:maxLength="3"
android:text=""
android:layout_marginRight="@dimen/default_widget_padding"

View File

@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ivory"
android:background="@color/white"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:paddingRight="10dp"
@@ -58,7 +58,7 @@
<TextView
android:id="@+id/task_download_btn"
style="@style/map_download_style_btn"
style="@style/btn_default_stroke_horizontal_round"
android:layout_width="60dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
@@ -69,7 +69,7 @@
<TextView
android:id="@+id/task_upload_btn"
style="@style/map_download_style_btn"
style="@style/btn_default_stroke_horizontal_round"
android:layout_width="wrap_content"
android:minWidth="60dp"
android:layout_centerVertical="true"

View File

@@ -16,7 +16,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/drawable_bg_blue_frame_black_bg_4_radius"
android:background="@drawable/drawable_bg_blue_frame_white_bg_4_radius"
android:orientation="horizontal"
>
<ImageView

View File

@@ -107,6 +107,19 @@
<item name="android:textSize">15sp</item>
</style>
<style name="btn_default_stroke_horizontal_round" comment="左右为圆角的按钮" parent="ThemeOverlay.Material3.AutoCompleteTextView">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center_vertical</item>
<item name="android:paddingHorizontal">@dimen/default_widget_padding</item>
<item name="android:paddingVertical">5dp</item>
<item name="android:background">@drawable/selector_horizontal_round_corner_bg</item>
<item name="android:foreground">@drawable/ripple_btn_press</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:textColor">@color/selector_default_primary_press_secondary</item>
<item name="android:textSize">15sp</item>
</style>
<!-- 默认按钮样式 -->
<style name="btn_default_style" parent="content_font_default">
<item name="android:textColor">@color/btn_select_color</item>