Commit edbff274 authored by duanruiming's avatar duanruiming

[add] redis处理

parent f8141189
package net.wanji.opt.common;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
@Configuration
@EnableAutoConfiguration
public class RedisConfig extends CachingConfigurerSupport {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.password}")
private String password;
@Value("${spring.redis.database}")
private int database;
@Value("${spring.redis.timeout}")
private int timeout;
@Value("${spring.redis.jedis.pool.max-idle}")
private int maxIdle;
@Value("${spring.redis.jedis.pool.max-active}")
private int maxTotal;
@Value("${spring.redis.jedis.pool.min-idle}")
private int minIdle;
@Value("${spring.redis.jedis.pool.max-wait}")
private long maxWaitMillis;
/**
* 获取Jedis连接工厂
* <p>用于创建Jedis对象</p>
* @return JedisPool
*/
@Bean
public JedisPool redisPoolFactory() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(maxTotal);
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
jedisPoolConfig.setMinIdle(minIdle);
jedisPoolConfig.setTestOnBorrow(false);
jedisPoolConfig.setTestOnReturn(false);
return new JedisPool(jedisPoolConfig, host, port,timeout, password, database);
}
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
// 使用 Jackson2JsonRedisSerializer 替代默认的 JDK 序列化器
Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,
ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.WRAPPER_ARRAY);
serializer.setObjectMapper(objectMapper);
template.setKeySerializer(new StringRedisSerializer()); // 设置 Key 的序列化器
template.setValueSerializer(serializer); // 设置 Value 的序列化器
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(serializer);
template.afterPropertiesSet();
return template;
}
/**
* 选择redis作为默认缓存工具
* @param redisConnectionFactory
* @return
*/
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
return RedisCacheManager
.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
.cacheDefaults(redisCacheConfiguration).build();
}
}
\ No newline at end of file
...@@ -45,7 +45,7 @@ public class ConsumerHandler implements KafkaListenerErrorHandler { ...@@ -45,7 +45,7 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
private final HoloForeignDeviceMapper holoForeignDeviceMapper; private final HoloForeignDeviceMapper holoForeignDeviceMapper;
@Transactional @Transactional
@KafkaListener(topics = {"cross_real_time_lane_data"}) // @KafkaListener(topics = {"cross_real_time_lane_data"})
public void receiveCrossRealTimeLaneData(ConsumerRecord<Object, Object> record, Acknowledgment acknowledgment) throws Exception { public void receiveCrossRealTimeLaneData(ConsumerRecord<Object, Object> record, Acknowledgment acknowledgment) throws Exception {
try { try {
String crossRealTimeLaneData = String.valueOf(record.value()); String crossRealTimeLaneData = String.valueOf(record.value());
...@@ -81,7 +81,7 @@ public class ConsumerHandler implements KafkaListenerErrorHandler { ...@@ -81,7 +81,7 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
} }
@Transactional @Transactional
@KafkaListener(topics = {"cross_real_time_data"}) // @KafkaListener(topics = {"cross_real_time_data"})
public void receiveCrossRealTimeData(ConsumerRecord<Object, Object> record, Acknowledgment acknowledgment) throws Exception { public void receiveCrossRealTimeData(ConsumerRecord<Object, Object> record, Acknowledgment acknowledgment) throws Exception {
try { try {
String crossRealTimeData = String.valueOf(record.value()); String crossRealTimeData = String.valueOf(record.value());
...@@ -130,7 +130,7 @@ public class ConsumerHandler implements KafkaListenerErrorHandler { ...@@ -130,7 +130,7 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
} }
@Transactional @Transactional
@KafkaListener(topics = {"cross_real_time_dir_data"}) // @KafkaListener(topics = {"cross_real_time_dir_data"})
public void receiveCrossRealTimeDirData(ConsumerRecord<Object, Object> record, Acknowledgment acknowledgment) throws Exception { public void receiveCrossRealTimeDirData(ConsumerRecord<Object, Object> record, Acknowledgment acknowledgment) throws Exception {
try { try {
String crossRealTimeDirData = String.valueOf(record.value()); String crossRealTimeDirData = String.valueOf(record.value());
...@@ -155,7 +155,7 @@ public class ConsumerHandler implements KafkaListenerErrorHandler { ...@@ -155,7 +155,7 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
} }
@Transactional @Transactional
@KafkaListener(topics = {"cross_real_time_turn_data"}) // @KafkaListener(topics = {"cross_real_time_turn_data"})
public void receiveCrossRealTimeTurnData(ConsumerRecord<Object, Object> record, Acknowledgment acknowledgment) throws Exception { public void receiveCrossRealTimeTurnData(ConsumerRecord<Object, Object> record, Acknowledgment acknowledgment) throws Exception {
try { try {
String crossRealTimeTurnData = String.valueOf(record.value()); String crossRealTimeTurnData = String.valueOf(record.value());
......
...@@ -11,10 +11,7 @@ import net.wanji.opt.common.RedisUtils; ...@@ -11,10 +11,7 @@ import net.wanji.opt.common.RedisUtils;
import net.wanji.opt.service.GreenBeltInfoService; import net.wanji.opt.service.GreenBeltInfoService;
import net.wanji.opt.vo.GreenBeltChartVO; import net.wanji.opt.vo.GreenBeltChartVO;
import net.wanji.opt.vo.GreenBeltInfoVO; import net.wanji.opt.vo.GreenBeltInfoVO;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
...@@ -36,19 +33,12 @@ public class StrategyGreenBeltController { ...@@ -36,19 +33,12 @@ public class StrategyGreenBeltController {
@ApiOperation(value = "绿波时序图数据查询", notes = "绿波时序图数据查询", response = JsonViewObject.class, @ApiOperation(value = "绿波时序图数据查询", notes = "绿波时序图数据查询", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/greenBletData", @GetMapping(value = "/greenBletData")
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenBeltInfoVO.class), @ApiResponse(code = 200, message = "OK", response = GreenBeltInfoVO.class),
}) })
public JsonViewObject greenBletData(@RequestBody String greenId) throws Exception { public JsonViewObject greenBletData(String greenId) throws Exception {
// todo 测试
GreenBeltInfoVO greenBeltInfoVO1 = greenBeltInfoService.convertData(null);
greenBeltInfoService.save(greenBeltInfoVO1);
String key = Constants.GREEN_ID_OPT_KEY.concat(greenId); String key = Constants.GREEN_ID_OPT_KEY.concat(greenId);
redisUtils.set(key, JacksonUtils.getInstance().writeValueAsString(greenBeltInfoVO1));
Object obj = redisUtils.get(key); Object obj = redisUtils.get(key);
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
GreenBeltInfoVO greenBeltInfoVO = JacksonUtils.getInstance().readValue(String.valueOf(obj), GreenBeltInfoVO.class); GreenBeltInfoVO greenBeltInfoVO = JacksonUtils.getInstance().readValue(String.valueOf(obj), GreenBeltInfoVO.class);
...@@ -57,16 +47,15 @@ public class StrategyGreenBeltController { ...@@ -57,16 +47,15 @@ public class StrategyGreenBeltController {
@ApiOperation(value = "绿波时序图图形查询", notes = "绿波时序图图形查询", response = JsonViewObject.class, @ApiOperation(value = "绿波时序图图形查询", notes = "绿波时序图图形查询", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/greenBeltChart", @GetMapping(value = "/greenBeltChart")
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenBeltInfoVO.class), @ApiResponse(code = 200, message = "OK", response = GreenBeltInfoVO.class),
}) })
public JsonViewObject greenBeltChart(@RequestBody String greenId) throws Exception { public JsonViewObject greenBeltChart(String greenId) throws Exception {
String key = Constants.GREEN_ID_OPT_CHART_KEY.concat(greenId); String key = Constants.GREEN_ID_OPT_CHART_KEY.concat(greenId);
Object obj = redisUtils.get(key); Object obj = redisUtils.get(key);
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
GreenBeltChartVO greenBeltChartVO = JacksonUtils.getInstance().readValue(String.valueOf(obj), GreenBeltChartVO.class); GreenBeltChartVO greenBeltChartVO = JacksonUtils.getInstance().readValue((String)obj, GreenBeltChartVO.class);
return jsonViewObject.success(greenBeltChartVO); return jsonViewObject.success(greenBeltChartVO);
} }
} }
package net.wanji.opt.task;
public class inducesMonitorTask {
}
package net.wanji.opt.vo; package net.wanji.opt.vo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import net.wanji.common.utils.tool.JacksonUtils;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -15,13 +19,26 @@ import java.util.Map; ...@@ -15,13 +19,26 @@ import java.util.Map;
@Data @Data
@ApiModel(value = "GreenBeltChartVO", description = "绿波时序图返回实体") @ApiModel(value = "GreenBeltChartVO", description = "绿波时序图返回实体")
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
@AllArgsConstructor
@NoArgsConstructor
public class GreenBeltChartVO { public class GreenBeltChartVO {
private static final long serialVersionUID = 1L;
@ApiModelProperty("绿波路口红灯范围") @ApiModelProperty("绿波路口红灯范围")
Map<String, List<Double[]>> crossRedTimesMap; @JsonProperty("crossRedTimesMap")
Map<String, List<List<Double>>> crossRedTimesMap;
@ApiModelProperty("反向绿波路口红灯范围")
@JsonProperty("backCrossRedTimesMap")
Map<String, List<List<Double>>> backCrossRedTimesMap;
@ApiModelProperty("绿波路口绿波开始时间") @ApiModelProperty("绿波路口绿波开始时间")
@JsonProperty("greenStartMap")
Map<String, Double> greenStartMap; Map<String, Double> greenStartMap;
@ApiModelProperty("反向绿波路口绿波开始时间")
Map<String, Double> BackGreenStartMap;
@JsonProperty("distanceMap")
@ApiModelProperty("绿波路口距离下一个路口距离") @ApiModelProperty("绿波路口距离下一个路口距离")
Map<String, Double> distanceMap; Map<String, Double> distanceMap;
@ApiModelProperty("绿波带宽") @ApiModelProperty("绿波带宽")
private Double greenWidthTime; private Double greenWidthTime;
@ApiModelProperty("反向绿波带宽")
private Double BackGreenWidthTime;
} }
...@@ -2,7 +2,7 @@ spring: ...@@ -2,7 +2,7 @@ spring:
cloud: cloud:
nacos: nacos:
config: config:
server-addr: 173.17.0.1:8848 server-addr: 37.12.182.29:8848
file-extension: yaml file-extension: yaml
group: signal group: signal
namespace: signal namespace: signal
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment