package com.xiaopeng.operation.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.operation.XpTargetedService; import com.xiaopeng.api.model.operation.XpTargetedServiceVehicle; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.operation.mapper.XpTargetedServiceMapper; import com.xiaopeng.operation.mapper.XpTargetedServiceVehicleMapper; import com.xiaopeng.operation.service.XpTargetedServiceService; import com.xiaopeng.operation.service.XpTargetedServiceVehicleService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service public class XpTargetedServiceVehicleServiceImpl extends ServiceImpl implements XpTargetedServiceVehicleService { @Resource private XpVehicleClient xpVehicleClient; @Resource private XpTargetedServiceService xpTargetedServiceService; @Override public void deleteByTargetedServiceId(Long targetedServiceId) { if (targetedServiceId == null) { return; } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(XpTargetedServiceVehicle::getTargetedServiceId, targetedServiceId); this.remove(wrapper); } @Override public List getVehicleVinByTargetedService(String cityCode) { List targetedServices = xpTargetedServiceService.list(new QueryWrapper().eq("status", 1) .eq("city_code", cityCode).last(" and (is_long_valid = 1 or now() between start_time and end_time)")); List collect = targetedServices.stream().map(XpTargetedService::getId).collect(Collectors.toList()); if(collect.isEmpty()){ return Collections.emptyList(); } List list = this.list(new QueryWrapper().in("targeted_service_id", collect)); List vinList = list.stream().map(item -> { XpVehicle xpVehicle = xpVehicleClient.queryById(item.getVehicleId()).getData(); return xpVehicle.getVehicleVin(); }).collect(Collectors.toList()); return vinList; } }