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 | 307 ++++++++++++++++++++++++++++++-------------------- 1 files changed, 184 insertions(+), 123 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 3372dde..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,7 +1,8 @@ package cn.flightfeather.supervision.lightshare.service.impl -import cn.flightfeather.supervision.business.AutoScore -import cn.flightfeather.supervision.business.AutoScore2 +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.* import cn.flightfeather.supervision.domain.ds1.mapper.* import cn.flightfeather.supervision.common.utils.Constant @@ -18,12 +19,25 @@ import tk.mybatis.mapper.entity.Example import tk.mybatis.mapper.util.StringUtil import java.util.* +import kotlin.math.ceil @Service -class SubtaskServiceImpl(val subtaskMapper: SubtaskMapper) : SubtaskService { +class SubtaskServiceImpl( + private val subtaskMapper: SubtaskMapper, + private val mpScoreItem_1: MpScoreItem_1, + private val mpScoreItem_2: MpScoreItem_2, + 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() + @Autowired + lateinit var scoreItem1: CsScoreItem_1 + @Autowired + lateinit var scoreItem2: CsScoreItem_2 @Autowired lateinit var taskService: TaskService @Autowired @@ -465,15 +479,20 @@ criteria.andEqualTo("stguid", subtask.stguid) val result = evaluationMapper.selectByExample(example) if (result.isEmpty()) { - if (subtask.districtname == "寰愭眹鍖�") { - val autoScore = AutoScore2() - autoScore.subtask = subtask - autoScore.calculateScore() - } else { - val autoScore = AutoScore() - autoScore.subtask = subtask - autoScore.calculateScore() - } +// if (subtask.districtname == "寰愭眹鍖�") { +// val autoScore = AutoScore2() +// autoScore.subtask = subtask +// autoScore.calculateScore() +// } else { +// val autoScore = AutoScore() +// autoScore.subtask = subtask +// autoScore.calculateScore() +// } + val s = scenseMapper.selectByPrimaryKey(subtask.scenseid) + 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) } } @@ -527,7 +546,7 @@ } } - val tempResult = BaseSearchResultVo() + val result = BaseSearchResultVo() val _sceneType = sceneType ?: 1 val _districtCode = "310106" @@ -555,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 } @@ -753,6 +801,7 @@ result.head = DataHead().apply { this.page = p.pageNum this.totalPage = p.pages + this.totalCount = p.total } subtasklist.forEach { @@ -766,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() @@ -788,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) @@ -906,6 +957,7 @@ result.head = DataHead().apply { this.page = p.pageNum this.totalPage = p.pages + this.totalCount = p.total } subtasklist.forEach { @@ -919,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() @@ -941,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) @@ -992,36 +1046,43 @@ } override fun getSummary(topTaskId: String, sceneTypeId: Int?): List<SubTaskSummary> { - val result = mutableListOf<SubTaskSummary>() +// val result = mutableListOf<SubTaskSummary>() - subtaskMapper.selectByTopTask2(topTaskId, sceneTypeId).forEach { - val scene = scenseMapper.selectByPrimaryKey(it.scenseid) - var p = 0 - var c = 0 - var pc = 0 - var cc = 0 - problemlistMapper.selectByExample(Example(Problemlist::class.java).apply { - createCriteria().andEqualTo("stguid", it.stguid) - }).forEach {pro -> - p++ - if (pro.ischanged == true) c++ - if (pro.extension3 != Constant.PROBLEM_UNCHECKED) pc++ - if (pro.extension3 == Constant.CHANGE_CHECK_PASS || pro.extension3 == Constant.CHANGE_CHECK_FAIL) cc++ - } - result.add(SubTaskSummary().apply { - stGuid = it.stguid - stName = it.name - sceneId = it.scenseid - sceneName = scene.name - sceneType = scene.type - stPlanTime = it.planstarttime - proNum = p - changeNum = c - proCheckedNum = pc - changeCheckedNum = cc - }) - } +// subtaskMapper.selectByTopTask2(topTaskId, sceneTypeId).forEach { +// val scene = scenseMapper.selectByPrimaryKey(it.scenseid) +// var p = 0 +// var c = 0 +// var pc = 0 +// var cc = 0 +// problemlistMapper.selectByExample(Example(Problemlist::class.java).apply { +// createCriteria().andEqualTo("stguid", it.stguid) +// }).forEach {pro -> +// p++ +// if (pro.ischanged == true) c++ +// if (pro.extension3 != Constant.PROBLEM_UNCHECKED) pc++ +// if (pro.extension3 == Constant.CHANGE_CHECK_PASS || pro.extension3 == Constant.CHANGE_CHECK_FAIL) cc++ +// } +// val ins = inspectionMapper.selectByExample(Example(Inspection::class.java).apply { +// createCriteria().andEqualTo("stguid", it.stguid) +// }) +// result.add(SubTaskSummary().apply { +// stGuid = it.stguid +// stName = it.name +// if (ins.isNotEmpty()) insGuid = ins[0].guid +// sceneId = it.scenseid +// sceneName = scene.name +// sceneType = scene.type +// stPlanTime = it.planstarttime +// proNum = p +// changeNum = c +// proCheckedNum = pc +// changeCheckedNum = cc +// }) +// } - return result +// return result + + return subtaskMapper.getSummary(topTaskId, sceneTypeId) + } } \ No newline at end of file -- Gitblit v1.9.3