package com.xiaopeng.vehicleConvoy.controller;
import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
import com.xiaopeng.api.model.vehicleConvoy.XpFleetOperations;
import com.xiaopeng.api.model.vehicleConvoy.XpFleetVehicle;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.vehicleConvoy.service.IXpFleetOperationsService;
import com.xiaopeng.vehicleConvoy.service.IXpFleetService;
import com.xiaopeng.vehicleConvoy.service.IXpFleetVehicleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 车队人员管理 前端控制器
*
*
* @author mitao
* @since 2026-02-03
*/
@RestController
@Api(tags = "车队人员管理")
public class XpFleetOperationsController {
@Resource
private IXpFleetService xpFleetService;
@Resource
private IXpFleetOperationsService xpFleetOperationsService;
@Resource
private IXpFleetVehicleService xpFleetVehicleService;
/**
* 根据人员id 获取所属车队下关联的车辆ids
*
* @param id 运维人员id
* @return 车辆isd
*/
@GetMapping("/logan/inner/fleet-operations/getVehicleByUserId/{id}")
public R> getVehicleByUserId(@PathVariable("id") Long id){
List fleetIds = xpFleetOperationsService.lambdaQuery().eq(XpFleetOperations::getOperationsUserId, id)
.list().stream().map(XpFleetOperations::getFleetId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(fleetIds)){
return R.ok(new ArrayList<>());
}
List vehicleIds = xpFleetVehicleService.lambdaQuery().in(XpFleetVehicle::getVehicleId, fleetIds)
.list().stream().map(XpFleetVehicle::getVehicleId).collect(Collectors.toList());
return R.ok(vehicleIds);
}
/**
* 根据人员id 获取所属车队
*
* @param id 运维人员id
* @return 车辆isd
*/
@GetMapping("/logan/inner/fleet-operations/getFleetByUserId/{id}")
public R> getFleetByUserId(@PathVariable("id") Long id){
List fleetIds = xpFleetOperationsService.lambdaQuery().eq(XpFleetOperations::getOperationsUserId, id)
.list().stream().map(XpFleetOperations::getFleetId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(fleetIds)){
return R.ok(new ArrayList<>());
}
List xpFleets = xpFleetService.listByIds(fleetIds);
return R.ok(xpFleets);
}
/**
* 根据人员id 获取所属车队
*
* @param userIds 运维人员id
* @return
*/
@PostMapping("/logan/inner/fleet-operations/findListByUserIds")
public R> findListByUserIds(@RequestBody List userIds){
List listByUserIds = xpFleetOperationsService.findListByUserIds(userIds);
return R.ok(listByUserIds);
}
/**
* 根据运维人员ID查询关联的车队ID列表(内部接口)
*
* @param userId 运维人员ID
* @return 车队ID列表
*/
@ApiOperation(value = "根据运维人员ID查询关联的车队ID列表", tags = {"内部接口"})
@GetMapping("/logan/inner/fleet-operations/getFleetIdsByUserId/{userId}")
public R> getFleetIdsByUserId(@PathVariable("userId") Long userId) {
List fleetIds = xpFleetOperationsService.lambdaQuery()
.eq(XpFleetOperations::getOperationsUserId, userId)
.list()
.stream()
.map(XpFleetOperations::getFleetId)
.distinct()
.collect(Collectors.toList());
return R.ok(fleetIds);
}
/**
* 根据车队ID查询关联的运维人员ID列表(内部接口)
*
* @param fleetId 车队ID
* @return 运维人员ID列表
*/
@GetMapping("/logan/inner/fleet-operations/getOperationsIdsByFleetId/{fleetId}")
public R> getOperationsIdsByFleetId(@PathVariable("fleetId") Long fleetId) {
List operationsIds = xpFleetOperationsService.lambdaQuery()
.eq(XpFleetOperations::getFleetId, fleetId)
.list()
.stream()
.map(XpFleetOperations::getOperationsUserId)
.distinct()
.collect(Collectors.toList());
return R.ok(operationsIds);
}
/**
* 根据车队ID集合查询关联的运维人员ID列表
*
* @param fleetIds 车队ID集合
* @return 运维人员ID列表
*/
@PostMapping("/logan/inner/fleet-operations/getOperationsIdsByFleetIds")
public R> getOperationsIdsByFleetIds(@RequestBody List fleetIds){
List fleetOperations = xpFleetOperationsService.lambdaQuery()
.in(XpFleetOperations::getFleetId, fleetIds)
.list();
return R.ok(fleetOperations);
}
}