| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | const val PROBLEM_RECHECK = 102//问题复核 |
| | | const val PROBLEM_CHECK = 103//问题审核 |
| | | const val CHANGE_CHECK = 104//整改审核 |
| | | const val PROBLEM_DELETE = 105 |
| | | } |
| | | |
| | | private var taskStatus: String = Domain.TASK_STATUS_FINISHED |
| | | |
| | | /** |
| | | * 加载完成状态, |
| | |
| | | |
| | | super.onCreate(savedInstanceState) |
| | | |
| | | initIconViewPager() |
| | | // initIconViewPager() |
| | | initLocation() |
| | | |
| | | ll_show_hide_detail.setOnClickListener(this) |
| | | iv_patrol_back.setOnClickListener(this) |
| | | ll_patrol_task_detail.visibility = View.GONE |
| | | |
| | | hideMenu() |
| | | |
| | | viewModel.inspection.observe(this, Observer { |
| | | it?.apply { |
| | | showMenu() |
| | | 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) |
| | | } |
| | | }) |
| | |
| | | viewModel.subTask.observe(this, Observer { |
| | | it?.let { |
| | | updateUIBySubTask(it) |
| | | refreshMenuStatus(it.status) |
| | | taskStatus = it.status |
| | | onDataLoaded(1) |
| | | } |
| | | }) |
| | |
| | | result = result.and(it) |
| | | } |
| | | if (result) { |
| | | menuList.forEach { |
| | | it.setOnClickListener(this) |
| | | 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("请等待数据加载完成") |
| | | } |
| | |
| | | |
| | | //添加 用户类型为“主管部门”或“管理员”,编号为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 |
| | |
| | | val address = s.cityname + s.districtname + " " + s.location |
| | | tv_scense_address.text = address |
| | | |
| | | val contact1 = s.contacts + " " + s.contactst |
| | | val contact1 = s.contacts ?: "" + " " + s.contactst ?: "" |
| | | tv_scense_contact1.text = contact1 |
| | | tv_call_contact1.setOnClickListener { |
| | | //打电话 |
| | |
| | | } |
| | | |
| | | private fun startTracking() { |
| | | if (viewModel.scene.value?.typeid?.toString() != Constant.SCENE_TYPE9 |
| | | || viewModel.subTask.value?.status != Domain.TASK_STATUS_RUNNING) return |
| | | if ( |
| | | 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 |
| | | |
| | |
| | | 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) { |
| | |
| | | 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)) |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | private fun trackingDone() { |
| | | if (!needTracking || !timerTaskRunning) return |
| | | if (!timerTaskRunning) return |
| | | |
| | | aMap.moveCamera(CameraUpdateFactory.zoomTo(zoomLevel)) |
| | | |
| | |
| | | } else { |
| | | it.problemcount + 1 |
| | | } |
| | | // fixme: 2020/9/1 此处原本的逻辑是新增一个问题后,同步更新巡查信息中的问题数,错误,应该将此更新操作直接由新增问题接口统一完成 |
| | | viewModel.updateInspection(it) |
| | | } |
| | | |
| | |
| | | |
| | | //开始导航 |
| | | 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?) { |
| | |
| | | val intent = Intent(this, MenuProblemListActivity::class.java).apply { |
| | | putExtra("subTask", viewModel.subTask.value) |
| | | putExtra("inspection", viewModel.inspection.value) |
| | | putExtra("scenseLat", viewModel.scene.value?.latitude) |
| | | putExtra("scenseLng", viewModel.scene.value?.longitude) |
| | | putExtra("scene", viewModel.scene.value) |
| | | putExtra("lat", viewModel.scene.value?.latitude) |
| | | putExtra("lng", viewModel.scene.value?.longitude) |
| | | } |
| | | startActivity(intent) |
| | | } |
| | |
| | | val intent = Intent(this, MenuChangeActivity::class.java).apply { |
| | | putExtra("subTask", viewModel.subTask.value) |
| | | putExtra("inspection", viewModel.inspection.value) |
| | | putExtra("scenseLat", viewModel.scene.value?.latitude) |
| | | putExtra("scenseLng", viewModel.scene.value?.longitude) |
| | | putExtra("lat", viewModel.scene.value?.latitude) |
| | | putExtra("lng", viewModel.scene.value?.longitude) |
| | | } |
| | | startActivity(intent) |
| | | } |
| | |
| | | } |
| | | startActivity(intent) |
| | | } |
| | | //问题审核 |
| | | //整改审核 |
| | | R.id.ln_patrol_change_check -> { |
| | | val intent = Intent(this, MenuChangeCheckActivity::class.java).apply { |
| | | putExtra("subTask", viewModel.subTask.value) |