fix: 合并代码
This commit is contained in:
commit
0f2bc264d3
@ -136,6 +136,7 @@ dependencies {
|
|||||||
|
|
||||||
//带侧滑的自定义列表
|
//带侧滑的自定义列表
|
||||||
implementation 'com.yanzhenjie.recyclerview:x:1.3.2'
|
implementation 'com.yanzhenjie.recyclerview:x:1.3.2'
|
||||||
|
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
|
||||||
}
|
}
|
||||||
//允许引用生成的代码
|
//允许引用生成的代码
|
||||||
kapt {
|
kapt {
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
"name": "道路种别",
|
"name": "道路种别",
|
||||||
"zoomMin": 15,
|
"zoomMin": 15,
|
||||||
"zoomMax": 20,
|
"zoomMax": 20,
|
||||||
|
"catch":false,
|
||||||
"checkLinkId": false
|
"checkLinkId": false
|
||||||
},
|
},
|
||||||
"2010": {
|
"2010": {
|
||||||
@ -487,6 +488,7 @@
|
|||||||
"name": "车道中心线",
|
"name": "车道中心线",
|
||||||
"zoomMin": 18,
|
"zoomMin": 18,
|
||||||
"zoomMax": 20,
|
"zoomMax": 20,
|
||||||
|
"catch":false,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
|
@ -122,6 +122,7 @@ class TableInfo {
|
|||||||
val zoomMin: Int = 16
|
val zoomMin: Int = 16
|
||||||
val zoomMax: Int = 21
|
val zoomMax: Int = 21
|
||||||
val checkLinkId: Boolean = true//是否需要校验linkid
|
val checkLinkId: Boolean = true//是否需要校验linkid
|
||||||
|
val catch: Boolean = true//是否需要捕捉
|
||||||
val name: String = ""
|
val name: String = ""
|
||||||
var checked : Boolean = true
|
var checked : Boolean = true
|
||||||
var transformer: MutableList<Transform> = mutableListOf()
|
var transformer: MutableList<Transform> = mutableListOf()
|
||||||
|
@ -229,6 +229,7 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
if (!renderEntity.properties.containsKey("name")) {
|
if (!renderEntity.properties.containsKey("name")) {
|
||||||
renderEntity.properties["name"] = renderEntity.name;
|
renderEntity.properties["name"] = renderEntity.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
//遍历判断只显示与任务Link相关的任务数据
|
//遍历判断只显示与任务Link相关的任务数据
|
||||||
if(currentConfig.checkLinkId){
|
if(currentConfig.checkLinkId){
|
||||||
|
|
||||||
@ -307,6 +308,12 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
// 对renderEntity做预处理后再保存
|
// 对renderEntity做预处理后再保存
|
||||||
val resultEntity = importConfig.transformProperties(renderEntity)
|
val resultEntity = importConfig.transformProperties(renderEntity)
|
||||||
|
|
||||||
|
if(currentConfig.catch){
|
||||||
|
renderEntity.catchEnable=0
|
||||||
|
}else{
|
||||||
|
renderEntity.catchEnable=1
|
||||||
|
}
|
||||||
|
|
||||||
//对code编码需要特殊处理 存在多个属性值时,渲染优先级:SA>PA,存在多个属性值时,渲染优先级:FRONTAGE>MAIN_SIDE_A CCESS
|
//对code编码需要特殊处理 存在多个属性值时,渲染优先级:SA>PA,存在多个属性值时,渲染优先级:FRONTAGE>MAIN_SIDE_A CCESS
|
||||||
if(renderEntity.code == DataCodeEnum.OMDB_LINK_ATTRIBUTE.code){
|
if(renderEntity.code == DataCodeEnum.OMDB_LINK_ATTRIBUTE.code){
|
||||||
|
|
||||||
|
@ -244,6 +244,7 @@ class RealmOperateHelper() {
|
|||||||
point: Point,
|
point: Point,
|
||||||
buffer: Double = DEFAULT_BUFFER,
|
buffer: Double = DEFAULT_BUFFER,
|
||||||
bufferType: BUFFER_TYPE = DEFAULT_BUFFER_TYPE,
|
bufferType: BUFFER_TYPE = DEFAULT_BUFFER_TYPE,
|
||||||
|
catchAll: Boolean = true,
|
||||||
sort: Boolean = true
|
sort: Boolean = true
|
||||||
): MutableList<RenderEntity> {
|
): MutableList<RenderEntity> {
|
||||||
val result = mutableListOf<RenderEntity>()
|
val result = mutableListOf<RenderEntity>()
|
||||||
@ -261,14 +262,25 @@ class RealmOperateHelper() {
|
|||||||
val yStart = tileYSet.stream().min(Comparator.naturalOrder()).orElse(null)
|
val yStart = tileYSet.stream().min(Comparator.naturalOrder()).orElse(null)
|
||||||
val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null)
|
val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null)
|
||||||
val realm = getRealmDefaultInstance()
|
val realm = getRealmDefaultInstance()
|
||||||
|
var realmList = mutableListOf<RenderEntity>()
|
||||||
|
if(catchAll){
|
||||||
// 查询realm中对应tile号的数据
|
// 查询realm中对应tile号的数据
|
||||||
val realmList = getRealmTools(RenderEntity::class.java, false)
|
realmList = getRealmTools(RenderEntity::class.java, false)
|
||||||
.notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.name)
|
|
||||||
.greaterThanOrEqualTo("tileX", xStart)
|
.greaterThanOrEqualTo("tileX", xStart)
|
||||||
.lessThanOrEqualTo("tileX", xEnd)
|
.lessThanOrEqualTo("tileX", xEnd)
|
||||||
.greaterThanOrEqualTo("tileY", yStart)
|
.greaterThanOrEqualTo("tileY", yStart)
|
||||||
.lessThanOrEqualTo("tileY", yEnd)
|
.lessThanOrEqualTo("tileY", yEnd)
|
||||||
.findAll()
|
.findAll()
|
||||||
|
}else{
|
||||||
|
// 查询realm中对应tile号的数据
|
||||||
|
realmList = getRealmTools(RenderEntity::class.java, false)
|
||||||
|
.lessThan("catchEnable", 1)
|
||||||
|
.greaterThanOrEqualTo("tileX", xStart)
|
||||||
|
.lessThanOrEqualTo("tileX", xEnd)
|
||||||
|
.greaterThanOrEqualTo("tileY", yStart)
|
||||||
|
.lessThanOrEqualTo("tileY", yEnd)
|
||||||
|
.findAll()
|
||||||
|
}
|
||||||
// 将获取到的数据和查询的polygon做相交,只返回相交的数据
|
// 将获取到的数据和查询的polygon做相交,只返回相交的数据
|
||||||
val queryResult = realmList?.stream()?.filter {
|
val queryResult = realmList?.stream()?.filter {
|
||||||
polygon.intersects(it.wkt)
|
polygon.intersects(it.wkt)
|
||||||
|
@ -196,7 +196,7 @@ class TaskUploadScope(
|
|||||||
evaluationTaskId = taskBean.id.toString(),
|
evaluationTaskId = taskBean.id.toString(),
|
||||||
linkPid = hadLinkDvoBean.linkPid,//"84207223282277331"
|
linkPid = hadLinkDvoBean.linkPid,//"84207223282277331"
|
||||||
linkStatus = linkStatus,
|
linkStatus = linkStatus,
|
||||||
markId = it.id,//"20065597"
|
markId = it.id,
|
||||||
trackPhotoNumber = "",
|
trackPhotoNumber = "",
|
||||||
markGeometry = it.geometry,
|
markGeometry = it.geometry,
|
||||||
featureName = it.classCode,
|
featureName = it.classCode,
|
||||||
|
@ -474,7 +474,8 @@ class MainViewModel @Inject constructor(
|
|||||||
GeometryTools.createPoint(
|
GeometryTools.createPoint(
|
||||||
point.longitude,
|
point.longitude,
|
||||||
point.latitude
|
point.latitude
|
||||||
)
|
),
|
||||||
|
buffer = 1.0, catchAll = false
|
||||||
)
|
)
|
||||||
|
|
||||||
if (itemList.size == 1) {
|
if (itemList.size == 1) {
|
||||||
@ -597,6 +598,7 @@ class MainViewModel @Inject constructor(
|
|||||||
DataCodeEnum.OMDB_ELECTRONICEYE.code,//电子眼
|
DataCodeEnum.OMDB_ELECTRONICEYE.code,//电子眼
|
||||||
DataCodeEnum.OMDB_TRAFFICLIGHT.code,//交通灯
|
DataCodeEnum.OMDB_TRAFFICLIGHT.code,//交通灯
|
||||||
DataCodeEnum.OMDB_LANEINFO.code,//车信
|
DataCodeEnum.OMDB_LANEINFO.code,//车信
|
||||||
|
DataCodeEnum.OMDB_WARNINGSIGN.code,//危险信息
|
||||||
-> signList.add(
|
-> signList.add(
|
||||||
signBean
|
signBean
|
||||||
)
|
)
|
||||||
@ -1279,5 +1281,9 @@ class MainViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun clearMarker() {
|
||||||
|
mapController.markerHandle.removeMarker()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,8 @@ package com.navinfo.omqs.ui.activity.map
|
|||||||
|
|
||||||
import android.graphics.PorterDuff
|
import android.graphics.PorterDuff
|
||||||
import android.graphics.PorterDuffColorFilter
|
import android.graphics.PorterDuffColorFilter
|
||||||
|
import android.graphics.drawable.BitmapDrawable
|
||||||
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
@ -14,6 +16,7 @@ import com.navinfo.omqs.databinding.AdapterSignLaneinfoBinding
|
|||||||
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
|
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
|
||||||
import com.navinfo.omqs.ui.other.BaseViewHolder
|
import com.navinfo.omqs.ui.other.BaseViewHolder
|
||||||
import com.navinfo.omqs.util.SignUtil
|
import com.navinfo.omqs.util.SignUtil
|
||||||
|
import org.oscim.android.canvas.AndroidSvgBitmap
|
||||||
|
|
||||||
interface OnSignAdapterClickListener {
|
interface OnSignAdapterClickListener {
|
||||||
fun onItemClick(signBean: SignBean)
|
fun onItemClick(signBean: SignBean)
|
||||||
@ -60,7 +63,34 @@ class SignAdapter(private var listener: OnSignAdapterClickListener?) :
|
|||||||
if (holder.viewBinding is AdapterSignBinding) {
|
if (holder.viewBinding is AdapterSignBinding) {
|
||||||
val bd = holder.viewBinding
|
val bd = holder.viewBinding
|
||||||
|
|
||||||
if (item.iconId != 0) bd.signMainIconBg.setImageResource(item.iconId)
|
if (item.iconId != 0) {
|
||||||
|
if (item.renderEntity.code == DataCodeEnum.OMDB_WARNINGSIGN.code) {
|
||||||
|
try {
|
||||||
|
var typeCode = "${item.iconId}"
|
||||||
|
while (typeCode.length < 5) {
|
||||||
|
typeCode = "0${typeCode}"
|
||||||
|
}
|
||||||
|
val input =
|
||||||
|
holder.viewBinding.root.context.assets.open("omdb/appendix/1105_${typeCode}_0.svg")
|
||||||
|
if (input != null) {
|
||||||
|
val bitmap =
|
||||||
|
AndroidSvgBitmap.getResourceBitmap(input, 1.0f, 60.0f, 60, 60, 100)
|
||||||
|
input.close()
|
||||||
|
val drawable = BitmapDrawable(
|
||||||
|
holder.viewBinding.root.context.resources,
|
||||||
|
bitmap
|
||||||
|
)
|
||||||
|
bd.signMainIconBg.setImageDrawable(drawable)
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e("jingo", "警示信息没有${item.iconId} 这个SVG")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
bd.signMainIconBg.setImageResource(item.iconId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bd.signMainIcon.text = item.iconText
|
bd.signMainIcon.text = item.iconText
|
||||||
bd.signBottomText.text = item.name
|
bd.signBottomText.text = item.name
|
||||||
//点击错误按钮
|
//点击错误按钮
|
||||||
|
@ -142,7 +142,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
override fun onCleared() {
|
override fun onCleared() {
|
||||||
super.onCleared()
|
super.onCleared()
|
||||||
mapController.mMapView.removeOnNIMapClickListener(TAG)
|
mapController.mMapView.removeOnNIMapClickListener(TAG)
|
||||||
mapController.markerHandle.removeMarker(TAG)
|
mapController.markerHandle.removeMarker()
|
||||||
mapController.lineHandler.removeLine()
|
mapController.lineHandler.removeLine()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ class ItemAdapter(private var itemListener: ((Int, RenderEntity) -> Unit?)? = nu
|
|||||||
val binding = holder.viewBinding as AdapterItemBinding
|
val binding = holder.viewBinding as AdapterItemBinding
|
||||||
var renderEntity = data[position]
|
var renderEntity = data[position]
|
||||||
binding.root.isSelected = selectPosition == position
|
binding.root.isSelected = selectPosition == position
|
||||||
|
binding.itemIndex.text = (position+1).toString()
|
||||||
binding.name.text = DataCodeEnum.findTableNameByCode(renderEntity.code)
|
binding.name.text = DataCodeEnum.findTableNameByCode(renderEntity.code)
|
||||||
binding.root.setOnClickListener {
|
binding.root.setOnClickListener {
|
||||||
if (selectPosition != position) {
|
if (selectPosition != position) {
|
||||||
|
@ -134,6 +134,7 @@ class SignMoreInfoFragment : BaseFragment() {
|
|||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
|
viewModel.clearMarker()
|
||||||
_binding = null
|
_binding = null
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,14 +1,22 @@
|
|||||||
package com.navinfo.omqs.ui.fragment.signMoreInfo
|
package com.navinfo.omqs.ui.fragment.signMoreInfo
|
||||||
|
|
||||||
|
import android.graphics.drawable.BitmapDrawable
|
||||||
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import com.bumptech.glide.Glide
|
||||||
|
import com.caverock.androidsvg.SVG
|
||||||
|
import com.caverock.androidsvg.SVGImageView
|
||||||
|
import com.navinfo.collect.library.enums.DataCodeEnum
|
||||||
import com.navinfo.omqs.databinding.AdapterTwoItemBinding
|
import com.navinfo.omqs.databinding.AdapterTwoItemBinding
|
||||||
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
|
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
|
||||||
import com.navinfo.omqs.ui.other.BaseViewHolder
|
import com.navinfo.omqs.ui.other.BaseViewHolder
|
||||||
|
import org.oscim.android.canvas.AndroidSvgBitmap
|
||||||
|
|
||||||
data class TwoItemAdapterItem(
|
data class TwoItemAdapterItem(
|
||||||
val title: String,
|
val title: String,
|
||||||
val text: String
|
val text: String,
|
||||||
|
val code: String = "",
|
||||||
)
|
)
|
||||||
|
|
||||||
class TwoItemAdapter : BaseRecyclerViewAdapter<TwoItemAdapterItem>() {
|
class TwoItemAdapter : BaseRecyclerViewAdapter<TwoItemAdapterItem>() {
|
||||||
@ -24,6 +32,31 @@ class TwoItemAdapter : BaseRecyclerViewAdapter<TwoItemAdapterItem>() {
|
|||||||
holder.viewBinding as AdapterTwoItemBinding
|
holder.viewBinding as AdapterTwoItemBinding
|
||||||
val item = data[position]
|
val item = data[position]
|
||||||
binding.title.text = item.title
|
binding.title.text = item.title
|
||||||
|
if (item.code == DataCodeEnum.OMDB_WARNINGSIGN.code) {
|
||||||
|
try {
|
||||||
|
val input =
|
||||||
|
holder.viewBinding.root.context.assets.open("omdb/appendix/1105_${item.text}_0.svg")
|
||||||
|
if (input != null) {
|
||||||
|
val bitmap = AndroidSvgBitmap.getResourceBitmap(input, 1.0f, 60.0f, 60, 60, 100)
|
||||||
|
input.close()
|
||||||
|
val drawableLeft = BitmapDrawable(
|
||||||
|
holder.viewBinding.root.context.resources,
|
||||||
|
bitmap
|
||||||
|
)
|
||||||
|
drawableLeft.setBounds(
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
(drawableLeft.minimumWidth * 1.2).toInt(),
|
||||||
|
(drawableLeft.minimumHeight * 1.2).toInt()
|
||||||
|
)//必须
|
||||||
|
binding.text.setCompoundDrawables(
|
||||||
|
drawableLeft, null, null, null
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e("jingo", "危险信息没有${item.text}这个svg")
|
||||||
|
}
|
||||||
|
}
|
||||||
binding.text.text = item.text
|
binding.text.text = item.text
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -95,7 +95,6 @@ class TaskFragment : BaseFragment() {
|
|||||||
//增加侧滑按钮
|
//增加侧滑按钮
|
||||||
binding.taskRecyclerview.setSwipeMenuCreator(mSwipeMenuCreator)
|
binding.taskRecyclerview.setSwipeMenuCreator(mSwipeMenuCreator)
|
||||||
|
|
||||||
|
|
||||||
//单项点击
|
//单项点击
|
||||||
binding.taskRecyclerview.setOnItemMenuClickListener { menuBridge, position ->
|
binding.taskRecyclerview.setOnItemMenuClickListener { menuBridge, position ->
|
||||||
menuBridge.closeMenu()
|
menuBridge.closeMenu()
|
||||||
|
@ -37,17 +37,10 @@ import com.navinfo.omqs.ui.widget.LeftDeleteView
|
|||||||
class TaskListAdapter(
|
class TaskListAdapter(
|
||||||
private val downloadManager: TaskDownloadManager,
|
private val downloadManager: TaskDownloadManager,
|
||||||
private val uploadManager: TaskUploadManager,
|
private val uploadManager: TaskUploadManager,
|
||||||
private val recyclerView: RecyclerView,
|
|
||||||
private var itemListener: ((Int, Int, TaskBean) -> Unit?)? = null,
|
private var itemListener: ((Int, Int, TaskBean) -> Unit?)? = null,
|
||||||
) : BaseRecyclerViewAdapter<TaskBean>() {
|
) : BaseRecyclerViewAdapter<TaskBean>() {
|
||||||
private var selectPosition = -1
|
private var selectPosition = -1
|
||||||
|
|
||||||
private var leftDeleteView: LeftDeleteView? = null
|
|
||||||
|
|
||||||
private val mRecyclerView = recyclerView
|
|
||||||
|
|
||||||
private var isShowDeleteView = false
|
|
||||||
|
|
||||||
private val downloadBtnClick = View.OnClickListener() {
|
private val downloadBtnClick = View.OnClickListener() {
|
||||||
if (it.tag != null) {
|
if (it.tag != null) {
|
||||||
val taskBean = data[it.tag as Int]
|
val taskBean = data[it.tag as Int]
|
||||||
@ -110,10 +103,6 @@ class TaskListAdapter(
|
|||||||
val viewBinding =
|
val viewBinding =
|
||||||
AdapterTaskListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
AdapterTaskListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
||||||
|
|
||||||
val deleteView = viewBinding.root
|
|
||||||
|
|
||||||
deleteView.setRecyclerView(mRecyclerView)
|
|
||||||
|
|
||||||
return BaseViewHolder(viewBinding)
|
return BaseViewHolder(viewBinding)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,18 +121,6 @@ class TaskListAdapter(
|
|||||||
val binding: AdapterTaskListBinding =
|
val binding: AdapterTaskListBinding =
|
||||||
holder.viewBinding as AdapterTaskListBinding
|
holder.viewBinding as AdapterTaskListBinding
|
||||||
val taskBean = data[position]
|
val taskBean = data[position]
|
||||||
binding.root.mStatusChangeLister = {
|
|
||||||
isShowDeleteView = it
|
|
||||||
if (it) {
|
|
||||||
//重置以后滑动布局
|
|
||||||
restoreItemView()
|
|
||||||
// 如果编辑菜单在显示
|
|
||||||
leftDeleteView = binding.root
|
|
||||||
selectPosition = position
|
|
||||||
} else {
|
|
||||||
selectPosition = -1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//tag 方便onclick里拿到数据
|
//tag 方便onclick里拿到数据
|
||||||
holder.tag = taskBean.id.toString()
|
holder.tag = taskBean.id.toString()
|
||||||
changeViews(binding, taskBean)
|
changeViews(binding, taskBean)
|
||||||
@ -196,9 +173,6 @@ class TaskListAdapter(
|
|||||||
binding.root.isSelected = selectPosition == position
|
binding.root.isSelected = selectPosition == position
|
||||||
|
|
||||||
binding.taskItemLayout.setOnClickListener {
|
binding.taskItemLayout.setOnClickListener {
|
||||||
if (isShowDeleteView) {
|
|
||||||
leftDeleteView?.resetDeleteStatus()
|
|
||||||
} else {
|
|
||||||
val pos = holder.adapterPosition
|
val pos = holder.adapterPosition
|
||||||
if (selectPosition != pos) {
|
if (selectPosition != pos) {
|
||||||
val lastPos = selectPosition
|
val lastPos = selectPosition
|
||||||
@ -210,32 +184,11 @@ class TaskListAdapter(
|
|||||||
itemListener?.invoke(position, ItemClickStatus.ITEM_LAYOUT_CLICK, taskBean)
|
itemListener?.invoke(position, ItemClickStatus.ITEM_LAYOUT_CLICK, taskBean)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
binding.taskDeleteLayout.setOnClickListener {
|
|
||||||
//重置状态
|
|
||||||
leftDeleteView?.resetDeleteStatus()
|
|
||||||
if (taskBean.syncStatus != FileUploadStatus.DONE) {
|
|
||||||
Toast.makeText(binding.taskUploadBtn.context, "数据未上传,不允许关闭!", Toast.LENGTH_SHORT)
|
|
||||||
.show()
|
|
||||||
} else {
|
|
||||||
itemListener?.invoke(position, ItemClickStatus.DELETE_LAYOUT_CLICK, taskBean)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 重置item状态
|
|
||||||
* @param point
|
|
||||||
*/
|
|
||||||
private fun restoreItemView() {
|
|
||||||
leftDeleteView?.let {
|
|
||||||
if (isShowDeleteView)
|
|
||||||
it.resetDeleteStatus()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inner class DownloadObserver(val id: Int, val holder: BaseViewHolder) :
|
inner class DownloadObserver(val id: Int, val holder: BaseViewHolder) :
|
||||||
Observer<TaskBean> {
|
Observer<TaskBean> {
|
||||||
override fun onChanged(taskBean: TaskBean?) {
|
override fun onChanged(taskBean: TaskBean?) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.navinfo.omqs.ui.fragment.tasklist
|
package com.navinfo.omqs.ui.fragment.tasklist
|
||||||
|
|
||||||
import android.os.Build
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.Editable
|
import android.text.Editable
|
||||||
import android.text.TextWatcher
|
import android.text.TextWatcher
|
||||||
@ -9,12 +8,18 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
|
import com.navinfo.omqs.R
|
||||||
import com.navinfo.omqs.databinding.FragmentTaskListBinding
|
import com.navinfo.omqs.databinding.FragmentTaskListBinding
|
||||||
import com.navinfo.omqs.http.taskdownload.TaskDownloadManager
|
import com.navinfo.omqs.http.taskdownload.TaskDownloadManager
|
||||||
import com.navinfo.omqs.http.taskupload.TaskUploadManager
|
import com.navinfo.omqs.http.taskupload.TaskUploadManager
|
||||||
|
import com.navinfo.omqs.tools.FileManager
|
||||||
import com.navinfo.omqs.ui.fragment.BaseFragment
|
import com.navinfo.omqs.ui.fragment.BaseFragment
|
||||||
import com.navinfo.omqs.ui.other.shareViewModels
|
import com.navinfo.omqs.ui.other.shareViewModels
|
||||||
|
import com.yanzhenjie.recyclerview.SwipeMenuCreator
|
||||||
|
import com.yanzhenjie.recyclerview.SwipeMenuItem
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
import org.videolan.vlc.Util
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
@ -35,7 +40,7 @@ class TaskListFragment : BaseFragment() {
|
|||||||
|
|
||||||
private val adapter: TaskListAdapter by lazy {
|
private val adapter: TaskListAdapter by lazy {
|
||||||
TaskListAdapter(
|
TaskListAdapter(
|
||||||
downloadManager, uploadManager, binding.taskListRecyclerview
|
downloadManager, uploadManager,
|
||||||
) { _, status, taskBean ->
|
) { _, status, taskBean ->
|
||||||
if (taskBean.hadLinkDvoList.isEmpty()) {
|
if (taskBean.hadLinkDvoList.isEmpty()) {
|
||||||
Toast.makeText(context, "数据错误,无Link数据!", Toast.LENGTH_SHORT).show()
|
Toast.makeText(context, "数据错误,无Link数据!", Toast.LENGTH_SHORT).show()
|
||||||
@ -46,8 +51,7 @@ class TaskListFragment : BaseFragment() {
|
|||||||
viewModel.setSelectTaskBean(taskBean)
|
viewModel.setSelectTaskBean(taskBean)
|
||||||
}
|
}
|
||||||
TaskListAdapter.Companion.ItemClickStatus.DELETE_LAYOUT_CLICK -> {
|
TaskListAdapter.Companion.ItemClickStatus.DELETE_LAYOUT_CLICK -> {
|
||||||
showLoadingDialog("正在关闭")
|
|
||||||
context?.let { viewModel.removeTask(it, taskBean) }
|
|
||||||
}
|
}
|
||||||
TaskListAdapter.Companion.ItemClickStatus.UPLOAD_LAYOUT_CLICK -> {
|
TaskListAdapter.Companion.ItemClickStatus.UPLOAD_LAYOUT_CLICK -> {
|
||||||
showLoadingDialog("正在校验")
|
showLoadingDialog("正在校验")
|
||||||
@ -74,12 +78,53 @@ class TaskListFragment : BaseFragment() {
|
|||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
|
//注意:使用滑动菜单不能开启滑动删除,否则只有滑动删除没有滑动菜单
|
||||||
|
val mSwipeMenuCreator = SwipeMenuCreator { _, rightMenu, _ ->
|
||||||
|
//添加菜单自动添加至尾部
|
||||||
|
val deleteItem = SwipeMenuItem(context)
|
||||||
|
deleteItem.height = Util.convertDpToPx(requireContext(), 60)
|
||||||
|
deleteItem.width = Util.convertDpToPx(requireContext(), 80)
|
||||||
|
deleteItem.text = "关闭"
|
||||||
|
deleteItem.background = requireContext().getDrawable(R.color.red)
|
||||||
|
deleteItem.setTextColor(requireContext().resources.getColor(R.color.white))
|
||||||
|
rightMenu.addMenuItem(deleteItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
val layoutManager = LinearLayoutManager(context)
|
val layoutManager = LinearLayoutManager(context)
|
||||||
//// 设置 RecyclerView 的固定大小,避免在滚动时重新计算视图大小和布局,提高性能
|
//// 设置 RecyclerView 的固定大小,避免在滚动时重新计算视图大小和布局,提高性能
|
||||||
binding.taskListRecyclerview.setHasFixedSize(true)
|
binding.taskListRecyclerview.setHasFixedSize(true)
|
||||||
binding.taskListRecyclerview.layoutManager = layoutManager
|
binding.taskListRecyclerview.layoutManager = layoutManager
|
||||||
|
|
||||||
|
//增加侧滑按钮
|
||||||
|
binding.taskListRecyclerview.setSwipeMenuCreator(mSwipeMenuCreator)
|
||||||
|
|
||||||
|
//单项点击
|
||||||
|
binding.taskListRecyclerview.setOnItemMenuClickListener { menuBridge, position ->
|
||||||
|
menuBridge.closeMenu()
|
||||||
|
val taskBean = adapter.data[position]
|
||||||
|
if (taskBean.syncStatus != FileManager.Companion.FileUploadStatus.DONE) {
|
||||||
|
Toast.makeText(context, "数据未上传,不允许关闭!", Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
|
} else {
|
||||||
|
viewModel.removeTask(requireContext(), taskBean)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新
|
||||||
|
*/
|
||||||
|
binding.refreshLayout.setOnRefreshListener {
|
||||||
|
viewModel.loadNetTaskList(requireContext())
|
||||||
|
}
|
||||||
|
|
||||||
|
loadFinish()
|
||||||
binding.taskListRecyclerview.adapter = adapter
|
binding.taskListRecyclerview.adapter = adapter
|
||||||
|
|
||||||
viewModel.liveDataTaskList.observe(viewLifecycleOwner) {
|
viewModel.liveDataTaskList.observe(viewLifecycleOwner) {
|
||||||
|
loadFinish()
|
||||||
adapter.initSelectTask(it, viewModel.currentSelectTaskBean?.id)
|
adapter.initSelectTask(it, viewModel.currentSelectTaskBean?.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,7 +139,12 @@ class TaskListFragment : BaseFragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
binding.taskListSearch.addTextChangedListener(object : TextWatcher {
|
binding.taskListSearch.addTextChangedListener(object : TextWatcher {
|
||||||
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
|
override fun beforeTextChanged(
|
||||||
|
s: CharSequence?,
|
||||||
|
start: Int,
|
||||||
|
count: Int,
|
||||||
|
after: Int
|
||||||
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
|
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
|
||||||
@ -106,8 +156,20 @@ class TaskListFragment : BaseFragment() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun loadFinish() {
|
||||||
|
binding.refreshLayout.isRefreshing = false
|
||||||
|
|
||||||
|
|
||||||
|
// 第一次加载数据:一定要调用这个方法,否则不会触发加载更多。
|
||||||
|
// 第一个参数:表示此次数据是否为空,假如你请求到的list为空(== null || list.size == 0),那么这里就要true。
|
||||||
|
// 第二个参数:表示是否还有更多数据,根据服务器返回给你的page等信息判断是否还有更多,这样可以提供性能,如果不能判断则传true。
|
||||||
|
|
||||||
|
// 第一次加载数据:一定要调用这个方法,否则不会触发加载更多。
|
||||||
|
// 第一个参数:表示此次数据是否为空,假如你请求到的list为空(== null || list.size == 0),那么这里就要true。
|
||||||
|
// 第二个参数:表示是否还有更多数据,根据服务器返回给你的page等信息判断是否还有更多,这样可以提供性能,如果不能判断则传true。
|
||||||
|
binding.taskListRecyclerview.loadMoreFinish(true, false)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
_binding = null
|
_binding = null
|
||||||
|
@ -5,6 +5,7 @@ import android.content.SharedPreferences
|
|||||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
|
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
@ -20,8 +21,10 @@ import com.navinfo.collect.library.utils.GeometryTools
|
|||||||
import com.navinfo.collect.library.utils.MapParamUtils
|
import com.navinfo.collect.library.utils.MapParamUtils
|
||||||
import com.navinfo.omqs.Constant
|
import com.navinfo.omqs.Constant
|
||||||
import com.navinfo.omqs.db.RealmOperateHelper
|
import com.navinfo.omqs.db.RealmOperateHelper
|
||||||
|
import com.navinfo.omqs.http.NetResult
|
||||||
import com.navinfo.omqs.http.NetworkService
|
import com.navinfo.omqs.http.NetworkService
|
||||||
import com.navinfo.omqs.tools.FileManager
|
import com.navinfo.omqs.tools.FileManager
|
||||||
|
import com.navinfo.omqs.ui.activity.login.LoginStatus
|
||||||
import com.navinfo.omqs.ui.dialog.FirstDialog
|
import com.navinfo.omqs.ui.dialog.FirstDialog
|
||||||
import com.navinfo.omqs.util.DateTimeUtil
|
import com.navinfo.omqs.util.DateTimeUtil
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
@ -176,6 +179,72 @@ class TaskViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取任务列表
|
||||||
|
*/
|
||||||
|
fun loadNetTaskList(context: Context){
|
||||||
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
when (val result = networkService.getTaskList(Constant.USER_ID)) {
|
||||||
|
is NetResult.Success -> {
|
||||||
|
if (result.data != null) {
|
||||||
|
val realm = Realm.getDefaultInstance()
|
||||||
|
realm.executeTransaction {
|
||||||
|
result.data.obj?.let { list ->
|
||||||
|
for (index in list.indices) {
|
||||||
|
val task = list[index]
|
||||||
|
val item = realm.where(TaskBean::class.java).equalTo(
|
||||||
|
"id", task.id
|
||||||
|
).findFirst()
|
||||||
|
if (item != null) {
|
||||||
|
task.fileSize = item.fileSize
|
||||||
|
task.status = item.status
|
||||||
|
task.currentSize = item.currentSize
|
||||||
|
task.hadLinkDvoList = item.hadLinkDvoList
|
||||||
|
//已上传后不在更新操作时间
|
||||||
|
if (task.syncStatus != FileManager.Companion.FileUploadStatus.DONE) {
|
||||||
|
//赋值时间,用于查询过滤
|
||||||
|
task.operationTime = DateTimeUtil.getNowDate().time
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (hadLink in task.hadLinkDvoList) {
|
||||||
|
hadLink.taskId = task.id
|
||||||
|
}
|
||||||
|
//赋值时间,用于查询过滤
|
||||||
|
task.operationTime = DateTimeUtil.getNowDate().time
|
||||||
|
}
|
||||||
|
realm.copyToRealmOrUpdate(task)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getLocalTaskList()
|
||||||
|
}
|
||||||
|
|
||||||
|
is NetResult.Error<*> -> {
|
||||||
|
withContext(Dispatchers.Main) {
|
||||||
|
Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
getLocalTaskList()
|
||||||
|
}
|
||||||
|
|
||||||
|
is NetResult.Failure<*> -> {
|
||||||
|
withContext(Dispatchers.Main) {
|
||||||
|
Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
getLocalTaskList()
|
||||||
|
}
|
||||||
|
|
||||||
|
is NetResult.Loading -> {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取任务列表
|
* 获取任务列表
|
||||||
*/
|
*/
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.navinfo.omqs.util
|
package com.navinfo.omqs.util
|
||||||
|
|
||||||
|
import android.provider.ContactsContract.Data
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.navinfo.collect.library.data.entity.RenderEntity
|
import com.navinfo.collect.library.data.entity.RenderEntity
|
||||||
import com.navinfo.collect.library.enums.DataCodeEnum
|
import com.navinfo.collect.library.enums.DataCodeEnum
|
||||||
@ -82,10 +83,6 @@ class SignUtil {
|
|||||||
else -> ""
|
else -> ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//隧道
|
|
||||||
DataCodeEnum.OMDB_TUNNEL.code -> "隧道"
|
|
||||||
//环岛
|
|
||||||
DataCodeEnum.OMDB_ROUNDABOUT.code -> "环岛"
|
|
||||||
//主辅路出入口
|
//主辅路出入口
|
||||||
DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code -> "出入口"
|
DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code -> "出入口"
|
||||||
//辅路
|
//辅路
|
||||||
@ -110,10 +107,8 @@ class SignUtil {
|
|||||||
DataCodeEnum.OMDB_LINK_FORM2_11.code -> "风景路"
|
DataCodeEnum.OMDB_LINK_FORM2_11.code -> "风景路"
|
||||||
DataCodeEnum.OMDB_LINK_FORM2_12.code -> "测试路"
|
DataCodeEnum.OMDB_LINK_FORM2_12.code -> "测试路"
|
||||||
DataCodeEnum.OMDB_LINK_FORM2_13.code -> "驾考路"
|
DataCodeEnum.OMDB_LINK_FORM2_13.code -> "驾考路"
|
||||||
DataCodeEnum.OMDB_VIADUCT.code -> "高架"
|
|
||||||
DataCodeEnum.OMDB_LINK_CONSTRUCTION.code -> "道路施工"
|
|
||||||
DataCodeEnum.OMDB_LANE_CONSTRUCTION.code -> "车道施工"
|
|
||||||
else -> ""
|
else -> ""
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,38 +123,8 @@ class SignUtil {
|
|||||||
DataCodeEnum.OMDB_RD_LINK_KIND.code -> "种别"
|
DataCodeEnum.OMDB_RD_LINK_KIND.code -> "种别"
|
||||||
//道路方向
|
//道路方向
|
||||||
DataCodeEnum.OMDB_LINK_DIRECT.code -> "方向"
|
DataCodeEnum.OMDB_LINK_DIRECT.code -> "方向"
|
||||||
//车道边界类型
|
|
||||||
DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code -> "车道边界类型"
|
|
||||||
//常规线限速
|
//常规线限速
|
||||||
DataCodeEnum.OMDB_LINK_SPEEDLIMIT.code -> "线限速"
|
DataCodeEnum.OMDB_LINK_SPEEDLIMIT.code -> "线限速"
|
||||||
//全封闭
|
|
||||||
DataCodeEnum.OMDB_CON_ACCESS.code -> "全封闭" //暂时不要标题
|
|
||||||
//匝道
|
|
||||||
DataCodeEnum.OMDB_RAMP.code -> "匝道"
|
|
||||||
//车道数
|
|
||||||
DataCodeEnum.OMDB_LANE_NUM.code -> "车道数"
|
|
||||||
//常规点限速
|
|
||||||
DataCodeEnum.OMDB_SPEEDLIMIT.code -> "常规点限速"
|
|
||||||
//常点限速
|
|
||||||
DataCodeEnum.OMDB_SPEEDLIMIT_COND.code -> "条件点限速"
|
|
||||||
//可变点限速
|
|
||||||
DataCodeEnum.OMDB_SPEEDLIMIT_VAR.code -> "可变点限速"
|
|
||||||
//普通交限
|
|
||||||
DataCodeEnum.OMDB_RESTRICTION.code -> "普通交限"
|
|
||||||
//电子眼
|
|
||||||
DataCodeEnum.OMDB_ELECTRONICEYE.code -> "电子眼"
|
|
||||||
//交通灯
|
|
||||||
DataCodeEnum.OMDB_TRAFFICLIGHT.code -> "交通灯"
|
|
||||||
//车信
|
|
||||||
DataCodeEnum.OMDB_LANEINFO.code -> "车信"
|
|
||||||
//上下线分离
|
|
||||||
DataCodeEnum.OMDB_MULTI_DIGITIZED.code -> "上下线分离"
|
|
||||||
//桥
|
|
||||||
DataCodeEnum.OMDB_BRIDGE.code -> "桥"
|
|
||||||
//隧道
|
|
||||||
DataCodeEnum.OMDB_TUNNEL.code -> "隧道"
|
|
||||||
//环岛
|
|
||||||
DataCodeEnum.OMDB_ROUNDABOUT.code -> "环岛"
|
|
||||||
|
|
||||||
DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code,
|
DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code,
|
||||||
DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code,
|
DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code,
|
||||||
@ -183,11 +148,7 @@ class SignUtil {
|
|||||||
DataCodeEnum.OMDB_LINK_FORM2_12.code,
|
DataCodeEnum.OMDB_LINK_FORM2_12.code,
|
||||||
DataCodeEnum.OMDB_LINK_FORM2_13.code -> "道路形态"
|
DataCodeEnum.OMDB_LINK_FORM2_13.code -> "道路形态"
|
||||||
|
|
||||||
DataCodeEnum.OMDB_VIADUCT.code -> "高架"
|
else -> DataCodeEnum.findTableNameByCode(data.code)
|
||||||
DataCodeEnum.OMDB_LINK_CONSTRUCTION.code -> "道路施工"
|
|
||||||
DataCodeEnum.OMDB_LANE_CONSTRUCTION.code -> "车道施工"
|
|
||||||
|
|
||||||
else -> ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -349,18 +310,113 @@ class SignUtil {
|
|||||||
title = "linkPid", text = "${data.properties["linkPid"]}"
|
title = "linkPid", text = "${data.properties["linkPid"]}"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
val validPeriod = data.properties["validPeriod"]
|
|
||||||
if(validPeriod != null){
|
|
||||||
|
|
||||||
|
val limitType = when (data.properties["limitType"]) {
|
||||||
|
"4" -> "施工(全封闭)"
|
||||||
|
"13" -> "施工(非全封闭)"
|
||||||
|
else -> ""
|
||||||
|
}
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "限制类型",
|
||||||
|
text = limitType
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val validPeriod = data.properties["validPeriod"]
|
||||||
|
if (validPeriod != null) {
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "施工时间",
|
||||||
|
text = "${TimePeriodUtil.getTimePeriod(validPeriod)}"
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//车道施工
|
//车道施工
|
||||||
DataCodeEnum.OMDB_LANE_CONSTRUCTION.code -> {
|
DataCodeEnum.OMDB_LANE_CONSTRUCTION.code -> {
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "车道号码", text = "${data.properties["laneLinkPid"]}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val startTime = data.properties["startTime"]
|
||||||
|
if (startTime != null) {
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "施工开始时间",
|
||||||
|
text = "${TimePeriodUtil.getTimePeriod(startTime)}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
val endTime = data.properties["endTime"]
|
||||||
|
if (endTime != null) {
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "施工结束时间",
|
||||||
|
text = "${TimePeriodUtil.getTimePeriod(endTime)}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//警示信息
|
||||||
|
DataCodeEnum.OMDB_WARNINGSIGN.code -> {
|
||||||
list.add(
|
list.add(
|
||||||
TwoItemAdapterItem(
|
TwoItemAdapterItem(
|
||||||
title = "linkPid", text = "${data.properties["linkPid"]}"
|
title = "linkPid", text = "${data.properties["linkPid"]}"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "警示信息号码", text = "${data.properties["warningsignId"]}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val direct = when (data.properties["direct"]) {
|
||||||
|
"2" -> "顺方向"
|
||||||
|
"3" -> "逆方向"
|
||||||
|
else -> ""
|
||||||
|
}
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "作用方向", text = direct
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "标牌类型",
|
||||||
|
text = "${data.properties["typeCode"]}",
|
||||||
|
code = data.code
|
||||||
|
)
|
||||||
|
)
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "有效距离", text = "${data.properties["validDis"]}米"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "预告距离", text = "${data.properties["warnDis"]}米"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val vehicleType = data.properties["warnDis"]
|
||||||
|
if (vehicleType != null) {
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "车辆类型",
|
||||||
|
text = getElectronicEyeVehicleType(vehicleType.toInt())
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "时间段", text = "${data.properties["validPeriod"]}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "文字说明", text = "${data.properties["descript"]}"
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
adapter.data = list
|
adapter.data = list
|
||||||
@ -728,6 +784,13 @@ class SignUtil {
|
|||||||
DataCodeEnum.OMDB_ELECTRONICEYE.code -> R.drawable.icon_electronic_eye
|
DataCodeEnum.OMDB_ELECTRONICEYE.code -> R.drawable.icon_electronic_eye
|
||||||
//交通灯
|
//交通灯
|
||||||
DataCodeEnum.OMDB_TRAFFICLIGHT.code -> R.drawable.icon_traffic_light
|
DataCodeEnum.OMDB_TRAFFICLIGHT.code -> R.drawable.icon_traffic_light
|
||||||
|
//警示信息
|
||||||
|
DataCodeEnum.OMDB_WARNINGSIGN.code -> {
|
||||||
|
val typeCode = data.properties["typeCode"]
|
||||||
|
if (typeCode != null)
|
||||||
|
return typeCode.toInt()
|
||||||
|
return 0
|
||||||
|
}
|
||||||
else -> 0
|
else -> 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -891,9 +954,11 @@ class SignUtil {
|
|||||||
//常规点限速
|
//常规点限速
|
||||||
DataCodeEnum.OMDB_SPEEDLIMIT.code -> getSpeedLimitMinText(element) != "0"
|
DataCodeEnum.OMDB_SPEEDLIMIT.code -> getSpeedLimitMinText(element) != "0"
|
||||||
//条件点限速
|
//条件点限速
|
||||||
DataCodeEnum.OMDB_SPEEDLIMIT_COND.code -> true
|
DataCodeEnum.OMDB_SPEEDLIMIT_COND.code,
|
||||||
//电子眼
|
//电子眼
|
||||||
DataCodeEnum.OMDB_ELECTRONICEYE.code -> true
|
DataCodeEnum.OMDB_ELECTRONICEYE.code,
|
||||||
|
//警示信息
|
||||||
|
DataCodeEnum.OMDB_WARNINGSIGN.code -> true
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
return isMore
|
return isMore
|
||||||
@ -949,20 +1014,20 @@ class SignUtil {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val kindUp = when (renderEntity.properties["kindUp"]) {
|
// val kindUp = when (renderEntity.properties["kindUp"]) {
|
||||||
"0" -> "未调查"
|
// "0" -> "未调查"
|
||||||
"1" -> "限速电子眼"
|
// "1" -> "限速电子眼"
|
||||||
"4" -> "区间测速电子眼"
|
// "4" -> "区间测速电子眼"
|
||||||
"5" -> "交通信号灯电子眼"
|
// "5" -> "交通信号灯电子眼"
|
||||||
"6" -> "专用车道电子眼"
|
// "6" -> "专用车道电子眼"
|
||||||
"7" -> "违章电子眼"
|
// "7" -> "违章电子眼"
|
||||||
"11" -> "路况监控电子眼"
|
// "11" -> "路况监控电子眼"
|
||||||
"19" -> "交通标线电子眼"
|
// "19" -> "交通标线电子眼"
|
||||||
"20" -> "专用功能电子眼"
|
// "20" -> "专用功能电子眼"
|
||||||
else -> ""
|
// else -> ""
|
||||||
}
|
// }
|
||||||
|
|
||||||
list.add(TwoItemAdapterItem(title = "电子眼类型大分类", text = kindUp))
|
// list.add(TwoItemAdapterItem(title = "电子眼类型大分类", text = kindUp))
|
||||||
|
|
||||||
val kindCode = renderEntity.properties["kind"]!!.toInt()
|
val kindCode = renderEntity.properties["kind"]!!.toInt()
|
||||||
list.add(
|
list.add(
|
||||||
|
@ -1,6 +1,488 @@
|
|||||||
package com.navinfo.omqs.util
|
package com.navinfo.omqs.util
|
||||||
|
|
||||||
data class TimePeriod(
|
private data class TimePeriod(
|
||||||
val child: TimePeriod? = null
|
//年
|
||||||
|
var year: String = "",
|
||||||
|
//月
|
||||||
|
var month: String = "",
|
||||||
|
//日
|
||||||
|
var day: String = "",
|
||||||
|
//时
|
||||||
|
var hour: String = "",
|
||||||
|
//分
|
||||||
|
var minutes: String = "",
|
||||||
|
//周
|
||||||
|
var week: String = "",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
private data class TimePeriodObject(
|
||||||
|
//开始时间
|
||||||
|
var startTime: TimePeriod? = null,
|
||||||
|
//结束时间
|
||||||
|
var endTime: TimePeriod? = null,
|
||||||
|
//是否是节假日
|
||||||
|
var bH: Boolean = false,
|
||||||
|
//是否是节假日除外
|
||||||
|
var b_H: Boolean = false,
|
||||||
|
//动态变化
|
||||||
|
var bVMS: Boolean = false,
|
||||||
|
//最终输出
|
||||||
|
var res: String = ""
|
||||||
|
) {
|
||||||
|
/**
|
||||||
|
* 交集 *
|
||||||
|
*/
|
||||||
|
fun intersection(periodObject: TimePeriodObject) {
|
||||||
|
if (res != "" && periodObject.res == "") {
|
||||||
|
res = "${res}${periodObject.toText()}"
|
||||||
|
|
||||||
|
} else if (res == "" && periodObject.res != "") {
|
||||||
|
res = "${toText()}${periodObject.res}"
|
||||||
|
} else if (res != "" && periodObject.res != "") {
|
||||||
|
res = "${res}${periodObject.res}"
|
||||||
|
} else {
|
||||||
|
if (startTime == null) {
|
||||||
|
startTime = periodObject.startTime
|
||||||
|
} else if (periodObject.startTime != null) {
|
||||||
|
if (startTime!!.year == "")
|
||||||
|
startTime!!.year = periodObject.startTime!!.year
|
||||||
|
if (startTime!!.month == "")
|
||||||
|
startTime!!.month = periodObject.startTime!!.month
|
||||||
|
if (startTime!!.day == "")
|
||||||
|
startTime!!.day = periodObject.startTime!!.day
|
||||||
|
if (startTime!!.hour == "")
|
||||||
|
startTime!!.hour = periodObject.startTime!!.hour
|
||||||
|
if (startTime!!.week == "")
|
||||||
|
startTime!!.week = periodObject.startTime!!.week
|
||||||
|
if (startTime!!.minutes == "")
|
||||||
|
startTime!!.minutes = periodObject.startTime!!.minutes
|
||||||
|
}
|
||||||
|
|
||||||
|
if (endTime == null) {
|
||||||
|
endTime = periodObject.endTime
|
||||||
|
} else if (periodObject.endTime != null) {
|
||||||
|
if (endTime!!.year == "")
|
||||||
|
endTime!!.year = periodObject.endTime!!.year
|
||||||
|
if (endTime!!.month == "")
|
||||||
|
endTime!!.month = periodObject.endTime!!.month
|
||||||
|
if (endTime!!.day == "")
|
||||||
|
endTime!!.day = periodObject.endTime!!.day
|
||||||
|
if (endTime!!.hour == "")
|
||||||
|
endTime!!.hour = periodObject.endTime!!.hour
|
||||||
|
if (endTime!!.week == "")
|
||||||
|
endTime!!.week = periodObject.endTime!!.week
|
||||||
|
if (endTime!!.minutes == "")
|
||||||
|
endTime!!.minutes = periodObject.endTime!!.minutes
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!bH)
|
||||||
|
bH = periodObject.bH
|
||||||
|
if (!b_H)
|
||||||
|
b_H = periodObject.b_H
|
||||||
|
if (!bVMS)
|
||||||
|
bVMS = periodObject.bVMS
|
||||||
|
}
|
||||||
|
println("交集 $res")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合集 +
|
||||||
|
*/
|
||||||
|
fun compilation(periodObject: TimePeriodObject) {
|
||||||
|
res = if (res != "" && periodObject.res == "") {
|
||||||
|
"${res},${periodObject.toText()}"
|
||||||
|
} else if (res == "" && periodObject.res != "") {
|
||||||
|
"${toText()},${periodObject.res}"
|
||||||
|
} else if (res != "" && periodObject.res != "") {
|
||||||
|
"${res},${periodObject.res}"
|
||||||
|
} else
|
||||||
|
"${toText()},${periodObject.toText()}"
|
||||||
|
println("合集 $res")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
fun toText(): String {
|
||||||
|
if (res == "") {
|
||||||
|
startTime?.let {
|
||||||
|
if (it.year != "") {
|
||||||
|
res = "${it.year}年"
|
||||||
|
}
|
||||||
|
if (it.month != "") {
|
||||||
|
res = if (it.year == "") {
|
||||||
|
"每年${it.month}月"
|
||||||
|
} else {
|
||||||
|
"$res${it.month}月"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (it.day != "") {
|
||||||
|
res = if (it.month == "") {
|
||||||
|
"${res}每月${it.day}日"
|
||||||
|
} else
|
||||||
|
"$res${it.day}日"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
endTime?.let {
|
||||||
|
if (it.year != "" || it.month != "" || it.day != "")
|
||||||
|
res = "${res}到"
|
||||||
|
if (it.year != "") {
|
||||||
|
res = "${res}${it.year}年"
|
||||||
|
}
|
||||||
|
if (it.month != "") {
|
||||||
|
res = "$res${it.month}月"
|
||||||
|
}
|
||||||
|
if (it.day != "") {
|
||||||
|
res = "$res${it.day}日"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
startTime?.let {
|
||||||
|
if (it.week != "") {
|
||||||
|
res = "${res}每${getWeekEnum(it.week)}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
endTime?.let {
|
||||||
|
if (it.week != "") {
|
||||||
|
res = "${res}到${getWeekEnum(it.week)}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
startTime?.let {
|
||||||
|
if (it.hour != "") {
|
||||||
|
res = if (it.minutes != "") {
|
||||||
|
if (it.minutes.length == 1) {
|
||||||
|
"${res}${it.hour}:0${it.minutes}"
|
||||||
|
} else {
|
||||||
|
"${res}${it.hour}:${it.minutes}"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
"${res}:00"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
endTime?.let {
|
||||||
|
if (it.hour != "") {
|
||||||
|
res = if (it.minutes != "") {
|
||||||
|
if (it.minutes.length == 1) {
|
||||||
|
"${res}-${it.hour}:0${it.minutes}"
|
||||||
|
} else {
|
||||||
|
"${res}-${it.hour}:${it.minutes}"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
"${res}-${it.hour}:00"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bH) {
|
||||||
|
res = "节假日:$res"
|
||||||
|
}
|
||||||
|
if (b_H) {
|
||||||
|
res = "节假日除外${res}:"
|
||||||
|
}
|
||||||
|
if (bVMS) {
|
||||||
|
res = "动态变化:$res"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println("中间:$res")
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getWeekEnum(s: String): String {
|
||||||
|
return when (s) {
|
||||||
|
"1" -> "周日"
|
||||||
|
"2" -> "周一"
|
||||||
|
"3" -> "周二"
|
||||||
|
"4" -> "周三"
|
||||||
|
"5" -> "周四"
|
||||||
|
"6" -> "周五"
|
||||||
|
"7" -> "周六"
|
||||||
|
else -> ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum class TimeType {
|
||||||
|
NONE,
|
||||||
|
YEAR,
|
||||||
|
MONTH,
|
||||||
|
DAY,
|
||||||
|
HOUR,
|
||||||
|
MINUTES,
|
||||||
|
WEEK,
|
||||||
|
HLD,
|
||||||
|
_HLD,
|
||||||
|
VMS
|
||||||
|
}
|
||||||
|
|
||||||
|
class TimePeriodUtil {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun getTimePeriod(time: String): String {
|
||||||
|
println("时间段:$time")
|
||||||
|
var i = 0
|
||||||
|
val charArray = time.toCharArray()
|
||||||
|
val list = mutableListOf<TimePeriodObject>()
|
||||||
|
while (i < charArray.size) {
|
||||||
|
when (charArray[i]) {
|
||||||
|
'[' -> {
|
||||||
|
i = getPeriodObject(charArray, i + 1, list)
|
||||||
|
}
|
||||||
|
'*' -> {
|
||||||
|
i = getPeriodObject(charArray, i + 1, list)
|
||||||
|
if (list.size > 1) {
|
||||||
|
list[0].intersection(list[1])
|
||||||
|
list.removeAt(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'+' -> {
|
||||||
|
i = getPeriodObject(charArray, i + 1, list)
|
||||||
|
if (list.size > 1) {
|
||||||
|
list[0].compilation(list[1])
|
||||||
|
list.removeAt(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
if (list.size > 0)
|
||||||
|
return list[0].toText()
|
||||||
|
return time
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getPeriodObject(
|
||||||
|
charArray: CharArray,
|
||||||
|
index: Int,
|
||||||
|
parentList: MutableList<TimePeriodObject>,
|
||||||
|
): Int {
|
||||||
|
var i = index
|
||||||
|
val list = mutableListOf<TimePeriodObject>()
|
||||||
|
while (i < charArray.size) {
|
||||||
|
when (charArray[i]) {
|
||||||
|
'[' -> {
|
||||||
|
i = getPeriodObject(charArray, i + 1, list)
|
||||||
|
}
|
||||||
|
'(' -> {
|
||||||
|
var parentPeriodObject = TimePeriodObject()
|
||||||
|
i = getMixUnit(charArray, i, parentPeriodObject)
|
||||||
|
parentList.add(parentPeriodObject)
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
'*' -> {
|
||||||
|
i = getPeriodObject(charArray, i + 1, list)
|
||||||
|
if (list.size > 1) {
|
||||||
|
list[0].intersection(list[1])
|
||||||
|
list.removeAt(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'+' -> {
|
||||||
|
i = getPeriodObject(charArray, i + 1, list)
|
||||||
|
if (list.size > 1) {
|
||||||
|
list[0].compilation(list[1])
|
||||||
|
list.removeAt(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'H', '-', 'V' -> {
|
||||||
|
i = getOther(charArray, i, parentList)
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
']' -> {
|
||||||
|
if (list.isNotEmpty()) {
|
||||||
|
parentList.add(list[0])
|
||||||
|
}
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getOther(
|
||||||
|
charArray: CharArray,
|
||||||
|
index: Int,
|
||||||
|
parentList: MutableList<TimePeriodObject>
|
||||||
|
): Int {
|
||||||
|
var i = index
|
||||||
|
var timeType = TimeType.NONE
|
||||||
|
while (i < charArray.size) {
|
||||||
|
when (charArray[i]) {
|
||||||
|
'H' -> {
|
||||||
|
if (timeType == TimeType.NONE) {
|
||||||
|
timeType = TimeType.HLD
|
||||||
|
parentList.add(TimePeriodObject(bH = true))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'-' -> {
|
||||||
|
if (timeType == TimeType.NONE) {
|
||||||
|
timeType = TimeType._HLD
|
||||||
|
parentList.add(TimePeriodObject(b_H = true))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'V' -> {
|
||||||
|
if (timeType == TimeType.NONE) {
|
||||||
|
timeType = TimeType.VMS
|
||||||
|
parentList.add(TimePeriodObject(bVMS = true))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
']' -> {
|
||||||
|
return i - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单元
|
||||||
|
*/
|
||||||
|
private fun getMixUnit(
|
||||||
|
charArray: CharArray,
|
||||||
|
index: Int,
|
||||||
|
parentPeriodObject: TimePeriodObject
|
||||||
|
): Int {
|
||||||
|
var i = index
|
||||||
|
|
||||||
|
while (i < charArray.size) {
|
||||||
|
when (charArray[i]) {
|
||||||
|
'(' -> {
|
||||||
|
val timePeriod = TimePeriod()
|
||||||
|
i = getNumString(charArray, i + 1, timePeriod)
|
||||||
|
if (parentPeriodObject.startTime == null) {
|
||||||
|
parentPeriodObject.startTime = timePeriod
|
||||||
|
} else {
|
||||||
|
parentPeriodObject.endTime = timePeriod
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// '{' -> {
|
||||||
|
// val timePeriod = TimePeriod()
|
||||||
|
// i = getNumString(charArray, i + 1, timePeriod)
|
||||||
|
// parentPeriodObject.allTime = true
|
||||||
|
// }
|
||||||
|
']' -> {
|
||||||
|
return i - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析数字
|
||||||
|
*/
|
||||||
|
private fun getNumString(
|
||||||
|
charArray: CharArray,
|
||||||
|
index: Int,
|
||||||
|
parentPeriod: TimePeriod
|
||||||
|
): Int {
|
||||||
|
var i = index
|
||||||
|
var timeType = TimeType.NONE
|
||||||
|
val resBuffer = StringBuffer()
|
||||||
|
while (i < charArray.size) {
|
||||||
|
val char = charArray[i]
|
||||||
|
//拼数字
|
||||||
|
if (char.isDigit() && timeType != TimeType.NONE) {
|
||||||
|
resBuffer.append(char)
|
||||||
|
} else {
|
||||||
|
when (timeType) {
|
||||||
|
TimeType.YEAR -> parentPeriod.year = resBuffer.toString()
|
||||||
|
TimeType.MONTH -> parentPeriod.month = resBuffer.toString()
|
||||||
|
TimeType.DAY -> parentPeriod.day = resBuffer.toString()
|
||||||
|
TimeType.HOUR -> parentPeriod.hour = resBuffer.toString()
|
||||||
|
TimeType.MINUTES -> parentPeriod.minutes = resBuffer.toString()
|
||||||
|
TimeType.WEEK -> parentPeriod.week = resBuffer.toString()
|
||||||
|
else -> {}
|
||||||
|
}
|
||||||
|
timeType = when (char) {
|
||||||
|
'y' -> TimeType.YEAR
|
||||||
|
'M' -> TimeType.MONTH
|
||||||
|
'd' -> TimeType.DAY
|
||||||
|
'h' -> TimeType.HOUR
|
||||||
|
'm' -> TimeType.MINUTES
|
||||||
|
't' -> TimeType.WEEK
|
||||||
|
')', '}' -> {
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
else -> TimeType.NONE
|
||||||
|
}
|
||||||
|
resBuffer.setLength(0)
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
var t = ""
|
||||||
|
var text = ""
|
||||||
|
t = "[(y2010M8d16)(y2010M9d17)]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("1:$text")
|
||||||
|
t = "[(y2010M8d17){d1}]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("2:$text")
|
||||||
|
t = "[(M8d17)(M8d31)]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("3:$text")
|
||||||
|
t = "[(M8d17){d1}]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("4:$text")
|
||||||
|
t = "[(h9m0)(h23m59)]]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("5:$text")
|
||||||
|
t = "[(y2010)(y2030)]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("6:$text")
|
||||||
|
t = "[(y2010){y1}]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("8:$text")
|
||||||
|
t = "[(y2010M8t1){t1}]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("9:$text")
|
||||||
|
t = "[(y2010M8t1)(y2010M8t3)]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("10:$text")
|
||||||
|
t = "[(t4)(t1)]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("11:$text")
|
||||||
|
t = "[(t4){d1}]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("12:$text")
|
||||||
|
|
||||||
|
t = "[[(y2010M8d8)(y2010M8d24)]*[(h7m0)(h22m0)]]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("13:$text")
|
||||||
|
|
||||||
|
t = "[[(M8d1)(M8d31)]*[(t3){d1}]*[(h6m0)(h19m0)]]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("14:$text")
|
||||||
|
|
||||||
|
t = "[[[(t4)(t6)]*[(h7m30)(h12m0)]]+[[(t4)(t6)]*[(h14m0)(h20m0)]]]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("15:$text")
|
||||||
|
|
||||||
|
t = "[[[(M5d7){d1}]*[(h9m0)(h23m59)]]+[(M5d8)(M8d14)]+[[(M8d15){d1}]*[(h0m0)(h21m0)]]]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("16:$text")
|
||||||
|
|
||||||
|
t = "[[HLD]*[(h8m0)(h16m0)]]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("17:$text")
|
||||||
|
|
||||||
|
t = "[[-HLD]*[[[(M5d7){d1}]*[(h9m0)(h23m59)]]+[(M5d8)(M8d14)]+[[(M8d15){d1}]*[(h0m0)(h21m0)]]]]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("18:$text")
|
||||||
|
|
||||||
|
t = "[[VMS]*[(h8m0)(h16m0)]]"
|
||||||
|
text = TimePeriodUtil.getTimePeriod(t)
|
||||||
|
println("19:$text")
|
||||||
|
}
|
@ -93,6 +93,7 @@
|
|||||||
android:layout_height="300dp"
|
android:layout_height="300dp"
|
||||||
android:layout_marginTop="80dp"
|
android:layout_marginTop="80dp"
|
||||||
android:minHeight="140dp"
|
android:minHeight="140dp"
|
||||||
|
android:layout_marginBottom="40dp"
|
||||||
app:layout_constraintLeft_toLeftOf="@id/main_activity_top_sign_recyclerview"
|
app:layout_constraintLeft_toLeftOf="@id/main_activity_top_sign_recyclerview"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
@ -1,16 +1,28 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:background="@drawable/selector_adapter_item_select_bg"
|
android:background="@drawable/selector_adapter_item_select_bg"
|
||||||
android:padding="5dp">
|
android:padding="10dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/item_index"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawableLeft="@mipmap/marker2"
|
||||||
|
android:maxLength="3"
|
||||||
|
android:text=""
|
||||||
|
android:layout_marginRight="@dimen/default_widget_padding"
|
||||||
|
style="@style/content_font_default_size_13sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/name"
|
android:id="@+id/name"
|
||||||
|
android:layout_toRightOf="@id/item_index"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="name"
|
android:text="name"
|
||||||
android:textColor="@color/selector_black_blue_color"
|
android:textColor="@color/selector_black_blue_color"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
</FrameLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
@ -1,21 +1,17 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<com.navinfo.omqs.ui.widget.LeftDeleteView xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:background="@drawable/selector_adapter_item_select_bg"
|
|
||||||
tools:context="com.navinfo.omqs.ui.fragment.tasklist.TaskListAdapter"
|
|
||||||
app:deleteBtnWidth="64"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_width="match_parent">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/task_item_layout"
|
android:id="@+id/task_item_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/selector_adapter_item_select_bg"
|
||||||
android:paddingLeft="8dp"
|
android:paddingLeft="8dp"
|
||||||
android:paddingTop="6dp"
|
android:paddingTop="6dp"
|
||||||
android:paddingRight="8dp"
|
android:paddingRight="8dp"
|
||||||
android:paddingBottom="8dp"
|
android:paddingBottom="8dp"
|
||||||
android:layout_width="match_parent"
|
tools:context="com.navinfo.omqs.ui.fragment.tasklist.TaskListAdapter">
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/task_list_head"
|
android:id="@+id/task_list_head"
|
||||||
@ -110,26 +106,6 @@
|
|||||||
android:layout_toLeftOf="@id/task_download_btn"
|
android:layout_toLeftOf="@id/task_download_btn"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:visibility="invisible" />
|
android:visibility="invisible" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/task_delete_layout"
|
|
||||||
android:background="@color/red"
|
|
||||||
android:layout_width="64dp"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:layout_centerInParent="true"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:focusable="false"
|
|
||||||
android:enabled="false"
|
|
||||||
android:text="关闭"
|
|
||||||
android:textColor="#15141F"
|
|
||||||
android:textSize="@dimen/left_pannel_title_font" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
</com.navinfo.omqs.ui.widget.LeftDeleteView>
|
|
||||||
|
|
||||||
|
@ -41,12 +41,17 @@
|
|||||||
app:layout_constraintRight_toRightOf="@id/task_list_search"
|
app:layout_constraintRight_toRightOf="@id/task_list_search"
|
||||||
app:layout_constraintTop_toTopOf="@id/task_list_search" />
|
app:layout_constraintTop_toTopOf="@id/task_list_search" />
|
||||||
|
|
||||||
<com.yanzhenjie.recyclerview.SwipeRecyclerView
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
android:id="@+id/task_list_recyclerview"
|
android:id="@+id/refresh_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/task_list_search" />
|
app:layout_constraintTop_toBottomOf="@id/task_list_search">
|
||||||
|
|
||||||
|
<com.yanzhenjie.recyclerview.SwipeRecyclerView
|
||||||
|
android:id="@+id/task_list_recyclerview"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -1971,12 +1971,9 @@
|
|||||||
<m k="type" v="node">
|
<m k="type" v="node">
|
||||||
<symbol src="assets:symbols/dot_blue_dark.svg"></symbol>
|
<symbol src="assets:symbols/dot_blue_dark.svg"></symbol>
|
||||||
</m>
|
</m>
|
||||||
<!-- <m k="intersectionPid">
|
<m k="intersectionPid">
|
||||||
<symbol src="assets:symbols/dot_magenta.svg"></symbol>
|
<symbol src="assets:symbols/dot_magenta.svg"></symbol>
|
||||||
</m>-->
|
</m>
|
||||||
<!-- <m k="geometry">
|
|
||||||
<symbol src="@typesrc"></symbol>
|
|
||||||
</m>-->
|
|
||||||
</m>
|
</m>
|
||||||
|
|
||||||
<!--车道中心线-->
|
<!--车道中心线-->
|
||||||
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 6.7 KiB |
@ -62,6 +62,7 @@ open class RenderEntity() : RealmObject(), Parcelable {
|
|||||||
var zoomMin: Int = 18 //显示最小级别
|
var zoomMin: Int = 18 //显示最小级别
|
||||||
var zoomMax: Int = 23 //显示最大级别
|
var zoomMax: Int = 23 //显示最大级别
|
||||||
var enable:Int = 0 // 默认0不是显示 1为渲染显示 2为常显
|
var enable:Int = 0 // 默认0不是显示 1为渲染显示 2为常显
|
||||||
|
var catchEnable:Int = 0 // 0捕捉 1不捕捉
|
||||||
|
|
||||||
constructor(name: String) : this() {
|
constructor(name: String) : this() {
|
||||||
this.name = name
|
this.name = name
|
||||||
|
@ -72,13 +72,13 @@ enum class DataCodeEnum(var tableName: String, var code: String) {
|
|||||||
OMDB_LANE_LINK_LG("车道中心线", "5001");
|
OMDB_LANE_LINK_LG("车道中心线", "5001");
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun findTableNameByCode(code: String): String? {
|
fun findTableNameByCode(code: String): String {
|
||||||
for (enumInstance in DataCodeEnum.values()) {
|
for (enumInstance in DataCodeEnum.values()) {
|
||||||
if (enumInstance.code == code) {
|
if (enumInstance.code == code) {
|
||||||
return enumInstance.tableName
|
return enumInstance.tableName
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null // 若未找到匹配的 code,则返回 null 或其他适当的默认值
|
return "" // 若未找到匹配的 code,则返回 null 或其他适当的默认值
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -345,6 +345,16 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun removeMarker() {
|
||||||
|
for (e in mDefaultMarkerLayer.itemList) {
|
||||||
|
if (e is MarkerItem) {
|
||||||
|
mDefaultMarkerLayer.removeItem(e)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mMapView.vtmMap.updateMap(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 增加或更新marker
|
* 增加或更新marker
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
package com.navinfo.collect.library.utils
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import java.io.InputStream
|
||||||
|
|
||||||
|
class AssetsFileLoadUtil {
|
||||||
|
companion object {
|
||||||
|
fun loadWarningSvg(context: Context, code: String): InputStream? {
|
||||||
|
return context.assets.open("omdb/appendix/1105_${code}_0.svg")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2
vtm
2
vtm
@ -1 +1 @@
|
|||||||
Subproject commit 62d08f68217ef9751e9cc9967aa74ed192ec22c5
|
Subproject commit 11146d525ae601438e97c4f0c639b53de7ca2b07
|
Loading…
x
Reference in New Issue
Block a user