From 7cbe1610b87da19ed8a146a09b1117f92d9d3d98 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期五, 19 九月 2025 17:30:37 +0800
Subject: [PATCH] 2025.9.19 1. 联合前端调试数据产品接口(待完成)

---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt |   78 +++++++++++++++++++--------------------
 1 files changed, 38 insertions(+), 40 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt
index c7be139..e0f8796 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt
@@ -1,5 +1,6 @@
 package cn.flightfeather.supervision.lightshare.service.impl
 
+import cn.flightfeather.supervision.business.bgtask.ReportTaskCtrl
 import cn.flightfeather.supervision.business.report.DataSource
 import cn.flightfeather.supervision.business.report.DbMapper
 import cn.flightfeather.supervision.business.report.file.ReportOne
@@ -12,6 +13,7 @@
 import cn.flightfeather.supervision.domain.ds1.mapper.*
 import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRep
 import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRuleRep
+import cn.flightfeather.supervision.domain.ds1.repository.SceneRep
 import cn.flightfeather.supervision.domain.ds2.mapper.LedgerRecordMapper
 import cn.flightfeather.supervision.domain.ds2.mapper.LedgerSubTypeMapper
 import cn.flightfeather.supervision.domain.ds2.mapper.UserMapMapper
@@ -62,11 +64,12 @@
     val taskService: TaskService,
     private val evaluationRep: EvaluationRep,
     private val evaluationRuleRep: EvaluationRuleRep,
+    private val sceneRep: SceneRep,
     @Value("\${filePath}") var filePath: String,
     @Value("\${imgPath}") var imgPath: String,
+    private val dbMapper: DbMapper,
+    private val reportTaskCtrl: ReportTaskCtrl,
 ) : SearchService {
-
-    private val dateUtil = DateUtil()
 
     override fun writeToFile(config: ExcelConfigVo, mode: Int) {
         val dbMapper = DbMapper(
@@ -96,20 +99,6 @@
     }
 
     override fun getExcel(config: ExcelConfigVo, response: HttpServletResponse): Boolean {
-        val dbMapper = DbMapper(
-            scenseMapper,
-            problemlistMapper,
-            problemtypeMapper,
-            subtaskMapper,
-            monitorobjectversionMapper,
-            sceneConstructionSiteMapper,
-            sceneMixingPlantMapper,
-            sceneStorageYardMapper,
-            sceneWharfMapper,
-            taskMapper,
-            evaluationruleMapper, evaluationsubruleMapper, evaluationMapper, itemevaluationMapper,
-            ledgerSubTypeMapper, ledgerRecordMapper, userinfoMapper, userMapMapper, townMapper
-        )
         val dataSource = DataSource(config, dbMapper)
         val t = when (config.mode) {
             1 -> ReportOne(dataSource)
@@ -119,25 +108,26 @@
             else -> ReportOne(dataSource)
         }
         val fileName = t.getReportName()
-        val fName = URLEncoder.encode(fileName, "UTF-8")
-        response.apply {
-            setHeader("Content-Disposition", "attachment;filename=$fName")
-            setHeader("fileName", fName)
-            addHeader("Access-Control-Expose-Headers", "fileName")
-            contentType = "application/vnd.ms-excel;charset=UTF-8"
-            setHeader("Pragma", "no-cache")
-            setHeader("Cache-Control", "no-cache")
-            setDateHeader("Expires", 0)
-        }
-
         val p = "$filePath/autoscore/"
         val file = File(p + fileName)
         if (config.forceUpdate || !file.exists()) {
-            t.toFile(p)
+            val downloadUrl = "/autoscore/${fileName}"
+            reportTaskCtrl.startTask(t, downloadUrl)
+            return false
+        } else {
+            val fName = Base64.getEncoder().encodeToString(fileName.toByteArray())
+            response.apply {
+                setHeader("Content-Disposition", "attachment;filename=$fName")
+                setHeader("fileName", fName)
+                addHeader("Access-Control-Expose-Headers", "fileName")
+                contentType = "application/vnd.ms-excel;charset=UTF-8"
+                setHeader("Pragma", "no-cache")
+                setHeader("Cache-Control", "no-cache")
+                setDateHeader("Expires", 0)
+            }
+            response.outputStream.write(file.readBytes())
+            return true
         }
-        response.outputStream.write(file.readBytes())
-
-        return true
     }
 
     override fun getSubTaskDetail(config: ExcelConfigVo): SubTaskTableVo {
@@ -256,9 +246,9 @@
         }
 
         //寤虹珛绗竴灞傜洰褰曪紝鍖呭惈鎵�鏈夌殑浠诲姟
-        val time = dateUtil.DateToString(Date(), "yyyy-MM-dd_HH-mm-ss")
+        val time = DateUtil.DateToString(Date(), "yyyy-MM-dd_HH-mm-ss")
         var basePath =
-            Constant.DEFAULT_FILE_PATH + File.separator + "images" + File.separator + "temp" + File.separator + time
+            imgPath + File.separator + "temp" + File.separator + time
         var file = File(basePath)
         var i = 1
         while (file.exists() && i <= 100) {
@@ -310,7 +300,7 @@
                     createCriteria().andEqualTo("businessguid", p.guid)
                 }).forEach { m ->
                     val picPath =
-                        Constant.DEFAULT_FILE_PATH + File.separator + "images" + File.separator + m.extension1 + m.guid + ".jpg"
+                        imgPath + File.separator + m.extension1 + m.guid + ".jpg"
                     val fromFile = File(picPath)
                     val picName = p.problemname + "_" + p.location + "($y).jpg"
                     val toFile = File(pPath + File.separator + picName)
@@ -349,9 +339,9 @@
     override fun downloadPic2(sceneType: Int, topTaskId: String, response: HttpServletResponse): HttpServletResponse {
         //寤虹珛绗竴灞傜洰褰曪紝鍖呭惈鎵�鏈夌殑浠诲姟
         val topTask = taskMapper.selectByPrimaryKey(topTaskId)
-        val time = dateUtil.DateToString(Date(), "yyyy-MM-dd_HH-mm-ss")
+        val time = DateUtil.DateToString(Date(), "yyyy-MM-dd_HH-mm-ss")
         val basePath =
-            Constant.DEFAULT_FILE_PATH + File.separator + "images" + File.separator + "temp" + File.separator + topTask.name
+            imgPath + File.separator + "temp" + File.separator + topTask.name
         val file = File(basePath)
         if (!file.exists()) {
             file.mkdirs()
@@ -370,7 +360,7 @@
 
                 //寤虹珛涓�涓瓙浠诲姟鏂囦欢澶�
                 var subTaskFilePath = "${basePath}${File.separator}(${
-                    dateUtil.DateToString(
+                    DateUtil.DateToString(
                         it.planstarttime,
                         DateUtil.DateStyle.YYYY_MM_DD_CN
                     )
@@ -420,7 +410,7 @@
 
                         u.forEach { f ->
                             val picPath =
-                                Constant.DEFAULT_FILE_PATH + File.separator + "images" + File.separator + f.extension1 + f.guid + ".jpg"
+                                imgPath + File.separator + f.extension1 + f.guid + ".jpg"
                             val fromFile = File(picPath)
                             val picName = f.description
                             val toFile = File(pPath + File.separator + picName)
@@ -537,10 +527,11 @@
             ledgerSubTypeMapper, ledgerRecordMapper, userinfoMapper, userMapMapper, townMapper
         )
         val task =
-            taskService.getByDistrictCode(config.districtCode, config.startTime)?.takeIf { it.isNotEmpty() }?.get(0)
+            taskService.getByDistrictCode(config.districtCode, config.startTime).takeIf { it.isNotEmpty() }?.get(0)
         config.topTaskGuid = task?.tguid ?: ""
+        config.allScene = false
         val dataSource = mutableListOf<DataSource>()
-        config.sceneType = Constant.SceneType.TYPE1.value.toInt()
+//        config.sceneType = Constant.SceneType.TYPE1.value.toInt()
         dataSource.add(DataSource(config, dbMapper))
 
 //        val config2 = config.copy(sceneType = Constant.ScenseType.TYPE2.value.toInt())
@@ -560,15 +551,22 @@
     }
 
     override fun getScoreDetail(subTaskId: String): ScoreDetail {
+        //鍦烘櫙淇℃伅
+        val scene = sceneRep.findBySubTask(subTaskId)
+        //鎬诲垎
+        val evaluation = evaluationRep.findBySubtask(subTaskId)
         //瀛愯鍒欓�愭潯寰楀垎
         val subRuleScores = evaluationRep.findItemEvaluation(subTaskId)
+        if (subRuleScores.isEmpty()) throw BizException("鏃犺瘎浼拌褰�")
         //璇勫垎鎬昏鍒�
         val rule = evaluationRuleRep.findAutoEvaluationRule(subTaskId) ?: throw BizException("鏈壘鍒扮浉鍏宠嚜鍔ㄨ瘎浼拌鍒�")
         //鎬昏鍒欏搴旂殑璇勫垎瀛愯鍒�
         val subRules = evaluationRuleRep.findSubRule(rule.guid)
         //鏌ヨ缁撴灉
         val result = ScoreDetail()
+        result.status = if (scene?.extension1.equals("1")) "鍦ㄥ缓" else "瀹屽伐"
 
+        result.updateTime = evaluation?.updatedate
         subRules.forEach {
             it.ertype ?: return@forEach
             result.addDetail(result.details, it, it.ertype!! - 1, subRuleScores, true)

--
Gitblit v1.9.3