package cn.flightfeather.thirdapp.module.inspection
|
|
import android.arch.lifecycle.Observer
|
import android.content.Intent
|
import android.os.Bundle
|
import android.os.Environment
|
import android.view.View
|
import android.widget.AdapterView
|
import cn.flightfeather.thirdapp.bean.Domainitem
|
import cn.flightfeather.thirdapp.bean.Mediafile
|
import cn.flightfeather.thirdapp.bean.Problemtype
|
import cn.flightfeather.thirdapp.bean.vo.ProblemlistVo
|
import cn.flightfeather.thirdapp.module.base.VIEW_PHOTO
|
import kotlinx.android.synthetic.main.dialog_take_evidence.*
|
import org.jetbrains.anko.toast
|
import java.io.File
|
import java.util.*
|
|
/**
|
* @author riku
|
* Date: 2020/8/6
|
* 问题内容修改
|
*/
|
class MenuProblemUpdateActivity : MenuEvidenceActivity() {
|
|
private var problemVo: ProblemlistVo? = null
|
|
private val deleteMediaFileList = mutableListOf<Mediafile>()
|
|
//修改前的问题名称
|
private var originProblemName = ""
|
|
private var firstLoad = true
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
|
tv_dialog_take_evidence_title.text = "问题修改"
|
|
fab_take_evidence_ok.setOnClickListener {
|
val now = Date()
|
if (now.time - submitTime >= 1000) {
|
submitTime = now.time
|
updateProblem()
|
}
|
}
|
|
problemVo?.let {
|
viewModel.getMediaFileList(it)
|
}
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
when (requestCode) {
|
VIEW_PHOTO -> {
|
//查看临时拍摄图片可以删除
|
data?.getIntExtra("position", -1)?.let {
|
if (it > -1) {
|
viewModel.mediaFileList.value?.get(it)?.let {m ->
|
deleteMediaFileList.add(m)
|
}
|
}
|
}
|
}
|
}
|
}
|
|
override fun getExtra() {
|
super.getExtra()
|
problemVo = intent.getSerializableExtra("problemlistVo") as ProblemlistVo
|
}
|
|
override fun onSuggestionLoaded() {
|
super.onSuggestionLoaded()
|
if (problemVo != null && viewModel.suggestionList.value?.isNotEmpty() == true) {
|
//整改建议
|
var advice = problemVo!!.advise
|
var getSuggestion = false
|
for (i in viewModel.suggestionList.value?.indices ?: 0..0) {
|
val s = viewModel.suggestionList.value?.get(i)
|
if (s != null && advice.contains(s)) {
|
advice = advice.replace(s, "")
|
sp_take_evidence_select_suggestion.setSelection(i)
|
getSuggestion = true
|
break
|
}
|
}
|
//整改建议备注
|
if (getSuggestion) {
|
var suggestionRemark = advice.removeRange(0, 1)//删除第一个字符,括号“(”
|
suggestionRemark = suggestionRemark.dropLast(1)//删除最后一个字符,括号“)”
|
et_take_evidence_suggestion.setText(suggestionRemark)
|
}
|
}
|
sp_take_evidence_select_problem_type.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
override fun onNothingSelected(parent: AdapterView<*>?) = Unit
|
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
onProblemTypeSelected(position)
|
}
|
}
|
}
|
|
override fun initObserver() {
|
super.initObserver()
|
viewModel.loadingOver.observe(this, Observer {
|
if (it == true && problemVo != null) {
|
//问题类型 和 问题详情
|
var problemType = ""
|
val problemTypeId = problemVo!!.ptguid
|
with(viewModel.problemMap) breaking@{
|
forEach { entry ->
|
entry.value.forEach { pt ->
|
if (pt.guid == problemTypeId) {
|
problemType = entry.key
|
originProblemName = pt.name
|
return@breaking
|
}
|
}
|
}
|
}
|
for (i in viewModel.problemFatherType.value?.indices ?: 0..0) {
|
if (viewModel.problemFatherType.value?.get(i) == problemType) {
|
sp_take_evidence_select_problem_type.setSelection(i)
|
onProblemTypeSelected(i)
|
break
|
}
|
}
|
//问题描述
|
var problemRemark = problemVo!!.problemname.replace(originProblemName, "")//删除描述中的问题类型
|
if (problemRemark.isNotBlank()) {
|
problemRemark = problemRemark.removeRange(0, 1)//删除第一个字符,括号“(”
|
problemRemark = problemRemark.dropLast(1)//删除最后一个字符,括号“)”
|
}
|
|
|
et_take_evidence_problem_des.setText(problemRemark)
|
|
//位置
|
var location = problemVo!!.location
|
for (i in viewModel.locationList.value?.indices ?: 0..0) {
|
val d = viewModel.locationList.value?.get(i)?.text
|
if (d != null && location.contains(d)) {
|
location = location.replace(d, "")
|
sp_take_evidence_select_location.setSelection(i)
|
break
|
}
|
}
|
|
//位置备注
|
var locationRemark = location
|
if (locationRemark.isNotBlank()) {
|
locationRemark = location.removeRange(0, 1)//删除第一个字符,括号“(”
|
locationRemark = locationRemark.dropLast(1)//删除最后一个字符,括号“)”
|
}
|
et_take_evidence_location.setText(locationRemark)
|
}
|
})
|
|
viewModel.mediaFileList.observe(this, Observer {
|
it?.let { loadImage(it) }
|
})
|
}
|
|
private fun loadImage(mediaFileList: List<Mediafile>) {
|
mediaFileList.forEach {
|
if (!it.ischanged) {
|
val file = getFileFromMediaFile(it)
|
if (file?.exists() == true) {
|
pathTempList.add(Pair(file, false))
|
} else {
|
viewModel.downLoadMediaFile(it) {f ->
|
pathTempList.add(Pair(f, false))
|
refreshImageView()
|
}
|
}
|
}
|
}
|
refreshImageView()
|
}
|
|
private fun getFileFromMediaFile(mediafile: Mediafile): File? {
|
return File(Environment.getExternalStorageDirectory(), mediafile.path + mediafile.description)
|
}
|
|
private fun updateProblem() {
|
val problemType = sp_take_evidence_select_problem_type.selectedItem.toString()
|
|
problemVo?.apply {
|
val p = sp_take_evidence_select_problem.selectedItem
|
if (p is Problemtype) {
|
ptguid = p.guid
|
var problemDes = et_take_evidence_problem_des.text.toString()
|
if (problemDes.isNotEmpty()) {
|
problemDes = "($problemDes)"
|
}
|
problemname = p.name + problemDes
|
}
|
|
var adviceDes = et_take_evidence_suggestion.text.toString()
|
if (adviceDes.isNotEmpty()) {
|
adviceDes = "($adviceDes)"
|
}
|
advise = sp_take_evidence_select_suggestion.selectedItem.toString() + adviceDes
|
latitude = lat
|
longitude = lng
|
|
val d = sp_take_evidence_select_location.selectedItem
|
if (d is Domainitem) {
|
var locationRemark = et_take_evidence_location.text.toString()
|
if (locationRemark.isNotEmpty()) {
|
locationRemark = "($locationRemark)"
|
}
|
// fixme: 2020/6/9 此版本将问题位置修改为街道信息,暂时去除位置id
|
locationid = d.index.toByte()
|
location = d.text + locationRemark
|
}
|
|
time = Date()
|
|
|
|
if (problemType != "态度" && pathTempList.isNotEmpty()) {
|
viewModel.updateProblem(this)
|
putMediaFile(this.voToEntity())
|
deleteMediaFile()
|
}else if (problemType == "态度") {
|
viewModel.updateProblem(this)
|
deleteMediaFile()
|
} else {
|
application.toast("至少拍一张照片")
|
fab_take_evidence_ok.isClickable = true
|
}
|
}
|
}
|
|
private fun deleteMediaFile() {
|
viewModel.deleteMediaFile(deleteMediaFileList)
|
}
|
|
private fun onProblemTypeSelected(position: Int) {
|
val problemType = viewModel.problemFatherType.value?.get(position)
|
viewModel.refreshProblems(problemType)
|
|
viewModel.problemFatherType.value?.let {
|
if (it[position] == "态度") {
|
updateUIByProblemType(View.GONE)
|
} else {
|
updateUIByProblemType(View.VISIBLE)
|
}
|
}
|
|
val problemNameList = viewModel.problemMap[problemType] ?: arrayListOf()
|
for (i in problemNameList.indices) {
|
if (problemNameList[i].name == originProblemName) {
|
sp_take_evidence_select_problem.setSelection(i)
|
break
|
}
|
}
|
|
viewModel.problemType.value?.get(0)?.guid?.let { viewModel.getSuggestionList(it) }
|
}
|
}
|