| | |
| | | package cn.flightfeather.thirdappmodule.databinding |
| | | |
| | | import android.arch.lifecycle.MutableLiveData |
| | | import android.view.View |
| | | import cn.flightfeather.thirdappmodule.bean.vo.DPChangeInfo |
| | | import cn.flightfeather.thirdappmodule.bean.vo.DPProblemRecurrence |
| | | import cn.flightfeather.thirdappmodule.bean.vo.QueryOptSingle |
| | |
| | | class SceneHistoryViewModel : BaseViewModel() { |
| | | |
| | | companion object { |
| | | // 整改率阈值 |
| | | const val CHANGE_PER = 0.8 |
| | | |
| | | // 整改效率阈值 |
| | | const val CHANGE_EFFICIENCY_PER = 0.5 |
| | | } |
| | | |
| | | private val dataProdSingleSceneRepository = DataProdSingleSceneRepository.instance |
| | | |
| | | // 上个月整改率最差的情况 |
| | | var worstChangeInfo = MutableLiveData<DPChangeInfo>() |
| | | // 整改情况 |
| | | val changeInfoTxt = MutableLiveData<String>() |
| | | |
| | | var changeInfoTxt = MutableLiveData<String>() |
| | | var changeEfficiencyTxt = MutableLiveData<String>() |
| | | // 整改效率 |
| | | val changeEfficiencyTxt = MutableLiveData<String>() |
| | | |
| | | // 问题复发情况 |
| | | // var problemRecurrenceList = MutableLiveData<List<DPProblemRecurrence>>() |
| | | var worstProblemRecurrence = MutableLiveData<DPProblemRecurrence>() |
| | | val problemRecurrenceTxt = MutableLiveData<String>() |
| | | |
| | | // |
| | | // 巡查要点 |
| | | val inspectionKeyPointTxt = MutableLiveData<String>() |
| | | |
| | | // 应急巡查 |
| | | val tempInspectionTxt = MutableLiveData<String>() |
| | | |
| | | |
| | | // 上个月整改率最差的情况 |
| | | val changeInfoList = MutableLiveData<List<DPChangeInfo>>() |
| | | |
| | | // 问题复发情况 |
| | | val problemRecurrenceList = MutableLiveData<List<DPProblemRecurrence>>() |
| | | |
| | | fun fetchChangeInfoList(sceneId: String) { |
| | | val queryOpts = getQueryOptSingleList(sceneId) |
| | | dataProdSingleSceneRepository.getChangeInfoList(queryOpts, object : ResultCallBack<List<DPChangeInfo>> { |
| | |
| | | if (!result.isNullOrEmpty()) { |
| | | changeInfoTxt.value = result.mapIndexed { i, info -> |
| | | // 筛选存在问题,并且整改率小于80%的月份 |
| | | if (info.subTasks.isNullOrEmpty() && info.changePer >= CHANGE_PER) { |
| | | if (info.subTasks.isNullOrEmpty() || info.proCount == 0 || info.changePer >= CHANGE_PER) { |
| | | "" |
| | | } else { |
| | | val time = DateUtil.parseYearMonth(queryOpts[i].startTime) ?: return@mapIndexed "" |
| | | val cal = Calendar.getInstance().apply { setTime(time) } |
| | | "${cal.get(Calendar.MONTH) + 1}月整改率为${round(info.changePer * 100)}%" |
| | | } |
| | | }.filter { it.isNotBlank() }.joinToString(",") + ",整改率较低,需加强监管。" |
| | | }.filter { it.isNotBlank() }.run { |
| | | if (this.isEmpty()) { |
| | | // "近期整改率都高于${round(CHANGE_PER * 100)}%,该工地表现良好。" |
| | | null |
| | | } else { |
| | | joinToString(",") + ",整改率较低。" |
| | | } |
| | | } |
| | | changeEfficiencyTxt.value = result.maxByOrNull { it.changeTime } |
| | | ?.takeIf { it.proCount > 0 && it.changeEfficiency < CHANGE_EFFICIENCY_PER } |
| | | .run { |
| | | this?.subTasks?.takeIf { s -> s.isNotEmpty() }?.get(0)?.let { s -> |
| | | val time = DateUtil.getMonthStr(s.planstarttime) |
| | | "前三个月中, ${time}月份整改效率仅为${round(this.changeEfficiency * 100)}%(实际整改耗时${this.changeTime}天)。" |
| | | } |
| | | } |
| | | |
| | | worstChangeInfo.value = result[0] |
| | | changeInfoList.value = result |
| | | } |
| | | } |
| | | |
| | |
| | | set(Calendar.MINUTE, 0) |
| | | set(Calendar.SECOND, 0) |
| | | } |
| | | now.add(Calendar.MONTH, 2) |
| | | now.add(Calendar.MONTH, -2) |
| | | startTime = DateUtil.getDateStr(now.time) |
| | | } |
| | | dataProdSingleSceneRepository.getProblemRecurrence(queryOpt, object : ResultCallBack<List<DPProblemRecurrence>> { |
| | | override fun onSuccess(result: List<DPProblemRecurrence>?) { |
| | | if (!result.isNullOrEmpty()) { |
| | | worstProblemRecurrence.value = result[0] |
| | | problemRecurrenceTxt.value = result |
| | | // .filter { it.changePer < CHANGE_PER } |
| | | .filter { it.count > 1 } |
| | | .mapIndexed { i, p -> |
| | | "${i + 1}. ${p.problemTag}(出现${p.count}次)" |
| | | }.joinToString(";\r\n").run { |
| | | if (this.isBlank()) { |
| | | null |
| | | } else { |
| | | "前三个月存在如下复发问题:\r\n$this" |
| | | } |
| | | } |
| | | |
| | | problemRecurrenceList.value = result |
| | | } |
| | | } |
| | | |
| | |
| | | }) |
| | | } |
| | | |
| | | fun fetchInspectionKeyPoint(sceneId: String) { |
| | | inspectionKeyPointTxt.value = "出入口内、外路面;车辆冲洗;\r\n围墙喷淋;扬尘在线监测设备;技防设施;\r\n干粉砂浆机;渣土垃圾堆放区;纸质台账" |
| | | } |
| | | |
| | | |
| | | private fun getQueryOptSingleList(sceneId: String): List<QueryOptSingle> { |