package cn.flightfeather.thirdappmodule.module.task
|
|
import android.annotation.SuppressLint
|
import android.app.AlertDialog
|
import android.arch.lifecycle.Observer
|
import android.arch.lifecycle.ViewModelProviders
|
import android.content.DialogInterface
|
import android.content.Intent
|
import android.os.Bundle
|
import android.support.v4.app.Fragment
|
import android.support.v7.widget.LinearLayoutManager
|
import android.view.LayoutInflater
|
import android.view.View
|
import android.view.ViewGroup
|
import cn.flightfeather.thirdappmodule.CommonApplication
|
import cn.flightfeather.thirdappmodule.R
|
import cn.flightfeather.thirdappmodule.activity.NewMonthTaskActivity
|
import cn.flightfeather.thirdappmodule.activity.ScenseMapActivity
|
import cn.flightfeather.thirdappmodule.activity.UploadMediaFilesActivity
|
import cn.flightfeather.thirdappmodule.adapter.AllRecyclerViewAdapter
|
import cn.flightfeather.thirdappmodule.adapter.TaskListAdapter
|
import cn.flightfeather.thirdappmodule.bean.entity.Subtask
|
import cn.flightfeather.thirdappmodule.common.net.ResultCallBack
|
import cn.flightfeather.thirdappmodule.module.common.SearchActivity
|
import cn.flightfeather.thirdappmodule.module.inspection.InspectionDetailActivity
|
import cn.flightfeather.thirdappmodule.module.inspection.InspectionViewModel
|
import cn.flightfeather.thirdappmodule.util.Constant
|
import cn.flightfeather.thirdappmodule.util.DateUtil
|
import cn.flightfeather.thirdappmodule.util.Domain
|
import kotlinx.android.synthetic.main.fragment_task.*
|
import java.util.*
|
|
/**
|
*
|
*/
|
class TaskFragment : Fragment(), View.OnClickListener {
|
private var taskKindChoice = 1
|
|
private val mSubtaskList = ArrayList<Subtask>()
|
private var mAdapter: TaskListAdapter? = null
|
|
private val unCompleteSubtaskList = ArrayList<Subtask>()
|
private var mAdapter2: AllRecyclerViewAdapter<Subtask>? = null
|
|
private var btnList = mutableListOf<View>()
|
private lateinit var taskViewModel: TaskViewModel
|
private lateinit var inspectionViewModel: InspectionViewModel
|
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
taskViewModel = ViewModelProviders.of(this).get(TaskViewModel::class.java)
|
inspectionViewModel = ViewModelProviders.of(this).get(InspectionViewModel::class.java)
|
return inflater.inflate(R.layout.fragment_task, container, false)
|
}
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
super.onViewCreated(view, savedInstanceState)
|
initUI()
|
initData()
|
initObserver()
|
}
|
|
/**
|
* 获取数据
|
*/
|
private fun initData() {
|
fetchTodaySubTask()
|
fetchTaskRemind()
|
}
|
|
private fun initUI() {
|
// 搜索框
|
tv_search.setOnClickListener(this)
|
|
// 底部功能按钮
|
rl_add_task.setOnClickListener(this)
|
rl_add_scense.setOnClickListener(this)
|
rl_scense_map.setOnClickListener(this)
|
|
// 中间今日任务相关功能按钮
|
ll_container_todytask.isSelected = true
|
ll_container_todytask.setOnClickListener(this)
|
rl_container_taskremind.setOnClickListener(this)
|
ll_container_taskadjust.setOnClickListener(this)
|
btnList.addAll(listOf(ll_container_todytask, rl_container_taskremind))
|
|
// "任务提醒"界面
|
cl_un_upload_pic.setOnClickListener(this)
|
img_tip.visibility = View.GONE
|
img_tip_2.visibility = View.GONE
|
|
// “今日任务”界面
|
val manager = LinearLayoutManager(activity)
|
rv_container.layoutManager = manager
|
mAdapter = TaskListAdapter(activity, mSubtaskList)
|
mAdapter!!.setShowDate(false)
|
rv_container.adapter = mAdapter
|
|
v_today_task.visibility = View.VISIBLE
|
v_task_remind.visibility = View.GONE
|
}
|
|
private fun initObserver() {
|
// 本地图片未上传
|
inspectionViewModel.hasUnUploadImage.observe(this, Observer {
|
it?.let {onHasUnUploadImg(it)}
|
})
|
}
|
|
/**
|
* 获取今日所有人的子任务
|
*/
|
private fun fetchTodaySubTask() {
|
view_waiting.visibility = View.VISIBLE
|
// val date = Date(Date().time - 24 * 60 * 60 * 1000)
|
taskViewModel.getSubTaskByDate(Date(), object : ResultCallBack<List<Subtask>> {
|
override fun onSuccess(result: List<Subtask>?) {
|
view_waiting.visibility = View.GONE
|
result?.let { refreshTodaySubtask(it) }
|
}
|
|
override fun onFailure() {
|
view_waiting.visibility = View.GONE
|
}
|
})
|
}
|
|
/**
|
* 获取任务提醒
|
*/
|
private fun fetchTaskRemind() {
|
// 本地图片未上传
|
inspectionViewModel.checkUnUploadImage()
|
// 当前用户有未完成的任务
|
}
|
|
/**
|
* 根据子任务刷新界面
|
*/
|
@SuppressLint("NotifyDataSetChanged")
|
private fun refreshTodaySubtask(subTaskList: List<Subtask>) {
|
mSubtaskList.clear()
|
unCompleteSubtaskList.clear()
|
var subTaskTotalNumToday = 0
|
var subTaskFinishedNumToday = 0
|
for (subTask in subTaskList) {
|
subTaskTotalNumToday++
|
if (subTask.status == Domain.TASK_STATUS_FINISHED) {
|
subTaskFinishedNumToday++
|
} else {
|
if (subTask.executorguids.contains(CommonApplication.getInstance().currentUser.guid)) {
|
unCompleteSubtaskList.add(subTask)
|
}
|
}
|
mSubtaskList.add(subTask)
|
}
|
val subtask = Subtask()
|
subtask.planstarttime = Date()
|
subtask.extension1 = subTaskTotalNumToday.toString()
|
subtask.extension2 = subTaskFinishedNumToday.toString()
|
mSubtaskList.add(0, subtask)
|
mAdapter!!.notifyDataSetChanged()
|
if (mSubtaskList.size > 1) {
|
tv_no_task!!.visibility = View.GONE
|
}
|
|
onUnCompleteTask()
|
|
}
|
|
/**
|
* 当查询到有未上传的图片时,刷新界面
|
*/
|
private fun onHasUnUploadImg(hasOrNot: Boolean) {
|
if (hasOrNot) {
|
img_tip.visibility = View.VISIBLE
|
img_tip_2.visibility = View.VISIBLE
|
tv_un_upload_pic.text = "本地有未上传图片"
|
} else {
|
img_tip.visibility = View.GONE
|
img_tip_2.visibility = View.GONE
|
tv_un_upload_pic.text = "本地图片已全部上传"
|
}
|
}
|
|
/**
|
* 当存在有未完成的任务时,刷新界面
|
*/
|
@SuppressLint("SetTextI18n", "NotifyDataSetChanged")
|
private fun onUnCompleteTask() {
|
if (mAdapter2 == null) {
|
mAdapter2 = object : AllRecyclerViewAdapter<Subtask>(unCompleteSubtaskList, R.layout.item_task_list_2 , activity) {
|
override fun bindView(holder: MyViewHolder?, obj: Subtask?, isSelected: Boolean, position: Int) {
|
var planStartTime = DateUtil.getHourMinStr(obj?.planstarttime)
|
if (planStartTime == "00:00") {
|
planStartTime = "全天"
|
}
|
|
val names = obj?.executorrealtimes?.replace(Constant.CONNECTOR.toRegex(), Constant.CONNECTOR_FOR_VIEW)
|
holder?.setText(R.id.tv_item_task_list_name, obj?.name)
|
?.setText(R.id.tv_item_task_list_address, obj?.scenseaddress)
|
?.setText(R.id.tv_item_task_list_time, planStartTime)
|
?.setText(R.id.tv_task_staff, names)
|
when (obj?.status) {
|
Domain.TASK_STATUS_RUNNING -> holder?.setImageResource(R.id.img_task_status, R.mipmap.ic_task_executing)
|
Domain.TASK_STATUS_FINISHED -> holder?.setImageResource(R.id.img_task_status, R.mipmap.ic_task_complete)
|
else -> holder?.setImageResource(R.id.img_task_status, R.mipmap.ic_task_ready_to_start)
|
}
|
|
holder?.setOnItemClickListener {
|
val intent = Intent(activity, InspectionDetailActivity::class.java)
|
intent.putExtra("subTask", obj)
|
startActivity(intent)
|
}
|
}
|
}
|
rv_un_complete_task.adapter = mAdapter2
|
rv_un_complete_task.layoutManager = LinearLayoutManager(activity)
|
}
|
mAdapter2?.notifyDataSetChanged()
|
tv_task_num.text = "${unCompleteSubtaskList.size}个"
|
}
|
|
override fun onClick(v: View) {
|
when (v.id) {
|
// 跳转搜索界面
|
R.id.tv_search -> {
|
val intent = Intent(activity, SearchActivity::class.java)
|
startActivity(intent)
|
}
|
R.id.rl_add_task -> {
|
showTaskKindDialog()
|
}
|
R.id.rl_scense_map -> {
|
val intent1 = Intent(activity, ScenseMapActivity::class.java)
|
val list = ArrayList<Subtask>()
|
if (mSubtaskList.isNotEmpty()) {
|
list.addAll(mSubtaskList.subList(1, mSubtaskList.size))
|
}
|
intent1.putExtra(Constant.KEY_INTENT_TODAY_TASKLIST, list)
|
activity!!.startActivityForResult(intent1, Constant.REQUESTCODE_FROM_TASKFRAGMENT)
|
}
|
R.id.rl_add_scense -> {
|
startActivity(Intent(activity, SceneDetailActivity::class.java))
|
}
|
// R.id.day_task, R.id.week_task, R.id.month_task -> {
|
// val intent = Intent(activity, TaskActivity::class.java)
|
// intent.putExtra(Constant.KEY_INTENT_TASK_PERIOD, v.id)
|
// startActivity(intent)
|
// }
|
R.id.ll_container_taskadjust -> {
|
val intent2 = Intent(activity, MonthTaskManagementActivity::class.java)
|
startActivity(intent2)
|
}
|
R.id.ll_container_todytask -> {
|
btnList.forEach { it.isSelected = false }
|
v.isSelected = true
|
v_today_task.visibility = View.VISIBLE
|
v_task_remind.visibility = View.GONE
|
fetchTodaySubTask()
|
}
|
R.id.rl_container_taskremind -> {
|
btnList.forEach { it.isSelected = false }
|
v.isSelected = true
|
v_today_task.visibility = View.GONE
|
v_task_remind.visibility = View.VISIBLE
|
}
|
R.id.cl_un_upload_pic -> {
|
val intent = Intent(activity, UploadMediaFilesActivity::class.java)
|
startActivity(intent)
|
}
|
|
}
|
}
|
|
/**
|
* 显示新增任务类型:顶层任务、子任务
|
*/
|
private fun showTaskKindDialog() {
|
val builder = AlertDialog.Builder(context)
|
//无固定场景巡查任务是当任务类型为巡查时才使用,故此次放该选项不合适,暂时先放此处
|
val items = arrayOf("顶层任务", "子任务")
|
builder.setTitle("选择任务类型")
|
builder.setSingleChoiceItems(
|
items, taskKindChoice
|
) { dialog: DialogInterface?, which: Int -> taskKindChoice = which }
|
builder.setPositiveButton("确定") { dialog: DialogInterface, which: Int ->
|
dialog.dismiss()
|
val intent: Intent = if (taskKindChoice == 0) {
|
Intent(activity, NewMonthTaskActivity::class.java)
|
} else {
|
Intent(activity, NewSubTaskActivity::class.java)
|
}
|
startActivity(intent)
|
}
|
builder.create().show()
|
}
|
|
}
|