app/src/main/java/cn/flightfeather/thirdapp/module/inspection/InspectionDetailActivity.kt
@@ -3,7 +3,6 @@
import android.app.Activity
import android.arch.lifecycle.Observer
import android.arch.lifecycle.ViewModelProviders
import android.content.DialogInterface
import android.content.Intent
import android.net.Uri
import android.os.Bundle
@@ -13,15 +12,16 @@
import android.view.View
import android.view.animation.AnimationUtils
import android.widget.LinearLayout
import cn.flightfeather.thirdapp.CommonApplication
import cn.flightfeather.thirdapp.R
import cn.flightfeather.thirdapp.activity.GradeActivity
import cn.flightfeather.thirdapp.activity.MapActivity
import cn.flightfeather.thirdapp.activity.ProblemDetailActivity
import cn.flightfeather.thirdapp.activity.PromiseActivity
import cn.flightfeather.thirdapp.adapter.IconsPageAdapter
import cn.flightfeather.thirdapp.bean.Mediafile
import cn.flightfeather.thirdapp.bean.Scense
import cn.flightfeather.thirdapp.bean.Subtask
import cn.flightfeather.thirdapp.bean.entity.Mediafile
import cn.flightfeather.thirdapp.bean.entity.Scense
import cn.flightfeather.thirdapp.bean.entity.Subtask
import cn.flightfeather.thirdapp.bean.vo.ProblemlistVo
import cn.flightfeather.thirdapp.model.event.InspectionEvent
import cn.flightfeather.thirdapp.model.event.ProblemEvent
@@ -129,36 +129,19 @@
        super.onCreate(savedInstanceState)
        initIconViewPager()
//        initIconViewPager()
        initLocation()
        ll_show_hide_detail.setOnClickListener(this)
        iv_patrol_back.setOnClickListener(this)
        ll_patrol_task_detail.visibility = View.GONE
        user_account.setOnClickListener(this)
        hideMenu()
        viewModel.inspection.observe(this, Observer {
            it?.apply {
                if (extension1 != null) {
                    val list = extension1.split(";").map{str ->
                        str.split(",").map {str2 ->
                            str2.toDoubleOrNull() ?: 0.0
                        }.takeIf { l-> l.size == 2 }.let {latLng->
                            LatLng(latLng?.get(1) ?: 0.0, latLng?.get(0) ?: 0.0)
                        }
                    }
                    drawPolyline(list)
                    list.firstOrNull()?.let {p->
                        myLatLngList.add(
                                MyLatLng(
                                        p,
                                        drawableId = R.drawable.icon_mark_start_blue,
                                        selected = true
                                )
                        )
                    }
                }
                onDataLoaded(0)
            }
        })
@@ -329,8 +312,37 @@
            result = result.and(it)
        }
        if (result) {
            initIconViewPager()
            showMenu()
            refreshMenuStatus(taskStatus)
            viewModel.inspection.value?.extension1?.let{
                val list = it.split(";").map{str ->
                    str.split(",").map {str2 ->
                        str2.toDoubleOrNull() ?: 0.0
                    }.takeIf { l-> l.size == 2 }.let {latLng->
                        LatLng(latLng?.get(1) ?: 0.0, latLng?.get(0) ?: 0.0)
                    }
                }
                //道路监测点和道路类型的场景,直接展示轨迹;其余场景只有管理员和政府部门可以查看
                if (
                        (viewModel.scene.value?.typeid?.toString() == Constant.SCENE_TYPE9 || viewModel.scene.value?.typeid?.toString() == Constant.SCENE_TYPE10)
                        || (CommonApplication.getInstance().currentUser.usertypeid == 0.toByte() || CommonApplication.getInstance().currentUser.usertypeid == 2.toByte())
                ) {
                    drawPolyline(list)
                }
                list.firstOrNull()?.let {p->
                    myLatLngList.add(
                            MyLatLng(
                                    p,
                                    drawableId = R.drawable.icon_mark_start_blue,
                                    selected = true
                            )
                    )
                }
            }
        } else {
            toast("请等待数据加载完成")
        }
@@ -367,7 +379,8 @@
        //添加 用户类型为“主管部门”或“管理员”,编号为2或0时,按钮iv_startEndTask没有点击事件
        if (viewModel.userTypeId != Domain.USER_COMPTENT.toByte()
                && viewModel.userTypeId != Domain.USER_ADMIN.toByte()) {
//                && viewModel.userTypeId != Domain.USER_ADMIN.toByte()
        ) {
            iv_start_end_task.setOnClickListener(this)
        } else {
            iv_start_end_task.alpha = 0.5f
@@ -573,14 +586,12 @@
    private fun startTracking() {
        if (
//                viewModel.scene.value?.typeid?.toString() != Constant.SCENE_TYPE9 ||
                viewModel.subTask.value == null ||
                viewModel.subTask.value?.status != Domain.TASK_STATUS_RUNNING
        ) return
        //当继续执行正在进行中的任务时,根据是否有历史轨迹记录来判断是否开启
        if (viewModel.inspection.value?.extension1 != null) {
            needTracking = true
        }
        needTracking = true
        if (!needTracking || timerTaskRunning) return
@@ -596,8 +607,8 @@
                    timerTaskRunning = true
                }
                val lng = round(longitudeCurrent * 1000) / 1000
                val lat = round(latitudeCurrent * 1000) / 1000
                val lng = round(longitudeCurrent * 1000000) / 1000000
                val lat = round(latitudeCurrent * 1000000) / 1000000
                viewModel.inspection.value?.apply {
                    if (extension1 == null) {
@@ -616,9 +627,15 @@
                        val l1 = LatLng(lat, lng)
                        val l2 = LatLng(last[1], last[0])
                        val distance = AMapUtils.calculateLineDistance(l1, l2)
                        if (distance >= 5) {
                        if (distance >= 1 && distance < 1000 && lat != 0.0 && lng != 0.0) {
                            extension1 = "${extension1};${lng},${lat}"
                            drawPolyline(LatLng(lat, lng))
                            //道路监测点和道路类型的场景,直接展示轨迹;其余场景只有管理员和政府部门可以查看
                            if (
                                    (viewModel.scene.value?.typeid?.toString() == Constant.SCENE_TYPE9 || viewModel.scene.value?.typeid?.toString() == Constant.SCENE_TYPE10)
                                    || (CommonApplication.getInstance().currentUser.usertypeid == 0.toByte() || CommonApplication.getInstance().currentUser.usertypeid == 2.toByte())
                            ) {
                                drawPolyline(LatLng(lat, lng))
                            }
                        }
                    }
                }
@@ -628,7 +645,7 @@
    }
    private fun trackingDone() {
        if (!needTracking || !timerTaskRunning) return
        if (!timerTaskRunning) return
        aMap.moveCamera(CameraUpdateFactory.zoomTo(zoomLevel))
@@ -653,6 +670,7 @@
                } else {
                    it.problemcount + 1
                }
                // fixme: 2020/9/1 此处原本的逻辑是新增一个问题后,同步更新巡查信息中的问题数,错误,应该将此更新操作直接由新增问题接口统一完成
                viewModel.updateInspection(it)
            }
@@ -669,14 +687,28 @@
    //开始导航
    private fun startNavi() {
        val sourceLatLng = LatLng(viewModel.scene.value?.getLatitude()!!, viewModel.scene.value?.getLongitude()!!)
        val amapNavi = AmapNavi(this)
        amapNavi.startNavi(sourceLatLng.latitude, sourceLatLng.longitude)
        if (viewModel.scene.value != null) {
            val sourceLatLng = LatLng(
                    viewModel.scene.value!!.latitude,
                    viewModel.scene.value!!.longitude
            )
            val amapNavi = AmapNavi(this)
            amapNavi.startNavi(sourceLatLng.latitude, sourceLatLng.longitude)
        } else {
            toast("导航目前不可用,请稍后再试")
        }
    }
    override fun onClick(v: View?) {
        when (v?.id) {
            // 查看或获取用户账户信息
            R.id.user_account -> {
                val intent = Intent(this, MenuSceneAccountActivity::class.java).apply {
                    putExtra("sceneId", viewModel.scene.value?.guid)
                    putExtra("sceneName", viewModel.scene.value?.name)
                }
                startActivity(intent)
            }
            //底部viewPager隐藏
            R.id.ll_patrol_hide -> hideMenu()
            //底部viewPager显示