package com.xiaopeng.order.controller; import cn.hutool.core.util.IdUtil; import com.xiaopeng.api.dto.automaticPilot.PushOrderDto; import com.xiaopeng.api.dto.order.AddCruiseMissionDto; import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient; import com.xiaopeng.api.model.order.XpCruiseOrder; import com.xiaopeng.api.vo.OrderType; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.order.service.IXpCruiseOrderService; import com.xiaopeng.order.model.query.XpCruiseOrderPageQuery; import com.xiaopeng.order.model.vo.XpCruiseOrderPageVO; import com.xiaopeng.order.service.IXpOrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** *

* 订单 前端控制器 *

* * @author mitao * @since 2026-02-03 */ @Validated @RestController @RequiredArgsConstructor(onConstructor_ = @Lazy) public class XpCruiseOrderController { private final IXpCruiseOrderService xpCruiseOrderService; private final OrderMissionClient orderMissionClient; private final IXpOrderService xpOrderService; /** * 查询并终止订单信息 返回id信息 * * @param */ @PostMapping("/inner/cruiseOrder/updateCruiseOrder") public R updateCruiseOrder(@RequestParam String vin) { String id = xpCruiseOrderService.updateCruiseOrder(vin); return R.ok(id); } /** * 查询并完成订单信息 返回id信息 * * @param */ @PostMapping("/inner/cruiseOrder/closeCruiseOrder") public R closeCruiseOrder(@RequestParam String vin) { String id = xpCruiseOrderService.closeCruiseOrder(vin); return R.ok(id); } /** * 查询订单信息 * @param orderId * @return */ @PostMapping("/inner/cruiseOrder/getCruiseOrder") public R getCruiseOrder(@RequestParam String orderId){ return R.ok(xpCruiseOrderService.getById(orderId)); } /** * 新增订单 下发命令 * * @param * @return 订单ID */ @PostMapping("/inner/cruiseOrder/addCruiseOrder") public R addCruiseOrder(@RequestBody XpCruiseOrder order) { order.setId("XU"+ IdUtil.fastUUID()); boolean save = xpCruiseOrderService.save(order); if (!save) { return R.fail("新增失败"); } // 下发命令 PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setVin(order.getVehicleVin()); pushOrderDto.setOrderId(order.getId()); pushOrderDto.setStartLatitude(order.getStartLat()); pushOrderDto.setStartLongitude(order.getStartLon()); pushOrderDto.setEndLatitude(order.getEndLat()); pushOrderDto.setEndLongitude(order.getEndLon()); pushOrderDto.setOrderType(OrderType.CRUISE_ORDER); pushOrderDto.setStage(2); // 调用推送服务 orderId + carVin orderMissionClient.pushOrder(pushOrderDto); return R.ok(order.getId()); } /** * 巡游订单记录分页列表 * * @param query 分页查询参数 * @return 分页结果 */ @ApiOperation(value = "巡游订单记录分页列表", tags = {"管理后台-巡游订单"}) @PostMapping("/api/v1/cruise-order/pageList") public R> pageList(@Validated @RequestBody XpCruiseOrderPageQuery query) { PageInfo pageInfo = xpCruiseOrderService.pageList(query); return R.ok(pageInfo); } /** * 添加巡游任务 下发命令 * @param * @param */ @PostMapping("/inner/cruiseOrder/addCruiseMission") public R addCruiseMission(@RequestBody AddCruiseMissionDto dto){ xpOrderService.addCruiseMission(dto.getVehicle(),dto.getOrder()); return R.ok(); } }