newVehicle/src/main/java/com/muyu/service/impl/VehicleInstanceServiceImpl....

104 lines
3.0 KiB
Java

package com.muyu.service.impl;
import com.muyu.domain.Vehicle;
import com.muyu.domain.req.VehicleInstanceListReq;
import com.muyu.domain.resp.VehicleInstanceResp;
import com.muyu.service.VehicleInstanceService;
import com.muyu.vehicle.VehicleInstance;
import com.muyu.vehicle.core.LocalContainer;
import com.muyu.vehicle.model.VehicleData;
import com.muyu.vehicle.model.properties.MqttProperties;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author DongZeLiang
* @version 1.0
* @description 车辆实例业务实现层
* @date 2023/11/22
*/
@Log4j2
@Service
public class VehicleInstanceServiceImpl implements VehicleInstanceService {
/**
* 根据车辆生成车辆实例
*
* @param vehicle 车辆信息
*/
@Override
public void init(Vehicle vehicle) {
VehicleInstance vehicleInstance = new VehicleInstance();
vehicleInstance.setVehicle(vehicle);
vehicleInstance.setVehicleData(VehicleData.vehicleBuild(vehicle));
LocalContainer.setVehicleInstance(vehicleInstance);
log.info("构建车辆对象: [{}]", vehicle.getVin());
}
/**
* 初始化链接客户端
*
* @param vin 车辆VIN
*/
@Override
public void initClient(String vin) {
VehicleInstance vehicleInstance = LocalContainer.getVehicleInstance(vin);
MqttProperties mqttProperties = MqttProperties.builder()
.broker("tcp://fluxmq.muyu.icu:1883")
.topic("test")
.clientId(vin)
.build();
vehicleInstance.setMqttProperties(mqttProperties);
vehicleInstance.initClient();
}
/**
* 车辆结果对象
*
* @param vehicleInstanceListReq 车辆查询
*
* @return 车辆对象
*/
@Override
public List<VehicleInstanceResp> queryList (VehicleInstanceListReq vehicleInstanceListReq) {
return LocalContainer.vehicleDataMap.values()
.stream()
.map(VehicleInstanceResp::instanceBuild)
.toList();
}
/**
* 车辆客户端初始化
*
* @param vin vin
*/
@Override
public void vehicleClientInit (String vin) {
VehicleInstance vehicleInstance = LocalContainer.getVehicleInstance(vin);
if (vehicleInstance == null){
throw new RuntimeException("没有【"+vin+"】车辆");
}
vehicleInstance.setMqttProperties(
MqttProperties.builder()
.broker("tcp://fluxmq.muyu.icu:1883")
.topic("test")
.clientId(vin)
.build()
);
vehicleInstance.initClient();
}
/**
* 车辆客户端关闭
*
* @param vin vin
*/
@Override
public void vehicleClientClose (String vin) {
VehicleInstance vehicleInstance = LocalContainer.getVehicleInstance(vin);
vehicleInstance.closeClient();
}
}