package com.xiaopeng.maintenance.controller; import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetOperationsClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.account.XpOperationsUser; import com.xiaopeng.api.model.maintenance.XpErrorType; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.vo.account.LoginOperationUser; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.security.service.TokenService; import com.xiaopeng.maintenance.dto.HandleVehicleAccidentDto; import com.xiaopeng.maintenance.dto.SaveRoutineDetailDto; import com.xiaopeng.maintenance.dto.SaveVehicleAccidentDto; import com.xiaopeng.maintenance.model.query.TaskPageListQuery; import com.xiaopeng.maintenance.model.vo.TaskAccidentDetailVO; import com.xiaopeng.maintenance.model.vo.TaskChargingDetailVO; import com.xiaopeng.maintenance.model.vo.TaskPageListVO; import com.xiaopeng.maintenance.model.vo.TaskRoutineDetailVO; import com.xiaopeng.maintenance.service.IXpErrorTypeService; import com.xiaopeng.maintenance.service.XpTaskService; import com.xiaopeng.maintenance.vo.VehicleListVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** *

* 运维APP 任务中心 *

* * @author mitao * @since 2026-02-03 */ @RestController @Slf4j @Api(tags = "运维APP-任务中心") @RequestMapping("/api/v1/task") public class XpTaskController { @Resource private XpTaskService xpTaskService; @Resource private TokenService tokenService; @Resource private IXpErrorTypeService xpErrorTypeService; @Resource private XpFleetOperationsClient xpFleetOperationsClient; @Resource private XpVehicleClient xpVehicleClient; @ApiOperation(value = "任务中心列表", response = XpErrorType.class) @GetMapping("/errorTypeList") public R> errorTypeList() { return xpErrorTypeService.errorTypeList(); } @ApiOperation(value = "任务中心列表", response = TaskPageListVO.class) @PostMapping("/pageList") public R> pageList(@RequestBody TaskPageListQuery query) { PageInfo pageList = xpTaskService.pageList(query); return R.ok(pageList); } @ApiOperation(value = "事故任务确认到达") @GetMapping("/confirmArrive") @Transactional public R confirmArrive( Integer id) { return xpTaskService.confirmArrive(id); } @ApiOperation(value = "查询车辆不分页列表") @PostMapping("/listVehicle") public R> listVehicle() { LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); XpOperationsUser xpOperationsUser = loginOperationUser.getXpOperationsUser(); // 查询当前人员所属车队 查询车队关联车辆 R> vehicleByUserId = xpFleetOperationsClient.getVehicleByUserId(xpOperationsUser.getId()); List vehicleIds = vehicleByUserId.getData(); if (vehicleIds != null && !vehicleIds.isEmpty()){ // todo 查询车辆列表 获取经纬度 List data = xpVehicleClient.listByIds(vehicleIds).getData(); if (data!=null){ List vehicleListVOS = new ArrayList<>(); for (XpVehicle xpVehicle : data) { VehicleListVO vehicleListVO = new VehicleListVO(); vehicleListVO.setId(xpVehicle.getId()); // vehicleListVO.setVehicleLon(xpVehicle.getVehicleLon()); // vehicleListVO.setVehicleLat(xpVehicle.getVehicleLat()); vehicleListVO.setVehicleCode(xpVehicle.getVehicleCode()); vehicleListVO.setVehicleColor(xpVehicle.getVehicleColor()); vehicleListVO.setPlateNumber(xpVehicle.getPlateNumber()); vehicleListVO.setOperatingStatus(xpVehicle.getOperatingStatus()); vehicleListVOS.add(vehicleListVO); } return R.ok(vehicleListVOS); } } return R.ok(new ArrayList<>()); } @ApiOperation(value = "上传车辆事故") @PostMapping("/saveVehicleAccident") public R saveVehicleAccident(@RequestBody SaveVehicleAccidentDto dto) { LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); XpOperationsUser xpOperationsUser = loginOperationUser.getXpOperationsUser(); xpTaskService.saveVehicleAccident(dto, xpOperationsUser); return R.ok(); } @ApiOperation(value = "车辆事故任务详情") @GetMapping("/vehicleAccidentDetail") public R vehicleAccidentDetail(Long id) { return xpTaskService.vehicleAccidentDetail(id); } @ApiOperation(value = "车辆其他常规任务详情") @GetMapping("/vehicleRoutineDetail") public R vehicleRoutineDetail(Long id) { return xpTaskService.vehicleRoutineDetail(id); } @ApiOperation(value = "上传车辆其他常规任务详情") @PostMapping("/saveRoutineDetail") public R saveRoutineDetail(@RequestBody SaveRoutineDetailDto dto) { LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); Long id = loginOperationUser.getId(); return xpTaskService.saveRoutineDetail(dto, id); } @ApiOperation(value = "车辆常规充电任务详情") @GetMapping("/chargingDetail") public R chargingDetail(Long id) { return xpTaskService.chargingDetail(id); } @ApiOperation(value = "车辆常规维修任务详情") @GetMapping("/repairDetail") public R repairDetail(Long id) { return xpTaskService.repairDetail(id); } @ApiOperation(value = "车辆常规整备任务详情") @GetMapping("/preparationDetail") public R preparationDetail(Long id) { return xpTaskService.preparationDetail(id); } @ApiOperation(value = "车辆常规检测任务详情") @GetMapping("/detectionDetail") public R detectionDetail(Long id) { return xpTaskService.detectionDetail(id); } @ApiOperation(value = "车辆常规洗车任务详情") @GetMapping("/cleanDetail") public R cleanDetail(Long id) { return xpTaskService.cleanDetail(id); } @ApiOperation(value = "处理车辆事故") @PostMapping("/handleVehicleAccident") @Transactional public R handleVehicleAccident(@RequestBody HandleVehicleAccidentDto dto) { LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); XpOperationsUser xpOperationsUser = loginOperationUser.getXpOperationsUser(); return xpTaskService.handleVehicleAccident(dto,xpOperationsUser); } }