feat:()修改存列表方法
parent
d2b29e6323
commit
d2462e6456
|
@ -52,9 +52,6 @@ public class VehicleController extends BaseController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private AllVehicleCacheService allVehicleCacheService;
|
private AllVehicleCacheService allVehicleCacheService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private RedisTemplate redisTemplate;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询车辆管理列表
|
* 查询车辆管理列表
|
||||||
|
@ -67,9 +64,13 @@ public class VehicleController extends BaseController {
|
||||||
startPage();
|
startPage();
|
||||||
List<VehicleManageResp> list = vehicleService.getVehicleList(vehicleManageReq);
|
List<VehicleManageResp> list = vehicleService.getVehicleList(vehicleManageReq);
|
||||||
// 将车辆信息存到Redis
|
// 将车辆信息存到Redis
|
||||||
for (VehicleManageResp resp : list) {
|
// for (VehicleManageResp resp : list) {
|
||||||
allVehicleCacheService.put(resp.getVehicleVin(), resp);
|
// allVehicleCacheService.put(resp.getVehicleVin(), resp);
|
||||||
}
|
// }
|
||||||
|
List<Vehicle> vehicleList = vehicleService.list();
|
||||||
|
vehicleList.forEach(vehicle -> {
|
||||||
|
vehicleCacheService.put(vehicle.getVehicleVin(), vehicle);
|
||||||
|
});
|
||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,9 +52,12 @@ public class VehicleTypeController {
|
||||||
@Operation(summary = "车辆类型列表",description = "车辆类型列表")
|
@Operation(summary = "车辆类型列表",description = "车辆类型列表")
|
||||||
public Result<List<VehicleType>> findAll(){
|
public Result<List<VehicleType>> findAll(){
|
||||||
List<VehicleType> list = vehicleTypeService.list();
|
List<VehicleType> list = vehicleTypeService.list();
|
||||||
for (VehicleType vehicleType : list) {
|
// for (VehicleType vehicleType : list) {
|
||||||
allVehicleTypeCacheService.put(String.valueOf(vehicleType.getVehicleTypeId()),vehicleType);
|
// allVehicleTypeCacheService.put(String.valueOf(vehicleType.getVehicleTypeId()),vehicleType);
|
||||||
}
|
// }
|
||||||
|
list.forEach(vehicleType -> {
|
||||||
|
vehicleTypeCacheService.put(String.valueOf(vehicleType.getVehicleTypeId()), vehicleType);
|
||||||
|
});
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,161 +1,161 @@
|
||||||
//package com.muyu.cloud.protocol.parsing.test;
|
package com.muyu.cloud.protocol.parsing.test;
|
||||||
//
|
|
||||||
//import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
//import com.muyu.domain.Vehicle;
|
import com.muyu.domain.Vehicle;
|
||||||
//import com.muyu.domain.VehicleType;
|
import com.muyu.domain.VehicleType;
|
||||||
//import com.muyu.domain.resp.MessageValueListResp;
|
import com.muyu.domain.resp.MessageValueListResp;
|
||||||
//import com.muyu.enterprise.cache.AllMessageValueCacheService;
|
import com.muyu.enterprise.cache.AllMessageValueCacheService;
|
||||||
//import com.muyu.enterprise.cache.VehicleCacheService;
|
import com.muyu.enterprise.cache.VehicleCacheService;
|
||||||
//import com.muyu.enterprise.cache.VehicleTypeCacheService;
|
import com.muyu.enterprise.cache.VehicleTypeCacheService;
|
||||||
//import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
//import org.apache.kafka.clients.producer.KafkaProducer;
|
import org.apache.kafka.clients.producer.KafkaProducer;
|
||||||
//import org.apache.kafka.clients.producer.ProducerRecord;
|
import org.apache.kafka.clients.producer.ProducerRecord;
|
||||||
//import org.eclipse.paho.client.mqttv3.*;
|
import org.eclipse.paho.client.mqttv3.*;
|
||||||
//import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
//import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
//
|
|
||||||
//import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
//import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
//import java.util.List;
|
import java.util.List;
|
||||||
//
|
|
||||||
///**
|
/**
|
||||||
// * @Author: LiDongJia
|
* @Author: LiDongJia
|
||||||
// * @Package: com.muyu.cloud.protocol.parsing.service.impl
|
* @Package: com.muyu.cloud.protocol.parsing.service.impl
|
||||||
// * @Project: 2112-car-cloud-server
|
* @Project: 2112-car-cloud-server
|
||||||
// * @name: ParsingServiceImpl
|
* @name: ParsingServiceImpl
|
||||||
// * @Date: 2024/9/28 14:31
|
* @Date: 2024/9/28 14:31
|
||||||
// * @Description: 协议解析实现层
|
* @Description: 协议解析实现层
|
||||||
// */
|
*/
|
||||||
//@Log4j2
|
@Log4j2
|
||||||
//@Component
|
@Component
|
||||||
//public class ParsingMessage {
|
public class ParsingMessage {
|
||||||
//
|
|
||||||
// @Resource
|
@Resource
|
||||||
// private KafkaProducer<String, String> kafkaProducer;
|
private KafkaProducer<String, String> kafkaProducer;
|
||||||
//
|
|
||||||
// @Autowired
|
@Autowired
|
||||||
// private VehicleCacheService vehicleCacheService;
|
private VehicleCacheService vehicleCacheService;
|
||||||
//
|
|
||||||
// @Autowired
|
@Autowired
|
||||||
// private VehicleTypeCacheService vehicleTypeCacheService;
|
private VehicleTypeCacheService vehicleTypeCacheService;
|
||||||
//
|
|
||||||
// @Autowired
|
@Autowired
|
||||||
// private AllMessageValueCacheService allMessageValueCacheService;
|
private AllMessageValueCacheService allMessageValueCacheService;
|
||||||
//
|
|
||||||
// /**
|
/**
|
||||||
// * 协议解析
|
* 协议解析
|
||||||
// */
|
*/
|
||||||
// @PostConstruct
|
@PostConstruct
|
||||||
// public void mqttClient() {
|
public void mqttClient() {
|
||||||
// String topic = "vehicle";
|
String topic = "vehicle";
|
||||||
// String broker = "tcp://111.231.50.146:1883";
|
String broker = "tcp://111.231.50.146:1883";
|
||||||
// String clientId = "JavaSample";
|
String clientId = "JavaSample";
|
||||||
//
|
|
||||||
|
try {
|
||||||
|
// 第三个参数为空,默认持久化策略
|
||||||
|
MqttClient sampleClient = new MqttClient(broker, clientId);
|
||||||
|
MqttConnectOptions connOpts = new MqttConnectOptions();
|
||||||
|
connOpts.setCleanSession(true);
|
||||||
|
System.out.println("Connecting to broker: " + broker);
|
||||||
|
sampleClient.connect(connOpts);
|
||||||
|
sampleClient.subscribe(topic, 0);
|
||||||
|
sampleClient.setCallback(new MqttCallback() {
|
||||||
|
// 连接丢失
|
||||||
|
@Override
|
||||||
|
public void connectionLost(Throwable throwable) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 连接成功
|
||||||
|
@Override
|
||||||
|
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
|
||||||
|
System.out.println(new String(mqttMessage.getPayload()));
|
||||||
|
JSONObject entries = this.protocolParsing(new String(mqttMessage.getPayload()));
|
||||||
|
|
||||||
|
ProducerRecord<String, String> producerRecord = new ProducerRecord<>("zeshi",
|
||||||
|
entries.toString() );
|
||||||
|
kafkaProducer.send(producerRecord);
|
||||||
|
System.out.println(entries);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议解析
|
||||||
|
* @param messageStr
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSONObject protocolParsing(String messageStr) {
|
||||||
|
//根据空格切割数据
|
||||||
|
String[] hexArray = messageStr.split(" ");
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
//遍历十六进制数据转换为字符
|
||||||
|
for (String hex : hexArray) {
|
||||||
|
int decimal = Integer.parseInt(hex, 16);
|
||||||
|
result.append((char) decimal);
|
||||||
|
}
|
||||||
|
//取出车辆VIN码
|
||||||
|
String vehicleVin = result.substring(1, 18);
|
||||||
|
log.info("车辆VIN码: " + vehicleVin);
|
||||||
|
//根据车辆VIN码查询报文模板ID
|
||||||
|
Vehicle vehicle = vehicleCacheService.get(vehicleVin);
|
||||||
|
Long vehicleTypeId = vehicle.getVehicleTypeId();
|
||||||
|
VehicleType vehicleType = vehicleTypeCacheService.get(String.valueOf(vehicleTypeId));
|
||||||
|
Long templateId = vehicleType.getMessageTemplateId();
|
||||||
|
List<MessageValueListResp> templateList = allMessageValueCacheService.get(String.valueOf(templateId));
|
||||||
|
// //从redis缓存中获取报文模板数据
|
||||||
// try {
|
// try {
|
||||||
// // 第三个参数为空,默认持久化策略
|
// String redisKey = "messageTemplate" + templateId;
|
||||||
// MqttClient sampleClient = new MqttClient(broker, clientId);
|
// if (redisTemplate.hasKey(redisKey)) {
|
||||||
// MqttConnectOptions connOpts = new MqttConnectOptions();
|
// List<Object> list = redisTemplate.opsForList().range(redisKey, 0, -1);
|
||||||
// connOpts.setCleanSession(true);
|
// templateList = list.stream()
|
||||||
// System.out.println("Connecting to broker: " + broker);
|
// .map(obj -> JSON.parseObject(obj.toString(), MessageValueListResp.class))
|
||||||
// sampleClient.connect(connOpts);
|
// .toList();
|
||||||
// sampleClient.subscribe(topic, 0);
|
// log.info("Redis缓存查询成功");
|
||||||
// sampleClient.setCallback(new MqttCallback() {
|
// } else {
|
||||||
// // 连接丢失
|
// Result<List<MessageValueListResp>> byTemplateId = remoteServiceClient.findByTemplateId(templateId);
|
||||||
// @Override
|
// templateList = byTemplateId.getData();
|
||||||
// public void connectionLost(Throwable throwable) {
|
// templateList.forEach(
|
||||||
//
|
// listResp ->
|
||||||
// }
|
// redisTemplate.opsForList().rightPush(
|
||||||
//
|
// redisKey, JSON.toJSONString(listResp)
|
||||||
// // 连接成功
|
// )
|
||||||
// @Override
|
// );
|
||||||
// public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
|
// log.info("数据库查询成功");
|
||||||
// System.out.println(new String(mqttMessage.getPayload()));
|
|
||||||
// JSONObject entries = this.protocolParsing(new String(mqttMessage.getPayload()));
|
|
||||||
//
|
|
||||||
// ProducerRecord<String, String> producerRecord = new ProducerRecord<>("zeshi",
|
|
||||||
// entries.toString() );
|
|
||||||
// kafkaProducer.send(producerRecord);
|
|
||||||
// System.out.println(entries);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * 协议解析
|
|
||||||
// * @param messageStr
|
|
||||||
// * @return
|
|
||||||
// */
|
|
||||||
// public JSONObject protocolParsing(String messageStr) {
|
|
||||||
// //根据空格切割数据
|
|
||||||
// String[] hexArray = messageStr.split(" ");
|
|
||||||
// StringBuilder result = new StringBuilder();
|
|
||||||
// //遍历十六进制数据转换为字符
|
|
||||||
// for (String hex : hexArray) {
|
|
||||||
// int decimal = Integer.parseInt(hex, 16);
|
|
||||||
// result.append((char) decimal);
|
|
||||||
// }
|
|
||||||
// //取出车辆VIN码
|
|
||||||
// String vehicleVin = result.substring(1, 18);
|
|
||||||
// log.info("车辆VIN码: " + vehicleVin);
|
|
||||||
// //根据车辆VIN码查询报文模板ID
|
|
||||||
// Vehicle vehicle = vehicleCacheService.get(vehicleVin);
|
|
||||||
// Long vehicleTypeId = vehicle.getVehicleTypeId();
|
|
||||||
// VehicleType vehicleType = vehicleTypeCacheService.get(String.valueOf(vehicleTypeId));
|
|
||||||
// Long templateId = vehicleType.getMessageTemplateId();
|
|
||||||
//// List<MessageValueListResp> templateList = allMessageValueCacheService.get(templateId);
|
|
||||||
//// //从redis缓存中获取报文模板数据
|
|
||||||
//// try {
|
|
||||||
//// String redisKey = "messageTemplate" + templateId;
|
|
||||||
//// if (redisTemplate.hasKey(redisKey)) {
|
|
||||||
//// List<Object> list = redisTemplate.opsForList().range(redisKey, 0, -1);
|
|
||||||
//// templateList = list.stream()
|
|
||||||
//// .map(obj -> JSON.parseObject(obj.toString(), MessageValueListResp.class))
|
|
||||||
//// .toList();
|
|
||||||
//// log.info("Redis缓存查询成功");
|
|
||||||
//// } else {
|
|
||||||
//// Result<List<MessageValueListResp>> byTemplateId = remoteServiceClient.findByTemplateId(templateId);
|
|
||||||
//// templateList = byTemplateId.getData();
|
|
||||||
//// templateList.forEach(
|
|
||||||
//// listResp ->
|
|
||||||
//// redisTemplate.opsForList().rightPush(
|
|
||||||
//// redisKey, JSON.toJSONString(listResp)
|
|
||||||
//// )
|
|
||||||
//// );
|
|
||||||
//// log.info("数据库查询成功");
|
|
||||||
//// }
|
|
||||||
//// } catch (Exception e) {
|
|
||||||
//// throw new RuntimeException("获取报文模板失败");
|
|
||||||
//// }
|
|
||||||
// //判断报文模板列表不为空
|
|
||||||
// if (templateList.isEmpty()) {
|
|
||||||
// throw new RuntimeException("报文模版为空");
|
|
||||||
// }
|
|
||||||
// //存储报文模版解析后的数据
|
|
||||||
// JSONObject jsonObject = new JSONObject();
|
|
||||||
// for (MessageValueListResp messageValue : templateList) {
|
|
||||||
// //起始位下标
|
|
||||||
// Integer startIndex = messageValue.getMessageStartIndex() - 1;
|
|
||||||
// //结束位下标
|
|
||||||
// Integer endIndex = messageValue.getMessageEndIndex();
|
|
||||||
// //根据报文模版截取数据
|
|
||||||
// String value = result.substring(startIndex, endIndex);
|
|
||||||
// //存入数据
|
|
||||||
// jsonObject.put(messageValue.getMessageLabel(), value);
|
|
||||||
// }
|
|
||||||
// return jsonObject;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // 接收信息
|
|
||||||
// @Override
|
|
||||||
// public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// } catch (MqttException me) {
|
|
||||||
// System.out.println("reason " + me.getReasonCode());
|
|
||||||
// System.out.println("msg " + me.getMessage());
|
|
||||||
// System.out.println("loc " + me.getLocalizedMessage());
|
|
||||||
// System.out.println("cause " + me.getCause());
|
|
||||||
// System.out.println("excep " + me);
|
|
||||||
// me.printStackTrace();
|
|
||||||
// }
|
|
||||||
// }
|
// }
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// throw new RuntimeException("获取报文模板失败");
|
||||||
// }
|
// }
|
||||||
|
//判断报文模板列表不为空
|
||||||
|
if (templateList.isEmpty()) {
|
||||||
|
throw new RuntimeException("报文模版为空");
|
||||||
|
}
|
||||||
|
//存储报文模版解析后的数据
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
for (MessageValueListResp messageValue : templateList) {
|
||||||
|
//起始位下标
|
||||||
|
Integer startIndex = messageValue.getMessageStartIndex() - 1;
|
||||||
|
//结束位下标
|
||||||
|
Integer endIndex = messageValue.getMessageEndIndex();
|
||||||
|
//根据报文模版截取数据
|
||||||
|
String value = result.substring(startIndex, endIndex);
|
||||||
|
//存入数据
|
||||||
|
jsonObject.put(messageValue.getMessageLabel(), value);
|
||||||
|
}
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 接收信息
|
||||||
|
@Override
|
||||||
|
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (MqttException me) {
|
||||||
|
System.out.println("reason " + me.getReasonCode());
|
||||||
|
System.out.println("msg " + me.getMessage());
|
||||||
|
System.out.println("loc " + me.getLocalizedMessage());
|
||||||
|
System.out.println("cause " + me.getCause());
|
||||||
|
System.out.println("excep " + me);
|
||||||
|
me.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue