From e234a15b428267997c903a4ed42536c5d9f14a1f Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期一, 10 十一月 2025 13:10:42 +0800
Subject: [PATCH] 2025.11.10 1. 新增巡查场景历史详情相关数据逻辑; 2. 新增工地施工阶段修改界面;
---
app/src/main/java/cn/flightfeather/thirdappmodule/databinding/SceneHistoryViewModel.kt | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 114 insertions(+), 4 deletions(-)
diff --git a/app/src/main/java/cn/flightfeather/thirdappmodule/databinding/SceneHistoryViewModel.kt b/app/src/main/java/cn/flightfeather/thirdappmodule/databinding/SceneHistoryViewModel.kt
index 1c81e5c..2b79233 100644
--- a/app/src/main/java/cn/flightfeather/thirdappmodule/databinding/SceneHistoryViewModel.kt
+++ b/app/src/main/java/cn/flightfeather/thirdappmodule/databinding/SceneHistoryViewModel.kt
@@ -2,6 +2,7 @@
import android.arch.lifecycle.MutableLiveData
import cn.flightfeather.thirdappmodule.bean.vo.DPChangeInfo
+import cn.flightfeather.thirdappmodule.bean.vo.DPProblemRecurrence
import cn.flightfeather.thirdappmodule.bean.vo.QueryOptSingle
import cn.flightfeather.thirdappmodule.common.net.ResultCallBack
import cn.flightfeather.thirdappmodule.module.base.BaseViewModel
@@ -9,6 +10,7 @@
import cn.flightfeather.thirdappmodule.util.DateUtil
import org.jetbrains.anko.toast
import java.util.*
+import kotlin.math.round
/**
* 鍦烘櫙鍘嗗彶鎯呭喌
@@ -16,17 +18,71 @@
* Date: 2025/10/30
*/
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>()
- fun getChangeInfoList(sceneId: String) {
+ // 鏁存敼鏁堢巼
+ val changeEfficiencyTxt = MutableLiveData<String>()
+
+ // 闂澶嶅彂鎯呭喌
+ 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>> {
override fun onSuccess(result: List<DPChangeInfo>?) {
if (!result.isNullOrEmpty()) {
- worstChangeInfo.value = result[0]
+ changeInfoTxt.value = result.mapIndexed { i, info ->
+ // 绛涢�夊瓨鍦ㄩ棶棰橈紝骞朵笖鏁存敼鐜囧皬浜�80%鐨勬湀浠�
+ 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() }.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}澶╋級銆�"
+ }
+ }
+
+ changeInfoList.value = result
}
}
@@ -36,6 +92,60 @@
})
}
+ fun fetchProblemRecurrence(sceneId: String) {
+ // 鑾峰彇鍓嶄笁涓湀鐨勫唴鐨勮褰�
+ val queryOpt = QueryOptSingle().apply {
+ this.sceneId = sceneId
+ val now = Calendar.getInstance().apply {
+ set(Calendar.DAY_OF_MONTH, 1)
+ set(Calendar.HOUR_OF_DAY, 0)
+ set(Calendar.MINUTE, 0)
+ set(Calendar.SECOND, 0)
+ }
+ // 寰楀埌涓婃湀鏈�鍚庝竴澶�
+ now.add(Calendar.SECOND, -1)
+ endTime = DateUtil.getDateStr(now.time)
+ // 寰楀埌鍓�4涓湀绗竴澶�
+ now.apply {
+ set(Calendar.DAY_OF_MONTH, 1)
+ set(Calendar.HOUR_OF_DAY, 0)
+ set(Calendar.MINUTE, 0)
+ set(Calendar.SECOND, 0)
+ }
+ 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()) {
+ 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
+ }
+ }
+
+ override fun onFailure() {
+ application.toast("鑾峰彇闂澶嶅彂鎯呭喌澶辫触")
+ }
+ })
+ }
+
+ fun fetchInspectionKeyPoint(sceneId: String) {
+ inspectionKeyPointTxt.value = "鍑哄叆鍙e唴銆佸璺潰锛涜溅杈嗗啿娲楋紱\r\n鍥村鍠锋穻锛涙壃灏樺湪绾跨洃娴嬭澶囷紱鎶�闃茶鏂斤紱\r\n骞茬矇鐮傛祮鏈猴紱娓e湡鍨冨溇鍫嗘斁鍖猴紱绾歌川鍙拌处"
+ }
+
+
private fun getQueryOptSingleList(sceneId: String): List<QueryOptSingle> {
val queryOpts = mutableListOf<QueryOptSingle>()
--
Gitblit v1.9.3