puzhibing
2026-05-12 08cc6d5cf7e93b75cfabe7dcc2aeaa9afa1117eb
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
package com.xiaopeng.maintenance.controller;
 
import cn.hutool.core.collection.CollUtil;
import com.xiaopeng.api.feignClient.operation.XpPricingClient;
import com.xiaopeng.api.model.maintenance.XpVehicleModel;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.log.annotation.AdminOperationLog;
import com.xiaopeng.common.log.enums.AdminBusinessType;
import com.xiaopeng.common.log.enums.AdminOperationType;
import com.xiaopeng.maintenance.model.query.XpVehicleModelPageQuery;
import com.xiaopeng.maintenance.service.IXpVehicleModelService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
 
@Slf4j
@Api(tags = "车型")
@RestController
@RequestMapping("")
public class XpVehicleModelController {
 
    @Autowired
    IXpVehicleModelService xpVehicleModelService;
    @Resource
    private XpPricingClient xpPricingClient;
 
 
    @ApiOperation(value = "车型分页列表", tags = "管理后台-资产-车型管理")
    @PostMapping("/logan/inner/xpVehicleModel/pageList")
    public R<PageInfo<XpVehicleModel>> pageList(@RequestBody XpVehicleModelPageQuery query) {
        PageInfo<XpVehicleModel> pageInfo = xpVehicleModelService.pageList(query);
        return R.ok(pageInfo);
    }
 
 
    @PostMapping("/logan/inner/xpVehicleModel/listByIds")
    @ApiOperation(value = "车型根据ID列表批量查询", tags = {"内部接口"})
    public R<List<XpVehicleModel>> listByIds(@RequestBody List<String> ids) {
        if (CollUtil.isEmpty(ids)) {
            return R.ok(new ArrayList<>());
        }
        return R.ok(xpVehicleModelService.listByIds(ids));
    }
 
 
    @ApiOperation(value = "车型根据ID查询", tags = "管理后台-资产-车型管理")
    @GetMapping("/logan/inner/xpVehicleModel/getById")
    public R<XpVehicleModel> getById(@RequestParam String id) {
        if (id == null || id.isEmpty()) {
            return R.fail("参数错误");
        }
        XpVehicleModel model = xpVehicleModelService.getById(id);
        if (model == null) {
            return R.fail("数据不存在");
        }
        return R.ok(model);
    }
    
    
    @ApiOperation(value = "车型新增", tags = "管理后台-资产-车型管理")
    @PostMapping("/logan/inner/xpVehicleModel/add")
    @AdminOperationLog(
            businessType = AdminBusinessType.VEHICLE_MODEL_MANAGEMENT,
            operationType = AdminOperationType.ADD,
            content = "车型新增",
            appendRequestData = true
    )
    public R<String> add(@RequestBody @Valid XpVehicleModel dto) {
        // 根据名称查询车辆型号,验证是否已存在
        List<XpVehicleModel> existingModel = xpVehicleModelService.queryByName(dto.getName());
        if (CollUtil.isNotEmpty(existingModel)) {
            return R.fail("车辆型号名称已存在");
        }
        boolean b = xpVehicleModelService.save(dto);
        if(b){
            return R.ok();
        }
        return R.fail("保存失败");
    }
 
    @ApiOperation(value = "车型编辑", tags = "管理后台-资产-车型管理")
    @PostMapping("/logan/inner/xpVehicleModel/edit")
    @AdminOperationLog(
            businessType = AdminBusinessType.VEHICLE_MODEL_MANAGEMENT,
            operationType = AdminOperationType.EDIT,
            content = "车型编辑",
            appendRequestData = true
    )
    public R<String> edit(@RequestBody @Valid XpVehicleModel dto) {
        if(dto.getId() == null){
            return R.fail("参数错误");
        }
        XpVehicleModel model = xpVehicleModelService.getById(dto.getId());
        if(model == null){
            return R.fail("参数错误");
        }
        if(!model.getName().equals(dto.getName())){
            List<XpVehicleModel> existingModel = xpVehicleModelService.queryByName(dto.getName());
            if (CollUtil.isNotEmpty(existingModel)) {
                return R.fail("车辆型号名称已存在");
            }
        }
        boolean b = xpVehicleModelService.updateById(dto);
        if(b){
            return R.ok();
        }
        return R.fail("保存失败");
    }
 
    @ApiOperation(value = "车型删除", tags = "管理后台-资产-车型管理")
    @DeleteMapping("/logan/inner/xpVehicleModel/deleteById")
    @AdminOperationLog(
            businessType = AdminBusinessType.VEHICLE_MODEL_MANAGEMENT,
            operationType = AdminOperationType.DELETE,
            contentExpression = "'车型删除,id=' + #p0",
            appendRequestData = false
    )
    public R<String> deleteById(@RequestParam Long id) {
        /*
        1.判断车型是否被 车辆 xp_vehicle使用。
        2.判断车型是否被 定价管理 xp_pricing使用。
         */
        int vehicleCount = xpVehicleModelService.getVehicleCount(id);
        if (vehicleCount > 0) {
            return R.fail("车辆型号已被车辆使用");
        }
        R<Long> priceCountByVmidR = xpPricingClient.getPriceCountByVmid(id+"");
        if (priceCountByVmidR.getCode() != R.SUCCESS || priceCountByVmidR.getData() == null) {
            return R.fail("根据车型获取定价策略失败");
        }
        if(priceCountByVmidR.getData()>0){
            return R.fail("车辆型号已被定价策略使用");
        }
        boolean b = xpVehicleModelService.removeById(id);
        if(b){
            return R.ok();
        }
        return R.fail("删除失败");
    }
 
    
    @ApiOperation(value = "车型全列表查询", tags = "管理后台-车型全列表查询")
    @PostMapping("/logan/inner/xpVehicleModel/list")
    public R<List<XpVehicleModel>> list() {
        List<XpVehicleModel> list = xpVehicleModelService.queryList();
        return R.ok(list);
    }
 
 
 
 
 
 
    @GetMapping("/drainage/v1/vehicleModel/list")
    @ApiOperation(value = "查询可使用的车型列表", notes = "流量接入-基础信息")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "token", name = "token", required = true, paramType = "header")
    })
    public R<List<XpVehicleModel>> getVehicleModelList() {
        List<XpVehicleModel> list = xpVehicleModelService.queryList();
        return R.ok(list);
    }
 
 
 
 
}