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 |   73 +++++++++++++++++++++++++++++-------
 1 files changed, 59 insertions(+), 14 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 165d72c..2b79233 100644
--- a/app/src/main/java/cn/flightfeather/thirdappmodule/databinding/SceneHistoryViewModel.kt
+++ b/app/src/main/java/cn/flightfeather/thirdappmodule/databinding/SceneHistoryViewModel.kt
@@ -1,7 +1,6 @@
 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
@@ -21,22 +20,37 @@
 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>> {
@@ -44,16 +58,31 @@
                 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
                 }
             }
 
@@ -63,7 +92,7 @@
         })
     }
 
-    fun fetchProblemRecurrence(sceneId:String) {
+    fun fetchProblemRecurrence(sceneId: String) {
         // 鑾峰彇鍓嶄笁涓湀鐨勫唴鐨勮褰�
         val queryOpt = QueryOptSingle().apply {
             this.sceneId = sceneId
@@ -83,13 +112,26 @@
                 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
                 }
             }
 
@@ -99,6 +141,9 @@
         })
     }
 
+    fun fetchInspectionKeyPoint(sceneId: String) {
+        inspectionKeyPointTxt.value = "鍑哄叆鍙e唴銆佸璺潰锛涜溅杈嗗啿娲楋紱\r\n鍥村鍠锋穻锛涙壃灏樺湪绾跨洃娴嬭澶囷紱鎶�闃茶鏂斤紱\r\n骞茬矇鐮傛祮鏈猴紱娓e湡鍨冨溇鍫嗘斁鍖猴紱绾歌川鍙拌处"
+    }
 
 
     private fun getQueryOptSingleList(sceneId: String): List<QueryOptSingle> {

--
Gitblit v1.9.3