package com.oms.controller; import com.oms.common.ApiResponse; import com.oms.dto.ShippingOrderDTO; import com.oms.entity.ShippingOrder; import com.oms.service.ShippingOrderService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/order/shipping-orders") @RequiredArgsConstructor public class ShippingOrderController { private final ShippingOrderService shippingOrderService; @GetMapping public ApiResponse> getShippingOrders( @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "20") int size) { return ApiResponse.success(shippingOrderService.getPage(page, size).getRecords()); } @GetMapping("/all") public ApiResponse> getAll() { return ApiResponse.success(shippingOrderService.getAll()); } @GetMapping("/{id}") public ApiResponse getById(@PathVariable Long id) { return ApiResponse.success(shippingOrderService.getDtoById(id)); } @GetMapping("/shipment-no/{shipmentNo}") public ApiResponse getByShipmentNo(@PathVariable String shipmentNo) { return ApiResponse.success(shippingOrderService.getByShipmentNo(shipmentNo)); } @PostMapping public ApiResponse create(@RequestBody ShippingOrder shippingOrder) { return ApiResponse.success(shippingOrderService.save(shippingOrder)); } @PutMapping("/{id}") public ApiResponse update(@PathVariable Long id, @RequestBody ShippingOrder shippingOrder) { shippingOrder.setId(id); shippingOrderService.update(shippingOrder); return ApiResponse.success(null); } @DeleteMapping("/{id}") public ApiResponse delete(@PathVariable Long id) { shippingOrderService.delete(id); return ApiResponse.success(null); } @PostMapping("/{id}/submit-tracking") public ApiResponse submitTracking(@PathVariable Long id, @RequestParam String carrier, @RequestParam String trackingNo) { shippingOrderService.submitTracking(id, carrier, trackingNo, "SYSTEM"); return ApiResponse.success(null); } @PostMapping("/{id}/confirm-shipped") public ApiResponse confirmShipped(@PathVariable Long id) { shippingOrderService.confirmShipped(id, "SYSTEM"); return ApiResponse.success(null); } @PostMapping("/{id}/retry-return") public ApiResponse retryReturn(@PathVariable Long id) { shippingOrderService.retryReturn(id); return ApiResponse.success(null); } }