故障预警选择存入报文配置

master
hbr 2024-06-24 19:25:17 +08:00
commit 5a4a163596
16 changed files with 635 additions and 23 deletions

View File

@ -0,0 +1,118 @@
package com.zhiLian.vehicle.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.zhiLian.common.core.domain.Result;
import com.zhiLian.common.core.utils.poi.ExcelUtil;
import com.zhiLian.common.core.web.controller.BaseController;
import com.zhiLian.common.core.web.page.TableDataInfo;
import com.zhiLian.common.log.annotation.Log;
import com.zhiLian.common.log.enums.BusinessType;
import com.zhiLian.common.security.annotation.RequiresPermissions;
import com.zhiLian.vehicle.domain.MessageDetail;
import com.zhiLian.vehicle.domain.VehicleMessage;
import com.zhiLian.vehicle.domain.req.MessageDetailEditReq;
import com.zhiLian.vehicle.domain.req.MessageDetailQueryReq;
import com.zhiLian.vehicle.domain.req.MessageDetailSaveReq;
import com.zhiLian.vehicle.domain.vo.VehicleMessageVo;
import com.zhiLian.vehicle.service.MessageDetailService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Controller
*
* @author chx
* @date 2024-06-26
*/
@Api(tags = "报文详情")
@RestController
@RequestMapping("/messageDetail")
public class MessageDetailController extends BaseController {
@Autowired
private MessageDetailService messageDetailService;
/**
*
*/
@ApiOperation("获取报文详情列表")
@GetMapping("/list")
public Result<TableDataInfo<MessageDetail>> list(MessageDetailQueryReq messageDetailQueryReq) {
startPage();
List<MessageDetail> list = messageDetailService.list(MessageDetail.queryBuild(messageDetailQueryReq));
return getDataTable(list);
}
@PostMapping("addMessageIds")
public Result addMessageIds(@RequestBody VehicleMessage vehicleMessageVo){
return Result.success(messageDetailService.addMessageIds(vehicleMessageVo));
}
/**
*
*/
@ApiOperation("导出报文详情列表")
@Log(title = "报文详情", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, MessageDetail messageDetail) {
List<MessageDetail> list = messageDetailService.list(messageDetail);
ExcelUtil<MessageDetail> util = new ExcelUtil<MessageDetail>(MessageDetail.class);
util.exportExcel(response, list, "报文详情数据");
}
/**
*
*/
@ApiOperation("获取报文详情详细信息")
// @RequiresPermissions("car:messageDetail:query")
@GetMapping(value = "/{id}")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
public Result<MessageDetail> getInfo(@PathVariable("id") Long id) {
return Result.success(messageDetailService.getById(id));
}
/**
*
*/
// @RequiresPermissions("car:messageDetail:add")
@Log(title = "报文详情", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("新增报文详情")
public Result<String> add(@RequestBody MessageDetailSaveReq messageDetailSaveReq) {
return toAjax(messageDetailService.save(MessageDetail.saveBuild(messageDetailSaveReq)));
}
/**
*
*/
// @RequiresPermissions("car:messageDetail:edit")
@Log(title = "报文详情", businessType = BusinessType.UPDATE)
@PutMapping("/{id}")
@ApiOperation("修改报文详情")
public Result<String> edit(@PathVariable Long id, @RequestBody MessageDetailEditReq messageDetailEditReq) {
return toAjax(messageDetailService.updateById(MessageDetail.editBuild(id,messageDetailEditReq)));
}
/**
*
*/
// @RequiresPermissions("car:messageDetail:remove")
@Log(title = "报文详情", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
@ApiOperation("删除报文详情")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4")
public Result<String> remove(@PathVariable List<Long> ids) {
return toAjax(messageDetailService.removeBatchByIds(ids));
}
}

View File

@ -4,21 +4,12 @@ package com.zhiLian.vehicle.controller;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.zhiLian.common.core.domain.Result; import com.zhiLian.common.core.domain.Result;
import com.zhiLian.common.core.web.controller.BaseController; import com.zhiLian.common.core.web.controller.BaseController;
import com.zhiLian.common.core.web.page.TableDataInfo;
import com.zhiLian.common.log.annotation.Log;
import com.zhiLian.common.log.enums.BusinessType;
import com.zhiLian.common.redis.service.RedisService;
import com.zhiLian.vehicle.domain.Vehicle;
import com.zhiLian.vehicle.domain.VehicleInfo; import com.zhiLian.vehicle.domain.VehicleInfo;
import com.zhiLian.vehicle.service.IVehicleService;
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.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/** /**
* Controller * Controller
* *
@ -33,9 +24,9 @@ public class VehicleInfoController extends BaseController
@Autowired @Autowired
private RedisTemplate<String,String> redisTemplate; private RedisTemplate<String,String> redisTemplate;
@GetMapping("/list/{vin}") @GetMapping("/list/{vin}")
public Result vehicleInfoAllList(@PathVariable String vin){ public Result vehicleInfoAllList(@PathVariable String vin){
if (redisTemplate.hasKey(vin)){ if (redisTemplate.hasKey(vin)){
String lastElement = redisTemplate.opsForList().index(vin, -1); String lastElement = redisTemplate.opsForList().index(vin, -1);
VehicleInfo vehicleInfo = JSON.parseObject(lastElement, VehicleInfo.class); VehicleInfo vehicleInfo = JSON.parseObject(lastElement, VehicleInfo.class);
@ -43,4 +34,5 @@ public class VehicleInfoController extends BaseController
} }
return null; return null;
} }
} }

View File

@ -88,16 +88,7 @@ public class ManyDataSource {
@Lazy @Lazy
private List<Entinfo> dataSourceInfoList(){ private List<Entinfo> dataSourceInfoList(){
List<Entinfo> databaseNameList = new ArrayList<>(){{ return remoteBusinessService.listAll();
add(Entinfo.builder()
.entCode("test_00")
.ip("192.168.120.128")
.port(3306)
.build());
}};
List<Entinfo> list = remoteBusinessService.listAll();
databaseNameList.addAll(list);
return databaseNameList;
} }

View File

@ -0,0 +1,102 @@
package com.zhiLian.vehicle.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zhiLian.common.core.annotation.Excel;
import com.zhiLian.vehicle.domain.req.MessageDetailEditReq;
import com.zhiLian.vehicle.domain.req.MessageDetailQueryReq;
import com.zhiLian.vehicle.domain.req.MessageDetailSaveReq;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
/**
* message_detail
*
* @author chx
* @date 2024-06-26
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("message_detail")
@ApiModel(value = "MessageDetail", description = "报文详情")
public class MessageDetail {
private static final long serialVersionUID = 1L;
/** 主键 */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty(name = "主键", value = "主键")
private Long id;
/** 指标项key */
@Excel(name = "指标项key")
@ApiModelProperty(name = "指标项key", value = "指标项key")
private String keyCode;
/** 起始位 */
@Excel(name = "起始位")
@ApiModelProperty(name = "起始位", value = "起始位")
private Long startBit;
/** 终止位 */
@Excel(name = "终止位")
@ApiModelProperty(name = "终止位", value = "终止位")
private Long stopBit;
/** 指标项标签 */
@Excel(name = "指标项标签")
@ApiModelProperty(name = "指标项标签", value = "指标项标签")
private String label;
/** 类型 */
@Excel(name = "类型")
@ApiModelProperty(name = "类型", value = "类型")
private String type;
/**
*
*/
public static MessageDetail queryBuild( MessageDetailQueryReq messageDetailQueryReq){
return MessageDetail.builder()
.keyCode(messageDetailQueryReq.getKeyCode())
.startBit(messageDetailQueryReq.getStartBit())
.stopBit(messageDetailQueryReq.getStopBit())
.label(messageDetailQueryReq.getLabel())
.type(messageDetailQueryReq.getType())
.build();
}
/**
*
*/
public static MessageDetail saveBuild(MessageDetailSaveReq messageDetailSaveReq){
return MessageDetail.builder()
.keyCode(messageDetailSaveReq.getKeyCode())
.startBit(messageDetailSaveReq.getStartBit())
.stopBit(messageDetailSaveReq.getStopBit())
.label(messageDetailSaveReq.getLabel())
.type(messageDetailSaveReq.getType())
.build();
}
/**
*
*/
public static MessageDetail editBuild(Long id, MessageDetailEditReq messageDetailEditReq){
return MessageDetail.builder()
.id(id)
.keyCode(messageDetailEditReq.getKeyCode())
.startBit(messageDetailEditReq.getStartBit())
.stopBit(messageDetailEditReq.getStopBit())
.label(messageDetailEditReq.getLabel())
.type(messageDetailEditReq.getType())
.build();
}
}

View File

@ -0,0 +1,29 @@
package com.zhiLian.vehicle.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* BingRui.Hou
*
* @Description
* @ClassName VehicleMessage
* @Date 2024/06/27 0:40
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class VehicleMessage {
/**
* vin
*/
private String vin;
/**
* ID
*/
private String messageIds;
}

View File

@ -0,0 +1,44 @@
package com.zhiLian.vehicle.domain.req;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
/**
* message_detail
*
* @author chx
* @date 2024-06-26
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "MessageDetailEditReq", description = "报文详情")
public class MessageDetailEditReq {
private static final long serialVersionUID = 1L;
/** 指标项key */
@ApiModelProperty(name = "指标项key", value = "指标项key")
private String keyCode;
/** 起始位 */
@ApiModelProperty(name = "起始位", value = "起始位")
private Long startBit;
/** 终止位 */
@ApiModelProperty(name = "终止位", value = "终止位")
private Long stopBit;
/** 指标项标签 */
@ApiModelProperty(name = "指标项标签", value = "指标项标签")
private String label;
/** 类型 */
@ApiModelProperty(name = "类型", value = "类型")
private String type;
}

View File

@ -0,0 +1,45 @@
package com.zhiLian.vehicle.domain.req;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
/**
* message_detail
*
* @author chx
* @date 2024-06-26
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "MessageDetailQueryReq", description = "报文详情")
public class MessageDetailQueryReq{
private static final long serialVersionUID = 1L;
/** 指标项key */
@ApiModelProperty(name = "指标项key", value = "指标项key")
private String keyCode;
/** 起始位 */
@ApiModelProperty(name = "起始位", value = "起始位")
private Long startBit;
/** 终止位 */
@ApiModelProperty(name = "终止位", value = "终止位")
private Long stopBit;
/** 指标项标签 */
@ApiModelProperty(name = "指标项标签", value = "指标项标签")
private String label;
/** 类型 */
@ApiModelProperty(name = "类型", value = "类型")
private String type;
}

View File

@ -0,0 +1,56 @@
package com.zhiLian.vehicle.domain.req;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
/**
* message_detail
*
* @author chx
* @date 2024-06-26
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "MessageDetailSaveReq", description = "报文详情")
public class MessageDetailSaveReq{
private static final long serialVersionUID = 1L;
/** 主键 */
@ApiModelProperty(name = "主键", value = "主键")
private Long id;
/** 指标项key */
@ApiModelProperty(name = "指标项key", value = "指标项key")
private String keyCode;
/** 起始位 */
@ApiModelProperty(name = "起始位", value = "起始位")
private Long startBit;
/** 终止位 */
@ApiModelProperty(name = "终止位", value = "终止位")
private Long stopBit;
/** 指标项标签 */
@ApiModelProperty(name = "指标项标签", value = "指标项标签")
private String label;
/** 类型 */
@ApiModelProperty(name = "类型", value = "类型")
private String type;
}

View File

@ -0,0 +1,31 @@
package com.zhiLian.vehicle.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* BingRui.Hou
*
* @Description
* @ClassName VehicleMessage
* @Date 2024/06/27 0:40
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class VehicleMessageVo {
/**
* vin
*/
private String vin;
/**
* ID
*/
private List<Long> messageIds;
}

View File

@ -61,4 +61,6 @@ public interface GroupMapper extends BaseMapper<Group>
* @return * @return
*/ */
public int deleteGroupByIds(Long[] ids); public int deleteGroupByIds(Long[] ids);
} }

View File

@ -0,0 +1,18 @@
package com.zhiLian.vehicle.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhiLian.vehicle.domain.MessageDetail;
import com.zhiLian.vehicle.domain.VehicleMessage;
import com.zhiLian.vehicle.domain.vo.VehicleMessageVo;
/**
* Mapper
*
* @author chx
* @date 2024-06-26
*/
public interface MessageDetailMapper extends BaseMapper<MessageDetail> {
Boolean addMess(VehicleMessage vehicleMessageVo);
}

View File

@ -3,21 +3,26 @@ package com.zhiLian.vehicle.rabbitmq.producer;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Channel;
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.FaultRecord; import com.zhiLian.vehicle.domain.FaultRecord;
import com.zhiLian.vehicle.domain.MessageDetail;
import com.zhiLian.vehicle.domain.Vehicle; import com.zhiLian.vehicle.domain.Vehicle;
import com.zhiLian.vehicle.mapper.GroupMapper;
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 lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.Queue; 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.List; 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;
@ -39,6 +44,12 @@ public class VehicleProducer {
@Autowired @Autowired
private VehicleMapper vehicleService; private VehicleMapper vehicleService;
@Autowired
private MessageDetailService messageDetailService;
@Autowired
private RedisService redisService;
public void manyJob(){ public void manyJob(){
DynamicDataSourceHolder.setDynamicDataSourceKey("test_00"); DynamicDataSourceHolder.setDynamicDataSourceKey("test_00");
@ -56,7 +67,6 @@ public class VehicleProducer {
}); });
}); });
DynamicDataSourceHolder.removeDynamicDataSourceKey(); DynamicDataSourceHolder.removeDynamicDataSourceKey();
} }
//调用注解 添加队列名称 //调用注解 添加队列名称
@RabbitListener(queuesToDeclare = {@Queue(name = "zhiLian-vehicle-start")}) @RabbitListener(queuesToDeclare = {@Queue(name = "zhiLian-vehicle-start")})
@ -82,7 +92,11 @@ public class VehicleProducer {
.faultCode(faultRecord.getFaultCode()) .faultCode(faultRecord.getFaultCode())
.vin(faultRecord.getVin()) .vin(faultRecord.getVin())
.startTime(faultRecord.getStartTime()).build(); .startTime(faultRecord.getStartTime()).build();
faultRecordService.save(build); FaultRecord faultRecordOne = faultRecordService.getByFaultRecord(faultRecord);
log.info("查询到的故障为:{}",faultRecordOne);
if (faultRecordOne==null){
faultRecordService.save(build);
}
// 移除数据源, // 移除数据源,
DynamicDataSourceHolder.removeDynamicDataSourceKey(); DynamicDataSourceHolder.removeDynamicDataSourceKey();
} }
@ -149,4 +163,53 @@ public class VehicleProducer {
} }
} }
} }
@RabbitListener(queuesToDeclare = {@Queue(name = "zhiLian-vehicle-vin")})
public void smsConfigVin(String msg, Message message, Channel channel){
//获取消息的ID
String messageId = message.getMessageProperties().getMessageId();
try {
//添加消息id到redis set集合中 添加成功返回1 表示未消费 添加失败返回0 表示已消费
Long count = redisTemplate.opsForSet().add("messageId", messageId);
//添加成功 正常消费信息
if (count == 1) {
log.info("消费:{}",msg);
manyJob();
FaultRecord faultRecord = JSON.parseObject(msg, FaultRecord.class);
// //判断车辆属于哪个企业
String s = redisTemplate.opsForValue().get(faultRecord.getVin()+"1");
Executors.newFixedThreadPool(1).execute(new Runnable() {
@Override
public void run() {
//选择数据源,切换数据源,
DynamicDataSourceHolder.setDynamicDataSourceKey("test_"+s);
// List<MessageDetail> list= groupMapper.list();
// log.info("list{}",list);
List<MessageDetail> list = messageDetailService.list(new MessageDetail());
HashMap<String, List<MessageDetail>> hashMap = new HashMap<>();
hashMap.put(faultRecord.getVin()+"mgs",list);
redisService.setCacheMap(faultRecord.getVin()+"msg",hashMap);
DynamicDataSourceHolder.removeDynamicDataSourceKey();
Map<String, Object> cacheMap = redisService.getCacheMap(faultRecord.getVin());
log.info(cacheMap);
}
});
//确认消费
channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
log.info("消费成功");
}
} catch (Exception e) {
//删除队列ID
log.info("消费失败,{}",e.getMessage());
try {
//回退消息
channel.basicReject(message.getMessageProperties().getDeliveryTag(),false);
log.info("回退消息");
} catch (IOException ex) {
//回退失败
log.info("回退失败");
}
}
}
} }

View File

@ -0,0 +1,26 @@
package com.zhiLian.vehicle.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhiLian.vehicle.domain.MessageDetail;
import com.zhiLian.vehicle.domain.VehicleMessage;
import com.zhiLian.vehicle.domain.vo.VehicleMessageVo;
import java.util.List;
/**
* Service
*
* @author chx
* @date 2024-06-26
*/
public interface MessageDetailService extends IService<MessageDetail> {
/**
*
*
* @param messageDetail
* @return
*/
public List<MessageDetail> list(MessageDetail messageDetail);
Object addMessageIds(VehicleMessage vehicleMessageVo);
}

View File

@ -0,0 +1,71 @@
package com.zhiLian.vehicle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhiLian.common.redis.service.RedisService;
import com.zhiLian.vehicle.datasource.config.holder.DynamicDataSourceHolder;
import com.zhiLian.vehicle.domain.MessageDetail;
import com.zhiLian.vehicle.domain.VehicleMessage;
import com.zhiLian.vehicle.domain.vo.VehicleMessageVo;
import com.zhiLian.vehicle.mapper.MessageDetailMapper;
import com.zhiLian.vehicle.service.MessageDetailService;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.weaver.ast.Or;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Service
*
* @author chx
* @date 2024-06-26
*/
@Slf4j
@Service
public class MessageDetailServiceImpl extends ServiceImpl<MessageDetailMapper, MessageDetail> implements MessageDetailService {
@Autowired
private MessageDetailMapper messageDetailMapper;
/**
*
*
* @param messageDetail
* @return
*/
@Override
public List<MessageDetail> list(MessageDetail messageDetail) {
LambdaQueryWrapper<MessageDetail> queryWrapper = new LambdaQueryWrapper<>();
return list(queryWrapper);
}
@Autowired
private RedisService redisService;
@Override
public Object addMessageIds(VehicleMessage vehicleMessageVo) {
log.info("addMessageids:{}",vehicleMessageVo);
Boolean b = messageDetailMapper.addMess(vehicleMessageVo);
if(b){
String[] split = vehicleMessageVo.getMessageIds().split(",");
ArrayList<MessageDetail> messageDetailArrayList = new ArrayList<>();
for (String s : split) {
MessageDetail one = this.getOne(
new LambdaQueryWrapper<MessageDetail>()
.eq(MessageDetail::getId, Long.valueOf(s)));
messageDetailArrayList.add(one);
}
HashMap<String, List<MessageDetail>> hashMap = new HashMap<>();
hashMap.put(vehicleMessageVo.getVin()+"mgs",messageDetailArrayList);
redisService.setCacheMap(vehicleMessageVo.getVin()+"msg",hashMap);
DynamicDataSourceHolder.removeDynamicDataSourceKey();
Map<String, Object> cacheMap = redisService.getCacheMap(vehicleMessageVo.getVin());
return null;
}
return null;
}
}

View File

@ -31,6 +31,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id} where id = #{id}
</select> </select>
<insert id="insertGroup" parameterType="com.zhiLian.vehicle.domain.Group" useGeneratedKeys="true" keyProperty="id"> <insert id="insertGroup" parameterType="com.zhiLian.vehicle.domain.Group" useGeneratedKeys="true" keyProperty="id">
insert into `group` insert into `group`
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhiLian.vehicle.mapper.MessageDetailMapper">
<resultMap type="com.zhiLian.vehicle.domain.MessageDetail" id="MessageDetailResult">
<result property="id" column="id" />
<result property="keyCode" column="keyCode" />
<result property="startBit" column="start_bit" />
<result property="stopBit" column="stop_bit" />
<result property="label" column="label" />
<result property="type" column="type" />
</resultMap>
<sql id="selectMessageDetailVo">
select id, `key_code`, start_bit, stop_bit, label, type from message_detail
</sql>
<insert id="addMess">
INSERT INTO `zhilian-cloud`.`vehicle_message` (`vin`, `message_ids`) VALUES (#{vin}, #{messageIds});
</insert>
</mapper>