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.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> pageList(@RequestBody XpVehicleModelPageQuery query) { PageInfo pageInfo = xpVehicleModelService.pageList(query); return R.ok(pageInfo); } @PostMapping("/logan/inner/xpVehicleModel/listByIds") @ApiOperation(value = "车型根据ID列表批量查询", tags = {"内部接口"}) public R> listByIds(@RequestBody List 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 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") public R add(@RequestBody @Valid XpVehicleModel dto) { // 根据名称查询车辆型号,验证是否已存在 List existingModel = xpVehicleModelService.queryByName(dto.getName()); if (existingModel != null) { return R.fail("车辆型号名称已存在"); } boolean b = xpVehicleModelService.save(dto); if(b){ return R.ok(); } return R.fail("保存失败"); } @ApiOperation(value = "车型编辑", tags = "管理后台-资产-车型管理") @PostMapping("/logan/inner/xpVehicleModel/edit") public R 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 existingModel = xpVehicleModelService.queryByName(dto.getName()); if (existingModel != null) { return R.fail("车辆型号名称已存在"); } } boolean b = xpVehicleModelService.updateById(dto); if(b){ return R.ok(); } return R.fail("保存失败"); } @ApiOperation(value = "车型删除", tags = "管理后台-资产-车型管理") @DeleteMapping("/logan/inner/xpVehicleModel/deleteById") public R deleteById(@RequestParam String id) { /* 1.判断车型是否被 车辆 xp_vehicle使用。 2.判断车型是否被 定价管理 xp_pricing使用。 */ int vehicleCount = xpVehicleModelService.getVehicleCount(id); if (vehicleCount > 0) { return R.fail("车辆型号已被车辆使用"); } R 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.logicalRemoveById(id); if(b){ return R.ok(); } return R.fail("删除失败"); } @ApiOperation(value = "车型全列表查询", tags = "管理后台-车型全列表查询") @PostMapping("/logan/inner/xpVehicleModel/list") public R> list() { List 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> getVehicleModelList() { List list = xpVehicleModelService.queryList(); return R.ok(list); } }