From eb3dd00b0b7fcda477229d518d250f9c842b790b Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 21 十月 2025 17:45:44 +0800
Subject: [PATCH] 2025.10.21 1. 走航季度报告相关数据计算逻辑调整
---
src/main/kotlin/com/flightfeather/uav/lightshare/web/DataAnalysisController.kt | 137 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 137 insertions(+), 0 deletions(-)
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/web/DataAnalysisController.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/web/DataAnalysisController.kt
index 26b0fbe..07b27c3 100644
--- a/src/main/kotlin/com/flightfeather/uav/lightshare/web/DataAnalysisController.kt
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/web/DataAnalysisController.kt
@@ -1,11 +1,19 @@
package com.flightfeather.uav.lightshare.web
+import com.fasterxml.jackson.annotation.JsonFormat
+import com.flightfeather.uav.common.exception.BizException
+import com.flightfeather.uav.lightshare.bean.AnalysisOption
import com.flightfeather.uav.lightshare.bean.AreaVo
import com.flightfeather.uav.lightshare.service.DataAnalysisService
+import com.flightfeather.uav.socket.eunm.FactorType
import io.swagger.annotations.Api
import io.swagger.annotations.ApiOperation
import io.swagger.annotations.ApiParam
+import org.springframework.format.annotation.DateTimeFormat
import org.springframework.web.bind.annotation.*
+import java.time.LocalDateTime
+import java.time.ZoneId
+import java.util.*
/**
* 璧拌埅鏁版嵁鍒嗘瀽
@@ -25,4 +33,133 @@
// @RequestParam("per_page", required = false) perPage: Int?,
) = resPack { dataAnalysisService.pollutionTrace(missionCode) }
+ @ApiOperation(value = "鑾峰彇鍘嗗彶姹℃煋婧簮缁撴灉")
+ @GetMapping("/pollution/trace/history")
+ fun fetchHistory(
+ @ApiParam("璧拌埅浠诲姟缂栧彿") @RequestParam missionCode: String,
+ ) = resPack { dataAnalysisService.fetchHistory(missionCode) }
+
+ @ApiOperation(value = "鐢熸垚璧拌埅浠诲姟姹囨�荤粺璁�")
+ @PostMapping("/report/missionSummary")
+ fun generateMissionSummary(
+ @ApiParam("寮�濮嬫椂闂�") @RequestParam
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ startTime: LocalDateTime,
+ @ApiParam("缁撴潫鏃堕棿") @RequestParam
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ endTime: LocalDateTime,
+ @ApiParam("鍖哄煙") @RequestBody areaVo: AreaVo,
+ ) = resPack {
+ dataAnalysisService.generateMissionSummary(
+ Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()),
+ Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()),
+ areaVo
+ )
+ }
+
+ @ApiOperation(value = "鐢熸垚璧拌埅浠诲姟姹囨�荤粺璁�")
+ @GetMapping("/report/missionSummary/one")
+ fun generateOneMissionSummary(
+ @ApiParam("浠诲姟缂栧彿") @RequestParam missionCode: String,
+ ) = resPack { dataAnalysisService.generateMissionSummary(missionCode) }
+
+ @ApiOperation(value = "鐢熸垚璧拌埅浠诲姟娓呭崟")
+ @PostMapping("/report/missionList")
+ fun generateMissionList(
+ @ApiParam("寮�濮嬫椂闂�") @RequestParam
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ startTime: LocalDateTime,
+ @ApiParam("缁撴潫鏃堕棿") @RequestParam
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ endTime: LocalDateTime,
+ @ApiParam("鍖哄煙") @RequestBody areaVo: AreaVo,
+ ) = resPack {
+ dataAnalysisService.generateMissionList(
+ Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()),
+ Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()),
+ areaVo
+ )
+ }
+
+ @ApiOperation(value = "鐢熸垚璧拌埅浠诲姟璇︽儏")
+ @PostMapping("/report/missionDetail")
+ fun generateMissionDetail(
+ @ApiParam("寮�濮嬫椂闂�") @RequestParam
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ startTime: LocalDateTime,
+ @ApiParam("缁撴潫鏃堕棿") @RequestParam
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ endTime: LocalDateTime,
+ @ApiParam("鏁版嵁棰楃矑搴�", allowableValues = "SECOND, MINUTE, HOUR") @RequestParam(required = false)
+ granularity: String?,
+ @ApiParam("鍖哄煙") @RequestBody areaVo: AreaVo,
+ ) = resPack {
+ dataAnalysisService.generateMissionDetail(
+ Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()),
+ Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()),
+ areaVo,granularity
+ )
+ }
+
+ @ApiOperation(value = "鐢熸垚璧拌埅浠诲姟璇︽儏")
+ @GetMapping("/report/missionDetail/one")
+ fun generateOneMissionDetail(
+ @ApiParam("浠诲姟缂栧彿") @RequestParam missionCode: String,
+ @ApiParam("鏁版嵁棰楃矑搴�", allowableValues = "SECOND, MINUTE, HOUR") @RequestParam(required = false)
+ granularity: String?,
+ ) = resPack { dataAnalysisService.generateMissionDetail(missionCode, granularity) }
+
+ @ApiOperation(value = "璧拌埅鍏稿瀷闅愭偅鍖哄煙缁熻")
+ @PostMapping("/report/clueByRiskArea")
+ fun generateClueByRiskArea(
+ @ApiParam("鍖哄煙") @RequestBody analysisOption: AnalysisOption,
+ ) = resPack {
+ if (analysisOption.startTime == null || analysisOption.endTime == null || analysisOption.area == null)
+ throw BizException("鍙傛暟閿欒, startTime, endTime, areaVo涓嶈兘涓虹┖")
+ val startTime = analysisOption.startTime!!.atZone(ZoneId.systemDefault()).toInstant()
+ val endTime = analysisOption.endTime!!.atZone(ZoneId.systemDefault()).toInstant()
+ val areaVo = analysisOption.area!!
+ dataAnalysisService.generateClueByRiskArea(
+ Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()),
+ Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()),
+ areaVo,
+ analysisOption.removeOtherDistrict,
+ analysisOption.removeNoPollutedSource
+ )
+ }
+
+ @ApiOperation(value = "璧拌埅鍏稿瀷闅愭偅鍖哄煙缁熻")
+ @GetMapping("/report/clueByRiskArea/one")
+ fun generateOneClueByRiskArea(
+ @ApiParam("浠诲姟缂栧彿") @RequestParam missionCode: String,
+ ) = resPack { dataAnalysisService.generateClueByRiskArea(missionCode) }
+
+ @ApiOperation(value = "鍙犲姞铻嶅悎鍒嗘瀽")
+ @PostMapping("/report/gridFusion")
+ fun generateGridFusion(
+ @ApiParam("寮�濮嬫椂闂�") @RequestParam
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ startTime: LocalDateTime,
+ @ApiParam("缁撴潫鏃堕棿") @RequestParam
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ endTime: LocalDateTime,
+ @ApiParam("闇�瑕佺粺璁$殑鐩戞祴鍥犲瓙", example = "NO2, CO") @RequestParam
+ factorTypes: String,
+ @ApiParam("鍖哄煙") @RequestBody areaVo: AreaVo,
+ ) = resPack {
+ dataAnalysisService.generateGridFusion(
+ factorTypes.split(",").map { FactorType.valueOf(it) },
+ Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()),
+ Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()),
+ areaVo
+ )
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3