From 2ae8bf126599f68ba1ca721ff2acc1dd4461e9a5 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期二, 12 九月 2023 11:05:47 +0800 Subject: [PATCH] 1. 整合了飞羽环境、徐汇油烟及金山扬尘两个数据库; 2. 优化重构自动评估模块逻辑; 3. 新增监测数据自动化统; 4. 将自动统计应用于自动评估中; --- src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt | 205 ++++++++++++++++++++++++++++++-------------------- 1 files changed, 122 insertions(+), 83 deletions(-) diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt index 78b73e7..1cebbb9 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt @@ -1,5 +1,6 @@ package cn.flightfeather.supervision.lightshare.service.impl +import cn.flightfeather.supervision.business.storage.JinAnScore import cn.flightfeather.supervision.business.storage.StAutoScore import cn.flightfeather.supervision.business.storage.item.* import cn.flightfeather.supervision.domain.ds1.entity.* @@ -18,6 +19,7 @@ import tk.mybatis.mapper.entity.Example import tk.mybatis.mapper.util.StringUtil import java.util.* +import kotlin.math.ceil @Service class SubtaskServiceImpl( @@ -27,6 +29,7 @@ private val stScoreItem_1: StScoreItem_1, private val whScoreItem_1: WhScoreItem_1, private val whScoreItem_2: WhScoreItem_2, + private val jinAnScore: JinAnScore, ) : SubtaskService { val dateUtil = DateUtil() @@ -486,7 +489,8 @@ // autoScore.calculateScore() // } val s = scenseMapper.selectByPrimaryKey(subtask.scenseid) - val autoScore = StAutoScore(scoreItem1, scoreItem2, mpScoreItem_1, mpScoreItem_2, stScoreItem_1, whScoreItem_1, whScoreItem_2) + val autoScore = StAutoScore(scoreItem1, scoreItem2, mpScoreItem_1, mpScoreItem_2, stScoreItem_1, + whScoreItem_1, whScoreItem_2, jinAnScore) autoScore.sceneType = Constant.ScenseType.getByValue(s.typeid?.toString()) autoScore.sceneGrade(subtask) } @@ -542,7 +546,7 @@ } } - val tempResult = BaseSearchResultVo() + val result = BaseSearchResultVo() val _sceneType = sceneType ?: 1 val _districtCode = "310106" @@ -570,97 +574,126 @@ } } - val example = Example(Subtask::class.java).apply { - createCriteria().andEqualTo("districtcode", _districtCode) - .andGreaterThanOrEqualTo("planstarttime", _startTime) - .andLessThanOrEqualTo("planendtime", _endTime) - } - - var counts = 0 - - -// val offset = (perPage ?: 30).times((page ?: 1).minus(1)) -// PageHelper.offsetPage<Subtask>(offset, perPage ?: 30) - - subtaskMapper.selectByExample(example).forEach { s -> - - val scene = scenseMapper.selectByPrimaryKey(s.scenseid) - val inspection = inspectionMapper.selectByExample(Example(Inspection::class.java).apply { - createCriteria().andEqualTo("stguid", s.stguid) - }).takeIf { it.isNotEmpty() }?.get(0) - val evaluation = evaluationMapper.selectByExample(Example(Evaluation::class.java).apply { - createCriteria().andEqualTo("stguid", s.stguid) - }).takeIf { it.isNotEmpty() }?.get(0) - - if (scene.typeid != _sceneType.toByte()) { - return@forEach + val subtaskMap = mutableMapOf<String?, SubtaskSearchResultVo>() + val problemMap = mutableMapOf<String?, ProblemDetail>() +// val p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30) + subtaskMapper.getSubtask2(null, null, _districtCode, _sceneType.toByte(), _startTime, _endTime).forEach { + if (!subtaskMap.containsKey(it.subTaskId)) { + val vo =SubtaskSearchResultVo() + BeanUtils.copyProperties(it, vo) + subtaskMap[it.subTaskId] = vo + } + if (!problemMap.containsKey(it.problemId)) { + val problemDetail = ProblemDetail() + BeanUtils.copyProperties(it, problemDetail) + problemMap[it.problemId] = problemDetail + subtaskMap[it.subTaskId]?.problemList?.add(problemDetail) + } + val url = it.mExtension1 + it.mGuid+ ".jpg" + if (it.isChanged == true) { + problemMap[it.problemId]?.rectificationPics?.add(url) } else { - counts++ - } - - - val subtaskSearchResultVo = SubtaskSearchResultVo().apply { - this.districtName = scene.districtname - this.townName = scene.townname - this.sceneName = scene.name - this.sceneAddress = scene.location - this.planStartTime = s.planstarttime - this.planEndTime = s.planendtime - this.status = s.status - this.path= inspection?.extension1 - this.score = evaluation?.resultscorebef?.toIntOrNull() - this.level = when { - score == null -> null - score!! >= 54 -> "鍚堟牸" - else -> "涓嶅悎鏍�" - } - } - tempResult.data.add(subtaskSearchResultVo) - - problemlistMapper.selectByExample(Example(Problemlist::class.java).apply { - createCriteria().andEqualTo("stguid", s.stguid) - }).forEach { p -> - val problem = ProblemDetail().apply { - this.problemName = p.problemname - this.longitude = p.longitude?.toDouble() - this.latitude = p.latitude?.toDouble() - this.location = p.location - this.rectification = p.ischanged - this.rectificationTime = p.changedtime - } - subtaskSearchResultVo.problemList.add(problem) - - mediafileMapper.selectByExample(Example(Mediafile::class.java).apply { - createCriteria().andEqualTo("businessguid", p.guid) - }).forEach { m -> - val url = m.extension1 + m.guid + ".jpg" - if (m.ischanged == true) { - problem.rectificationPics.add(url) - } else { - problem.problemPics.add(url) - } - } + problemMap[it.problemId]?.problemPics?.add(url) } } - val totalPage = Math.ceil(counts.toDouble() / (perPage ?: 30).toDouble()).toInt() - - val result = BaseSearchResultVo() - + val totalPage = ceil(subtaskMap.size.toDouble() / (perPage ?: 30).toDouble()).toInt() result.head = DataHead().apply { this.page = page ?: 1 this.totalPage = totalPage + this.totalCount = subtaskMap.size.toLong() } - - val firstIndex = 0 + ((page ?: 1) - 1).times(perPage ?: 30) - val lastIndex = firstIndex + (perPage ?: 30) - 1 - - for (i in firstIndex until tempResult.data.size) { - if (i > lastIndex) { - break + var count = 0 + val startIndex = ((page ?: 1) - 1) * (perPage ?: 30) + val endIndex = startIndex + (perPage ?: 30) - 1 + with(subtaskMap) exit@{ + subtaskMap.forEach { + if (count in startIndex..endIndex) { + result.data.add(it.value) + } + count++ + if (count > endIndex) return@exit } - result.data.add(tempResult.data[i]) } + + +// val example = Example(Subtask::class.java).apply { +// createCriteria().andEqualTo("districtcode", _districtCode) +// .andGreaterThanOrEqualTo("planstarttime", _startTime) +// .andLessThanOrEqualTo("planendtime", _endTime) +// } +// +// var counts = 0 +// +// val p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30) +// +// subtaskMapper.selectByExample(example).forEach { s -> +// +// val scene = scenseMapper.selectByPrimaryKey(s.scenseid) +// val inspection = inspectionMapper.selectByExample(Example(Inspection::class.java).apply { +// createCriteria().andEqualTo("stguid", s.stguid) +// }).takeIf { it.isNotEmpty() }?.get(0) +// val evaluation = evaluationMapper.selectByExample(Example(Evaluation::class.java).apply { +// createCriteria().andEqualTo("stguid", s.stguid) +// }).takeIf { it.isNotEmpty() }?.get(0) +// +// if (scene.typeid != _sceneType.toByte()) { +// return@forEach +// } else { +// counts++ +// } +// +// +// val subtaskSearchResultVo = SubtaskSearchResultVo().apply { +// this.subTaskId = s.stguid +// this.districtName = scene.districtname +// this.townName = scene.townname +// this.sceneName = scene.name +// this.sceneAddress = scene.location +// this.planStartTime = s.planstarttime +// this.planEndTime = s.planendtime +// this.status = s.status +// this.path= inspection?.extension1 +// this.score = evaluation?.resultscorebef?.toIntOrNull() +// this.level = when { +// score == null -> null +// score!! >= 54 -> "鍚堟牸" +// else -> "涓嶅悎鏍�" +// } +// } +// tempResult.data.add(subtaskSearchResultVo) +// +// problemlistMapper.selectByExample(Example(Problemlist::class.java).apply { +// createCriteria().andEqualTo("stguid", s.stguid) +// }).forEach { p -> +// val problem = ProblemDetail().apply { +// this.problemId = p.guid +// this.problemName = p.problemname +// this.longitude = p.longitude?.toDouble() +// this.latitude = p.latitude?.toDouble() +// this.location = p.location +// this.rectification = p.ischanged +// this.rectificationTime = p.changedtime +// } +// subtaskSearchResultVo.problemList.add(problem) +// +// mediafileMapper.selectByExample(Example(Mediafile::class.java).apply { +// createCriteria().andEqualTo("businessguid", p.guid) +// }).forEach { m -> +// val url = m.extension1 + m.guid + ".jpg" +// if (m.ischanged == true) { +// problem.rectificationPics.add(url) +// } else { +// problem.problemPics.add(url) +// } +// } +// } +// } +// +// tempResult.head = DataHead().apply { +// this.page = p.pageNum +// this.totalPage = p.pages +// } return result } @@ -768,6 +801,7 @@ result.head = DataHead().apply { this.page = p.pageNum this.totalPage = p.pages + this.totalCount = p.total } subtasklist.forEach { @@ -781,6 +815,7 @@ } val subtaskMap = mutableMapOf<String?, SubtaskSearchResultVo>() val problemMap = mutableMapOf<String?, ProblemDetail>() +// val p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30) subtaskMapper.getSubtask2(time, time2, _districtCode, _sceneType?.toByte(), null, null).forEach { if (!subtaskMap.containsKey(it.subTaskId)) { val vo =SubtaskSearchResultVo() @@ -803,6 +838,7 @@ result.head = DataHead().apply { this.page = 1 this.totalPage = 1 + this.totalCount = subtaskMap.size.toLong() } subtaskMap.forEach { result.data.add(it.value) @@ -921,6 +957,7 @@ result.head = DataHead().apply { this.page = p.pageNum this.totalPage = p.pages + this.totalCount = p.total } subtasklist.forEach { @@ -934,6 +971,7 @@ } val subtaskMap = mutableMapOf<String?, SubtaskSearchResultVo>() val problemMap = mutableMapOf<String?, ProblemDetail>() +// val p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30) subtaskMapper.getSubtask2(time, time2, _districtCode, _sceneType?.toByte(), null, null).forEach { if (!subtaskMap.containsKey(it.subTaskId)) { val vo =SubtaskSearchResultVo() @@ -956,6 +994,7 @@ result.head = DataHead().apply { this.page = 1 this.totalPage = 1 + this.totalCount = subtaskMap.size.toLong() } subtaskMap.forEach { result.data.add(it.value) -- Gitblit v1.9.3