From d4682fdeb7de7b829e33275d7c7d1bac2bfd6088 Mon Sep 17 00:00:00 2001 From: emelianov Date: Mon, 25 May 2026 21:02:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=B1=D1=80=D0=BE=D0=BD?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D1=81?= =?UTF-8?q?=D0=BB=D0=BE=D1=82=D0=BE=D0=B2=20=D0=B8=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=9D=D0=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CatalogRestController.kt | 32 +++++++++++++++++++ .../resources/templates/satellites-pdcm.html | 16 +++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/services/pcp-ui-service/src/main/kotlin/space/nstart/pcp/slots_service/controller/CatalogRestController.kt b/services/pcp-ui-service/src/main/kotlin/space/nstart/pcp/slots_service/controller/CatalogRestController.kt index 8a6d82d..5600791 100644 --- a/services/pcp-ui-service/src/main/kotlin/space/nstart/pcp/slots_service/controller/CatalogRestController.kt +++ b/services/pcp-ui-service/src/main/kotlin/space/nstart/pcp/slots_service/controller/CatalogRestController.kt @@ -1,6 +1,7 @@ package space.nstart.pcp.slots_service.controller import jakarta.validation.Valid +import org.springframework.http.HttpStatus import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.DeleteMapping import org.springframework.web.bind.annotation.GetMapping @@ -11,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController +import org.springframework.web.server.ResponseStatusException import space.nstart.pcp.pcp_types_lib.dto.ballistics.InitialConditionsDTO import space.nstart.pcp.pcp_types_lib.dto.requests.slots.SlotCalculationSummaryDTO import space.nstart.pcp.pcp_types_lib.dto.satellite.SatelliteCreateDTO @@ -24,6 +26,9 @@ import space.nstart.pcp.slots_service.service.SatelliteCatalogService import space.nstart.pcp.slots_service.service.SatellitePdcmService import space.nstart.pcp.slots_service.service.SlotService import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import java.time.format.DateTimeParseException +import java.time.format.ResolverStyle @RestController @RequestMapping("/api/catalog") @@ -33,6 +38,8 @@ class CatalogRestController( private val groupStateService: GroupStateService, private val satellitePdcmService: SatellitePdcmService ) { + private val sendInitialConditionsTimeFormatter = + DateTimeFormatter.ofPattern("dd.MM.uuuu HH:mm:ss.SSS").withResolverStyle(ResolverStyle.STRICT) @GetMapping("/satellites") fun allSatellites() = satelliteCatalogService.allSatellites() @@ -56,6 +63,31 @@ class CatalogRestController( @GetMapping("/satellites/pdcm/{satelliteId}") fun satellitePdcm(@PathVariable satelliteId: Long) = satellitePdcmService.satelliteDetails(satelliteId) + @PostMapping("/satellites/pdcm/{satelliteId}/send-ic") + fun sendSatelliteInitialConditions( + @PathVariable satelliteId: Long, + @RequestParam(required = false) time: String? + ): ResponseEntity { + val requestedTime = parseSendInitialConditionsTime(time) + slotService.sendSatelliteInitialConditions(satelliteId, requestedTime) + return ResponseEntity.accepted().build() + } + + private fun parseSendInitialConditionsTime(time: String?): LocalDateTime { + val normalizedTime = time?.trim()?.takeIf { it.isNotEmpty() } + ?: return LocalDateTime.now() + + return try { + LocalDateTime.parse(normalizedTime, sendInitialConditionsTimeFormatter) + } catch (exception: DateTimeParseException) { + throw ResponseStatusException( + HttpStatus.BAD_REQUEST, + "Параметр time должен быть в формате dd.mm.yyyy hh:MM:ss.zzz", + exception + ) + } + } + @PostMapping("/satellites") fun createSatellite(@Valid @RequestBody request: SatelliteCreateDTO) = satelliteCatalogService.createSatellite(request) diff --git a/services/pcp-ui-service/src/main/resources/templates/satellites-pdcm.html b/services/pcp-ui-service/src/main/resources/templates/satellites-pdcm.html index 142da35..b33487b 100644 --- a/services/pcp-ui-service/src/main/resources/templates/satellites-pdcm.html +++ b/services/pcp-ui-service/src/main/resources/templates/satellites-pdcm.html @@ -15,7 +15,21 @@

Параметры движения центра масс

Табличное представление asc-node по выбранному спутнику.
- +
+
+ + +
+ + +