故障预警选择存入报文配置
parent
c656f7c0dc
commit
7b121f92f9
|
@ -88,7 +88,9 @@ public class ManyDataSource {
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
private List<Entinfo> dataSourceInfoList(){
|
private List<Entinfo> dataSourceInfoList(){
|
||||||
return remoteBusinessService.listAll();
|
List<Entinfo> entinfos = remoteBusinessService.listAll();
|
||||||
|
entinfos.add(Entinfo.builder().entCode("test_00").ip("192.168.120.128").port(3306).build());
|
||||||
|
return entinfos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,28 @@
|
||||||
package com.zhiLian.vehicle.job;
|
package com.zhiLian.vehicle.job;
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.zhiLian.common.business.domain.Entinfo;
|
||||||
|
import com.zhiLian.common.business.remote.RemoteBusinessService;
|
||||||
import com.zhiLian.common.redis.service.RedisService;
|
import com.zhiLian.common.redis.service.RedisService;
|
||||||
import com.zhiLian.vehicle.datasource.config.holder.DynamicDataSourceHolder;
|
import com.zhiLian.vehicle.datasource.config.holder.DynamicDataSourceHolder;
|
||||||
|
import com.zhiLian.vehicle.domain.MessageDetail;
|
||||||
import com.zhiLian.vehicle.domain.Vehicle;
|
import com.zhiLian.vehicle.domain.Vehicle;
|
||||||
|
import com.zhiLian.vehicle.domain.VehicleMessage;
|
||||||
|
import com.zhiLian.vehicle.mapper.MessageDetailMapper;
|
||||||
import com.zhiLian.vehicle.mapper.VehicleMapper;
|
import com.zhiLian.vehicle.mapper.VehicleMapper;
|
||||||
import com.zhiLian.vehicle.service.IVehicleService;
|
import com.zhiLian.vehicle.service.IVehicleService;
|
||||||
|
import com.zhiLian.vehicle.service.MessageDetailService;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
|
@ -33,10 +44,16 @@ public class ManyJob {
|
||||||
private RedisTemplate<String,String> redisTemplate;
|
private RedisTemplate<String,String> redisTemplate;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedisService redisService;
|
private VehicleMapper vehicleService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private VehicleMapper vehicleService;
|
private RemoteBusinessService remoteBusinessService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MessageDetailMapper messageDetailMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MessageDetailService messageDetailService;
|
||||||
|
|
||||||
@Scheduled(cron = "0 0 0 * * ?")// 每10分钟执行一次
|
@Scheduled(cron = "0 0 0 * * ?")// 每10分钟执行一次
|
||||||
public void manyJob(){
|
public void manyJob(){
|
||||||
|
@ -57,4 +74,50 @@ public class ManyJob {
|
||||||
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Scheduled(cron = "* */20 * * * ?")// 每10分钟执行一次
|
||||||
|
public void manyJobMess(){
|
||||||
|
List<Entinfo> list = remoteBusinessService.listAll();
|
||||||
|
ExecutorService executorService = Executors.newFixedThreadPool(list.size());
|
||||||
|
list.forEach(entinfo -> {
|
||||||
|
executorService.submit(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
DynamicDataSourceHolder.setDynamicDataSourceKey(entinfo.getEntCode());
|
||||||
|
List<VehicleMessage> list1= messageDetailMapper.listVehicleMess();
|
||||||
|
list1.forEach(vehicleMessage -> {
|
||||||
|
redisTemplate.delete(vehicleMessage.getVin()+"List");
|
||||||
|
List<MessageDetail> messageDetailList = messageDetailService.list(new QueryWrapper<MessageDetail>().
|
||||||
|
in("id", Arrays.asList(vehicleMessage.getMessageIds().split(","))));
|
||||||
|
messageDetailList.forEach(messageDetail -> {
|
||||||
|
redisTemplate.opsForList().rightPush(vehicleMessage.getVin()+"List", JSON.toJSONString(messageDetail));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void redis(Entinfo entinfo){
|
||||||
|
DynamicDataSourceHolder.setDynamicDataSourceKey(entinfo.getEntCode());
|
||||||
|
List<VehicleMessage> list= messageDetailMapper.listVehicleMess();
|
||||||
|
list.forEach(vehicleMessage -> {
|
||||||
|
redisTemplate.delete(vehicleMessage.getVin()+"List");
|
||||||
|
String[] split = vehicleMessage.getMessageIds().split(",");
|
||||||
|
ArrayList<MessageDetail> messageDetailArrayList = new ArrayList<>();
|
||||||
|
for (String s : split) {
|
||||||
|
MessageDetail one = messageDetailMapper.selectOne(
|
||||||
|
new LambdaQueryWrapper<MessageDetail>()
|
||||||
|
.eq(MessageDetail::getId, Long.valueOf(s)));
|
||||||
|
messageDetailArrayList.add(one);
|
||||||
|
}
|
||||||
|
messageDetailArrayList.forEach(messageDetail -> {
|
||||||
|
redisTemplate.opsForList().rightPush(vehicleMessage.getVin()+"List", JSON.toJSONString(messageDetail));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.zhiLian.vehicle.domain.MessageDetail;
|
import com.zhiLian.vehicle.domain.MessageDetail;
|
||||||
import com.zhiLian.vehicle.domain.VehicleMessage;
|
import com.zhiLian.vehicle.domain.VehicleMessage;
|
||||||
import com.zhiLian.vehicle.domain.vo.VehicleMessageVo;
|
import com.zhiLian.vehicle.domain.vo.VehicleMessageVo;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 报文详情Mapper接口
|
* 报文详情Mapper接口
|
||||||
|
@ -15,4 +18,37 @@ import com.zhiLian.vehicle.domain.vo.VehicleMessageVo;
|
||||||
public interface MessageDetailMapper extends BaseMapper<MessageDetail> {
|
public interface MessageDetailMapper extends BaseMapper<MessageDetail> {
|
||||||
|
|
||||||
Boolean addMess(VehicleMessage vehicleMessageVo);
|
Boolean addMess(VehicleMessage vehicleMessageVo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据vin 获取报文配置
|
||||||
|
* @param vehicleMessageVo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
VehicleMessage findByVin(VehicleMessage vehicleMessageVo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除报文【配置
|
||||||
|
* @param vehicleMessage
|
||||||
|
*/
|
||||||
|
void deleteMess(VehicleMessage vehicleMessage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据vin进行修改车辆报文配置
|
||||||
|
* @param vehicleMessageVo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Boolean updateByVin(VehicleMessage vehicleMessageVo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有报文配置
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<VehicleMessage> listVehicleMess();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据messageIds (1,2,3,4,5,)查询
|
||||||
|
* @param messageIds
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<MessageDetail> selectByMessageIds(@Param("messageIds") String messageIds);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,13 +2,18 @@ package com.zhiLian.vehicle.rabbitmq.producer;
|
||||||
|
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.rabbitmq.client.Channel;
|
import com.rabbitmq.client.Channel;
|
||||||
import com.zhiLian.common.redis.service.RedisService;
|
import com.zhiLian.common.business.domain.Entinfo;
|
||||||
|
import com.zhiLian.common.business.remote.RemoteBusinessService;
|
||||||
import com.zhiLian.vehicle.datasource.config.holder.DynamicDataSourceHolder;
|
import com.zhiLian.vehicle.datasource.config.holder.DynamicDataSourceHolder;
|
||||||
import com.zhiLian.vehicle.domain.FaultRecord;
|
import com.zhiLian.vehicle.domain.FaultRecord;
|
||||||
import com.zhiLian.vehicle.domain.MessageDetail;
|
import com.zhiLian.vehicle.domain.MessageDetail;
|
||||||
import com.zhiLian.vehicle.domain.Vehicle;
|
import com.zhiLian.vehicle.domain.Vehicle;
|
||||||
|
import com.zhiLian.vehicle.domain.VehicleMessage;
|
||||||
import com.zhiLian.vehicle.mapper.GroupMapper;
|
import com.zhiLian.vehicle.mapper.GroupMapper;
|
||||||
|
import com.zhiLian.vehicle.mapper.MessageDetailMapper;
|
||||||
import com.zhiLian.vehicle.mapper.VehicleMapper;
|
import com.zhiLian.vehicle.mapper.VehicleMapper;
|
||||||
import com.zhiLian.vehicle.service.FaultRecordService;
|
import com.zhiLian.vehicle.service.FaultRecordService;
|
||||||
import com.zhiLian.vehicle.service.MessageDetailService;
|
import com.zhiLian.vehicle.service.MessageDetailService;
|
||||||
|
@ -18,11 +23,10 @@ import org.springframework.amqp.rabbit.annotation.Queue;
|
||||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
|
@ -44,32 +48,21 @@ public class VehicleProducer {
|
||||||
@Autowired
|
@Autowired
|
||||||
private VehicleMapper vehicleService;
|
private VehicleMapper vehicleService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private MessageDetailService messageDetailService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedisService redisService;
|
private RemoteBusinessService remoteBusinessService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MessageDetailMapper messageDetailMapper;
|
||||||
|
@Autowired
|
||||||
|
private final static String ZHILIAN_END="zhiLian-vehicle-end";
|
||||||
|
private final static String ZHILIAN_VIN="zhiLian-vehicle-vin";
|
||||||
|
private final static String ZHILIAN_START="zhiLian-vehicle-start";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void manyJob(){
|
|
||||||
DynamicDataSourceHolder.setDynamicDataSourceKey("test_00");
|
|
||||||
List<Vehicle> list = vehicleService.selectVehicleListAll(new Vehicle());
|
|
||||||
ExecutorService executor = Executors.newFixedThreadPool(list.size());
|
|
||||||
list.forEach(vehicle -> {
|
|
||||||
executor.submit(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
redisTemplate
|
|
||||||
.opsForValue()
|
|
||||||
.set(vehicle.getNumber()+"1",
|
|
||||||
String.valueOf(vehicle.getBusinessId()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
|
||||||
}
|
|
||||||
//调用注解 添加队列名称
|
//调用注解 添加队列名称
|
||||||
@RabbitListener(queuesToDeclare = {@Queue(name = "zhiLian-vehicle-start")})
|
@RabbitListener(queuesToDeclare = {@Queue(name = ZHILIAN_START)})
|
||||||
public void smsConfigStart(String msg, Message message, Channel channel){
|
public void smsConfigStart(String msg, Message message, Channel channel){
|
||||||
//获取消息的ID
|
//获取消息的ID
|
||||||
String messageId = message.getMessageProperties().getMessageId();
|
String messageId = message.getMessageProperties().getMessageId();
|
||||||
|
@ -116,7 +109,9 @@ public class VehicleProducer {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@RabbitListener(queuesToDeclare = {@Queue(name = "zhiLian-vehicle-end")})
|
|
||||||
|
|
||||||
|
@RabbitListener(queuesToDeclare = {@Queue(name = ZHILIAN_END)})
|
||||||
public void smsConfigEnt(String msg, Message message, Channel channel){
|
public void smsConfigEnt(String msg, Message message, Channel channel){
|
||||||
//获取消息的ID
|
//获取消息的ID
|
||||||
String messageId = message.getMessageProperties().getMessageId();
|
String messageId = message.getMessageProperties().getMessageId();
|
||||||
|
@ -163,7 +158,11 @@ public class VehicleProducer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@RabbitListener(queuesToDeclare = {@Queue(name = "zhiLian-vehicle-vin")})
|
|
||||||
|
@Autowired
|
||||||
|
private MessageDetailService messageDetailService;
|
||||||
|
|
||||||
|
@RabbitListener(queuesToDeclare = {@Queue(name = ZHILIAN_VIN)})
|
||||||
public void smsConfigVin(String msg, Message message, Channel channel){
|
public void smsConfigVin(String msg, Message message, Channel channel){
|
||||||
//获取消息的ID
|
//获取消息的ID
|
||||||
String messageId = message.getMessageProperties().getMessageId();
|
String messageId = message.getMessageProperties().getMessageId();
|
||||||
|
@ -174,25 +173,20 @@ public class VehicleProducer {
|
||||||
if (count == 1) {
|
if (count == 1) {
|
||||||
log.info("消费:{}",msg);
|
log.info("消费:{}",msg);
|
||||||
manyJob();
|
manyJob();
|
||||||
FaultRecord faultRecord = JSON.parseObject(msg, FaultRecord.class);
|
|
||||||
// //判断车辆属于哪个企业
|
// //判断车辆属于哪个企业
|
||||||
String s = redisTemplate.opsForValue().get(faultRecord.getVin()+"1");
|
String s = redisTemplate.opsForValue().get(msg+"1");
|
||||||
|
redisTemplate.delete(msg+"List");
|
||||||
Executors.newFixedThreadPool(1).execute(new Runnable() {
|
Executors.newFixedThreadPool(1).execute(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
//选择数据源,切换数据源,
|
|
||||||
DynamicDataSourceHolder.setDynamicDataSourceKey("test_"+s);
|
DynamicDataSourceHolder.setDynamicDataSourceKey("test_"+s);
|
||||||
|
VehicleMessage vehicleMessage = messageDetailMapper.findByVin(VehicleMessage.builder().vin(msg).build());
|
||||||
// List<MessageDetail> list= groupMapper.list();
|
List<MessageDetail> messageDetailList = messageDetailService.list(new QueryWrapper<MessageDetail>().
|
||||||
// log.info("list:{}",list);
|
in("id", Arrays.asList(vehicleMessage.getMessageIds().split(","))));
|
||||||
List<MessageDetail> list = messageDetailService.list(new MessageDetail());
|
messageDetailList.forEach(messageDetail -> {
|
||||||
HashMap<String, List<MessageDetail>> hashMap = new HashMap<>();
|
redisTemplate.opsForList().rightPush(msg+"List",JSON.toJSONString(messageDetail));
|
||||||
hashMap.put(faultRecord.getVin()+"mgs",list);
|
});
|
||||||
redisService.setCacheMap(faultRecord.getVin()+"msg",hashMap);
|
|
||||||
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||||
Map<String, Object> cacheMap = redisService.getCacheMap(faultRecord.getVin());
|
|
||||||
log.info(cacheMap);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//确认消费
|
//确认消费
|
||||||
|
@ -212,4 +206,48 @@ public class VehicleProducer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void manyJobMess(){
|
||||||
|
List<Entinfo> list = remoteBusinessService.listAll();
|
||||||
|
ExecutorService executorService = Executors.newFixedThreadPool(list.size());
|
||||||
|
list.forEach(entinfo -> {
|
||||||
|
executorService.submit(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
DynamicDataSourceHolder.setDynamicDataSourceKey(entinfo.getEntCode());
|
||||||
|
List<VehicleMessage> list= messageDetailMapper.listVehicleMess();
|
||||||
|
list.forEach(vehicleMessage -> {
|
||||||
|
redisTemplate.delete(vehicleMessage.getVin()+"List");
|
||||||
|
String messageIds = vehicleMessage.getMessageIds();
|
||||||
|
List<MessageDetail> messageDetails = messageDetailMapper.selectList(new LambdaQueryWrapper<MessageDetail>().in(MessageDetail::getId, messageIds));
|
||||||
|
messageDetails.forEach(messageDetail -> {
|
||||||
|
redisTemplate.opsForList().rightPush(vehicleMessage.getVin()+"List", JSON.toJSONString(messageDetail));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void manyJob(){
|
||||||
|
DynamicDataSourceHolder.setDynamicDataSourceKey("test_00");
|
||||||
|
List<Vehicle> list = vehicleService.selectVehicleListAll(new Vehicle());
|
||||||
|
ExecutorService executor = Executors.newFixedThreadPool(list.size());
|
||||||
|
list.forEach(vehicle -> {
|
||||||
|
executor.submit(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
redisTemplate
|
||||||
|
.opsForValue()
|
||||||
|
.set(vehicle.getNumber()+"1",
|
||||||
|
String.valueOf(vehicle.getBusinessId()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.zhiLian.vehicle.service;
|
package com.zhiLian.vehicle.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.zhiLian.common.core.domain.Result;
|
||||||
import com.zhiLian.vehicle.domain.MessageDetail;
|
import com.zhiLian.vehicle.domain.MessageDetail;
|
||||||
import com.zhiLian.vehicle.domain.VehicleMessage;
|
import com.zhiLian.vehicle.domain.VehicleMessage;
|
||||||
import com.zhiLian.vehicle.domain.vo.VehicleMessageVo;
|
import com.zhiLian.vehicle.domain.vo.VehicleMessageVo;
|
||||||
|
@ -22,5 +23,7 @@ public interface MessageDetailService extends IService<MessageDetail> {
|
||||||
*/
|
*/
|
||||||
public List<MessageDetail> list(MessageDetail messageDetail);
|
public List<MessageDetail> list(MessageDetail messageDetail);
|
||||||
|
|
||||||
Object addMessageIds(VehicleMessage vehicleMessageVo);
|
Result addMessageIds(VehicleMessage vehicleMessageVo);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
package com.zhiLian.vehicle.service.impl;
|
package com.zhiLian.vehicle.service.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.zhiLian.common.core.domain.Result;
|
||||||
import com.zhiLian.common.redis.service.RedisService;
|
import com.zhiLian.common.redis.service.RedisService;
|
||||||
import com.zhiLian.vehicle.datasource.config.holder.DynamicDataSourceHolder;
|
import com.zhiLian.vehicle.datasource.config.holder.DynamicDataSourceHolder;
|
||||||
import com.zhiLian.vehicle.domain.MessageDetail;
|
import com.zhiLian.vehicle.domain.MessageDetail;
|
||||||
|
@ -12,13 +15,15 @@ import com.zhiLian.vehicle.mapper.MessageDetailMapper;
|
||||||
import com.zhiLian.vehicle.service.MessageDetailService;
|
import com.zhiLian.vehicle.service.MessageDetailService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.aspectj.weaver.ast.Or;
|
import org.aspectj.weaver.ast.Or;
|
||||||
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.List;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.Map;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 报文详情Service业务层处理
|
* 报文详情Service业务层处理
|
||||||
|
@ -32,6 +37,12 @@ public class MessageDetailServiceImpl extends ServiceImpl<MessageDetailMapper, M
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageDetailMapper messageDetailMapper;
|
private MessageDetailMapper messageDetailMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* redis 缓存
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private RedisTemplate<String,String> redisTemplate;
|
||||||
/**
|
/**
|
||||||
* 查询报文详情列表
|
* 查询报文详情列表
|
||||||
*
|
*
|
||||||
|
@ -47,25 +58,41 @@ public class MessageDetailServiceImpl extends ServiceImpl<MessageDetailMapper, M
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedisService redisService;
|
private RedisService redisService;
|
||||||
@Override
|
@Override
|
||||||
public Object addMessageIds(VehicleMessage vehicleMessageVo) {
|
public Result addMessageIds(VehicleMessage vehicleMessageVo) {
|
||||||
log.info("addMessageids:{}",vehicleMessageVo);
|
redisTemplate.delete(vehicleMessageVo.getVin()+"List");
|
||||||
Boolean b = messageDetailMapper.addMess(vehicleMessageVo);
|
VehicleMessage vehicleMessage=messageDetailMapper.findByVin(vehicleMessageVo);
|
||||||
if(b){
|
redis(vehicleMessageVo);
|
||||||
String[] split = vehicleMessageVo.getMessageIds().split(",");
|
rabbitTemplate.convertAndSend ( "zhiLian-vehicle-return",vehicleMessage.getVin() , messag ->{
|
||||||
ArrayList<MessageDetail> messageDetailArrayList = new ArrayList<>();
|
messag.getMessageProperties ( ).setMessageId ( UUID.randomUUID ( ).toString ( ) );
|
||||||
for (String s : split) {
|
log.info ( "消息发送成功" );
|
||||||
MessageDetail one = this.getOne(
|
return messag;
|
||||||
new LambdaQueryWrapper<MessageDetail>()
|
});
|
||||||
.eq(MessageDetail::getId, Long.valueOf(s)));
|
//判断 新增/ 修改
|
||||||
messageDetailArrayList.add(one);
|
if (vehicleMessage!=null){
|
||||||
}
|
//修改
|
||||||
HashMap<String, List<MessageDetail>> hashMap = new HashMap<>();
|
Boolean b=messageDetailMapper.updateByVin(vehicleMessageVo);
|
||||||
hashMap.put(vehicleMessageVo.getVin()+"mgs",messageDetailArrayList);
|
return Result.success();
|
||||||
redisService.setCacheMap(vehicleMessageVo.getVin()+"msg",hashMap);
|
|
||||||
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
|
||||||
Map<String, Object> cacheMap = redisService.getCacheMap(vehicleMessageVo.getVin());
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
//新增
|
||||||
|
Boolean b = messageDetailMapper.addMess(vehicleMessageVo);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MessageDetailService messageDetailService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RabbitTemplate rabbitTemplate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报文配置存入redis
|
||||||
|
* @param vehicleMessageVo
|
||||||
|
*/
|
||||||
|
private void redis(VehicleMessage vehicleMessageVo) {
|
||||||
|
List<MessageDetail> messageDetailList = messageDetailService.list(new QueryWrapper<MessageDetail>().
|
||||||
|
in("id", Arrays.asList(vehicleMessageVo.getMessageIds().split(","))));
|
||||||
|
messageDetailList.forEach(messageDetail -> {
|
||||||
|
redisTemplate.opsForList().rightPush(vehicleMessageVo.getVin()+"List", JSON.toJSONString(messageDetail));
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,4 +19,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<insert id="addMess">
|
<insert id="addMess">
|
||||||
INSERT INTO `zhilian-cloud`.`vehicle_message` (`vin`, `message_ids`) VALUES (#{vin}, #{messageIds});
|
INSERT INTO `zhilian-cloud`.`vehicle_message` (`vin`, `message_ids`) VALUES (#{vin}, #{messageIds});
|
||||||
</insert>
|
</insert>
|
||||||
|
<update id="updateByVin">
|
||||||
|
UPDATE `zhilian-cloud`.`vehicle_message` SET `message_ids` = #{messageIds} WHERE `vin` = #{vin};
|
||||||
|
</update>
|
||||||
|
<delete id="deleteMess">
|
||||||
|
DELETE FROM `zhilian-cloud`.`vehicle_message` WHERE `vin` = #{vin};
|
||||||
|
</delete>
|
||||||
|
<select id="findByVin" resultType="com.zhiLian.vehicle.domain.VehicleMessage">
|
||||||
|
select * from vehicle_message where vin = #{vin}
|
||||||
|
</select>
|
||||||
|
<select id="listVehicleMess" resultType="com.zhiLian.vehicle.domain.VehicleMessage">
|
||||||
|
select * from vehicle_message
|
||||||
|
</select>
|
||||||
|
<select id="selectByMessageIds" resultType="com.zhiLian.vehicle.domain.MessageDetail">
|
||||||
|
select * from message_detail where id in
|
||||||
|
<foreach collection="messageIds" item="messageId" open="(" separator="," close=")">
|
||||||
|
#{messageId}
|
||||||
|
</foreach>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
Loading…
Reference in New Issue