| | |
| | | |
| | | // 获取总任务下所有的子任务 |
| | | 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 }) |
| | | }) |
| | | val sceneList = if (subTasks.isEmpty()) { |
| | | emptyList() |
| | | } else { |
| | | scenseMapper.selectByExample(Example(Scense::class.java).apply { |
| | | createCriteria().andIn("guid", subTasks.map { it?.scenseid }) |
| | | }) |
| | | } |
| | | |
| | | //根据sql条件查询 |
| | | dayTasks.forEach { t -> |
| | |
| | | val userProgressMap = mutableMapOf<String, ProgressPerUserPerDay>() |
| | | filterSubTasks.forEach fst@{ fst -> |
| | | fst ?: return@fst |
| | | // fixme 2025.11.30 由于监管APP的bug,导致用户可以不选择执行人员直接创建任务,所以暂时将没有执行人员的任务定义为匿名用户 |
| | | // 2026.2.2 将没有执行人员的任务定义为匿名用户 |
| | | if (fst.executorguids.isNullOrBlank()) { |
| | | fst.executorguids = "niming" |
| | | fst.executorusernames = "niming" |
| | |
| | | // 当多个人一起执行同一任务时,平分巡查量 |
| | | this.totalTaskNum += 1.0 / ids.size |
| | | if (fst.status == Constant.TaskProgress.RUNINGSTATUS3.text) { |
| | | this.completeTaskNum += 1.0 / ids.size |
| | | } |
| | | this.completeTaskNum += 1.0 / ids.size |
| | | |
| | | // 单人整改率累计(评分) |
| | | this.totalProblemNum += proList.size.toDouble() / ids.size |
| | |
| | | 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() |
| | | } |
| | | |
| | |
| | | override fun create(task: Task): Task { |
| | | val res = save(task) |
| | | if (res < 1) |
| | | throw BizException("任务创建失败") |
| | | throw BizException("总任务或当日任务创建失败") |
| | | else |
| | | return task |
| | | } |