diff --git a/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/Fence.java b/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/Fence.java index de7c625..4c95ee9 100644 --- a/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/Fence.java +++ b/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/Fence.java @@ -83,6 +83,7 @@ public class Fence extends BaseEntity{ */ private Integer alarmStatus; + private Integer fenceCondition; /** @@ -93,24 +94,6 @@ public class Fence extends BaseEntity{ @TableField(exist = false) private String logoName; - public static Fence updateFenceStatus(FenceUpdateRequest fenceUpdateRequest) { - - return Fence.builder() - .fenceName(fenceUpdateRequest.getFenceName()) - .fenceDescription(fenceUpdateRequest.getFenceDescription()) - .fenceState(fenceUpdateRequest.getFenceState()) - .fenceLongitudeLatitude(fenceUpdateRequest.getFenceLongitudeLatitude()) - .createName(fenceUpdateRequest.getCrateName()) - .createTime(fenceUpdateRequest.getCreateTime()) - .isDelete(fenceUpdateRequest.getIsDelete()) - .maintainerName(fenceUpdateRequest.getMaintainerName()) - .alarmStatus(fenceUpdateRequest.getAlarmStatus()) - .updateTime(fenceUpdateRequest.getUpdateTime()) - .fenceId(fenceUpdateRequest.getFenceId()) - .build(); - - } - // public static Fence fenceInsert(FenceRequest fenceRequest) { // diff --git a/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/request/FenceRequest.java b/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/request/FenceRequest.java index 63bc49c..95e4960 100644 --- a/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/request/FenceRequest.java +++ b/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/request/FenceRequest.java @@ -65,6 +65,7 @@ public class FenceRequest { * 报警状态 */ private Integer alarmStatus; + private Integer fenceCondition; /** * 标识 */ diff --git a/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/request/FenceUpdateRequest.java b/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/request/FenceUpdateRequest.java index 0f596cb..c725a56 100644 --- a/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/request/FenceUpdateRequest.java +++ b/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/request/FenceUpdateRequest.java @@ -68,6 +68,7 @@ public class FenceUpdateRequest { * 报警状态 */ private Integer alarmStatus; + private Integer fenceCondition; public Integer getIsDelete() { return isDelete; diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/FenceConsumer.java b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/FenceConsumer.java index b9882f7..2b47edc 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/FenceConsumer.java +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/FenceConsumer.java @@ -52,7 +52,9 @@ public class FenceConsumer { hashSet.add(fenceUpdateRequest); hashMap.put(fenceUpdateRequest.getFenceId()+"",fenceUpdateRequest); // redisTemplate.opsForH("fence", JSON.toJSONString(hashMap),10,TimeUnit.MINUTES); - redisTemplate.opsForHash().put("fence", fenceUpdateRequest.getFenceId()+"", JSON.toJSONString(hashMap)); +// redisTemplate.opsForHash().put("fence", fenceUpdateRequest.getFenceId()+"", JSON.toJSONString(hashMap)); + redisTemplate.opsForList().rightPush("fence",JSON.toJSONString(hashMap)); + redisTemplate.expire("fence", 10, TimeUnit.MINUTES); //判断车辆是否有实时数据,如果没有则删除数据 channel.basicAck(deliveryTag, false); } else { diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/MsgConsumer.java b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/MsgConsumer.java index 8d66933..feaf03f 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/MsgConsumer.java +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/MsgConsumer.java @@ -47,7 +47,6 @@ public class MsgConsumer { redisTemplate.expire("消息不重复:" + messageId, 5, TimeUnit.MINUTES); try { if (0 < add) { - JSONObject jsonObject = JSONObject.parseObject(String.valueOf(realTimeDataRequest)); Long userId = jsonObject.getLong("userId"); String vin = jsonObject.getString("vin"); diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/ElectronicFence/ElectronicFenceJuge.java b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/ElectronicFence/ElectronicFenceJuge.java new file mode 100644 index 0000000..61de07a --- /dev/null +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/ElectronicFence/ElectronicFenceJuge.java @@ -0,0 +1,40 @@ +package com.couplet.analyze.msg.service.impl.ElectronicFence; + +import com.alibaba.fastjson.JSON; +import com.couplet.common.domain.Fence; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: LiJiaYao + * @Date: 2024/4/6 + * @Description: + */ +@Component +@Log4j2 +public class ElectronicFenceJuge { + + @Autowired + public static StringRedisTemplate redisTemplate; + public static boolean isJudge() { + String fenceKey="fence"; + if (redisTemplate.hasKey(fenceKey)) { + + ArrayList fences = new ArrayList<>(); + List fence = redisTemplate.opsForList().range(fenceKey, 0, -1); + for (String s : fence) { + Fence parseObject = JSON.parseObject(s, Fence.class); + fences.add(parseObject); + } + log.info("更改的电子围栏内容是:"+fence); + } + return true; + } + + +} diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/ElectronicFenceServiceImpl.java b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/ElectronicFenceServiceImpl.java index aaaabc6..b8e12f2 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/ElectronicFenceServiceImpl.java +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/ElectronicFenceServiceImpl.java @@ -1,12 +1,18 @@ package com.couplet.analyze.msg.service.impl; +import com.alibaba.fastjson.JSON; import com.couplet.analyze.msg.domain.CoupletMsgData; import com.couplet.analyze.msg.service.IncidentService; +import com.couplet.common.domain.Fence; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + /** * @Author: LiJiaYao * @Date: 2024/4/2 @@ -28,12 +34,51 @@ public class ElectronicFenceServiceImpl implements IncidentService { public void incident(CoupletMsgData coupletMsgData) { log.info("电子围栏事件开始......."); + String fenceKey="fence"; - if (redisTemplate.hasKey("fence")) { + ArrayList fences = new ArrayList<>(); + if (redisTemplate.hasKey(fenceKey)) { log.info("电子围栏事件redis存在......."); - String s = redisTemplate.opsForValue().get("fence"); + List fence = redisTemplate.opsForList().range(fenceKey, 0, -1); + for (String s : fence) { + Fence parseObject = JSON.parseObject(s, Fence.class); + fences.add(parseObject); + } +// jingdu; +// longitude; +// weidu; +// latitude; + for (Fence data : fences) { - log.info("更改的电子围栏内容是:"+s); + String fenceLongitudeLatitude = data.getFenceLongitudeLatitude(); + /** + * 先通过;号切割 + */ + String[] split = fenceLongitudeLatitude.split(";"); + for (String s : split) { + + String[] strings = s.split(","); + if (strings.length == 2){ + Double trim = Double.valueOf(strings[0].trim()); + Double trim1 = Double.valueOf(strings[1].trim()); + boolean a = trim<= Double.valueOf(coupletMsgData.getLongitude()); + boolean b = trim1 < Double.valueOf(coupletMsgData.getLatitude()); + if (a && b){ + log.info("电子围栏报警啦!!!!您的车驶出范围啦!!!"); + }else { + log.info("电子围栏报警啦!!!!正常啦!!!"); + } + log.info("经度是:"+trim); + log.info("纬度是:"+trim1); + }else { + throw new RuntimeException("电子围栏经纬度格式错误"+strings); + } + + + } + + } + log.info("更改的电子围栏内容是:"+fence); log.info("电子围栏事件结束......."); } diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/RealTimeDataServiceImpl.java b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/RealTimeDataServiceImpl.java index 6e1e511..2d1f10d 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/RealTimeDataServiceImpl.java +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/RealTimeDataServiceImpl.java @@ -38,7 +38,7 @@ public class RealTimeDataServiceImpl implements IncidentService { log.info("实时数据事件开始....."); if (RealTimeJudge.isJudge(coupletMsgData.getVin())){ - log.info("[{}]开始传输实时数据", coupletMsgData.getVin()); + log.info("有实时数据,值为:[{}]开始传输实时数据", coupletMsgData.getVin()); } log.info("[{}]开始传输实时数据", coupletMsgData.getVin()); diff --git a/couplet-modules/couplet-business/src/main/java/com/couplet/business/server/controller/OnLineVehicleController.java b/couplet-modules/couplet-business/src/main/java/com/couplet/business/server/controller/OnLineVehicleController.java index 9789155..636d04f 100644 --- a/couplet-modules/couplet-business/src/main/java/com/couplet/business/server/controller/OnLineVehicleController.java +++ b/couplet-modules/couplet-business/src/main/java/com/couplet/business/server/controller/OnLineVehicleController.java @@ -30,8 +30,4 @@ public class OnLineVehicleController { return success; } - - - - } diff --git a/couplet-modules/couplet-business/src/main/java/com/couplet/business/server/controller/VehicleController.java b/couplet-modules/couplet-business/src/main/java/com/couplet/business/server/controller/VehicleController.java index 20c8663..299cdc2 100644 --- a/couplet-modules/couplet-business/src/main/java/com/couplet/business/server/controller/VehicleController.java +++ b/couplet-modules/couplet-business/src/main/java/com/couplet/business/server/controller/VehicleController.java @@ -184,11 +184,10 @@ public class VehicleController extends BaseController { @GetMapping("onOrOutLineByVIN") public Integer onOrOutLineByVIN(@RequestParam("params") String params) { String[] split = params.split(","); - - return vehicleService.onOrOutLineByVIN(split[0], Integer.parseInt(split[1])); } + } diff --git a/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/config/RabbitMQConfig.java b/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/config/RabbitMQConfig.java index 74fbaa3..f203824 100644 --- a/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/config/RabbitMQConfig.java +++ b/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/config/RabbitMQConfig.java @@ -28,23 +28,26 @@ public class RabbitMQConfig implements RabbitTemplate.ConfirmCallback, RabbitTem public String queueName; //队列名 public static final String finByVinQueueName="finByVinQueueName"; + public static final String FENCE_QUEUE ="fenceQueue"; //交换机 public static final String VinExchangeName="vinExchangeName"; + public static final String FENCE_EXCHANGE="fenceExchange"; + //路由键 public static final String VinRoutingKey="vinRoutingKey"; + public static final String FENCE_ROUTINGKEY="fenceRoutingKey"; //队列名 - public static final String FENCE_QUEUE ="fenceQueue"; + //交换机 @Value("exchangeName") public String exchangeName; - public static final String FENCE_EXCHANGE="fenceExchange"; //路由键 @Value("routingKey") public String routingKey; //路由键 - public static final String FENCE_ROUTINGKEY="fenceRoutingKey"; + private RabbitTemplate rabbitTemplate; diff --git a/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/controller/MqController.java b/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/controller/MqController.java index 06eb117..d7be058 100644 --- a/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/controller/MqController.java +++ b/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/controller/MqController.java @@ -75,7 +75,8 @@ public class MqController { realTimeDataRequest.setVin(vin); Long userId = SecurityUtils.getUserId(); realTimeDataRequest.setUserId(userId); - rabbitTemplate.convertAndSend(RabbitMQConfig.VinExchangeName, RabbitMQConfig.VinRoutingKey, realTimeDataRequest, message -> { + rabbitTemplate.convertAndSend(RabbitMQConfig.VinExchangeName, RabbitMQConfig.VinRoutingKey, realTimeDataRequest, + message -> { message.getMessageProperties().setMessageId(IdUtils.randomUUID()); return message; }, new CorrelationData(IdUtils.randomUUID()) diff --git a/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/remote/RemoteFenceService.java b/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/remote/RemoteFenceService.java index 1225961..38f0c95 100644 --- a/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/remote/RemoteFenceService.java +++ b/couplet-modules/couplet-modules-mq/src/main/java/com/couplet/mq/remote/RemoteFenceService.java @@ -14,6 +14,6 @@ import org.springframework.web.bind.annotation.RequestBody; public interface RemoteFenceService { @PostMapping("/mq/fenceQueue") - public void fenceQueue(@RequestBody FenceUpdateRequest fenceUpdateRequest); + public void fenceQueue(@RequestBody FenceUpdateRequest teRequest); }