mirror of
https://github.com/s-frick/effigenix.git
synced 2026-03-28 15:49:35 +01:00
feat(tui): neue Backend-Features anbinden und Status-Werte korrigieren
TUI-Anbindung für Reservierung bestätigen (US-4.3), Produktionsauftrag
umterminieren und filtern (US-P17). Status-Werte CREATED→PLANNED und
IN_PRODUCTION→IN_PROGRESS korrigiert. Fehlenden GET /{id} Endpoint für
Produktionsaufträge im Backend ergänzt.
This commit is contained in:
parent
8a84bf5f25
commit
417f8fcdae
14 changed files with 467 additions and 27 deletions
|
|
@ -0,0 +1,29 @@
|
|||
package de.effigenix.application.production;
|
||||
|
||||
import de.effigenix.domain.production.ProductionOrder;
|
||||
import de.effigenix.domain.production.ProductionOrderError;
|
||||
import de.effigenix.domain.production.ProductionOrderId;
|
||||
import de.effigenix.domain.production.ProductionOrderRepository;
|
||||
import de.effigenix.shared.common.Result;
|
||||
|
||||
public class GetProductionOrder {
|
||||
|
||||
private final ProductionOrderRepository productionOrderRepository;
|
||||
|
||||
public GetProductionOrder(ProductionOrderRepository productionOrderRepository) {
|
||||
this.productionOrderRepository = productionOrderRepository;
|
||||
}
|
||||
|
||||
public Result<ProductionOrderError, ProductionOrder> execute(String id) {
|
||||
if (id == null || id.isBlank()) {
|
||||
return Result.failure(new ProductionOrderError.ProductionOrderNotFound(ProductionOrderId.of(id)));
|
||||
}
|
||||
|
||||
return switch (productionOrderRepository.findById(ProductionOrderId.of(id))) {
|
||||
case Result.Failure(var err) -> Result.failure(new ProductionOrderError.RepositoryFailure(err.message()));
|
||||
case Result.Success(var opt) -> opt
|
||||
.<Result<ProductionOrderError, ProductionOrder>>map(Result::success)
|
||||
.orElseGet(() -> Result.failure(new ProductionOrderError.ProductionOrderNotFound(ProductionOrderId.of(id))));
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ import de.effigenix.application.production.AddRecipeIngredient;
|
|||
import de.effigenix.application.production.CancelProductionOrder;
|
||||
import de.effigenix.application.production.CompleteProductionOrder;
|
||||
import de.effigenix.application.production.CreateProductionOrder;
|
||||
import de.effigenix.application.production.GetProductionOrder;
|
||||
import de.effigenix.application.production.ListProductionOrders;
|
||||
import de.effigenix.application.production.ReleaseProductionOrder;
|
||||
import de.effigenix.application.production.RescheduleProductionOrder;
|
||||
|
|
@ -187,6 +188,11 @@ public class ProductionUseCaseConfiguration {
|
|||
return new RescheduleProductionOrder(productionOrderRepository, authorizationPort, unitOfWork);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public GetProductionOrder getProductionOrder(ProductionOrderRepository productionOrderRepository) {
|
||||
return new GetProductionOrder(productionOrderRepository);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListProductionOrders listProductionOrders(ProductionOrderRepository productionOrderRepository,
|
||||
AuthorizationPort authorizationPort) {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package de.effigenix.infrastructure.production.web.controller;
|
|||
import de.effigenix.application.production.CancelProductionOrder;
|
||||
import de.effigenix.application.production.CompleteProductionOrder;
|
||||
import de.effigenix.application.production.CreateProductionOrder;
|
||||
import de.effigenix.application.production.GetProductionOrder;
|
||||
import de.effigenix.application.production.ListProductionOrders;
|
||||
import de.effigenix.application.production.ReleaseProductionOrder;
|
||||
import de.effigenix.application.production.RescheduleProductionOrder;
|
||||
|
|
@ -45,6 +46,7 @@ public class ProductionOrderController {
|
|||
private static final Logger logger = LoggerFactory.getLogger(ProductionOrderController.class);
|
||||
|
||||
private final CreateProductionOrder createProductionOrder;
|
||||
private final GetProductionOrder getProductionOrder;
|
||||
private final ReleaseProductionOrder releaseProductionOrder;
|
||||
private final RescheduleProductionOrder rescheduleProductionOrder;
|
||||
private final StartProductionOrder startProductionOrder;
|
||||
|
|
@ -53,6 +55,7 @@ public class ProductionOrderController {
|
|||
private final ListProductionOrders listProductionOrders;
|
||||
|
||||
public ProductionOrderController(CreateProductionOrder createProductionOrder,
|
||||
GetProductionOrder getProductionOrder,
|
||||
ReleaseProductionOrder releaseProductionOrder,
|
||||
RescheduleProductionOrder rescheduleProductionOrder,
|
||||
StartProductionOrder startProductionOrder,
|
||||
|
|
@ -60,6 +63,7 @@ public class ProductionOrderController {
|
|||
CancelProductionOrder cancelProductionOrder,
|
||||
ListProductionOrders listProductionOrders) {
|
||||
this.createProductionOrder = createProductionOrder;
|
||||
this.getProductionOrder = getProductionOrder;
|
||||
this.releaseProductionOrder = releaseProductionOrder;
|
||||
this.rescheduleProductionOrder = rescheduleProductionOrder;
|
||||
this.startProductionOrder = startProductionOrder;
|
||||
|
|
@ -105,6 +109,20 @@ public class ProductionOrderController {
|
|||
return ResponseEntity.ok(responses);
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@PreAuthorize("hasAuthority('PRODUCTION_ORDER_READ')")
|
||||
public ResponseEntity<ProductionOrderResponse> getProductionOrder(@PathVariable String id) {
|
||||
logger.info("Getting production order: {}", id);
|
||||
|
||||
var result = getProductionOrder.execute(id);
|
||||
|
||||
if (result.isFailure()) {
|
||||
throw new ProductionOrderDomainErrorException(result.unsafeGetError());
|
||||
}
|
||||
|
||||
return ResponseEntity.ok(ProductionOrderResponse.from(result.unsafeGetValue()));
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@PreAuthorize("hasAuthority('PRODUCTION_ORDER_WRITE')")
|
||||
public ResponseEntity<ProductionOrderResponse> createProductionOrder(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue