package cn.flightfeather.thirdapp.module.task
|
|
import android.app.AlertDialog
|
import android.arch.lifecycle.Observer
|
import android.arch.lifecycle.ViewModelProviders
|
import android.view.View
|
import android.widget.AdapterView
|
import android.widget.ArrayAdapter
|
import cn.flightfeather.thirdapp.R
|
import cn.flightfeather.thirdapp.bean.entity.Scense
|
import kotlinx.android.synthetic.main.layout_search_bar.*
|
import java.util.*
|
import kotlin.collections.ArrayList
|
|
/**
|
* 月度任务管理activity
|
* @author riku
|
* Date: 2019/9/10
|
*/
|
class MonthTaskManagementActivity : NewMonthTaskMapActivity() {
|
|
override fun getViewMode(): NewSubTaskViewModel = ViewModelProviders.of(this).get(MonthTaskManagementViewModel::class.java)
|
|
override fun onCreate() {
|
super.onCreate()
|
|
viewModel.topTaskList.observe(this, Observer {tops ->
|
//初始化顶部下拉框
|
tops?.let {
|
val names = ArrayList<String>()
|
it.forEach {task -> names.add(task.name) }
|
val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, names)
|
spinner_search.adapter = adapter
|
spinner_search.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
override fun onNothingSelected(parent: AdapterView<*>?) = Unit
|
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
topTask = it[position].taskVo2Task()
|
viewModel.selectedTopTask = it[position]
|
viewModel.getMOVList(it[position])//获取监管对象版本
|
viewModel.getSceneByTask(it[position].taskVo2Task(), 1)
|
}
|
}
|
}
|
})
|
}
|
|
override fun initData() {
|
viewModel.getTopClassTaskList(1, this)
|
}
|
|
override fun enableDelete(oldScene: Scense?): Boolean {
|
viewModel.movList.forEach {
|
if (it.sguid == oldScene?.guid) {
|
return if (it.extension1 == null) {
|
true
|
} else {
|
val inspectionTimes = it.extension1.toInt()
|
inspectionTimes <= 0
|
}
|
}
|
}
|
return true
|
}
|
|
override fun refreshMOV(type: Int, oldScene: Scense?, newScene: Scense?) {
|
super.refreshMOV(type, oldScene, newScene)
|
val vm = viewModel as MonthTaskManagementViewModel
|
when (type) {
|
//删除场景,单独维护一个删除表
|
0 -> {
|
//遍历原列表与新增列表,找到删除的场景,添加至删除列表,并将其从原表删除
|
vm.movList.forEach {
|
if (it.sguid == oldScene?.guid) {
|
oldScene?.let {_ ->
|
if (!vm.deletedMovList.contains(it)) {
|
vm.deletedMovList.add(it)
|
}
|
}
|
vm.movList.remove(it)
|
return
|
}
|
}
|
vm.insertedMovList.forEach {
|
if (it.sguid == oldScene?.guid) {
|
oldScene?.let {_ ->
|
if (!vm.deletedMovList.contains(it)) {
|
vm.deletedMovList.add(it)
|
}
|
}
|
vm.insertedMovList.remove(it)
|
return
|
}
|
}
|
}
|
//替换场景
|
1 -> {
|
//只需要在原列表中做场景id和名称修改即可
|
vm.movList.forEach {
|
if (it.sguid == oldScene?.guid) {
|
newScene?.let { s ->
|
it.sguid = s.guid
|
it.sensename = s.name
|
}
|
return@forEach
|
}
|
}
|
}
|
//新增场景,单独维护一个新增表
|
2 -> {
|
//遍历删除表,若找到该场景,则将其移动至新增列表,否则新建并添加至新增列表
|
vm.deletedMovList.forEach {
|
if (it.sguid == newScene?.guid) {
|
newScene?.let {_ ->
|
if (!vm.insertedMovList.contains(it)) {
|
vm.insertedMovList.add(it)
|
}
|
}
|
vm.deletedMovList.remove(it)
|
return
|
}
|
}
|
newScene?.let {
|
val mov = createMOV(it)
|
vm.insertedMovList.add(mov)
|
}
|
}
|
}
|
}
|
|
override fun showAlertDialog() {
|
val vm = viewModel as MonthTaskManagementViewModel
|
|
var msg = "监管对象版本更新后信息如下:"
|
//若存在监管多次的工地,则添加以下语句:其中,部分场景需监管多次;
|
msg += "总共需监管%d次。\n是否现在提交?"
|
var totalMonitorNum = 0
|
|
vm.movList.forEach {
|
totalMonitorNum += it.monitornum ?: 0
|
}
|
vm.insertedMovList.forEach {
|
totalMonitorNum += it.monitornum ?: 0
|
}
|
|
AlertDialog.Builder(this).setTitle("更新监管对象版本")
|
.setMessage(String.format(Locale.CHINA, msg, totalMonitorNum))
|
.setNegativeButton(R.string.cancel, null)
|
.setPositiveButton(R.string.yes) { _, _ ->
|
vm.putMOV(vm.insertedMovList)
|
vm.updateMOV(vm.movList)
|
vm.deleteMOV(vm.deletedMovList)
|
viewModel.updateSceneList(viewModel.totalSceneList.value)
|
}.show()
|
}
|
}
|