отображение забронированных слотов и тестовые НУ
This commit is contained in:
+32
@@ -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<Void> {
|
||||
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)
|
||||
|
||||
@@ -15,7 +15,21 @@
|
||||
<h2 class="mb-1">Параметры движения центра масс</h2>
|
||||
<div class="catalog-helper">Табличное представление asc-node по выбранному спутнику.</div>
|
||||
</div>
|
||||
<button id="satellite-pdcm-refresh" type="button" class="btn btn-outline-secondary">Обновить</button>
|
||||
<div class="d-flex gap-2 flex-wrap justify-content-end align-items-end satellite-pdcm-send-controls">
|
||||
<div>
|
||||
<label for="satellite-pdcm-send-ic-time" class="form-label catalog-helper mb-1">Время НУ</label>
|
||||
<input
|
||||
id="satellite-pdcm-send-ic-time"
|
||||
type="text"
|
||||
class="form-control satellite-pdcm-send-time"
|
||||
inputmode="numeric"
|
||||
placeholder="dd.mm.yyyy hh:MM:ss.zzz"
|
||||
aria-label="Время НУ"
|
||||
/>
|
||||
</div>
|
||||
<button id="satellite-pdcm-send-ic" type="button" class="btn btn-outline-primary" disabled>Передать НУ в slot-service</button>
|
||||
<button id="satellite-pdcm-refresh" type="button" class="btn btn-outline-secondary">Обновить</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="satellite-pdcm-alert"></div>
|
||||
|
||||
Reference in New Issue
Block a user