104 lines
3.0 KiB
Java
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();
|
|
}
|
|
|
|
}
|