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