package com.xw.yunwei.ui.task.normal
|
|
import android.annotation.SuppressLint
|
import android.net.Uri
|
import android.os.Bundle
|
import androidx.core.os.bundleOf
|
import androidx.core.view.isVisible
|
import androidx.recyclerview.widget.GridLayoutManager
|
import com.amap.api.location.AMapLocation
|
import com.amap.api.maps.model.LatLng
|
import com.blankj.utilcode.util.UriUtils
|
import com.luck.picture.lib.basic.PictureSelector
|
import com.luck.picture.lib.config.PictureMimeType
|
import com.luck.picture.lib.config.SelectMimeType
|
import com.luck.picture.lib.entity.LocalMedia
|
import com.luck.picture.lib.interfaces.OnResultCallbackListener
|
import com.xw.common.CommonDialog
|
import com.xw.common.base.BaseActivity
|
import com.xw.common.base.FileSelectBean
|
import com.xw.common.base.ImageEventListener
|
import com.xw.common.base.ImageSelectAdapter
|
import com.xw.common.base.ShowImgListDialog
|
import com.xw.common.custom.BatteryView.Companion.getBatteryColorByBatteryLife
|
import com.xw.common.utils.BindUtils.getUrls
|
import com.xw.common.utils.GlideEngine
|
import com.xw.common.utils.GpsHelper
|
import com.xw.common.utils.GpsHelper.Companion.navigate
|
import com.xw.common.utils.PictureCompressEngine
|
import com.xw.common.utils.ToastUtilCommon
|
import com.xw.yunwei.BR
|
import com.xw.yunwei.databinding.ActivityNormalTaskDetailBinding
|
import com.xw.yunwei.model.TaskNormalModel
|
import com.xw.yunwei.ui.work.car.detail.operations.charge.ChargeCarActivity
|
import java.util.ArrayList
|
|
/**
|
* 任务详情 待处理
|
*
|
* 日常检查 -> 工作台对应业务
|
* 车辆充电 1:充电中 2:结束充电
|
* 车辆整备 -> 工作台对应业务
|
* 洗车
|
* 维修 1:送修 -> 工作台对应业务 2:取回
|
* 保养
|
* 年检
|
* 保险
|
* 车辆运营资质到期
|
*
|
* 任务详情 已处理
|
* 检测
|
* 车辆充电
|
* 车辆整备
|
* 洗车
|
* 维修
|
* 保养
|
* 年检
|
* 保险
|
* 车辆运营资质到期
|
*/
|
class NormalTaskDetailActivity: BaseActivity<ActivityNormalTaskDetailBinding, NormalTaskDetailVM>(), GpsHelper.OnMapLocation{
|
override fun getBindingVariable(): Int = BR.viewModel
|
// var gpsHelper: GpsHelper? = null
|
|
override fun myCreate(savedInstanceState: Bundle?) {
|
super.myCreate(savedInstanceState)
|
// gpsHelper = GpsHelper(
|
// this,
|
// this,
|
// isOnceLocation = true,
|
// isAutomatic = true,
|
// savedInstanceState = savedInstanceState
|
// )
|
// lifecycle.addObserver(gpsHelper!!)
|
}
|
|
override fun init() {
|
super.init()
|
viewModel.taskId = intent.getLongExtra("taskId", 0L)
|
}
|
|
var isGetPictureBack = false
|
override fun onResume() {
|
super.onResume()
|
if (isGetPictureBack) {
|
isGetPictureBack = false
|
return
|
}
|
viewModel.queryDetail()
|
}
|
|
@SuppressLint("SetTextI18n")
|
override fun setObservable() {
|
super.setObservable()
|
viewModel.taskDetail.observe(this) {
|
initAdapter(it)
|
viewModel.btnDoingAction.value = when (it.taskTypeId) {
|
"1" -> "开始检查"
|
"2" -> "开始充电"
|
"3" -> "开始整备"
|
"4" -> "完成洗车任务"
|
"5" -> "去送修"
|
"6" -> "完成保养"
|
"7" -> "完成续保"
|
"8" -> "完成年检"
|
"9" -> "完成任务"
|
else -> ""
|
}
|
binding.layoutDoing.viewDetail.isVisible = it.taskTypeId !in arrayOf("3", "5")
|
binding.layoutFinish.viewDetail1.isVisible = it.taskTypeId !in arrayOf("3", "5")
|
it.taskImage?.getUrls()?.let {
|
viewModel.adapters.getOrNull(0)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
}
|
viewModel.chargeModel.observe(this) {
|
if (viewModel.taskDetail.value?.status == 1) { // 待处理
|
if (it.startOperationsUserId == null) { // 未充电
|
viewModel.showDoingBtn.value = true
|
viewModel.showDoingSlide.value = false
|
} else { // 已充电
|
viewModel.showDoingBtn.value = false
|
viewModel.showDoingSlide.value = true
|
binding.layoutDoing.chargeLayout.batteryViewHis.setBatteryLife(it.startRemainingBattery ?: 0)
|
binding.layoutDoing.chargeLayout.batteryLifeHis.text = "${it.startRemainingBattery}km"
|
binding.layoutDoing.chargeLayout.batteryLifeHis.setTextColor(getBatteryColorByBatteryLife(it.startRemainingBattery ?: 0))
|
}
|
} else if (viewModel.taskDetail.value?.status == 2) { // 已处理
|
binding.layoutFinish.chargeLayout.batteryView1.setBatteryLife(it.startRemainingBattery ?: 0)
|
binding.layoutFinish.chargeLayout.batteryView2.setBatteryLife(it.endRemainingBattery ?: 0)
|
binding.layoutFinish.chargeLayout.batteryLife1.text = "${it.startRemainingBattery ?: 0}km"
|
binding.layoutFinish.chargeLayout.batteryLife2.text = "${it.endRemainingBattery ?: 0}km"
|
binding.layoutFinish.chargeLayout.batteryLife1.setTextColor(getBatteryColorByBatteryLife(it.startRemainingBattery ?: 0))
|
binding.layoutFinish.chargeLayout.batteryLife2.setTextColor(getBatteryColorByBatteryLife(it.endRemainingBattery ?: 0))
|
}
|
|
it.startChargingPicture?.getUrls()?.let {
|
viewModel.adapters.getOrNull(0)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
it.endChargingPicture?.getUrls()?.let {
|
viewModel.adapters.getOrNull(1)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
}
|
viewModel.cleanModel.observe(this) {
|
it.taskImage?.getUrls()?.let {
|
viewModel.adapters.getOrNull(0)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
}
|
viewModel.checkModel.observe(this) {
|
it.sensorCleaningPicture?.getUrls()?.let {
|
viewModel.adapters.getOrNull(0)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
it.interactiveScreenPicture?.getUrls()?.let {
|
viewModel.adapters.getOrNull(1)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
it.helpButtonPicture?.getUrls()?.let {
|
viewModel.adapters.getOrNull(2)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
it.paymentFunctionPicture?.getUrls()?.let {
|
viewModel.adapters.getOrNull(3)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
it.systemCheckPicture?.getUrls()?.let {
|
viewModel.adapters.getOrNull(4)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
}
|
viewModel.maintainModel.observe(this) {
|
it.headLight?.getUrls()?.let {
|
viewModel.adapters.getOrNull(0)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
it.turnSignal?.getUrls()?.let {
|
viewModel.adapters.getOrNull(1)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
it.brakeLight?.getUrls()?.let {
|
viewModel.adapters.getOrNull(2)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
it.fogLight?.getUrls()?.let {
|
viewModel.adapters.getOrNull(3)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
it.cabinCleaning?.getUrls()?.let {
|
viewModel.adapters.getOrNull(4)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
it.lostItems?.getUrls()?.let {
|
viewModel.adapters.getOrNull(5)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
|
}
|
viewModel.repairModel.observe(this) {
|
if (viewModel.taskDetail.value?.status == 1) { // 待处理
|
viewModel.isRepair.value = it.sendUserId != null
|
viewModel.btnDoingAction.value = if(it.sendUserId == null) "去送修" else "确认取回车辆"
|
}
|
it.startRepairPicture?.getUrls()?.let {
|
viewModel.adapters.getOrNull(0)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
it.repairMoneyDetail?.getUrls()?.let {
|
viewModel.adapters.getOrNull(1)?.setList(it.map { FileSelectBean(url = it, type = "img") })
|
}
|
}
|
}
|
|
override fun setListener() {
|
super.setListener()
|
binding.layoutDoing.nav.setOnClickListener {
|
viewModel.taskDetail.value?.let { item ->
|
if ((item.vehicleLat ?: 0.0) != 0.0 && (item.vehicleLon ?: 0.0) != 0.0) {
|
navigate(
|
end = LatLng(item.vehicleLat!!, item.vehicleLon!!),
|
context = this
|
)
|
} else {
|
ToastUtilCommon.showError("数据异常")
|
}
|
}
|
}
|
|
binding.layoutDoing.slideView.setOnSlideCompleteListener{
|
viewModel.taskDetail.value?.let {
|
startActivity(
|
ChargeCarActivity::class.java,
|
bundleOf("carId" to (it.vehicleId ?: 0L), "taskId" to (it.id ?: 0L))
|
)
|
}
|
binding.layoutDoing.slideView.animateReset()
|
}
|
}
|
|
private fun initAdapter(it: TaskNormalModel) {
|
if (it.status == 1) { // 待处理
|
if (it.taskTypeId in arrayOf("4", "6", "7", "8", "9")) {
|
initEditAdapter()
|
if (it.taskTypeId == "4") {
|
binding.layoutDoing.cleanLayout.rv.adapter = viewModel.adapterCanEdit
|
binding.layoutDoing.cleanLayout.rv.layoutManager = GridLayoutManager(this, 5)
|
} else {
|
binding.layoutDoing.byLayout.rv.adapter = viewModel.adapterCanEdit
|
binding.layoutDoing.byLayout.rv.layoutManager = GridLayoutManager(this, 5)
|
}
|
} else if (it.taskTypeId == "2") { // 充电
|
initOnlyViewAdapter(1)
|
binding.layoutDoing.chargeLayout.rvHis.adapter = viewModel.adapters[0]
|
binding.layoutDoing.chargeLayout.rvHis.layoutManager = GridLayoutManager(this, 5)
|
} else if (it.taskTypeId == "5") { // 维修
|
initOnlyViewAdapter(1)
|
binding.layoutDoing.repairLayout.rv.adapter = viewModel.adapters[0]
|
binding.layoutDoing.repairLayout.rv.layoutManager = GridLayoutManager(this, 5)
|
}
|
} else { // 已处理
|
if (it.taskTypeId in arrayOf("6", "7", "8", "9")) {
|
initOnlyViewAdapter(1)
|
binding.layoutFinish.byLayout.rv.adapter = viewModel.adapters[0]
|
binding.layoutFinish.byLayout.rv.layoutManager = GridLayoutManager(this, 5)
|
} else if (it.taskTypeId == "1") { // 检测
|
initOnlyViewAdapter(5)
|
binding.layoutFinish.checkLayout.rv1.adapter = viewModel.adapters[0]
|
binding.layoutFinish.checkLayout.rv1.layoutManager = GridLayoutManager(this, 5)
|
binding.layoutFinish.checkLayout.rv2.adapter = viewModel.adapters[1]
|
binding.layoutFinish.checkLayout.rv2.layoutManager = GridLayoutManager(this, 5)
|
binding.layoutFinish.checkLayout.rv3.adapter = viewModel.adapters[2]
|
binding.layoutFinish.checkLayout.rv3.layoutManager = GridLayoutManager(this, 5)
|
binding.layoutFinish.checkLayout.rv4.adapter = viewModel.adapters[3]
|
binding.layoutFinish.checkLayout.rv4.layoutManager = GridLayoutManager(this, 5)
|
binding.layoutFinish.checkLayout.rv5.adapter = viewModel.adapters[4]
|
binding.layoutFinish.checkLayout.rv5.layoutManager = GridLayoutManager(this, 5)
|
} else if (it.taskTypeId == "2") { // 充电
|
initOnlyViewAdapter(2)
|
binding.layoutFinish.chargeLayout.rv1.adapter = viewModel.adapters[0]
|
binding.layoutFinish.chargeLayout.rv1.layoutManager = GridLayoutManager(this, 5)
|
binding.layoutFinish.chargeLayout.rv2.adapter = viewModel.adapters[1]
|
binding.layoutFinish.chargeLayout.rv2.layoutManager = GridLayoutManager(this, 5)
|
} else if (it.taskTypeId == "3") { // 整备
|
initOnlyViewAdapter(6)
|
binding.layoutFinish.maintainLayout.rv1.adapter = viewModel.adapters[0]
|
binding.layoutFinish.maintainLayout.rv1.layoutManager = GridLayoutManager(this, 5)
|
binding.layoutFinish.maintainLayout.rv2.adapter = viewModel.adapters[1]
|
binding.layoutFinish.maintainLayout.rv2.layoutManager = GridLayoutManager(this, 5)
|
binding.layoutFinish.maintainLayout.rv3.adapter = viewModel.adapters[2]
|
binding.layoutFinish.maintainLayout.rv3.layoutManager = GridLayoutManager(this, 5)
|
binding.layoutFinish.maintainLayout.rv4.adapter = viewModel.adapters[3]
|
binding.layoutFinish.maintainLayout.rv4.layoutManager = GridLayoutManager(this, 5)
|
binding.layoutFinish.maintainLayout.rv5.adapter = viewModel.adapters[4]
|
binding.layoutFinish.maintainLayout.rv5.layoutManager = GridLayoutManager(this, 5)
|
binding.layoutFinish.maintainLayout.rv6.adapter = viewModel.adapters[5]
|
binding.layoutFinish.maintainLayout.rv6.layoutManager = GridLayoutManager(this, 5)
|
} else if (it.taskTypeId == "4") { // 洗车
|
initOnlyViewAdapter(1)
|
binding.layoutFinish.cleanLayout.rv.adapter = viewModel.adapters[0]
|
binding.layoutFinish.cleanLayout.rv.layoutManager = GridLayoutManager(this, 5)
|
} else if (it.taskTypeId == "5") { // 维修
|
initOnlyViewAdapter(2)
|
binding.layoutFinish.repairLayout.rv1.adapter = viewModel.adapters[0]
|
binding.layoutFinish.repairLayout.rv1.layoutManager = GridLayoutManager(this, 5)
|
binding.layoutFinish.repairLayout.rv2.adapter = viewModel.adapters[1]
|
binding.layoutFinish.repairLayout.rv2.layoutManager = GridLayoutManager(this, 5)
|
}
|
}
|
}
|
|
private fun initEditAdapter() {
|
viewModel.imageEventCanEdit = object : ImageEventListener<FileSelectBean>() {
|
override fun addImage(item: FileSelectBean) {
|
showTypeDialog()
|
}
|
|
override fun viewImage(item: FileSelectBean) {
|
val imgList: MutableList<String> = ArrayList()
|
for (item1 in viewModel.adapterCanEdit.data) {
|
imgList.add(item1.localPath.ifEmpty { item1.url })
|
}
|
ShowImgListDialog(
|
this@NormalTaskDetailActivity,
|
imgList,
|
imgList.indexOf(item.localPath)
|
).show()
|
}
|
|
override fun deleteImage(item: FileSelectBean) {
|
viewModel.adapterCanEdit.remove(item)
|
}
|
}
|
viewModel.adapterCanEdit = ImageSelectAdapter(this, viewModel.maxSize, 1, viewModel.imageEventCanEdit)
|
}
|
|
private fun initOnlyViewAdapter(num: Int){
|
viewModel.imageEvents.clear()
|
viewModel.adapters.clear()
|
for (index in 0 until num) {
|
val imageEvent = object : ImageEventListener<FileSelectBean>() {
|
override fun viewImage(item: FileSelectBean) {
|
val imgList: MutableList<String> = ArrayList()
|
for (item1 in viewModel.adapters[index].data) {
|
imgList.add(item1.localPath.ifEmpty { item1.url })
|
}
|
ShowImgListDialog(
|
this@NormalTaskDetailActivity,
|
imgList,
|
imgList.indexOf(item.localPath)
|
).show()
|
}
|
}
|
viewModel.imageEvents.add(imageEvent)
|
val adapter = ImageSelectAdapter(this, viewModel.maxSize, 0, imageEvent)
|
viewModel.adapters.add(adapter)
|
}
|
}
|
|
private fun showTypeDialog() {
|
CommonDialog.showTypeDialog(this) {
|
isGetPictureBack = it in arrayOf(1, 0)
|
if (it == 0) takeAPhotograph() else if (it == 1) enterGallery()
|
}
|
}
|
|
// 进入图库
|
@SuppressLint("SourceLockedOrientationActivity")
|
private fun enterGallery() {
|
PictureSelector.create(this)
|
.openGallery(SelectMimeType.ofImage())
|
.setImageEngine(GlideEngine.createGlideEngine())
|
.setMaxSelectNum(viewModel.maxSize - viewModel.adapterCanEdit.data.size)
|
.setImageSpanCount(4)
|
.isPreviewImage(true)
|
.isDisplayCamera(false)
|
.setCompressEngine(PictureCompressEngine())
|
.forResult(resultCallbackListener)
|
}
|
|
// 拍照
|
private fun takeAPhotograph() {
|
PictureSelector.create(this)
|
.openCamera(SelectMimeType.ofImage())
|
.setCompressEngine(PictureCompressEngine())
|
.forResultActivity(resultCallbackListener)
|
}
|
|
private var resultCallbackListener = object : OnResultCallbackListener<LocalMedia> {
|
override fun onResult(result: ArrayList<LocalMedia>?) {
|
result?.let { selectList ->
|
val dataList: MutableList<FileSelectBean> = ArrayList()
|
dataList.addAll(viewModel.adapterCanEdit.data)
|
for (item in selectList) {
|
val path: String = item.availablePath
|
var imgPath = if (PictureMimeType.isContent(path) && !item.isCut && !item.isCompressed) {
|
UriUtils.uri2File(Uri.parse(path)).absolutePath
|
} else {
|
path
|
}
|
dataList.add(FileSelectBean(localPath = imgPath, type = "img"))
|
}
|
viewModel.adapterCanEdit.setList(dataList)
|
}
|
}
|
override fun onCancel() {}
|
}
|
|
override fun location(pLocation: AMapLocation?) {
|
viewModel.location = pLocation
|
}
|
|
}
|