diff --git a/src/main/java/com/mobai/domain/StayTime.java b/src/main/java/com/mobai/domain/StayTime.java index c07b46c..07c28b1 100644 --- a/src/main/java/com/mobai/domain/StayTime.java +++ b/src/main/java/com/mobai/domain/StayTime.java @@ -27,6 +27,7 @@ public class StayTime { private String ip; private Long upTime; private Long downTime; + private String stayLongTime; private String remark; private String createBy; private Date createTime; diff --git a/src/main/java/com/mobai/mq/rabbitmq/rabbitMq/MessageHandler.java b/src/main/java/com/mobai/mq/rabbitmq/rabbitMq/MessageHandler.java index 17ea15c..0a83f27 100644 --- a/src/main/java/com/mobai/mq/rabbitmq/rabbitMq/MessageHandler.java +++ b/src/main/java/com/mobai/mq/rabbitmq/rabbitMq/MessageHandler.java @@ -130,29 +130,34 @@ public class MessageHandler { } // 方法内有判断,有则自减,无则创建 redisService.decrement("onlineCar-" + ip, 1); + // 判断是否有该记录 StayTime vinStayTime = stayTimeService.getOne(new LambdaQueryWrapper<>() {{ eq(StayTime::getVin, vin); - eq(StayTime::getDownTime, null); + eq(StayTime::getDownTime, 0); }}); + String format = new SimpleDateFormat("HH时mm分ss秒").format(new Date(vinStayTime.getUpTime() - timestamp)); + vinStayTime.setStayLongTime(format); vinStayTime.setDownTime(timestamp); + // 修改下线时间 boolean update = stayTimeService.update(vinStayTime, new LambdaUpdateWrapper<>() {{ eq(StayTime::getVin, vin); - eq(StayTime::getDownTime, null); + eq(StayTime::getDownTime, 0); }}); - // 输出在线时长 - log.info("车辆在线时长为:{}", new SimpleDateFormat("HH时mm分ss秒").format(new Date(vinStayTime.getUpTime() - timestamp))); - log.info(update ? vin + "上线记录成功" : vin + "上线记录失败"); + log.info("车辆在线时长为:{}", format); + log.info(update ? vin + "下线记录成功" : vin + "下线记录失败"); channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch (ServletException | IOException e) { log.error("下线失败"); + + throw new RuntimeException(e); + } finally { try { channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); } catch (IOException ex) { throw new RuntimeException(ex); } - throw new RuntimeException(e); } } diff --git a/src/main/java/com/mobai/util/RedisService.java b/src/main/java/com/mobai/util/RedisService.java index 16ef5bf..9a88d71 100644 --- a/src/main/java/com/mobai/util/RedisService.java +++ b/src/main/java/com/mobai/util/RedisService.java @@ -4,10 +4,7 @@ import com.alibaba.fastjson2.JSON; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; -import org.springframework.data.redis.core.BoundSetOperations; -import org.springframework.data.redis.core.HashOperations; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.ValueOperations; +import org.springframework.data.redis.core.*; import org.springframework.stereotype.Component; import java.util.*; @@ -25,6 +22,8 @@ public class RedisService { @Autowired public RedisTemplate redisTemplate; + @Autowired + private StringRedisTemplate stringRedisTemplate; /** * 缓存基本的对象,Integer、String、实体类等 * @@ -261,37 +260,41 @@ public class RedisService { } public void increment(String s) { - if (Boolean.TRUE.equals(redisTemplate.hasKey(s))){ - redisTemplate.opsForValue().increment(s,1); + if (Boolean.TRUE.equals(stringRedisTemplate.hasKey(s))){ + stringRedisTemplate.opsForValue().increment(s,1); }else { - redisTemplate.opsForValue().set(s,1); + stringRedisTemplate.opsForValue().set(s,1+""); } } public void increment(String s,int i) { - if (Boolean.TRUE.equals(redisTemplate.hasKey(s))){ - redisTemplate.opsForValue().increment(s,i); + if (Boolean.TRUE.equals(stringRedisTemplate.hasKey(s))){ + String o = stringRedisTemplate.opsForValue().get(s); + System.out.println(o); + stringRedisTemplate.opsForValue().increment(s,i); }else { - redisTemplate.opsForValue().set(s,i); + stringRedisTemplate.opsForValue().set(s,i+""); } } public void decrement(String s) { - if (Boolean.TRUE.equals(redisTemplate.hasKey(s))){ - redisTemplate.opsForValue().decrement(s,1); + if (Boolean.TRUE.equals(stringRedisTemplate.hasKey(s))){ + stringRedisTemplate.opsForValue().decrement(s,1); }else { - redisTemplate.opsForValue().set(s,0); + stringRedisTemplate.opsForValue().set(s,0+""); } } public void decrement(String s,int i) { - if (Boolean.TRUE.equals(redisTemplate.hasKey(s))){ - redisTemplate.opsForValue().decrement(s,i); + if (Boolean.TRUE.equals(stringRedisTemplate.hasKey(s))){ + stringRedisTemplate.opsForValue().decrement(s,i); + String o = (String) stringRedisTemplate.opsForValue().get(s); + System.out.println(o); }else { - redisTemplate.opsForValue().set(s,0); + stringRedisTemplate.opsForValue().set(s,0+""); } } public String getValue(String vin) { - return (String) redisTemplate.opsForValue().get(vin); + return stringRedisTemplate.opsForValue().get(vin); } }