“mitao”
2026-03-09 a6414cf583f21d8a39cc5e1372c8af9db13377bb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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;
 
/**
 * <p>
 * 订单 前端控制器
 * </p>
 *
 * @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<String> updateCruiseOrder(@RequestParam String vin) {
        String id = xpCruiseOrderService.updateCruiseOrder(vin);
        return R.ok(id);
    }
    /**
     * 查询并完成订单信息  返回id信息
     *
     * @param
     */
    @PostMapping("/inner/cruiseOrder/closeCruiseOrder")
    public R<String> closeCruiseOrder(@RequestParam String vin) {
        String id = xpCruiseOrderService.closeCruiseOrder(vin);
        return R.ok(id);
    }
 
 
    /**
     * 查询订单信息
     * @param orderId
     * @return
     */
    @PostMapping("/inner/cruiseOrder/getCruiseOrder")
    public R<XpCruiseOrder> getCruiseOrder(@RequestParam String orderId){
        return R.ok(xpCruiseOrderService.getById(orderId));
    }
 
 
    /**
     * 新增订单 下发命令
     *
     * @param
     * @return 订单ID
     */
    @PostMapping("/inner/cruiseOrder/addCruiseOrder")
    public R<String> 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<PageInfo<XpCruiseOrderPageVO>> pageList(@Validated @RequestBody XpCruiseOrderPageQuery query) {
        PageInfo<XpCruiseOrderPageVO> 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();
    }
}