From c1becf4cbd2e99601ce011c14b8742427249cfb4 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期二, 09 一月 2024 17:25:05 +0800 Subject: [PATCH] 1. 多项调整 --- src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt | 308 ++++++++++++++++++++++++++++++-------------------- 1 files changed, 184 insertions(+), 124 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 8ea2a19..556871c 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,6 @@ package cn.flightfeather.supervision.lightshare.service.impl -import cn.flightfeather.supervision.business.AutoScore -import cn.flightfeather.supervision.business.AutoScore2 +import cn.flightfeather.supervision.business.autooutput.score.AopEvaluation import cn.flightfeather.supervision.domain.ds1.entity.* import cn.flightfeather.supervision.domain.ds1.mapper.* import cn.flightfeather.supervision.common.utils.Constant @@ -18,9 +17,13 @@ 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 aopEvaluation: AopEvaluation, +) : SubtaskService { val dateUtil = DateUtil() @@ -57,7 +60,7 @@ if (StringUtil.isNotEmpty(areaVo.towncode)) criteria.andEqualTo("towncode", areaVo.towncode) criteria.andBetween("planstarttime", areaVo.starttime, areaVo.endtime) - if (!Objects.equals(userGuid, Constant.UserType.ALLUSER.text)) + if (!Objects.equals(userGuid, Constant.UserType.ALL_USER.des)) criteria.andLike("executorguids","%"+userGuid+"%") var completecount = 0 var subtasklist = subtaskMapper.selectByExample(example) @@ -465,15 +468,7 @@ 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() - } + aopEvaluation.executeBySubTask(subtask) } } @@ -527,7 +522,7 @@ } } - val tempResult = BaseSearchResultVo() + val result = BaseSearchResultVo() val _sceneType = sceneType ?: 1 val _districtCode = "310106" @@ -555,97 +550,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 +777,7 @@ result.head = DataHead().apply { this.page = p.pageNum this.totalPage = p.pages + this.totalCount = p.total } subtasklist.forEach { @@ -766,6 +791,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 +814,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 +933,7 @@ result.head = DataHead().apply { this.page = p.pageNum this.totalPage = p.pages + this.totalCount = p.total } subtasklist.forEach { @@ -919,6 +947,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 +970,7 @@ result.head = DataHead().apply { this.page = 1 this.totalPage = 1 + this.totalCount = subtaskMap.size.toLong() } subtaskMap.forEach { result.data.add(it.value) @@ -968,37 +998,67 @@ return resultList } - override fun getByTopTaskAndDate(topTaskId: String, startTime: String, endTime: String, sceneTypeId: Int?): List<SubtaskVo> { - val startDate = dateUtil.StringToDate(startTime) - val endDate = dateUtil.StringToDate(endTime) - - val cal = Calendar.getInstance().apply { time = startDate } - val _startTime = dateUtil.DateToString(cal.time, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS) ?: startTime - - if (endDate == null) { - cal.add(Calendar.MONTH, 1) - cal.add(Calendar.DAY_OF_MONTH, -1) - } else { - cal.time = endDate - } - cal.set(Calendar.HOUR_OF_DAY, 23) - cal.set(Calendar.MINUTE, 59) - cal.set(Calendar.SECOND, 59) - val _endTime = dateUtil.DateToString(cal.time, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS) ?: endTime - -// val resultList = mutableListOf<SubtaskVo>() - val resultList = subtaskMapper.selectByTopTask(topTaskId, _startTime, _endTime, sceneTypeId) -// subtaskMapper.selectByExample(Example(Subtask::class.java).apply { -// createCriteria() -// .andGreaterThanOrEqualTo("planstarttime", startDate) -// .andLessThanOrEqualTo("planstarttime", endDate) -// .andEqualTo("tguid", topTaskId) -// }).forEach { -// val vo = SubtaskVo() -// BeanUtils.copyProperties(it, vo) -// resultList.add(vo) + override fun getByTopTaskAndDate(topTaskId: String, startTime: String?, endTime: String?, sceneTypeId: Int?): List<Subtask> { +// val startDate = dateUtil.StringToDate(startTime) +// val endDate = dateUtil.StringToDate(endTime) +// +// val cal = Calendar.getInstance().apply { time = startDate } +// val _startTime = dateUtil.DateToString(cal.time, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS) ?: startTime +// +// if (endDate == null) { +// cal.add(Calendar.MONTH, 1) +// cal.add(Calendar.DAY_OF_MONTH, -1) +// } else { +// cal.time = endDate // } +// cal.set(Calendar.HOUR_OF_DAY, 23) +// cal.set(Calendar.MINUTE, 59) +// cal.set(Calendar.SECOND, 59) +// val _endTime = dateUtil.DateToString(cal.time, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS) ?: endTime + + val resultList = subtaskMapper.selectByTopTask2(topTaskId, sceneTypeId) return resultList } + + override fun getSummary(topTaskId: String, sceneTypeId: Int?): List<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++ +// } +// 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 subtaskMapper.getSummary(topTaskId, sceneTypeId) + + } } \ No newline at end of file -- Gitblit v1.9.3