From 0f7b47105d80fb9a260486270cf925a232e74791 Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期一, 22 十二月 2025 21:20:13 +0800
Subject: [PATCH] 2025.12.22 1. 修改日任务统计接口,新增当天内整改问题数和48小时内整改问题数统计
---
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt | 66 +++++++++++++++++++++++---------
1 files changed, 47 insertions(+), 19 deletions(-)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt
index 61140aa..aee2d25 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt
@@ -10,6 +10,8 @@
import cn.flightfeather.supervision.common.utils.Constant
import cn.flightfeather.supervision.common.utils.DateUtil
import cn.flightfeather.supervision.common.utils.UUIDGenerator
+import cn.flightfeather.supervision.domain.ds1.entity.Scense
+import cn.flightfeather.supervision.domain.ds1.mapper.ScenseMapper
import cn.flightfeather.supervision.domain.ds1.repository.SceneRep
import cn.flightfeather.supervision.domain.ds1.repository.SubTaskRep
import cn.flightfeather.supervision.domain.ds1.repository.TaskRep
@@ -19,6 +21,8 @@
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
import tk.mybatis.mapper.entity.Example
+import java.time.LocalDateTime
+import java.time.ZoneId
import java.util.*
import kotlin.collections.ArrayList
@@ -28,6 +32,7 @@
private val taskRep: TaskRep,
private val subTaskRep: SubTaskRep,
private val sceneRep: SceneRep,
+ private val scenseMapper: ScenseMapper,
) : TaskService {
@Autowired
@@ -320,7 +325,7 @@
return taskVoList
}
- override fun getDayTask(taskId: String, userId: String?, userType: String): List<DayTaskProgressVo> {
+ override fun getDayTask(taskId: String, userId: String?, userType: String, sceneTypeId: String?): List<DayTaskProgressVo> {
val resultList = ArrayList<DayTaskProgressVo>()
// 鑾峰彇鎬讳换鍔′笅鎵�鏈夋棩浠诲姟
@@ -332,29 +337,37 @@
// 鑾峰彇鎬讳换鍔′笅鎵�鏈夌殑瀛愪换鍔�
val subTasks = subTaskRep.findAll(Subtask().apply { tguid = taskId })
+ if (subTasks.isEmpty()) return emptyList()
+ // 鑾峰彇鎵�鏈夊瓙浠诲姟娑夊強鐨勫贰鏌ュ満鏅俊鎭�
+ val sceneList = scenseMapper.selectByExample(Example(Scense::class.java).apply {
+ createCriteria().andIn("guid", subTasks.map { it?.scenseid })
+ })
//鏍规嵁sql鏉′欢鏌ヨ
- dayTasks.forEach {t->
+ dayTasks.forEach { t ->
// 绛涢�夊綋鍓嶆棩浠诲姟涓嬬殑瀛愪换鍔�
- val filterSubTasks = subTasks.filter {s->
- s?.tsguid == t?.tguid
+ val filterSubTasks = subTasks.filter { s ->
+ val scene = sceneList.find { it?.guid == s?.scenseid }
+ s?.tsguid == t?.tguid && (sceneTypeId.isNullOrBlank() || scene?.typeid.toString() == sceneTypeId)
}
// 鑾峰彇褰撴棩鎵�鏈夌殑闂
- val subTaskIds = filterSubTasks.map { fs-> fs?.stguid }
+ val subTaskIds = filterSubTasks.map { fs -> fs?.stguid }
val problemList = if (subTaskIds.isNotEmpty()) {
problemListMapper.selectByExample(Example(Problemlist::class.java).apply {
createCriteria().andIn("stguid", subTaskIds)
})
- } else{
+ } else {
emptyList()
}
+
/** 鎬诲贰鏌ラ噺缁熻 **/
// 瀛愪换鍔℃�绘暟
val total = filterSubTasks.size
// 瀛愪换鍔″畬鎴愭暟
- val complete = filterSubTasks.count {fs->
+ val complete = filterSubTasks.count { fs ->
fs?.status == Constant.TaskProgress.RUNINGSTATUS3.text
}
+
/** 鎬婚棶棰樻暣鏀圭巼缁熻 **/
// 鎬婚棶棰樻暟鍜屾�绘暣鏀规暟
val totalProblemNum = problemList.size
@@ -362,7 +375,7 @@
/** 姣忎釜浜虹殑宸℃煡閲忛棶棰樻暣鏀圭巼 **/
val userProgressMap = mutableMapOf<String, ProgressPerUserPerDay>()
- filterSubTasks.forEach fst@ { fst->
+ filterSubTasks.forEach fst@{ fst ->
fst ?: return@fst
// fixme 2025.11.30 鐢变簬鐩戠APP鐨刡ug锛屽鑷寸敤鎴峰彲浠ヤ笉閫夋嫨鎵ц浜哄憳鐩存帴鍒涘缓浠诲姟锛屾墍浠ユ殏鏃跺皢娌℃湁鎵ц浜哄憳鐨勪换鍔″畾涔変负鍖垮悕鐢ㄦ埛
if (fst.executorguids.isNullOrBlank()) {
@@ -373,7 +386,7 @@
val ids = fst.executorguids?.split("#") ?: return@fst
val names = fst.executorrealtimes?.split("#") ?: return@fst
// 绛涢�夋瘡涓瓙浠诲姟涓嬬殑闂
- val proList = problemList.filter { p-> p?.stguid == fst.stguid }
+ val proList = problemList.filter { p -> p?.stguid == fst.stguid }
for (i in ids.indices) {
val key = ids[i]
if (!userProgressMap.containsKey(key)) {
@@ -386,27 +399,42 @@
// 鍗曚汉宸℃煡閲忕疮璁�
// 褰撳涓汉涓�璧锋墽琛屽悓涓�浠诲姟鏃讹紝骞冲垎宸℃煡閲�
this.totalTaskNum += 1.0 / ids.size
- if (fst.status== Constant.TaskProgress.RUNINGSTATUS3.text)
- this.completeTaskNum += 1.0 / ids.size
+ if (fst.status == Constant.TaskProgress.RUNINGSTATUS3.text) {
+ }
+ this.completeTaskNum += 1.0 / ids.size
// 鍗曚汉鏁存敼鐜囩疮璁★紙璇勫垎锛�
this.totalProblemNum += proList.size.toDouble() / ids.size
this.changedProblemNum += proList.filter { it.ischanged == true }.size.toDouble() / ids.size
this.changedProblemNumOnTime += proList.filter {
+ // 鏄惁鍦ㄥ悓涓�澶╁唴鏁存敼
+ val _changedDate = it.changedtime?.let { c->
+ LocalDateTime.ofInstant(c.toInstant(), ZoneId.systemDefault()).toLocalDate()
+ }
+ val _proDate = it.time?.let { t->
+ LocalDateTime.ofInstant(t.toInstant(), ZoneId.systemDefault()).toLocalDate()
+ }
+ val isSameDay = _changedDate?.equals(_proDate)
+ it.ischanged == true && (isSameDay ?: false)
+ }.size.toDouble() / ids.size
+ this.efficientChangedProNum += proList.filter {
// 鏁存敼鑰楁椂锛堝ぉ锛�
val day = ((it.changedtime?.time ?: 0L) - (it?.time?.time ?: 0L)).div(1000 * 60 * 60 * 24)
- it.ischanged == true && day <= 1
+ it.ischanged == true && day <= 2
}.size.toDouble() / ids.size
// 姝ゅ鍏堢疮璁″贰鏌ユ椂闀匡紝鏈�鍚庡啀鏍规嵁浠诲姟鏁伴噺骞冲潎
- this.avgInspectionTime +=
- ((fst.executionendtime?.time ?: 0L) - (fst.executionstarttime?.time ?: 0L)).div(1000).div(ids.size)
+ this.avgInspectionTime += if (fst.executionendtime == null || fst.executionstarttime == null) {
+ 0
+ } else {
+ (fst.executionendtime!!.time - fst.executionstarttime!!.time).div(1000).div(ids.size)
+ }
}
}
}
// 缁熶竴璁$畻骞冲潎宸℃煡鏃堕暱锛堢锛�
userProgressMap.forEach { (t, u) ->
- u.avgInspectionTime = (u.avgInspectionTime / u.completeTaskNum).toLong()
+ u.avgInspectionTime = if (u.completeTaskNum == .0 ) 0 else (u.avgInspectionTime / u.completeTaskNum).toLong()
u.formatParam()
}
@@ -414,9 +442,9 @@
var changed = 0
//瀹℃牳鏄惁瀹屾垚
var check = true
- filterSubTasks.forEach {fs ->
+ filterSubTasks.forEach { fs ->
// 绛涢�夋瘡涓瓙浠诲姟涓嬬殑闂鏈暣鏀规暟
- problemList.filter { p-> p?.stguid == fs?.stguid }.onEach { pro ->
+ problemList.filter { p -> p?.stguid == fs?.stguid }.onEach { pro ->
// 褰撳瓨鍦ㄨ嚦灏戜竴涓棶棰樻病鏈夊鏍告椂锛屽綋鏃ュ鏍哥姸鎬佷负鏈鏍�
if (pro.extension3 == Constant.PROBLEM_UNCHECKED || pro.extension3 == Constant.CHANGE_UNCHECKED) {
check = false
@@ -430,8 +458,8 @@
}
resultList.add(DayTaskProgressVo().apply {
- this.guid =t?.tguid
- this.date =t?.starttime
+ this.guid = t?.tguid
+ this.date = t?.starttime
this.tsGuid = taskId
this.totalTaskNum = total
this.completeTaskNum = complete
--
Gitblit v1.9.3