feat:()修改存列表方法

dev.redis
sy200 2024-10-07 14:31:56 +08:00
parent d2b29e6323
commit d2462e6456
3 changed files with 173 additions and 169 deletions

View File

@ -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);
} }

View File

@ -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();
} }

View File

@ -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();
}
}
}