отображение забронированных слотов и тестовые НУ
This commit is contained in:
+32
@@ -1,6 +1,7 @@
|
|||||||
package space.nstart.pcp.slots_service.controller
|
package space.nstart.pcp.slots_service.controller
|
||||||
|
|
||||||
import jakarta.validation.Valid
|
import jakarta.validation.Valid
|
||||||
|
import org.springframework.http.HttpStatus
|
||||||
import org.springframework.http.ResponseEntity
|
import org.springframework.http.ResponseEntity
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping
|
import org.springframework.web.bind.annotation.DeleteMapping
|
||||||
import org.springframework.web.bind.annotation.GetMapping
|
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.RequestMapping
|
||||||
import org.springframework.web.bind.annotation.RequestParam
|
import org.springframework.web.bind.annotation.RequestParam
|
||||||
import org.springframework.web.bind.annotation.RestController
|
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.ballistics.InitialConditionsDTO
|
||||||
import space.nstart.pcp.pcp_types_lib.dto.requests.slots.SlotCalculationSummaryDTO
|
import space.nstart.pcp.pcp_types_lib.dto.requests.slots.SlotCalculationSummaryDTO
|
||||||
import space.nstart.pcp.pcp_types_lib.dto.satellite.SatelliteCreateDTO
|
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.SatellitePdcmService
|
||||||
import space.nstart.pcp.slots_service.service.SlotService
|
import space.nstart.pcp.slots_service.service.SlotService
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
import java.time.format.DateTimeParseException
|
||||||
|
import java.time.format.ResolverStyle
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/catalog")
|
@RequestMapping("/api/catalog")
|
||||||
@@ -33,6 +38,8 @@ class CatalogRestController(
|
|||||||
private val groupStateService: GroupStateService,
|
private val groupStateService: GroupStateService,
|
||||||
private val satellitePdcmService: SatellitePdcmService
|
private val satellitePdcmService: SatellitePdcmService
|
||||||
) {
|
) {
|
||||||
|
private val sendInitialConditionsTimeFormatter =
|
||||||
|
DateTimeFormatter.ofPattern("dd.MM.uuuu HH:mm:ss.SSS").withResolverStyle(ResolverStyle.STRICT)
|
||||||
|
|
||||||
@GetMapping("/satellites")
|
@GetMapping("/satellites")
|
||||||
fun allSatellites() = satelliteCatalogService.allSatellites()
|
fun allSatellites() = satelliteCatalogService.allSatellites()
|
||||||
@@ -56,6 +63,31 @@ class CatalogRestController(
|
|||||||
@GetMapping("/satellites/pdcm/{satelliteId}")
|
@GetMapping("/satellites/pdcm/{satelliteId}")
|
||||||
fun satellitePdcm(@PathVariable satelliteId: Long) = satellitePdcmService.satelliteDetails(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")
|
@PostMapping("/satellites")
|
||||||
fun createSatellite(@Valid @RequestBody request: SatelliteCreateDTO) =
|
fun createSatellite(@Valid @RequestBody request: SatelliteCreateDTO) =
|
||||||
satelliteCatalogService.createSatellite(request)
|
satelliteCatalogService.createSatellite(request)
|
||||||
|
|||||||
@@ -15,8 +15,22 @@
|
|||||||
<h2 class="mb-1">Параметры движения центра масс</h2>
|
<h2 class="mb-1">Параметры движения центра масс</h2>
|
||||||
<div class="catalog-helper">Табличное представление asc-node по выбранному спутнику.</div>
|
<div class="catalog-helper">Табличное представление asc-node по выбранному спутнику.</div>
|
||||||
</div>
|
</div>
|
||||||
|
<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>
|
<button id="satellite-pdcm-refresh" type="button" class="btn btn-outline-secondary">Обновить</button>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="satellite-pdcm-alert"></div>
|
<div id="satellite-pdcm-alert"></div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user