故障预警选择存入报文配置
commit
5a4a163596
|
@ -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));
|
||||
}
|
||||
}
|
|
@ -4,21 +4,12 @@ package com.zhiLian.vehicle.controller;
|
|||
import com.alibaba.fastjson2.JSON;
|
||||
import com.zhiLian.common.core.domain.Result;
|
||||
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.service.IVehicleService;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 车辆录入Controller
|
||||
*
|
||||
|
@ -33,9 +24,9 @@ public class VehicleInfoController extends BaseController
|
|||
@Autowired
|
||||
private RedisTemplate<String,String> redisTemplate;
|
||||
|
||||
|
||||
@GetMapping("/list/{vin}")
|
||||
public Result vehicleInfoAllList(@PathVariable String vin){
|
||||
|
||||
if (redisTemplate.hasKey(vin)){
|
||||
String lastElement = redisTemplate.opsForList().index(vin, -1);
|
||||
VehicleInfo vehicleInfo = JSON.parseObject(lastElement, VehicleInfo.class);
|
||||
|
@ -43,4 +34,5 @@ public class VehicleInfoController extends BaseController
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -88,16 +88,7 @@ public class ManyDataSource {
|
|||
|
||||
@Lazy
|
||||
private List<Entinfo> dataSourceInfoList(){
|
||||
List<Entinfo> databaseNameList = new ArrayList<>(){{
|
||||
add(Entinfo.builder()
|
||||
.entCode("test_00")
|
||||
.ip("192.168.120.128")
|
||||
.port(3306)
|
||||
.build());
|
||||
}};
|
||||
List<Entinfo> list = remoteBusinessService.listAll();
|
||||
databaseNameList.addAll(list);
|
||||
return databaseNameList;
|
||||
return remoteBusinessService.listAll();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -61,4 +61,6 @@ public interface GroupMapper extends BaseMapper<Group>
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteGroupByIds(Long[] ids);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -3,21 +3,26 @@ package com.zhiLian.vehicle.rabbitmq.producer;
|
|||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.rabbitmq.client.Channel;
|
||||
import com.zhiLian.common.redis.service.RedisService;
|
||||
import com.zhiLian.vehicle.datasource.config.holder.DynamicDataSourceHolder;
|
||||
import com.zhiLian.vehicle.domain.FaultRecord;
|
||||
import com.zhiLian.vehicle.domain.MessageDetail;
|
||||
import com.zhiLian.vehicle.domain.Vehicle;
|
||||
import com.zhiLian.vehicle.mapper.GroupMapper;
|
||||
import com.zhiLian.vehicle.mapper.VehicleMapper;
|
||||
import com.zhiLian.vehicle.service.FaultRecordService;
|
||||
import com.zhiLian.vehicle.service.MessageDetailService;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.amqp.core.Message;
|
||||
import org.springframework.amqp.rabbit.annotation.Queue;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
|
@ -39,6 +44,12 @@ public class VehicleProducer {
|
|||
@Autowired
|
||||
private VehicleMapper vehicleService;
|
||||
|
||||
@Autowired
|
||||
private MessageDetailService messageDetailService;
|
||||
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
|
||||
|
||||
public void manyJob(){
|
||||
DynamicDataSourceHolder.setDynamicDataSourceKey("test_00");
|
||||
|
@ -56,7 +67,6 @@ public class VehicleProducer {
|
|||
});
|
||||
});
|
||||
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||
|
||||
}
|
||||
//调用注解 添加队列名称
|
||||
@RabbitListener(queuesToDeclare = {@Queue(name = "zhiLian-vehicle-start")})
|
||||
|
@ -82,7 +92,11 @@ public class VehicleProducer {
|
|||
.faultCode(faultRecord.getFaultCode())
|
||||
.vin(faultRecord.getVin())
|
||||
.startTime(faultRecord.getStartTime()).build();
|
||||
FaultRecord faultRecordOne = faultRecordService.getByFaultRecord(faultRecord);
|
||||
log.info("查询到的故障为:{}",faultRecordOne);
|
||||
if (faultRecordOne==null){
|
||||
faultRecordService.save(build);
|
||||
}
|
||||
// 移除数据源,
|
||||
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("回退失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -31,6 +31,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where id = #{id}
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
<insert id="insertGroup" parameterType="com.zhiLian.vehicle.domain.Group" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into `group`
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
|
|
@ -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>
|
Loading…
Reference in New Issue