package com.xiaopeng.maintenance.controller; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.xiaopeng.api.model.maintenance.XpVehicleRepair; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.exception.ServiceException; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.security.service.TokenService; import com.xiaopeng.evi.oss.service.AliOssService; import com.xiaopeng.maintenance.constant.I18nKeyConstant; import com.xiaopeng.maintenance.dto.XpVehicleRepairReturnDTO; import com.xiaopeng.maintenance.dto.XpVehicleRepairStartDTO; import com.xiaopeng.maintenance.model.query.XpVehicleRepairPageQuery; import com.xiaopeng.maintenance.model.vo.XpVehicleRepairVO; import com.xiaopeng.maintenance.schedule.InsuranceInspectionScheduleTask; import com.xiaopeng.maintenance.service.IXpVehicleRepairService; import com.xiaopeng.maintenance.vo.RepairStatusVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.io.UnsupportedEncodingException; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Objects; /** *

* 车辆维修 前端控制器 *

* * @author xiaochen * @since 2026-02-06 */ @Slf4j @Api(tags = "车辆维修") @RestController public class XpVehicleRepairController { @Autowired private IXpVehicleRepairService xpVehicleRepairService; @Autowired private TokenService tokenService; @Autowired private AliOssService aliOssService; /** * 车辆详情-车辆运维-车辆送修 */ @ApiOperation(value = "车辆运维-车辆运维-车辆送修", tags = {"运维APP-车辆管理"}) @PostMapping("/api/v1/vehicleRepair/saveRepair") public R saveRepair(@Validated @RequestBody XpVehicleRepairStartDTO dto) { Long id = tokenService.getLoginOperationUser().getId(); xpVehicleRepairService.saveRepair(dto,id); return R.ok(); } /** * 车辆详情-车辆运维-车辆取回 */ @ApiOperation(value = "车辆运维-车辆运维-车辆取回", tags = {"运维APP-车辆管理"}) @PostMapping("/api/v1/vehicleRepair/saveReturnRepair") public R saveReturnRepair(@Validated @RequestBody XpVehicleRepairReturnDTO dto) { Long id = tokenService.getLoginOperationUser().getId(); if (dto.getRepairMoney()>99999999.99) { throw new ServiceException("维修费用不能超过10字符", I18nKeyConstant.REPAIR_MONEY_TOO_LONG); } xpVehicleRepairService.saveReturnRepair(dto,id); return R.ok(); } /** * 车辆详情-车辆运维-查询车辆维修状态 */ @ApiOperation(value = "车辆运维-车辆运维-查询车辆维修状态", tags = {"运维APP-车辆管理"}) @GetMapping("/api/v1/vehicleRepair/queryRepairStatus") public R queryRepairStatus(@RequestParam Long vehicleId) { Long id = tokenService.getLoginOperationUser().getId(); RepairStatusVO repairStatusVO = xpVehicleRepairService.queryRepairStatus(vehicleId); return R.ok(repairStatusVO); } /** * 车辆运维-车辆运维-维修记录详情 */ @ApiOperation(value = "车辆运维-运维记录-维修记录详情", tags = {"运维APP-车辆管理"}) @GetMapping("/api/v1/vehicleRepair/repairDetail") public R repairDetail(@RequestParam Long id) throws UnsupportedEncodingException { XpVehicleRepairVO xpVehicleRepairVO = xpVehicleRepairService.repairDetail(id); String vehiclePictures = xpVehicleRepairVO.getVehiclePictures(); if (StringUtils.isNotBlank(vehiclePictures)) { JSONObject jsonObject = JSONObject.parseObject(vehiclePictures); // 1 String downloadUrl = jsonObject.getString("url");; try { downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); } catch (UnsupportedEncodingException e) { log.error("获取图片下载地址失败", e); } jsonObject.put("url", downloadUrl); xpVehicleRepairVO.setVehiclePictures(jsonObject.toJSONString()); } String startRepairPicture = xpVehicleRepairVO.getStartRepairPicture(); if (StringUtils.isNotBlank(startRepairPicture)) { JSONArray jsonArray = JSONArray.parseArray(startRepairPicture); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); if (Objects.isNull(jsonObject)) { continue; } // 1 String downloadUrl = jsonObject.getString("url");; try { downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); } catch (UnsupportedEncodingException e) { log.error("获取图片下载地址失败", e); } jsonObject.put("url", downloadUrl); } xpVehicleRepairVO.setStartRepairPicture(JSONArray.toJSONString(jsonArray)); } return R.ok(xpVehicleRepairVO); } /** * 管理后台-车辆管理-运营车辆管理 通过车辆id查询维修分页列表 * * @return */ @ApiOperation(value = "通过车辆id查询维修分页列表", tags = {"管理后台-车辆管理-运营车辆管理"}) @PostMapping("/api/v1/vehicle/queryRepairByVehicleId") public R> queryRepairByVehicleId(@Valid @RequestBody XpVehicleRepairPageQuery query) throws UnsupportedEncodingException { PageInfo pageInfo = xpVehicleRepairService.queryDetectionByVehicleId(query); for (XpVehicleRepairVO record : pageInfo.getRecords()) { String vehiclePictures = record.getVehiclePictures(); if (StringUtils.isNotBlank(vehiclePictures)) { JSONObject jsonObject = JSONObject.parseObject(vehiclePictures); //1 String downloadUrl = jsonObject.getString("url");; try { downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); } catch (UnsupportedEncodingException e) { log.error("获取图片下载地址失败", e); } jsonObject.put("url", downloadUrl); record.setVehiclePictures(jsonObject.toJSONString()); } String startRepairPicture = record.getStartRepairPicture(); if (StringUtils.isNotBlank(startRepairPicture)) { JSONArray jsonArray = JSONArray.parseArray(startRepairPicture); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); if (Objects.isNull(jsonObject)) { continue; } String downloadUrl = jsonObject.getString("url");; try { downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); } catch (UnsupportedEncodingException e) { log.error("获取图片下载地址失败", e); } jsonObject.put("url", downloadUrl); } record.setStartRepairPicture(JSONArray.toJSONString(jsonArray)); } } return R.ok(pageInfo); } @GetMapping("/inner/xpVehicleRepair/getMaintenanceStatus") public R getMaintenanceStatus(@RequestParam Long vehicleId){ XpVehicleRepair xpVehicleRepair = xpVehicleRepairService.getOne(new LambdaQueryWrapper() .eq(XpVehicleRepair::getVehicleId, vehicleId) .isNull(XpVehicleRepair::getReturnTime) .isNull(XpVehicleRepair::getTaskId) .orderByDesc(XpVehicleRepair::getCreateTime) .last("LIMIT 1")); if(Objects.nonNull(xpVehicleRepair)){ return R.ok(2); }else { return R.ok(1); } } }