Compare commits

...

69 Commits

Author SHA1 Message Date
李东佳 c8c16b9c80 feat(): 更新注入方法 2024-10-09 12:13:20 +08:00
李东佳 820039d3fe feat(): 优化协议解析方法 2024-10-09 09:13:37 +08:00
晨哀 813fcf1b55 feat:() 解决合并冲突 2024-10-08 12:12:57 +08:00
晨哀 61f1ea45b2 Merge remote-tracking branch 'origin/dev.processing.optimize' into dev
# Conflicts:
#	cloud-modules/cloud-modules-processing/src/main/java/com/muyu/processing/consumer/OnLineMonitoringConsumer.java
2024-10-08 12:05:36 +08:00
sy200 83961147fc feat:()修改策略信息存储方法 2024-10-08 12:02:58 +08:00
晨哀 ad0460a90b feat:() 测试数据库添加事件 2024-10-08 12:01:03 +08:00
sy200 171df03d7c Merge branch 'dev.redis' into dev 2024-10-08 11:56:05 +08:00
sy200 a1ed677f0f feat:()修改策略信息存储方法 2024-10-08 11:50:31 +08:00
晨哀 72ac72330e feat:() 更改kafka模式 2024-10-08 11:27:39 +08:00
李东佳 3c2667ec37 feat(): 修改bootstrap配置文件命名空间 2024-10-08 10:53:50 +08:00
李东佳 90e94c2736 Merge branch 'dev.fault' into dev
# Conflicts:
#	cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/bootstrap.yml
2024-10-08 10:50:55 +08:00
李东佳 914b638efd feat(): 添加故障方法 2024-10-08 10:47:40 +08:00
ywt 27479e2b49 feat(): 重构创建实例代码以及删除 2024-10-08 10:43:19 +08:00
晨哀 1e9c92e4d3 feat:() 优化上下线监听队列名称 和新增发送事件方法 2024-10-08 10:16:25 +08:00
sy200 2e5cb19f4f feat:()修改策略信息存储方法 2024-10-08 09:53:06 +08:00
sy200 51ca5ef6f4 feat:()修改策略信息存储方法 2024-10-08 08:49:30 +08:00
晨哀 e2e943749e feat:() 优化下线监听 2024-10-07 21:41:41 +08:00
晨哀 013fe5809d feat:() 优化kafka消费者和上线监听 添加注解 2024-10-07 20:46:24 +08:00
晨哀 7f45b28116 feat:() 优化kafka消费者和上线监听 2024-10-07 20:37:45 +08:00
晨哀 d3f2444521 feat:() 优化kafka消费者 2024-10-07 20:00:24 +08:00
晨哀 2695602972 Merge remote-tracking branch 'origin/dev' into dev 2024-10-07 18:37:40 +08:00
sy200 eb5960822e feat:()修改车辆列表方法 2024-10-07 18:33:41 +08:00
ywt 620decf638 Merge branch 'dev.gateway.aliyuninitecs' into dev 2024-10-07 16:12:06 +08:00
ywt bfa5391ae1 feat(): 三次修改rabbitmq配置 2024-10-07 16:11:37 +08:00
ywt 3629d522bb Merge remote-tracking branch 'origin/dev' into dev 2024-10-07 14:33:58 +08:00
sy200 d2462e6456 feat:()修改存列表方法 2024-10-07 14:31:56 +08:00
sy200 d2b29e6323 feat:()修改报错 2024-10-07 12:11:58 +08:00
sy200 afdcc48a42 Merge branch 'dev.server' into dev
# Conflicts:
#	cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java
#	cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java
2024-10-07 12:07:02 +08:00
sy200 74739614e5 feat:()修改存报文模版的方法 2024-10-07 12:01:41 +08:00
李东佳 dc4f5bbdcb fix():解决报错 2024-10-07 11:45:44 +08:00
sy200 9e1f941be5 feat:()查看车辆绑定围栏组的信息 2024-10-07 11:15:26 +08:00
ywt 689a630024 Merge branch 'dev.gateway.aliyuninitecs' into dev 2024-10-07 10:49:19 +08:00
ywt 8ac2d539f4 feat(): 二次修改rabbitmq配置 2024-10-07 10:48:59 +08:00
ywt 75f8da414d Merge branch 'dev.gateway.aliyuninitecs' into dev 2024-10-07 10:30:26 +08:00
ywt 6903066127 Merge remote-tracking branch 'origin/dev' into dev 2024-10-07 10:30:17 +08:00
ywt c5de9a5bed feat(): 修改rabbitmq配置 2024-10-07 10:29:50 +08:00
晨哀 edb3e74824 Merge remote-tracking branch 'origin/dev.processing' into dev 2024-10-07 10:16:28 +08:00
晨哀 2430d10401 feat:() 新增缓存和修改上线下线监听 2024-10-07 10:10:26 +08:00
sy200 929275fd5a Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/AllMessageValueCacheService.java
#	cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java
2024-10-07 09:28:55 +08:00
sy200 802cd54947 Merge branch 'dev.server' into dev 2024-10-07 09:14:35 +08:00
sy200 a00e5345b4 feat:()修改代码方法 2024-10-06 21:20:41 +08:00
ywt 3c1b78218e Merge branch 'dev.gateway.aliyuninitecs' into dev 2024-10-06 15:53:29 +08:00
ywt 849d5328ac feat(): 获取http连接的参数 2024-10-06 15:52:32 +08:00
ywt 152296d63a Merge remote-tracking branch 'origin/dev' into dev 2024-10-06 15:18:06 +08:00
ywt 30560b90cf feat(): 创建实力数量、车辆服务器、返回创建码、车辆鉴权的参数、车辆VIN实体类 2024-10-06 15:17:28 +08:00
sy200 0be090d11b feat:()优化代码 2024-10-06 14:42:13 +08:00
李东佳 b29363a31a feat():更改nacos命名空间 2024-10-06 14:28:52 +08:00
李东佳 3b35565404 feat():删除远程调用方法 2024-10-06 14:17:59 +08:00
李东佳 846a03f75c fix(): 修改报文数据解析获取报文数据模版方法 2024-10-06 09:55:24 +08:00
李东佳 542a656dc6 fix(): 修改报文数据解析获取报文数据模版方法 2024-10-04 22:09:59 +08:00
sy200 832da812c3 feat:()添加列表Redis方法 2024-10-04 20:49:56 +08:00
李东佳 a834f9d1bd fix(): 修改报文数据的缓存方法 2024-10-04 20:46:16 +08:00
李东佳 960d68f72e fix(): 修改报文数据的缓存方法 2024-10-04 20:38:00 +08:00
李东佳 2c5387f048 feat(): 添加车辆类型缓存方法 2024-10-04 20:05:55 +08:00
sy200 f57deada17 Merge branch 'dev.server' into dev 2024-10-04 16:49:03 +08:00
晨哀 eade0c66ea feat:() 新增下线监听和修改上线监听 2024-10-04 16:48:40 +08:00
sy200 ef0311d362 feat:()添加列表Redis方法 2024-10-04 16:43:47 +08:00
晨哀 0a2fc7a9ce feat:() 添加数据库事件 2024-10-04 10:25:26 +08:00
晨哀 98560aacdc feat:() 新增事件监听器 2024-10-04 10:24:43 +08:00
晨哀 4e1790a47c feat:() 新增事件类型,事件监听接口,策略发送事件 2024-10-04 10:24:15 +08:00
晨哀 d02813f7e4 feat:() 新增MQ生产者 和 修改kafka生产者的信息 2024-10-04 10:18:16 +08:00
晨哀 0e391451b0 feat:() 新增iotdb配置文件,iotdb测试 2024-10-04 10:08:23 +08:00
晨哀 f56787b5a8 feat:() 来类加注解 2024-10-04 10:01:38 +08:00
晨哀 7033d0e9dd feat:() 新增MQ配置文件 和 MQ消费者 2024-10-04 10:01:08 +08:00
晨哀 84b54e9116 feat:() 新增MQ和Caffeine缓存库依赖 和 修改配置文件 2024-10-04 09:46:03 +08:00
ywt 5bb0737c82 10.4新建分支 2024-10-04 09:33:54 +08:00
sy200 d1440fb706 feat:()优化代码 2024-10-04 09:13:30 +08:00
sy200 3ed255fe1e feat:()添加报文模版缓存 2024-10-02 14:33:01 +08:00
sy200 1d91e51199 feat:()添加报文模版缓存 2024-10-02 09:40:38 +08:00
144 changed files with 4497 additions and 756 deletions

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.49.53:8848
user-name: nacos
password: nacos
namespace: seven
namespace: vehicle
# Spring
spring:
application:

View File

@ -11,6 +11,9 @@
<artifactId>cloud-common-rabbit</artifactId>
<description>
cloud-common-rabbit 模块提供RabbitMq消息队列的相关配置
</description>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>

View File

@ -6,6 +6,7 @@ import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.TimeUnit;
@ -17,6 +18,7 @@ import java.util.concurrent.TimeUnit;
**/
@SuppressWarnings(value = {"unchecked", "rawtypes"})
@Component
//@Service
public class RedisService {
@Autowired
public RedisTemplate redisTemplate;

View File

@ -63,4 +63,5 @@ public class LoginUser implements Serializable {
*/
private SysUser sysUser;
}

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.49.53:8848
user-name: nacos
password: nacos
namespace: seven
namespace: vehicle
# Spring
spring:

View File

@ -0,0 +1,23 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
/**
*
*/
public class AllFaultCacheService extends CacheAbsBacis {
@Override
public void clear() {
}
@Override
public String keyPre() {
return "AllFault:info:";
}
@Override
public String decode(String key) {
return key.replace("AllFault:info:", "");
}
}

View File

@ -0,0 +1,27 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.Fence;
import com.muyu.domain.req.FenceReq;
import com.muyu.domain.resp.FenceResp;
/**
*
*/
public class AllFenceCahceService extends CacheAbsBacis<String, FenceResp> {
@Override
public void clear() {
}
@Override
public String keyPre() {
return "AllFence:info:";
}
@Override
public String decode(String key) {
return key.replace("AllFence:info:", "");
}
}

View File

@ -0,0 +1,31 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.MessageTemplate;
import com.muyu.domain.MessageValue;
import com.muyu.domain.req.MessageValueReq;
import com.muyu.domain.resp.MessageValueListResp;
import java.util.List;
/**
*
*/
public class AllMessageValueCacheService extends CacheAbsBacis<String, List<MessageValueListResp>> {
@Override
public void clear() {
}
@Override
public String keyPre() {
return "AllMessagevalue:info:";
}
@Override
public String decode(String key) {
return key.replace("AllMessagevalue:info:", "");
}
}

View File

@ -0,0 +1,36 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.Vehicle;
import com.muyu.domain.req.VehicleAddReq;
import com.muyu.domain.req.VehicleManageReq;
import com.muyu.domain.resp.VehicleManageResp;
import java.util.List;
/**
*
*/
public class AllVehicleCacheService extends CacheAbsBacis<String, VehicleManageResp> {
@Override
public void clear() {
}
/**
* key
* @return
*/
@Override
public String keyPre() {
return "AllVehicle:info:";
}
@Override
public String decode(String key) {
return key.replace("AllVehicle:info:", "");
}
}

View File

@ -0,0 +1,24 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.VehicleType;
/**
*
*/
public class AllVehicleTypeCacheService extends CacheAbsBacis<String, VehicleType> {
@Override
public void clear() {
}
@Override
public String keyPre() {
return "AllVehicleType:info:";
}
@Override
public String decode(String key) {
return key.replace("AllVehicleType:info:", "");
}
}

View File

@ -0,0 +1,24 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.WarnRule;
/**
*
*/
public class AllWarnRuleCacheService extends CacheAbsBacis<String, WarnRule> {
@Override
public void clear() {
}
@Override
public String keyPre() {
return "AllWarnRule:info:";
}
@Override
public String decode(String key) {
return key.replace("AllWarnRule:info:", "");
}
}

View File

@ -0,0 +1,27 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.resp.WarnStrategyAndVinResp;
import com.muyu.domain.resp.WarnVehicleResp;
import java.util.List;
/**
*
*/
public class AllWarnStrategyAndVinCacheService extends CacheAbsBacis<String, WarnStrategyAndVinResp> {
@Override
public void clear() {
}
@Override
public String keyPre() {
return "AllWarnStrategy:info:";
}
@Override
public String decode(String key) {
return key.replace("AllWarnStrategy:info:", "");
}
}

View File

@ -0,0 +1,28 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.WarnStrategy;
import com.muyu.domain.resp.WarnStrategyAndVinResp;
import com.muyu.domain.resp.WarnVehicleResp;
import java.util.List;
/**
*
*/
public class AllWarnStrategyCacheService extends CacheAbsBacis<String, WarnVehicleResp> {
@Override
public void clear() {
}
@Override
public String keyPre() {
return "AllWarnStrategy:info:";
}
@Override
public String decode(String key) {
return key.replace("AllWarnStrategy:info:", "");
}
}

View File

@ -2,6 +2,9 @@ package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.Fence;
import com.muyu.domain.resp.FenceResp;
import java.util.List;
/**
*
@ -21,4 +24,5 @@ public class FenceCahceService extends CacheAbsBacis<String, Fence> {
public String decode(String key) {
return key.replace("fence:info:", "");
}
}

View File

@ -0,0 +1,26 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.MessageTemplate;
/**
*
*/
public class MessageTemplateCacheService extends CacheAbsBacis<String, MessageTemplate> {
@Override
public void clear() {
}
@Override
public String keyPre() {
return "messageTemplate:info:";
}
@Override
public String decode(String key) {
return key.replace("messageTemplate:info:", "");
}
}

View File

@ -0,0 +1,26 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.MessageValue;
/**
*
*/
public class MessageValueCacheService extends CacheAbsBacis<String, MessageValue> {
@Override
public void clear() {
}
@Override
public String keyPre() {
return "messagevalue:info:";
}
@Override
public String decode(String key) {
return key.replace("messagevalue:info:", "");
}
}

View File

@ -4,7 +4,7 @@ import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.Vehicle;
/**
*
*
*/
public class VehicleCacheService extends CacheAbsBacis<String, Vehicle> {

View File

@ -0,0 +1,24 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.VehicleType;
/**
*
*/
public class VehicleTypeCacheService extends CacheAbsBacis<String, VehicleType> {
@Override
public void clear() {
}
@Override
public String keyPre() {
return "vehicleType:info:";
}
@Override
public String decode(String key) {
return key.replace("vehicleType:info:", "");
}
}

View File

@ -14,11 +14,11 @@ public class WarnRuleCacheService extends CacheAbsBacis<String, WarnRule> {
@Override
public String keyPre() {
return "warn:info:";
return "warnRule:info:";
}
@Override
public String decode(String key) {
return key.replace("warn:info:", "");
return key.replace("warnRule:info:", "");
}
}

View File

@ -3,11 +3,12 @@ package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.WarnRule;
import com.muyu.domain.WarnStrategy;
import com.muyu.domain.resp.WarnRuleResp;
/**
*
*
*/
public class WarnStrategyCacheService extends CacheAbsBacis<String, WarnStrategy> {
public class WarnStrategyCacheService extends CacheAbsBacis<String, WarnRuleResp> {
@Override
public void clear() {
@ -15,11 +16,11 @@ public class WarnStrategyCacheService extends CacheAbsBacis<String, WarnStrategy
@Override
public String keyPre() {
return "warn:info:";
return "warnStrategy:info:";
}
@Override
public String decode(String key) {
return key.replace("warn:info:", "");
return key.replace("warnStrategy:info:", "");
}
}

View File

@ -1,5 +1,18 @@
com.muyu.enterprise.cache.VehicleCacheService
com.muyu.enterprise.cache.AllFaultCacheService
com.muyu.enterprise.cache.AllFenceCahceService
com.muyu.enterprise.cache.AllMessageValueCacheService
com.muyu.enterprise.cache.AllVehicleCacheService
com.muyu.enterprise.cache.AllVehicleTypeCacheService
com.muyu.enterprise.cache.AllWarnRuleCacheService
com.muyu.enterprise.cache.AllWarnStrategyAndVinCacheService
com.muyu.enterprise.cache.AllWarnStrategyCacheService
com.muyu.enterprise.cache.FaultCacheService
com.muyu.enterprise.cache.FenceCahceService
com.muyu.enterprise.cache.MessageTemplateCacheService
com.muyu.enterprise.cache.MessageValueCacheService
com.muyu.enterprise.cache.VehicleCacheService
com.muyu.enterprise.cache.VehicleTypeCacheService
com.muyu.enterprise.cache.WarnRuleCacheService
com.muyu.enterprise.cache.WarnStrategyCacheService

View File

@ -0,0 +1,30 @@
package com.muyu.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.domain
* @FilenameCustom
* @Description TODO
* @Date2024/9/21 19:15
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "custom")
public class Custom {
@TableId(value = "c_id", type = IdType.AUTO)
private Integer cId;
@Excel(name = "值")
private String customName;
}

View File

@ -0,0 +1,92 @@
package com.muyu.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.annotation.Excel.ColumnType;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.domain
* @FilenameFault
* @Description TODO
* @Date2024/9/18 11:04
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "fault")
public class Fault extends BaseEntity {
/**
*
*/
@Excel(name = "参数主键", cellType = ColumnType.NUMERIC)
@TableId( type = IdType.AUTO)
private Long id;
/**
*
*/
@Excel(name = "车辆故障编码")
private String faultCode;
/**
*
*/
@Excel(name = "车辆故障名称")
private String faultName;
/**
*
*/
@Excel(name = "辆故障类型")
private String faultType;
/**
* VIN
*/
@Excel(name = "故障VIN编码")
private String carVin;
/**
*
*/
@Excel(name = "车辆故障标签")
private String faultLabel;
/**
*
*/
@Excel(name = "车辆故障位")
private String faultBit;
/**
*
*/
@Excel(name = "车辆故障值")
private String faultValue;
/**
*
*/
@Excel(name = "故障级别")
private String faultWarn;
/**
* Y.N.
*/
@Excel(name = "报警状态Y.是N.否)")
private String warnStatus;
/**
*
*/
@Excel(name = "故障描述信息")
private String faultDesc;
/**
* (1. 2. 3. 4.)
*/
@Excel(name = "启用状态(1.待处理 2.处理中 3.已处理 4.忽略)")
private String state;
}

View File

@ -0,0 +1,21 @@
package com.muyu.domain;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.domain
* @FilenameFaultConstant
* @Description TODO
* @Date2024/9/19 14:33
*/
public class FaultConstant {
/**
*
*/
public static final String FAULT_INFO_PREFIX = "fault:";
/**
*
*/
public static final String FAULT_LIST = "fault_list";
}

View File

@ -0,0 +1,77 @@
package com.muyu.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.domain.vo
* @FilenameFaultInfo
* @Description TODO
* @Date2024/9/16 20:23
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "fault_info", autoResultMap = true)
public class FaultInfo extends BaseEntity {
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
*
*/
@Excel(name = "故障码")
private String faultCode;
/**
*
*/
@Excel(name = "故障类型")
private String faultType;
/**
*
*/
@Excel(name = "故障组")
private String groupName;
/**
*
*/
@Excel(name = "故障位")
private Integer faultBit;
/**
*
*/
@Excel(name = "故障值")
private String faultValue;
/**
*
*/
@Excel(name = "故障标签")
private String faultTab;
/**
*
*/
@Excel(name = "是否警告")
private Long isWarning;
}

View File

@ -0,0 +1,67 @@
package com.muyu.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.domain
* @FilenameFaultLog
* @Description TODO
* @Date2024/9/16 20:11
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "fault_log", autoResultMap = true)
public class FaultLog{
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
*
*/
@Excel(name = "故障码")
private String faultCode;
/**
* VIN
*/
@Excel(name = "车辆VIN")
private String vin;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:dd:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "开始报警时间", width = 30, dateFormat = "yyyy-MM-dd HH:dd:ss")
private Date warningTime;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:dd:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "结束报警时间", width = 30, dateFormat = "yyyy-MM-dd HH:dd:ss")
private Date normalTime;
}

View File

@ -12,12 +12,7 @@ import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Author: LiDongJia
* @Package: com.muyu.car.domain
* @Project: 2112-car-cloud-server
* @name: MessageTemplate
* @Date: 2024/9/18 21:11
* @Description:
*
*/
@Data
@SuperBuilder

View File

@ -0,0 +1,45 @@
package com.muyu.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.domain
* @FilenameCustom
* @Description TODO
* @Date2024/9/21 18:39
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "rule")
public class Rule {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Excel(name = "messageId")
private Long messageId;
@Excel(name = "carId")
private Integer carId;
@Excel(name = "cId")
private Integer cId;
@Excel(name = "tId")
private Integer tId;
@Excel(name = "ruleValue")
private Integer ruleValue;
}

View File

@ -0,0 +1,28 @@
package com.muyu.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.domain
* @FilenameType
* @Description TODO
* @Date2024/9/22 10:03
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "type")
public class Type {
@TableId(value = "t_id", type = IdType.AUTO)
private Integer tId;
private String typeName;
}

View File

@ -119,6 +119,10 @@ public class Vehicle extends BaseEntity {
@Schema(type = "Integer",description = "电子围栏外键")
private Integer fenceGroupId;
/** 策略id */
@Schema(type = "Long",description = "策略id")
private Long warnStrategyId;
public static Vehicle addBuild(VehicleAddReq vehicleAddReq){
return Vehicle.builder()
.licenceNumber(vehicleAddReq.getLicenceNumber())
@ -132,6 +136,7 @@ public class Vehicle extends BaseEntity {
.vehicleStatus(vehicleAddReq.getVehicleStatus())
.companyId(vehicleAddReq.getCompanyId())
.fenceGroupId(vehicleAddReq.getFenceGroupId())
.warnStrategyId(vehicleAddReq.getWarnStrategyId())
.build();
}
@ -149,6 +154,7 @@ public class Vehicle extends BaseEntity {
.vehicleStatus(vehicleUpdReq.getVehicleStatus())
.companyId(vehicleUpdReq.getCompanyId())
.fenceGroupId(vehicleUpdReq.getFenceGroupId())
.warnStrategyId(vehicleUpdReq.getWarnStrategyId())
.build();
}

View File

@ -3,9 +3,6 @@ package com.muyu.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.annotation.Excel.ColumnType;
import com.muyu.common.core.web.domain.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@ -44,7 +41,16 @@ public class VehicleType extends BaseEntity {
*
*/
@Schema(type = "Integer",description = "报文模版外键")
private Integer messageTemplateId;
private Long messageTemplateId;
/**
*
*/
public static VehicleType addBuilder(VehicleType vehicleType) {
return VehicleType.builder().
vehicleTypeId(vehicleType.getVehicleTypeId()).
vehicleTypeName(vehicleType.getVehicleTypeName()).
build();
}
}

View File

@ -43,11 +43,6 @@ public class WarnRule extends BaseEntity{
@Excel(name = "规则名称")
private String ruleName;
/** 策略id */
@Schema(type = "Integer",description = "策略id")
@Excel(name = "策略id")
private Integer strategyId;
/** 报文数据类型id */
@Schema(type = "Integer",description = "报文数据类型id")
@Excel(name = "报文数据类型id")
@ -75,11 +70,18 @@ public class WarnRule extends BaseEntity{
@Excel(name = "最小值")
private Integer minValue;
/**
* id
*/
@Schema(type = "Integer",description = "策略外键id")
@Excel(name = "策略外键id")
private Integer warnStrategyId;
public static WarnRule updateBuilder(WarnRule warnRule, Supplier<Long> supplier) {
return WarnRule.builder()
.warnRuleId(supplier.get())
.ruleName(warnRule.getRuleName())
.strategyId(warnRule.getStrategyId())
.msgTypeId(warnRule.getMsgTypeId())
.slideTime(warnRule.getSlideTime())
.slideFrequency(warnRule.getSlideFrequency())
@ -94,7 +96,6 @@ public class WarnRule extends BaseEntity{
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getWarnRuleId())
.append("ruleName", getRuleName())
.append("strategyId", getStrategyId())
.append("msgTypeId", getMsgTypeId())
.append("slideTime", getSlideTime())
.append("slideFrequency", getSlideFrequency())

View File

@ -51,6 +51,7 @@ public class WarnStrategy extends BaseEntity{
private Long vehicleTypeId;
public static WarnStrategy updateBuilder(WarnStrategy warnStrategy, Supplier<Long> supplier) {
return WarnStrategy.builder()
.warnStrategyId(supplier.get())

View File

@ -0,0 +1,30 @@
package com.muyu.domain.req;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
*
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Tag(name = "绑定围栏组参数")
public class BoundFenceGroupReq {
/**
* Id
*/
private Long vehicleId;
/**
* Ids
*/
private Long[] fenceGroupIds;
}

View File

@ -1,55 +0,0 @@
//package com.muyu.domain.req;
//
//import com.baomidou.mybatisplus.annotation.IdType;
//import com.baomidou.mybatisplus.annotation.TableId;
//import com.muyu.domain.Fence;
//import io.swagger.v3.oas.annotations.media.Schema;
//import io.swagger.v3.oas.annotations.tags.Tag;
//import lombok.AllArgsConstructor;
//import lombok.Builder;
//import lombok.Data;
//import lombok.NoArgsConstructor;
//
//import java.util.List;
//
//@Data
//@Builder
//@AllArgsConstructor
//@NoArgsConstructor
//@Tag(name = "查看绑定的围栏信息")
//public class HaveFence {
//
// /**
// * 主键
// */
// @Schema(type = "Long",description = "主键")
// @TableId(value = "id",type = IdType.AUTO)
// private Long id;
//
// /**
// * 围栏名称
// */
// @Schema(type = "String",description = "围栏名称")
// private String fenceName;
//
// /**
// * 坐标
// */
// @Schema(type = "String",description = "坐标")
// private String coordinates;
//
// /**
// * 描述
// */
// @Schema(type = "String",description = "描述")
// private String description;
//
// /**
// * 电子围栏列表
// */
// @Schema(type = "List<Fence>",description = "电子围栏列表")
// List<Fence> fenceList;
//
//
//
//}

View File

@ -1,5 +1,7 @@
package com.muyu.domain.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.common.core.annotation.Excel;
import io.swagger.v3.oas.annotations.media.Schema;
@ -94,4 +96,9 @@ public class VehicleAddReq {
*/
@Schema(title = "电子围栏外键", type = "Integer", defaultValue = "1", description = "电子围栏外键")
private Integer fenceGroupId;
/** 策略id */
@Schema(type = "Long",description = "策略id")
@TableId( type = IdType.AUTO)
private Long warnStrategyId;
}

View File

@ -1,5 +1,7 @@
package com.muyu.domain.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.common.core.annotation.Excel;
import io.swagger.v3.oas.annotations.media.Schema;
@ -94,4 +96,11 @@ public class VehicleUpdReq {
*/
@Schema(title = "电子围栏外键", type = "Integer", defaultValue = "1", description = "电子围栏外键")
private Integer fenceGroupId;
/** 策略id */
@Schema(type = "Long",description = "策略id")
@TableId( type = IdType.AUTO)
private Long warnStrategyId;
}

View File

@ -23,4 +23,7 @@ public class WarnVehicleReq {
@Excel(name = "策略名称")
private String strategyName;
}

View File

@ -53,6 +53,12 @@ public class MessageValueListResp {
@Schema(type = "Integer",title = "起始下标")
private Integer messageStartIndex;
/**
*
*/
@Schema(type = "Long",description = "报文模版主键")
private Long messageTemplateId;
/**
*
*/

View File

@ -0,0 +1,58 @@
package com.muyu.domain.resp;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.common.core.annotation.Excel;
import com.muyu.domain.WarnRule;
import com.muyu.domain.WarnStrategy;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Tag(name = "规则列表", description = "规则列表")
public class WarnRuleResp {
/** 策略id */
@Schema(type = "Long",description = "策略id")
@TableId( type = IdType.AUTO)
private Long warnStrategyId;
/** 策略名称 */
@Schema(type = "String",description = "策略名称")
@Excel(name = "策略名称")
private String strategyName;
/** 报文模版id */
@Schema(type = "Integer",description = "报文模版id")
@Excel(name = "报文模版id")
private Integer messageTemplateId;
/** 车辆类型id */
@Schema(type = "Long",description = "车辆类型id")
@Excel(name = "车辆类型id")
private Long vehicleTypeId;
/** 规则集合 */
@Schema(type = "List",description = "规则集合")
private List<WarnRule> warnRuleList;
public static WarnRuleResp build(WarnStrategy warnStrategy, List<WarnRule> warnRuleList){
return WarnRuleResp.builder()
.warnStrategyId(warnStrategy.getWarnStrategyId())
.strategyName(warnStrategy.getStrategyName())
.messageTemplateId(warnStrategy.getMessageTemplateId())
.vehicleTypeId(warnStrategy.getVehicleTypeId())
.warnRuleList(warnRuleList)
.build();
}
}

View File

@ -0,0 +1,56 @@
package com.muyu.domain.resp;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.common.core.annotation.Excel;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Tag(name = "WarnStrategyAndVin缓存预警信息获取vin")
public class WarnStrategyAndVinResp {
/**
* VIN
*/
@Schema(type = "String",description = "车辆VIN")
@Excel(name = "车辆VIN")
private String vehicleVin;
/**
* id
*/
@Schema(type = "Long",description = "策略id")
@TableId( type = IdType.AUTO)
private Long warnStrategyId;
/**
*
*/
@Schema(type = "String",description = "策略名称")
@Excel(name = "策略名称")
private String strategyName;
/**
* id
*/
@Schema(type = "Integer",description = "报文模版id")
@Excel(name = "报文模版id")
private Integer messageTemplateId;
/**
* id
*/
@Schema(type = "Long",description = "车辆类型id")
@Excel(name = "车辆类型id")
private Long vehicleTypeId;
}

View File

@ -66,4 +66,13 @@ public class WarnVehicleResp {
@Schema(type = "String",description = "报文模版名称")
private String messageTemplateName;
/**
* id
*/
@Schema(type = "Integer",description = "报文模版id")
@Excel(name = "报文模版id")
private Integer messageTemplateId;
}

View File

@ -0,0 +1,58 @@
package com.muyu.domain.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.domain
* @FilenameCustom
* @Description TODO
* @Date2024/9/21 18:39
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "rule")
public class RuleVo {
@Excel(name = "id")
private Long id;
@Excel(name = "比较类型")
private Integer cId;
@Excel(name = "messageId")
private Long messageId;
@Excel(name = "标签")
private String messageLabel;
@Excel(name = "车辆id")
private Integer carId;
@Excel(name = "车辆故障类型id")
private Integer tId;
@Excel(name = "参数值")
private Integer ruleValue;
@Excel(name = "标准")
private String customName;
@Excel(name = "故障类型name")
private String typeName;
@Excel(name = "车辆类型name")
private String carName;
}

View File

@ -11,6 +11,7 @@
<artifactId>cloud-modules-enterprise-server</artifactId>
<version>3.6.3</version>
<!--企业业务平台-->
<description>
cloud-modules-enterprise-server 企业业务平台

View File

@ -3,6 +3,7 @@ package com.muyu.enterprise.controller;
import com.muyu.common.redis.service.RedisService;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.enterprise.cache.AllFenceCahceService;
import com.muyu.enterprise.cache.FenceCahceService;
import com.muyu.enterprise.cache.VehicleCacheService;
import com.muyu.enterprise.service.ElectService;
@ -28,7 +29,9 @@ import java.security.Security;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
*
*/
@RequestMapping("/elect")
@RestController
@Log4j2
@ -43,6 +46,8 @@ public class ElectController extends BaseController {
@Autowired
private FenceCahceService fenceCahceService;
@Autowired
private AllFenceCahceService allFenceCahceService;
/**
@ -54,7 +59,10 @@ public class ElectController extends BaseController {
public Result<TableDataInfo<FenceResp>> showList(@RequestBody @Validated FenceReq req) {
startPage();
List<FenceResp> list = electService.selectFenceList(req);
fenceCahceService.get(String.valueOf(req));
//将列表存到Redis
for (FenceResp fenceResp : list) {
allFenceCahceService.put(fenceResp.getCoordinates(),fenceResp);
}
return getDataTable(list);
}
@ -140,7 +148,7 @@ public class ElectController extends BaseController {
@DeleteMapping("/delMoreFence")
@Operation(description = "批量删除电子围栏")
public Result delMore(@RequestBody List<Long> fenceIds){
// electService.delMoreFence(fenceIds);
//批量删除内容存到Redis
electService.removeBatchByIds(fenceIds);
return Result.success(null,"操作成功");
}
@ -155,5 +163,4 @@ public class ElectController extends BaseController {
return Result.success(fences);
}
}

View File

@ -0,0 +1,110 @@
package com.muyu.enterprise.controller;
import com.muyu.enterprise.service.FaultService;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.domain.Fault;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.controller
* @FilenameFaultController
* @Description TODO
* @Date2024/9/17 11:08
*/
@Log4j2
@RestController
@Tag(name = "故障管理列", description = "故障管理列")
@RequestMapping("/fault")
public class FaultController extends BaseController {
@Autowired
private FaultService faultService;
/**
*
*/
@GetMapping("/list")
@RequiresPermissions("fault:fault:list")
@Operation(summary = "查询集合", description = "查询车辆故障管理列表")
public Result<TableDataInfo<Fault>> list(Fault fault) {
startPage();
List<Fault> list = faultService.pageQuery(fault);
return getDataTable(list);
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@RequiresPermissions("fault:fault:export")
public void export(HttpServletResponse response, Fault fault) {
List<Fault> list = faultService.pageQuery(fault);
ExcelUtil<Fault> util = new ExcelUtil<Fault>(Fault.class);
util.exportExcel(response, list, "车辆故障管理数据");
}
/**
*
*/
@GetMapping(value = "/{id}")
public Result<String> getConfigKey (@PathVariable("id") String id) {
return success(faultService.getById(id));
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.INSERT)
@PostMapping
@RequiresPermissions("fault:fault:add")
public Result add(@RequestBody Fault fault) {
faultService.save(fault);
return Result.success(null,"成功");
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.UPDATE)
@PutMapping
@RequiresPermissions("fault:fault:edit")
public Result edit(@RequestBody Fault fault) {
faultService.updateById(fault);
return Result.success(null,"成功");
}
/**
*
*/
@Log(title = "车辆故障管理删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
@RequiresPermissions("fault:fault:remove")
public Result remove(@PathVariable("id") Long[] id) {
return Result.success(faultService.removeBatchByIds(Arrays.asList(id)), "成功");
}
}

View File

@ -0,0 +1,114 @@
package com.muyu.enterprise.controller;
import com.muyu.enterprise.service.FaultInfoService;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.domain.FaultInfo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.controller
* @FilenameFaultController
* @Description TODO
* @Date2024/9/17 11:08
*/
@Log4j2
@RestController
@Tag(name = "故障管理列", description = "故障管理列")
@RequestMapping("/info")
public class FaultInfoController extends BaseController {
@Autowired
private FaultInfoService service;
/**
*
*/
@GetMapping("/list")
@RequiresPermissions("fault:fault:list")
@Operation(summary = "查询集合", description = "查询车辆故障管理列表")
public Result<TableDataInfo<FaultInfo>> list(FaultInfo faultInfo) {
startPage();
List<FaultInfo> list = service.pageQuery(faultInfo);
return getDataTable(list);
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@RequiresPermissions("fault:fault:export")
public void export(HttpServletResponse response, FaultInfo fault) {
List<FaultInfo> list = service.pageQuery(fault);
ExcelUtil<FaultInfo> util = new ExcelUtil<FaultInfo>(FaultInfo.class);
util.exportExcel(response, list, "车辆故障管理数据");
}
/**
*
*/
@GetMapping(value = "/{id}")
public Result<String> getConfigKey (@PathVariable("id") String id) {
return success(service.getById(id));
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.INSERT)
@PostMapping
@RequiresPermissions("fault:info:add")
public Result add(@RequestBody FaultInfo fault) {
service.save(fault);
return Result.success(null, "成功");
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.UPDATE)
@PutMapping
@RequiresPermissions("fault:info:edit")
public Result edit(@RequestBody FaultInfo fault) {
service.updateById(fault);
return Result.success(null, "成功");
}
/**
*
*/
@Log(title = "车辆故障管理删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
@RequiresPermissions("fault:info:remove")
public Result remove(@PathVariable("id") Long[] id) {
return Result.success(service.removeBatchByIds(Arrays.asList(id)), "成功");
}
}

View File

@ -0,0 +1,126 @@
package com.muyu.enterprise.controller;
import com.muyu.enterprise.service.FaultLogService;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.domain.FaultLog;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.muyu.common.log.annotation.Log;
import java.util.Arrays;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.controller
* @FilenameFaultLogController
* @Description TODO
* @Date2024/9/16 20:20
*/
@RestController
@RequestMapping("/log")
public class FaultLogController extends BaseController {
@Autowired
private FaultLogService faultLogService;
/**
*
*/
@GetMapping("/list")
@RequiresPermissions("fault:log:list")
@Operation(summary = "查询集合", description = "查询车辆故障管理列表")
public Result<TableDataInfo<FaultLog>> list(FaultLog fault) {
startPage();
List<FaultLog> list = faultLogService.pageQuery(fault);
return getDataTable(list);
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@RequiresPermissions("fault:log:export")
public void export(HttpServletResponse response, FaultLog fault) {
List<FaultLog> list = faultLogService.pageQuery(fault);
ExcelUtil<FaultLog> util = new ExcelUtil<FaultLog>(FaultLog.class);
util.exportExcel(response, list, "车辆故障管理数据");
}
/**
*
*/
@GetMapping(value = "/{id}")
public Result<String> getConfigKey (@PathVariable("id") String id) {
return success(faultLogService.getById(id));
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.INSERT)
@PostMapping
@RequiresPermissions("fault:log:add")
public Result add(@RequestBody FaultLog fault) {
faultLogService.save(fault);
return Result.success(null, "成功");
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.UPDATE)
@PutMapping
@RequiresPermissions("fault:log:edit")
public Result edit(@RequestBody FaultLog fault) {
faultLogService.updateById(fault);
return Result.success(null, "成功");
}
/**
*
*/
@Log(title = "车辆故障管理删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
@RequiresPermissions("fault:log:remove")
public Result remove(@PathVariable("id") Long[] id) {
return Result.success(faultLogService.removeBatchByIds(Arrays.asList(id)), "成功");
}
/**
*
*/
@PostMapping("/addLog")
public Result addLog(@RequestBody FaultLog log){
faultLogService.insertFaultLog(log);
return Result.success();
}
/**
*
*/
@PostMapping("/updateLog")
public Result updateLog(@RequestBody FaultLog log){
faultLogService.updateFaultLogByStatus(log);
return Result.success();
}
}

View File

@ -1,8 +1,11 @@
package com.muyu.enterprise.controller;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.domain.MessageTemplate;
import com.muyu.domain.req.MessageTemplateAddReq;
import com.muyu.domain.resp.MessageTemplateListResp;
import com.muyu.enterprise.cache.MessageTemplateCacheService;
import com.muyu.enterprise.service.MessageTemplateService;
import com.muyu.common.core.domain.Result;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -30,6 +33,11 @@ public class MessageTemplateController {
@Autowired
private MessageTemplateService messageTemplateService;
//缓存
@Autowired
private MessageTemplateCacheService templateCacheService;
/**
*
*1
@ -55,8 +63,14 @@ public class MessageTemplateController {
*/
@PostMapping("/")
public Result<String> save(@RequestBody MessageTemplateAddReq messageTemplateAddReq) {
messageTemplateService.save(MessageTemplate.addBuild(messageTemplateAddReq));
return Result.success("添加成功");
boolean save = messageTemplateService.save(MessageTemplate.addBuild(messageTemplateAddReq));
//获取用户信息
LoginUser loginUser = SecurityUtils.getLoginUser();
//获取租户唯一标识
String databaseName = loginUser.getSysUser().getDatabaseName();
//添加到缓存
templateCacheService.put(databaseName+messageTemplateAddReq.getMessageTemplateName(), MessageTemplate.addBuild(messageTemplateAddReq));
return Result.success(save? "新增成功" : "新增失败");
}
/**

View File

@ -1,5 +1,6 @@
package com.muyu.enterprise.controller;
import com.muyu.enterprise.cache.AllMessageValueCacheService;
import com.muyu.enterprise.service.MessageValueService;
import com.muyu.common.core.domain.Result;
import com.muyu.domain.MessageValue;
@ -32,6 +33,11 @@ public class MessageValueController {
@Autowired
private MessageValueService messageValueService;
//存Redis
@Autowired
private AllMessageValueCacheService allMessageValueCacheService;
/**
*
*
@ -42,6 +48,9 @@ public class MessageValueController {
@Operation(summary = "报文数据列表", description = "根据报文类别, 报文模版筛选报文数据")
public Result<List<MessageValueListResp>> findAll(@RequestBody MessageValueReq messageValueReq) {
List<MessageValueListResp> list = messageValueService.findAll(messageValueReq);
// for (MessageValueListResp messageValueListResp : list) {
// allMessageValueCacheService.put(String.valueOf(messageValueListResp.getMessageTemplateId()), (List<MessageValueListResp>) messageValueListResp);
// }
return Result.success(list);
}
@ -93,6 +102,7 @@ public class MessageValueController {
@Operation(summary = "根据报文模版id查询报文数据", description = "根据报文模版id查询报文数据")
public Result<List<MessageValueListResp>> findByTemplateId(@PathVariable("templateId") Long templateId) {
List<MessageValueListResp> list = messageValueService.findByTemplateId(templateId);
allMessageValueCacheService.put(String.valueOf(templateId), list);
return Result.success(list);
}

View File

@ -0,0 +1,147 @@
package com.muyu.enterprise.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.domain.*;
import com.muyu.domain.vo.RuleVo;
import com.muyu.enterprise.service.RuleService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.controller
* @FilenameRuleController
* @Description TODO
* @Date2024/9/21 18:42
*/
@Log4j2
@RestController
@Tag(name = "规则", description = "故障管理列")
@RequestMapping("/rules")
public class RuleController extends BaseController {
@Autowired
private RuleService ruleService;
/**
*
*/
@GetMapping("/list")
@RequiresPermissions("fault:rules:list")
@Operation(summary = "查询集合", description = "查询车辆故障管理列表")
public Result<TableDataInfo<RuleVo>> list(RuleVo fault) {
startPage();
List<RuleVo> list = ruleService.pageQueryRule(fault);
return getDataTable(list);
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@RequiresPermissions("fault:rules:export")
public void export(HttpServletResponse response, Rule fault) {
List<Rule> list = ruleService.pageQuery(fault);
ExcelUtil<Rule> util = new ExcelUtil<Rule>(Rule.class);
util.exportExcel(response, list, "车辆故障管理数据");
}
/**
*
*/
@GetMapping(value = "/{id}")
public Result<String> getConfigKey(@PathVariable("id") String id) {
return success(ruleService.getById(id));
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.INSERT)
@PostMapping
@RequiresPermissions("fault:rules:add")
public Result add(@RequestBody Rule fault) {
return Result.success(ruleService.insertFault(fault), "成功");
}
/**
*
*/
@Log(title = "车辆故障管理", businessType = BusinessType.UPDATE)
@PutMapping
@RequiresPermissions("fault:rules:edit")
public Result edit(@RequestBody Rule fault) {
return Result.success(ruleService.updateFault(fault), "成功");
}
/**
*
*/
@Log(title = "车辆故障管理删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
@RequiresPermissions("fault:rules:remove")
public Result remove(@PathVariable("id") Long[] id) {
return Result.success(ruleService.removeBatchByIds(Arrays.asList(id)), "成功");
}
/**
*
*/
@GetMapping("/custom")
@Operation(summary = "查询集合", description = "查询车辆故障管理列表")
public Result<List<Custom>> custom(Custom fault) {
return ruleService.pageQueryList(fault);
}
/**
*
*/
@GetMapping("/car")
@Operation(summary = "查询集合", description = "查询车辆故障管理列表")
public Result<List<Vehicle>> car(Vehicle fault) {
return ruleService.pageQueryCar(fault);
}
/**
*
*/
@GetMapping("/type")
@Operation(summary = "查询集合", description = "查询车辆故障管理列表")
public Result<List<Type>> type(Type fault) {
return ruleService.pageQueryType(fault);
}
/**
*
*/
@GetMapping("/MessageValue")
@Operation(summary = "查询集合", description = "查询车辆故障管理列表")
public Result<List<MessageValue>> MessageValue(MessageValue fault) {
return ruleService.pageQueryMessageValue(fault);
}
}

View File

@ -2,7 +2,14 @@ package com.muyu.enterprise.controller;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.domain.WarnStrategy;
import com.muyu.domain.req.BoundFenceGroupReq;
import com.muyu.domain.resp.WarnRuleResp;
import com.muyu.domain.resp.WarnStrategyAndVinResp;
import com.muyu.enterprise.cache.AllVehicleCacheService;
import com.muyu.enterprise.cache.AllWarnStrategyAndVinCacheService;
import com.muyu.enterprise.cache.VehicleCacheService;
import com.muyu.enterprise.cache.WarnStrategyCacheService;
import com.muyu.enterprise.service.VehicleService;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
@ -14,14 +21,17 @@ import com.muyu.domain.req.VehicleAddReq;
import com.muyu.domain.req.VehicleManageReq;
import com.muyu.domain.req.VehicleUpdReq;
import com.muyu.domain.resp.VehicleManageResp;
import com.muyu.enterprise.service.WarnStrategyService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Collections;
import java.util.List;
/**
@ -41,9 +51,20 @@ public class VehicleController extends BaseController {
@Autowired
private VehicleService vehicleService;
//车辆缓存
//添加车辆缓存
@Autowired
private VehicleCacheService vehicleCacheService;
//车辆信息
@Autowired
private AllVehicleCacheService allVehicleCacheService;
//缓存策略和vin
@Autowired
private AllWarnStrategyAndVinCacheService allWarnStrategyAndVinCacheService;
//缓存策略
@Autowired
private WarnStrategyService warnStrategyService;
@Autowired
private WarnStrategyCacheService warnStrategyCacheService;
/**
@ -56,6 +77,15 @@ public class VehicleController extends BaseController {
public Result<TableDataInfo<VehicleManageResp>> getVehicleList(@RequestBody VehicleManageReq vehicleManageReq) {
startPage();
List<VehicleManageResp> list = vehicleService.getVehicleList(vehicleManageReq);
List<Vehicle> vehicleList = vehicleService.list();
vehicleList.forEach(vehicle -> {
vehicleCacheService.put(vehicle.getVehicleVin(), vehicle);
if(vehicle.getWarnStrategyId()!=null){
WarnRuleResp respList = warnStrategyService.findByWarnStrategyId(vehicle.getWarnStrategyId());
warnStrategyCacheService.put(vehicle.getVehicleVin(), respList);
}
});
return getDataTable(list);
}
@ -142,11 +172,12 @@ public class VehicleController extends BaseController {
/**
*
*/
@GetMapping("/addBoundFenceGroup")
@PostMapping("/addBoundFenceGroup")
@Operation(description = "车辆绑定围栏组")
public Result<String> boundFenceGroup(
@Validated @RequestBody BoundMiddle boundMiddle){
return null;
public Result boundFenceGroup(
@Validated @RequestBody BoundFenceGroupReq boundFenceGroupReq){
vehicleService.boundFenceGroup(boundFenceGroupReq);
return Result.success("绑定成功");
}
/**
@ -160,4 +191,5 @@ public class VehicleController extends BaseController {
Long templateId = vehicleService.findByVehicleVin(vehicleVin);
return Result.success(templateId);
}
}

View File

@ -1,15 +1,21 @@
package com.muyu.enterprise.controller;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.domain.MessageValue;
import com.muyu.domain.VehicleType;
import com.muyu.domain.req.MessageValueAddReq;
import com.muyu.domain.req.VehicleAddReq;
import com.muyu.enterprise.cache.AllVehicleTypeCacheService;
import com.muyu.enterprise.cache.VehicleCacheService;
import com.muyu.enterprise.cache.VehicleTypeCacheService;
import com.muyu.enterprise.service.VehicleTypeService;
import com.muyu.common.core.domain.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -30,13 +36,47 @@ public class VehicleTypeController {
@Autowired
private VehicleTypeService vehicleTypeService;
@Autowired
private VehicleTypeCacheService vehicleTypeCacheService;
//存缓存
@Autowired
private AllVehicleTypeCacheService allVehicleTypeCacheService;
/**
*
* @return
*/
@RequestMapping(path = "/", method = RequestMethod.POST)
@RequestMapping(path = "/findAll", method = RequestMethod.POST)
@Operation(summary = "车辆类型列表",description = "车辆类型列表")
public Result<List<VehicleType>> findAll(){
return Result.success(vehicleTypeService.list());
List<VehicleType> list = vehicleTypeService.list();
// for (VehicleType vehicleType : list) {
// allVehicleTypeCacheService.put(String.valueOf(vehicleType.getVehicleTypeId()),vehicleType);
// }
list.forEach(vehicleType -> {
vehicleTypeCacheService.put(String.valueOf(vehicleType.getVehicleTypeId()), vehicleType);
});
return Result.success(list);
}
/**
*
* @param vehicleType
* @return
*/
@PostMapping("/add")
@Operation(summary = "添加报文数据", description = "新增报文数据")
public Result<String> save(@RequestBody VehicleType vehicleType) {
boolean save = vehicleTypeService.save(vehicleType);
// //获取用户信息
// LoginUser loginUser = SecurityUtils.getLoginUser();
// //获取租户唯一标识
// String databaseName = loginUser.getSysUser().getDatabaseName();
//存到redis
// vehicleTypeCacheService.put(databaseName+vehicleType.getVehicleTypeId(),vehicleType);
vehicleTypeCacheService.put(String.valueOf(vehicleType.getVehicleTypeId()),vehicleType);
return Result.success(save? "添加成功" : "添加失败");
}
}

View File

@ -4,6 +4,7 @@ import com.muyu.common.core.domain.Result;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.domain.WarnRule;
import com.muyu.enterprise.cache.AllWarnRuleCacheService;
import com.muyu.enterprise.cache.WarnRuleCacheService;
import com.muyu.enterprise.service.WarnRuleService;
import io.swagger.v3.oas.annotations.Operation;
@ -22,6 +23,10 @@ public class WarnRuleController {
@Autowired
private WarnRuleCacheService warnRuleCacheService;
//存列表
@Autowired
private AllWarnRuleCacheService allWarnRuleCacheServicel;
/**
*
* @return
@ -29,7 +34,11 @@ public class WarnRuleController {
@RequestMapping(path = "/ruleList",method = RequestMethod.POST)
@Operation(summary = "规则列表", description = "获取所有规则列表")
public Result<List<WarnRule>> ruleList(){
return Result.success(warnRuleService.list());
List<WarnRule> list = warnRuleService.list();
for (WarnRule warnRule : list) {
allWarnRuleCacheServicel.put(warnRule.getRuleName(),warnRule);
}
return Result.success(list);
}
/**
@ -83,4 +92,13 @@ public class WarnRuleController {
return Result.success(warnRuleService.removeById(id));
}
/**
* id
*/
@GetMapping("/getWarnStrategyList/{warnStrategyId}")
@Operation(summary = "根据外键id查询集合", description = "根据外键id查询集合")
public Result<List<WarnRule>> findByWarnStrategyId(@PathVariable("warnStrategyId") Long warnStrategyId) {
List<WarnRule> list = warnRuleService.findBywarnStrategyId(warnStrategyId);
return Result.success(list);
}
}

View File

@ -4,6 +4,10 @@ import com.muyu.common.core.domain.Result;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.domain.WarnStrategy;
import com.muyu.domain.resp.WarnRuleResp;
import com.muyu.domain.resp.WarnStrategyAndVinResp;
import com.muyu.enterprise.cache.AllWarnStrategyAndVinCacheService;
import com.muyu.enterprise.cache.AllWarnStrategyCacheService;
import com.muyu.enterprise.cache.WarnStrategyCacheService;
import com.muyu.enterprise.service.WarnStrategyService;
import com.muyu.domain.req.WarnVehicleReq;
@ -26,14 +30,28 @@ public class WarnStrategyController {
@Autowired
private WarnStrategyCacheService warnStrategyCacheService;
//列表
@Autowired
private AllWarnStrategyCacheService allWarnStrategyCacheService;
//缓存策略和vin
@Autowired
private AllWarnStrategyAndVinCacheService allWarnStrategyAndVinCacheService;
/**
*
* @return
*/
@RequestMapping(path = "/strategyList",method = RequestMethod.POST)
@Operation(summary = "策略列表", description = "获取所有策略列表")
public Result<List<WarnStrategy>> strategyList() {
return Result.success(warnStrategyService.list());
public Result<List<WarnVehicleResp>> strategyList(@RequestBody @Validated WarnVehicleReq req) {
List<WarnVehicleResp> list = warnStrategyService.selectList(req);
// for (WarnVehicleResp warnVehicleResp : list) {
// //存进Redis
// allWarnStrategyCacheService.put(String.valueOf(warnVehicleResp.getVehicleVin()), warnVehicleResp);
// }
return Result.success(list);
}
/**
@ -47,17 +65,6 @@ public class WarnStrategyController {
return Result.success(warnStrategyService.getById(id));
}
/**
*
* @param warnVehicleReq
* @return
*/
@RequestMapping(path = "ruleStrategyList",method = RequestMethod.POST)
@Operation(summary = "策略规则双表联查", description = "获取所有策略规则双表联查")
public Result<List<WarnVehicleResp>> ruleStrategyList(@RequestBody WarnVehicleReq warnVehicleReq){
return Result.success(warnStrategyService.ruleStrategyList(warnVehicleReq));
}
/**
*
* @param warnStrategy
@ -68,13 +75,13 @@ public class WarnStrategyController {
public Result strategyAdd(@Validated @RequestBody WarnStrategy warnStrategy){
boolean save = warnStrategyService.save(warnStrategy);
//存进Redis
//获取用户信息
LoginUser loginUser = SecurityUtils.getLoginUser();
//获取租户唯一标识
String databaseName = loginUser.getSysUser().getDatabaseName();
warnStrategyCacheService.put(databaseName+warnStrategy.getWarnStrategyId(),warnStrategy);
return Result.success();
// //存进Redis
// //获取用户信息
// LoginUser loginUser = SecurityUtils.getLoginUser();
// //获取租户唯一标识
// String databaseName = loginUser.getSysUser().getDatabaseName();
// warnStrategyCacheService.put(databaseName+warnStrategy.getWarnStrategyId(),warnStrategy);
return Result.success(save);
}
/**
@ -99,4 +106,30 @@ public class WarnStrategyController {
public Result strategyDelete(@PathVariable("id") Long id){
return Result.success(warnStrategyService.removeById(id));
}
/**
* vin
*/
@RequestMapping(path = "/vinStrategyList/{warnStrategyId}",method = RequestMethod.POST)
@Operation(summary = "通过vin缓存策略信息", description = "通过vin缓存策略信息")
public Result<List<WarnStrategyAndVinResp>> vinStrategyList(@PathVariable("warnStrategyId") Long warnStrategyId) {
List<WarnStrategyAndVinResp> warnStrategyAndVinResp = warnStrategyService.findById(warnStrategyId);
for (WarnStrategyAndVinResp strategyAndVinResp : warnStrategyAndVinResp) {
allWarnStrategyAndVinCacheService.put(strategyAndVinResp.getVehicleVin(), (WarnStrategyAndVinResp) warnStrategyAndVinResp);
}
return Result.success(warnStrategyAndVinResp);
}
// findbyid resp warnrulelist.set
/**
* respList,ruleList
* @param warnStrategyId
*/
@RequestMapping(path = "/warnRuleRespList",method = RequestMethod.POST)
@Operation(summary = "根据resp查询List集合,将rule查询到的集合添加到List集合中", description = "根据resp查询List集合,将rule查询到的集合添加到List集合中")
public Result<WarnRuleResp> respStrategyList(@PathVariable("warnStrategyId") Long warnStrategyId) {
WarnRuleResp warnRuleRespList=warnStrategyService.findByWarnStrategyId(warnStrategyId);
return Result.success(warnRuleRespList);
}
}

View File

@ -30,11 +30,6 @@ public interface ElectMapper extends MPJBaseMapper<Fence> {
@Select("select * from fence where fence_id=#{fenceId}")
List<Fence> mapShow(@Param("fenceId") Long fenceId);
// /**
// * 根据id查询车辆
// */
// Fence boundFence(@Param("fenceId") Long fenceId);
/**
* ()
*/

View File

@ -0,0 +1,24 @@
package com.muyu.enterprise.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.domain.FaultInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.mapper
* @FilenameFaultInfoMapper
* @Description TODO
* @Date2024/9/19 22:19
*/
@Mapper
public interface FaultInfoMapper extends BaseMapper<FaultInfo> {
int insertFaultinfo(FaultInfo faultInfo);
int updateFaultinfo(FaultInfo faultInfo);
}

View File

@ -0,0 +1,30 @@
package com.muyu.enterprise.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.domain.FaultLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.ArrayList;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.mapper
* @FilenameFaultLogMapper
* @Description TODO
* @Date2024/9/16 21:15
*/
@Mapper
public interface FaultLogMapper extends BaseMapper<FaultLog> {
Long selectFaultId(FaultLog log);
int updateFaultLogByTime(FaultLog log);
void insertBatchFaultLog(@Param("logs") List<FaultLog> logs);
}

View File

@ -0,0 +1,20 @@
package com.muyu.enterprise.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.domain.Fault;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.mapper
* @FilenameFaultMapper
* @Description TODO
* @Date2024/9/18 11:16
*/
@Mapper
public interface FaultMapper extends BaseMapper<Fault> {
}

View File

@ -28,7 +28,16 @@ public interface FencegroupMapper extends MPJBaseMapper<FenceGroup> {
@Select("SELECT g.fence_group_id,g.group_type,g.priority,g.`status`,f.fence_id, group_CONCAT( f.fence_name ) AS fence_name FROM fence_group g LEFT JOIN middle m ON m.fence_group_id = g.fence_group_id LEFT JOIN fence f ON m.fence_id = f.fence_id GROUP BY g.fence_group_id")
List<FenceGroup> showGroupList(FenceGroupReq req);
@Insert("INSERT INTO `vehicle-basic`.`middle` (`fence_id`, `fence_group_id`) VALUES <foreach collection=\"fenceIds\" item=\"id\" separator=\",\"> (#{id},#{fenceGroupId}) </foreach>")
// @Insert("INSERT INTO `vehicle-basic`.`middle` (`fence_id`, `fence_group_id`) VALUES <foreach collection='fenceIds' item='id' separator=','> (#{id},#{fenceGroupId}) </foreach>")
// @Insert({ "<script>", "INSERT INTO user_role (user_id, role_id) VALUES ", "<foreach collection='roleIds' item='roleId' separator=','>", "(#{userId}, #{roleId})", "</foreach>", "</script>" })
@Insert({
"<script>",
"INSERT INTO `vehicle-basic`.`middle` (fence_id, fence_group_id) VALUES ",
"<foreach collection='fenceIds' item='id' separator=','>",
"(#{id}, #{fenceGroupId})",
"</foreach>",
"</script>"
})
void addMiddle(@Param("fenceIds") Integer[] fenceIds,@Param("fenceGroupId") Long fenceGroupId);
}

View File

@ -0,0 +1,35 @@
package com.muyu.enterprise.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.domain.*;
import com.muyu.domain.vo.RuleVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.mapper
* @FilenameRuleMapper
* @Description TODO
* @Date2024/9/21 18:50
*/
@Mapper
public interface RuleMapper extends BaseMapper<Rule> {
int insertFault(Rule faultInfo);
int updateFault(Rule faultInfo);
List<RuleVo> pageQueryRule(RuleVo fault);
List<Custom> pageQueryList(Custom fault);
List<Vehicle> pageQueryCar(Vehicle fault);
List<Type> pageQueryType(Type fault);
List<MessageValue> pageQueryMessageValue(MessageValue fault);
}

View File

@ -1,9 +1,12 @@
package com.muyu.enterprise.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.muyu.domain.FenceGroup;
import com.muyu.domain.Vehicle;
import com.muyu.domain.req.BoundFenceGroupReq;
import com.muyu.domain.req.VehicleManageReq;
import com.muyu.domain.resp.VehicleManageResp;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@ -28,11 +31,6 @@ public interface VehicleMapper extends MPJBaseMapper<Vehicle> {
*/
List<VehicleManageResp> findAll(VehicleManageReq vehicleManageReq);
/**
*
*/
void bindFenceGroup(@Param("fenceGroupIds") Integer[] fenceGroupIds, @Param("vehicleId") Long vehicleId);
/**
* vinid
* @param vehicleVin
@ -40,4 +38,20 @@ public interface VehicleMapper extends MPJBaseMapper<Vehicle> {
*/
@Select("SELECT t.message_template_id FROM vehicle v LEFT JOIN vehicle_type t ON v.vehicle_type_id = t.vehicle_type_id WHERE v.vehicle_vin = #{vehicleVin}")
Long findByVehicleVin(String vehicleVin);
/**
*
* @param boundFenceGroupReq
*/
// @Insert("INSERT INTO `vehicle-basic`.`bound_middle` (`fence_group_id`,`vehicle_id`) VALUES <foreach collection=\"fenceGroupIds\" item=\"id\" separator=\",\"> (#{id},#{vehicleId}) </foreach>")
@Insert({
"<script> INSERT INTO `vehicle-basic`.`bound_middle` (fence_group_id,vehicle_id) VALUES <foreach collection='fenceGroupIds' item='id' separator=','> (#{id}, #{vehicleId}) </foreach> </script>"
// "INSERT INTO `vehicle-basic`.`bound_middle` (fence_group_id, vehicle_id) VALUES <foreach collection=\"fenceGroupIds\" item=\"id\" separator=\",\"> (#{id}, #{vehicleId}) </foreach> "
})
void boundFenceGroup(BoundFenceGroupReq boundFenceGroupReq);
@Select("SELECT * FROM bound_middle bm LEFT JOIN vehicle v ON bm.vehicle_id=v.vehicle_id WHERE bm.fence_group_id = #{fenceGroupId}")
List<FenceGroup> showBoundFenceGroup(@Param("fenceGroupId") Long fenceGroupId);
}

View File

@ -3,7 +3,14 @@ package com.muyu.enterprise.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.domain.WarnRule;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface WarnRuleMapper extends BaseMapper<WarnRule> {
@Select("SELECT * FROM warn_rule WHERE warn_strategy_id=#{warnStrategyId}")
List<WarnRule> findBywarnStrategyId(Long warnStrategyId);
}

View File

@ -2,8 +2,28 @@ package com.muyu.enterprise.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.muyu.domain.WarnStrategy;
import com.muyu.domain.resp.WarnRuleResp;
import com.muyu.domain.resp.WarnStrategyAndVinResp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface WarnStrategyMapper extends MPJBaseMapper<WarnStrategy> {
@Select("SELECT vehicle.vehicle_vin, warn_strategy.warn_strategy_id, warn_strategy.vehicle_type_id, warn_strategy.message_template_id FROM vehicle LEFT JOIN warn_strategy ON vehicle.warn_strategy_id = warn_strategy.warn_strategy_id WHERE vehicle.warn_strategy_id = #{warn_strategy_id}")
List<WarnStrategyAndVinResp> findById(Long vehicleId);
/**
* Redis
* @param warnStrategyId
* @return
*/
@Select("select * from warn_strategy where warn_strategy_id = #{warn_strategy_id}")
WarnRuleResp findByWarnStrategyId(Long warnStrategyId);
}

View File

@ -30,11 +30,6 @@ public interface ElectService extends IService<Fence> {
*/
List<Fence> mapShow(@Param("fenceId") Long fenceId);
// /**
// * 根据id查询车辆
// */
// Fence boundFence(@Param("fenceId") Long fenceId);
/**
* ()
*/

View File

@ -0,0 +1,28 @@
package com.muyu.enterprise.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.domain.FaultInfo;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.service
* @FilenameIFaultInfoService
* @Description TODO
* @Date2024/9/19 22:15
*/
public interface FaultInfoService extends IService<FaultInfo> {
/**
*
*
* @param faultInfo
* @return
*/
List<FaultInfo> pageQuery(FaultInfo faultInfo);
}

View File

@ -0,0 +1,34 @@
package com.muyu.enterprise.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.domain.FaultLog;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.service
* @FilenameIFaultLogService
* @Description TODO
* @Date2024/9/16 20:26
*/
public interface FaultLogService extends IService<FaultLog> {
/**
*
* @param fault
* @return
*/
List<FaultLog> pageQuery(FaultLog fault);
public int insertFaultLog(FaultLog log);
public int updateFaultLogByStatus(FaultLog log);
}

View File

@ -0,0 +1,28 @@
package com.muyu.enterprise.service;
;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.domain.Fault;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.service
* @FilenameIFaultService
* @Description TODO
* @Date2024/9/18 11:12
*/
public interface FaultService extends IService<Fault> {
/**
*
*
* @param fault
* @return
*/
List<Fault> pageQuery(Fault fault);
}

View File

@ -19,7 +19,5 @@ public interface IFencegroupService extends IService<FenceGroup> {
void addGroup(FenceGroupAddReq addReq);
// List<FenceGroup> haveFence(HaveFence haveFence);
//
}

View File

@ -0,0 +1,52 @@
package com.muyu.enterprise.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.common.core.domain.Result;
import com.muyu.domain.*;
import com.muyu.domain.vo.RuleVo;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.service
* @FilenameRuleService
* @Description TODO
* @Date2024/9/21 18:47
*/
public interface RuleService extends IService<Rule> {
/**
*
*
* @param fault
* @return
*/
List<Rule> pageQuery(Rule fault);
List<RuleVo> pageQueryRule(RuleVo fault);
/**
*
*
* @param fault
* @return
*/
public int insertFault(Rule fault);
/**
*
*
* @param fault
* @return
*/
public int updateFault(Rule fault);
Result<List<Custom>> pageQueryList(Custom fault);
Result<List<Vehicle>> pageQueryCar(Vehicle fault);
Result<List<Type>> pageQueryType(Type fault);
Result<List<MessageValue>> pageQueryMessageValue(MessageValue fault);
}

View File

@ -1,9 +1,12 @@
package com.muyu.enterprise.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.domain.FenceGroup;
import com.muyu.domain.Vehicle;
import com.muyu.domain.req.BoundFenceGroupReq;
import com.muyu.domain.req.VehicleManageReq;
import com.muyu.domain.resp.VehicleManageResp;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -31,4 +34,17 @@ public interface VehicleService extends IService<Vehicle> {
* @return
*/
Long findByVehicleVin(String vehicleVin);
/**
*
*/
void boundFenceGroup(BoundFenceGroupReq boundFenceGroupReq);
/**
*
* @param fenceGroupId
* @return
*/
List<FenceGroup> showBoundFenceGroup(@Param("fenceGroupId") Long fenceGroupId);
}

View File

@ -3,5 +3,15 @@ package com.muyu.enterprise.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.domain.WarnRule;
import java.util.List;
public interface WarnRuleService extends IService<WarnRule> {
/**
* ID
* @param warnStrategyId
* @return
*/
List<WarnRule> findBywarnStrategyId(Long warnStrategyId);
}

View File

@ -3,11 +3,28 @@ package com.muyu.enterprise.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.domain.WarnStrategy;
import com.muyu.domain.req.WarnVehicleReq;
import com.muyu.domain.resp.WarnRuleResp;
import com.muyu.domain.resp.WarnStrategyAndVinResp;
import com.muyu.domain.resp.WarnVehicleResp;
import java.util.List;
public interface WarnStrategyService extends IService<WarnStrategy> {
List<WarnVehicleResp>ruleStrategyList(WarnVehicleReq warnVehicleReq);
// List<WarnVehicleResp>ruleStrategyList(WarnVehicleReq warnVehicleReq);
/**
*
*/
List<WarnVehicleResp> selectList(WarnVehicleReq req);
List<WarnStrategyAndVinResp> findById(Long warnStrategyId);
/**
* Redis
* @param warnStrategyId
* @return
*/
WarnRuleResp findByWarnStrategyId(Long warnStrategyId);
}

View File

@ -2,6 +2,7 @@ package com.muyu.enterprise.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.muyu.enterprise.cache.FenceCahceService;
import com.muyu.enterprise.mapper.ElectMapper;
import com.muyu.enterprise.mapper.WarnLogsMapper;
import com.muyu.enterprise.service.ElectService;
@ -10,6 +11,7 @@ import com.muyu.domain.Fence;
import com.muyu.domain.LanType;
import com.muyu.domain.req.FenceReq;
import com.muyu.domain.resp.FenceResp;
import com.muyu.enterprise.service.VehicleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -23,7 +25,12 @@ public class ElectServiceImpl
@Autowired
private ElectMapper electMapper;
@Autowired
private WarnLogsMapper warnLogsMapper;
private VehicleService service;
@Autowired
private FenceCahceService fenceCahceService;
@Override
public List<FenceResp> selectFenceList(FenceReq req) {
@ -39,15 +46,13 @@ public class ElectServiceImpl
req.getFenceName()
);
List<FenceResp> list = electMapper.selectJoinList(FenceResp.class, wrapper);
String decode = fenceCahceService.decode(String.valueOf(list));
//将获取到的数据存到Redis
// fenceCahceService.put(String.valueOf(decode),d);
return list;
}
//
// @Override
// public int addFence(Fence fence) {
// int i = electMapper.addFence(fence);
// return i;
// }
@Override
public void updateFenceOn(Long fenceId) {
@ -65,11 +70,6 @@ public class ElectServiceImpl
return fences;
}
// @Override
// public Fence boundFence(Long fenceId) {
// Fence fence = electMapper.boundFence(fenceId);
// return fence;
// }
@Override
public List<Fence> showFenceBound(Long fenceGroupId) {

View File

@ -0,0 +1,49 @@
package com.muyu.enterprise.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.domain.FaultInfo;
import com.muyu.enterprise.mapper.FaultInfoMapper;
import com.muyu.enterprise.service.FaultInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.service.impl
* @FilenameIFaultInfoServiceImpl
* @Description TODO
* @Date2024/9/19 22:16
*/
@Service
public class FaultInfoServiceImpl extends ServiceImpl<FaultInfoMapper, FaultInfo> implements FaultInfoService {
@Autowired
private FaultInfoMapper faultInfoMapper;
/**
*
* @param faultInfo
* @return fault
*/
@Override
public List<FaultInfo> pageQuery(FaultInfo faultInfo) {
LambdaQueryWrapper<FaultInfo> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(faultInfo.getFaultCode())) {
queryWrapper.like(FaultInfo::getFaultCode, faultInfo.getFaultCode());
}
if (StringUtils.isNotEmpty(faultInfo.getFaultType())) {
queryWrapper.like(FaultInfo::getFaultType, faultInfo.getFaultType());
}
if (StringUtils.isNotEmpty(faultInfo.getGroupName())) {
queryWrapper.like(FaultInfo::getGroupName, faultInfo.getGroupName());
}
return this.list(queryWrapper);
}
}

View File

@ -0,0 +1,73 @@
package com.muyu.enterprise.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.domain.FaultLog;
import com.muyu.enterprise.mapper.FaultLogMapper;
import com.muyu.enterprise.service.FaultLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.service
* @FilenameIFaultLogServiceImpl
* @Description TODO
* @Date2024/9/16 20:37
*/
@Service
public class FaultLogServiceImpl extends ServiceImpl<FaultLogMapper, FaultLog> implements FaultLogService {
@Autowired
private FaultLogMapper faultLogMapper;
@Override
public List<FaultLog> pageQuery(FaultLog fault) {
LambdaQueryWrapper<FaultLog> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(fault.getFaultCode())) {
queryWrapper.like(FaultLog::getFaultCode, fault.getFaultCode());
}
if (StringUtils.isNotEmpty(fault.getVin())) {
queryWrapper.like(FaultLog::getVin, fault.getVin());
}
// 时间区间查询
if (fault.getWarningTime() != null ) {
queryWrapper.gt(FaultLog::getWarningTime, fault.getWarningTime());
}
if (fault.getNormalTime() != null ) {
queryWrapper.lt(FaultLog::getNormalTime, fault.getNormalTime());
}
return this.list(queryWrapper);
}
/**
*
* @param log
*/
@Override
public int insertFaultLog(FaultLog log) {
return 0;
}
/**
*
* @param log
*/
@Override
public int updateFaultLogByStatus(FaultLog log) {
log.setId(faultLogMapper.selectFaultId(log));
return faultLogMapper.updateFaultLogByTime(log);
}
}

View File

@ -0,0 +1,63 @@
package com.muyu.enterprise.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.domain.Fault;
import com.muyu.enterprise.mapper.FaultMapper;
import com.muyu.enterprise.service.FaultService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.service
* @FilenameIFaultServiceImpl
* @Description TODO
* @Date2024/9/18 11:14
*/
@Service
public class FaultServiceImpl extends ServiceImpl<FaultMapper, Fault> implements FaultService {
@Autowired
private FaultMapper faultMapper;
/**
*
* @param fault
* @return fault
*/
@Override
public List<Fault> pageQuery(Fault fault) {
LambdaQueryWrapper<Fault> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(fault.getFaultCode())) {
queryWrapper.like(Fault::getFaultCode, fault.getFaultCode());
}
if (StringUtils.isNotEmpty(fault.getFaultType())) {
queryWrapper.like(Fault::getFaultType, fault.getFaultType());
}
if (StringUtils.isNotEmpty(fault.getFaultName())) {
queryWrapper.like(Fault::getFaultName, fault.getFaultName());
}
Object beginTime = fault.getParams().get("beginTime");
if (Objects.nonNull(beginTime) && beginTime instanceof Date beginDate) {
queryWrapper.gt(BaseEntity::getCreateTime, beginDate);
}
Object endTime = fault.getParams().get("endTime");
if (Objects.nonNull(endTime) && endTime instanceof Date endDate) {
queryWrapper.lt(BaseEntity::getCreateTime, endDate);
}
return this.list(queryWrapper);
}
}

View File

@ -41,10 +41,5 @@ public class FencegroupServiceImpl
}
// @Override
// public List<FenceGroup> haveFence(HaveFence haveFence) {
// return null;
// }
}

View File

@ -2,11 +2,12 @@ package com.muyu.enterprise.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.enterprise.mapper.MessageValueMapper;
import com.muyu.enterprise.service.MessageValueService;
import com.muyu.domain.MessageValue;
import com.muyu.domain.req.MessageValueReq;
import com.muyu.domain.resp.MessageValueListResp;
import com.muyu.enterprise.cache.AllMessageValueCacheService;
import com.muyu.enterprise.mapper.MessageValueMapper;
import com.muyu.enterprise.service.MessageValueService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -31,6 +32,9 @@ public class MessageValueServiceImpl
@Autowired
private MessageValueMapper messageValueMapper;
@Autowired
private AllMessageValueCacheService allMessageValueCacheService;
public MessageValueServiceImpl(MessageValueMapper messageValueMapper) {
this.messageValueMapper = messageValueMapper;
}
@ -63,51 +67,12 @@ public class MessageValueServiceImpl
LambdaQueryWrapper<MessageValue> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(MessageValue::getTemplateId, templateId);
List<MessageValue> list = this.list(queryWrapper);
return list.stream()
List<MessageValueListResp> collect = list.stream()
.map(messageValue -> MessageValueListResp.valueBuild(
messageValue
)
).collect(Collectors.toList());
// allMessageValueCacheService.put(String.valueOf(templateId), collect);
return collect;
}
// @Override
// public JSONObject analysis(String testStr) {
//
// if (testStr.length() < 18){
// throw new RuntimeException("报文格式不正确");
// }
// //根据空格切割数据
// String[] hexArray = testStr.split(" ");
// StringBuilder result = new StringBuilder();
// for (String hex : hexArray) {
// int decimal = Integer.parseInt(hex, 16);
// result.append((char) decimal);
// }
// log.info(result);
// //取出车辆VIN码
// String vehicleVin = result.substring(1, 18);
// log.info("车辆VIN:" + vehicleVin);
// //根据车辆VIN码, 查找到报文模版id
// Long templateId = messageValueMapper.getTemplateId(vehicleVin);
// log.info("模版id:" + templateId);
// //获取到报文模版的列表
// List<MessageValueListResp> templateList = messageValueMapper.getTemplateList(templateId);
// //存储报文模板解析后数据
// JSONObject jsonObject = new JSONObject();
// for (MessageValueListResp messageValue : templateList) {
// //起始位下标
// Integer startIndex = messageValue.getMessageStartIndex() - 1;
// //截止位下标
// Integer endIndex = messageValue.getMessageEndIndex();
// //根据报文模版截取数据
// String value = result.substring(startIndex, endIndex);
// //存入数据
// jsonObject.put(messageValue.getMessageLabel(), value);
// }
// for (Map.Entry<String, Object> stringObjectEntry : jsonObject) {
// log.info(stringObjectEntry.getKey() + ":" + stringObjectEntry.getValue());
// }
// return jsonObject;
// }
}

View File

@ -0,0 +1,106 @@
package com.muyu.enterprise.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.domain.Result;
import com.muyu.domain.*;
import com.muyu.domain.vo.RuleVo;
import com.muyu.enterprise.mapper.RuleMapper;
import com.muyu.enterprise.service.RuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @AuthorChenYan
* @Project2112-car-cloud-server
* @Packagecom.muyu.fault.service
* @FilenameRuleServiceImpl
* @Description TODO
* @Date2024/9/21 18:49
*/
@Service
public class RuleServiceImpl extends ServiceImpl<RuleMapper, Rule> implements RuleService {
@Autowired
private RuleMapper ruleMapper;
/**
*
* @param fault
* @return fault
*/
@Override
public List<Rule> pageQuery(Rule fault) {
LambdaQueryWrapper<Rule> queryWrapper = new LambdaQueryWrapper<>();
if (fault.getRuleValue()!=null) {
queryWrapper.like(Rule::getRuleValue, fault.getRuleValue());
}
return this.list(queryWrapper);
}
@Override
public List<RuleVo> pageQueryRule(RuleVo fault) {
List<RuleVo>list=ruleMapper.pageQueryRule(fault);
return list;
}
/**
*
* @param fault
* @return
*/
@Override
public Result<List<Custom>> pageQueryList(Custom fault) {
List<Custom>list=ruleMapper.pageQueryList(fault);
return Result.success(list,"成功");
}
@Override
public Result<List<Vehicle>> pageQueryCar(Vehicle fault) {
List<Vehicle>list=ruleMapper.pageQueryCar(fault);
return Result.success(list,"成功");
}
@Override
public Result<List<Type>> pageQueryType(Type fault) {
List<Type>list=ruleMapper.pageQueryType(fault);
return Result.success(list,"成功");
}
@Override
public Result<List<MessageValue>> pageQueryMessageValue(MessageValue fault) {
List<MessageValue>list=ruleMapper.pageQueryMessageValue(fault);
return Result.success(list,"成功");
}
/***
* insertFault
* @param faultInfo
* @return
*/
@Override
public int insertFault(Rule faultInfo) {
int i = ruleMapper.insertFault(faultInfo);
return i;
}
/**
* updateFault
* @param faultInfo
* @return
*/
@Override
public int updateFault(Rule faultInfo) {
int i = ruleMapper.updateFault(faultInfo);
return i;
}
}

View File

@ -3,15 +3,19 @@ package com.muyu.enterprise.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.domain.FenceGroup;
import com.muyu.domain.Vehicle;
import com.muyu.domain.VehicleType;
import com.muyu.domain.req.BoundFenceGroupReq;
import com.muyu.domain.req.VehicleManageReq;
import com.muyu.domain.resp.VehicleManageResp;
import com.muyu.enterprise.cache.AllVehicleCacheService;
import com.muyu.enterprise.mapper.VehicleMapper;
import com.muyu.enterprise.service.VehicleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
/**
@ -69,4 +73,16 @@ public class VehicleServiceImpl
return templateId;
}
@Override
public void boundFenceGroup(BoundFenceGroupReq boundFenceGroupReq) {
vehicleMapper.boundFenceGroup(boundFenceGroupReq);
}
@Override
public List<FenceGroup> showBoundFenceGroup(Long fenceGroupId) {
List<FenceGroup> fenceGroups = vehicleMapper.showBoundFenceGroup(fenceGroupId);
return fenceGroups;
}
}

View File

@ -1,11 +1,25 @@
package com.muyu.enterprise.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.domain.WarnRule;
import com.muyu.enterprise.mapper.WarnRuleMapper;
import com.muyu.enterprise.service.WarnRuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
@Service
public class WarnRuleServiceImpl extends ServiceImpl<WarnRuleMapper, WarnRule> implements WarnRuleService {
@Autowired
private WarnRuleMapper warnRuleMapper;
@Override
public List<WarnRule> findBywarnStrategyId(Long warnStrategyId) {
List<WarnRule> warnRules = warnRuleMapper.findBywarnStrategyId(warnStrategyId);
return warnRules;
}
}

View File

@ -1,8 +1,15 @@
package com.muyu.enterprise.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.muyu.domain.MessageTemplate;
import com.muyu.domain.WarnRule;
import com.muyu.domain.resp.WarnRuleResp;
import com.muyu.domain.resp.WarnStrategyAndVinResp;
import com.muyu.enterprise.controller.WarnRuleController;
import com.muyu.enterprise.mapper.WarnStrategyMapper;
import com.muyu.enterprise.service.WarnRuleService;
import com.muyu.enterprise.service.WarnStrategyService;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.domain.VehicleType;
@ -12,7 +19,10 @@ import com.muyu.domain.resp.WarnVehicleResp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class WarnStrategyServiceImpl extends ServiceImpl<WarnStrategyMapper, WarnStrategy>
@ -21,17 +31,40 @@ public class WarnStrategyServiceImpl extends ServiceImpl<WarnStrategyMapper, War
@Autowired
private WarnStrategyMapper warnStrategyMapper;
@Autowired
private WarnRuleService warnRuleService;
@Override
public List<WarnVehicleResp> ruleStrategyList(WarnVehicleReq warnVehicleReq) {
public List<WarnVehicleResp> selectList(WarnVehicleReq req) {
MPJLambdaWrapper<WarnStrategy> wrapper = new MPJLambdaWrapper<>();
wrapper.selectAll(WarnStrategy.class)
.selectAs(VehicleType::getVehicleTypeName,WarnVehicleResp::getVehicleTypeName)
.selectAs(MessageTemplate::getMessageTemplateName,WarnVehicleResp::getMessageTemplateName)
.leftJoin(VehicleType.class, VehicleType::getVehicleTypeId,WarnStrategy::getVehicleTypeId)
.leftJoin(MessageTemplate.class, MessageTemplate::getMessageTemplateId,WarnStrategy::getMessageTemplateId)
.like(
StringUtils.isNotEmpty(warnVehicleReq.getStrategyName()),
WarnStrategy::getStrategyName,warnVehicleReq.getStrategyName()
StringUtils.isNotEmpty(req.getStrategyName()),
WarnStrategy::getStrategyName,req.getStrategyName()
);
List<WarnVehicleResp> list = warnStrategyMapper.selectJoinList(WarnVehicleResp.class, wrapper);
return list;
}
@Override
public List<WarnStrategyAndVinResp> findById(Long warnStrategyId) {
List<WarnStrategyAndVinResp> byId = warnStrategyMapper.findById(warnStrategyId);
return byId;
}
@Override
public WarnRuleResp findByWarnStrategyId(Long warnStrategyId) {
WarnRuleResp warnRuleResp = warnStrategyMapper.findByWarnStrategyId(warnStrategyId);
List<WarnRule> bywarnStrategyId = warnRuleService.findBywarnStrategyId(warnStrategyId);
warnRuleResp.setWarnRuleList(bywarnStrategyId);
return warnRuleResp;
}
}

View File

@ -8,7 +8,7 @@ nacos:
addr: 47.101.49.53:8848
user-name: nacos
password: nacos
namespace: seven
namespace: vehicle
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring
spring:

View File

@ -0,0 +1,29 @@
<?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.muyu.enterprise.mapper.FaultLogMapper">
<insert id="insertBatchFaultLog">
insert into faultlog (fault_code, vin, warning_time)
values
<foreach collection="logs" item="temp" separator=",">
(#{temp.faultCode},#{temp.vin},#{temp.warningTime})
</foreach>
</insert>
<update id="updateFaultLogByTime">
update faultlog
set normal_time = #{normalTime}
where id = #{id}
</update>
<select id="selectFaultId" resultType="java.lang.Long">
select max(id)
from faultlog
where fault_code = #{faultCode}
and vin = #{vin}
</select>
</mapper>

View File

@ -0,0 +1,54 @@
<?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.muyu.enterprise.mapper.RuleMapper">
<insert id="insertFault">
INSERT INTO `vehicle-basic`.`rule` ( `message_id`, `car_id`, `c_id`, `t_id`, `rule_value`)
VALUES ( #{messageId}, #{carId}, #{cId}, #{tId}, #{ruleValue})
</insert>
<update id="updateFault">
UPDATE `rule`
SET `message_id`=#{messageId},
`car_id` = #{carId},
`c_id` = #{cId},
`t_id` = #{tId},
`rule_value` = #{ruleValue}
WHERE `id` = #{id};
</update>
<select id="pageQueryRule" resultType="com.muyu.domain.vo.RuleVo">
SELECT
rule.id,
rule.car_id,
rule.c_id,
rule.t_id,
rule.message_id,
rule_value,
custom_name AS customName,
type_name AS typeName,
car.car_name AS carName,
message_value.message_label AS messageLabel
FROM
rule
LEFT JOIN custom ON rule.c_id = custom.c_id
LEFT JOIN type ON rule.t_id = type.t_id
LEFT JOIN car ON rule.car_id = car.car_id
LEFT JOIN message_value ON rule.message_id = message_value.message_id
</select>
<select id="pageQueryList" resultType="com.muyu.domain.Custom">
select * from custom
</select>
<select id="pageQueryCar" resultType="com.muyu.domain.Vehicle">
select * from vehicle
</select>
<select id="pageQueryType" resultType="com.muyu.domain.Type">
select * from type
</select>
<select id="pageQueryMessageValue" resultType="com.muyu.domain.MessageValue">
select * from message_value
</select>
</mapper>

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.49.53:8848
user-name: nacos
password: nacos
namespace: seven
namespace: vehicle
# Spring
spring:

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.49.53:8848
user-name: nacos
password: nacos
namespace: seven
namespace: vehicle
# Spring
spring:

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.49.53:8848
user-name: nacos
password: nacos
namespace: seven
namespace: vehicle
# Spring
spring:

View File

@ -100,6 +100,25 @@
<artifactId>cloud-common-kafka</artifactId>
</dependency>
<!--缓存依赖-->
<dependency>
<groupId>com.muyu</groupId>
<artifactId>cloud-modules-enterprise-cache</artifactId>
<version>3.6.3</version>
</dependency>
<!-- MQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!-- 引入Caffeine缓存库-->
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>3.0.5</version>
</dependency>
</dependencies>
<build>

View File

@ -20,6 +20,26 @@ public class VehicleProcessingApplication {
public static void main(String[] args) {
SpringApplication.run(VehicleProcessingApplication.class, args);
System.out.println(" _ooOoo_\n" +
" o8888888o\n" +
" 88\" . \"88\n" +
" (| -_- |)\n" +
" O\\ = /O\n" +
" ____/`---'\\____\n" +
" .' \\\\| |// `.\n" +
" / \\\\||| : |||// \\\n" +
" / _||||| -:- |||||- \\\n" +
" | | \\\\\\ - /// | |\n" +
" | \\_| ''\\---/'' | |\n" +
" \\ .-\\__ `-` ___/-. /\n" +
" ___`. .' /--.--\\ `. . __\n" +
" .\"\" '< `.___\\_<|>_/___.' >'\"\".\n" +
" | | : `- \\`.;`\\ _ /`;.`/ - ` : | |\n" +
" \\ \\ `-. \\_ __\\ /__ _/ .-` / /\n" +
" ======`-.____`-.___\\_____/___.-`____.-'======\n" +
" `=---='\n" +
" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
" // 佛祖保佑 永不宕机 永无BUG //");
}
}

View File

@ -2,6 +2,7 @@ package com.muyu.processing.abstraction;
import com.alibaba.fastjson.JSONObject;
import com.muyu.processing.interfaces.EventInterface;
import lombok.extern.log4j.Log4j2;
/**
*
@ -11,6 +12,7 @@ import com.muyu.processing.interfaces.EventInterface;
* @nameEventProcessor
* @Date2024/9/28 20:58
*/
@Log4j2
public abstract class EventProcessor implements EventInterface {
private EventProcessor eventProcessor;

View File

@ -0,0 +1,24 @@
package com.muyu.processing.basic;
import com.alibaba.fastjson.JSONObject;
import org.springframework.context.ApplicationEvent;
/**
*
* @Author
* @Packagecom.muyu.processing.basic
* @Projectcar-cloud-server
* @nameEventCustom
* @Date2024/9/29 21:18
*/
public class EventCustom extends ApplicationEvent{
private JSONObject data;
public EventCustom(Object source, JSONObject data) {
super(source);
this.data = data;
}
public JSONObject getData(){
return data;
}
}

View File

@ -0,0 +1,16 @@
package com.muyu.processing.basic;
import org.springframework.context.ApplicationListener;
/**
*
* @Author
* @Packagecom.muyu.processing.basic
* @Projectcar-cloud-server
* @nameEventListener
* @Date2024/9/29 22:29
*/
public interface EventListener extends ApplicationListener<EventCustom> {
void onEvent(EventCustom event);
}

View File

@ -0,0 +1,35 @@
package com.muyu.processing.basic;
import com.alibaba.fastjson.JSONObject;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.stereotype.Component;
/**
*
* @Author
* @Packagecom.muyu.processing.basic
* @Projectcar-cloud-server
* @nameEventPublisher
* @Date2024/9/29 22:31
*/
@Component
public class EventPublisher implements ApplicationEventPublisherAware {
private ApplicationEventPublisher publisher;
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher){
this.publisher = applicationEventPublisher;
}
/**
*
* @param jsonObject
*/
public void eventPublish(JSONObject jsonObject){
EventCustom eventCustom = new EventCustom(this, jsonObject);
publisher.publishEvent(eventCustom);
}
}

View File

@ -0,0 +1,23 @@
package com.muyu.processing.config;
import com.muyu.processing.listener.AddDatabaseListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
*
* @Author
* @Packagecom.muyu.processing.config
* @Projectcar-cloud-server
* @nameAppConfig
* @Date2024/9/29 22:23
*/
@Configuration
public class AppConfig {
@Bean
public AddDatabaseListener addDatabaseListener(){
return new AddDatabaseListener();
}
}

View File

@ -0,0 +1,107 @@
package com.muyu.processing.config;
import lombok.extern.log4j.Log4j2;
import org.apache.iotdb.isession.SessionDataSet;
import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.rpc.StatementExecutionException;
import org.apache.iotdb.session.Session;
import org.apache.iotdb.tsfile.read.common.Field;
import org.apache.iotdb.tsfile.read.common.RowRecord;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* iotdb
* @Author
* @Packagecom.muyu.processing.config
* @Projectcar-cloud-server
* @nameIotDBConfig
* @Date2024/9/30 15:13
*/
@Log4j2
@Component
@Configuration
public class IotDBConfig {
/**
* session
*/
@Bean
public static Session session(){
Session session = null;
try {
session = new Session(
"47.101.49.53",
6667,
"root",
"root"
);
session.open(false);
session.setFetchSize(100);
} catch (Exception e) {
throw new RuntimeException(e);
}
return session;
}
/**
*
*/
public void execute(String deviceId, Long time, List<String> measurement, List<String> values){
if (!CollectionUtils.isEmpty(measurement) && !CollectionUtils.isEmpty(values)){
try {
session().insertAlignedRecord(deviceId,time,measurement,values);
} catch (IoTDBConnectionException e) {
throw new RuntimeException(e);
} catch (StatementExecutionException e) {
throw new RuntimeException(e);
}
}
}
/**
*
*/
public List<HashMap<String, Object>> executeQuery(String sql){
log.info("sql:{}",sql);
ArrayList<HashMap<String, Object>> list = new ArrayList<>();
try {
SessionDataSet sessionDataSet = session().executeQueryStatement(sql);
int fetchSize = sessionDataSet.getFetchSize();
List<String> columnNames = sessionDataSet.getColumnNames();
List<String> columnTypes = sessionDataSet.getColumnTypes();
System.out.println(columnNames);
System.out.println(columnTypes);
if (fetchSize > 0){
while (sessionDataSet.hasNext()){
HashMap<String, Object> map = new HashMap<>();
RowRecord next = sessionDataSet.next();
List<Field> fields = next.getFields();
// 查询结果第一个为时间戳
long timestamp = next.getTimestamp();
for (int i = 0; i < fields.size(); i++) {
Field field = fields.get(i);
String key = field.getStringValue();
// 这里的需要按照类型获取
Object value = field.getObjectValue(field.getDataType());
map.put(key, value);
}
list.add(map);
}
}
sessionDataSet.closeOperationHandle();
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
}

View File

@ -1,12 +1,11 @@
package com.muyu.processing.consumer;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
import com.muyu.common.core.constant.KafkaConstants;
import com.muyu.processing.interfaces.EventInterface;
import com.muyu.processing.basic.EventPublisher;
import com.muyu.processing.utils.CacheUtil;
import lombok.extern.log4j.Log4j2;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
@ -17,8 +16,12 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.Duration;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* kafka
* @Author
* @Packagecom.muyu.processing.consumer
* @Projectcar-cloud-server
@ -29,36 +32,53 @@ import java.util.Collection;
@Component
public class KafkaConsumerService implements InitializingBean {
/**
* Topic
*/
private static final String TIPSY = "tipsy";
@Resource
private KafkaConsumer kafkaConsumer;
// @Resource
// private EventInterface eventInterface;
@Resource
private CacheUtil cacheUtil;
@Resource
private EventPublisher eventPublisher;
/**
* 线
*/
private final ExecutorService executorService = Executors.newFixedThreadPool(10);
@Override
public void afterPropertiesSet() throws Exception {
Thread thread = new Thread(() -> {
log.info("启动线程监听Topic: {}", "zeshi");
log.info("启动线程监听Topic: {}", TIPSY);
// 延迟1秒
ThreadUtil.sleep(1000);
Collection<String> topics = Lists.newArrayList("zeshi");
// 订阅主题
Collection<String> topics = Lists.newArrayList(TIPSY);
kafkaConsumer.subscribe(topics);
while (true) {
// 轮询消费消息
ConsumerRecords<String, String> consumerRecords = kafkaConsumer.poll(Duration.ofMillis(1000));
for (ConsumerRecord consumerRecord : consumerRecords) {
//从ConsumerRecord中获取消费数据
String originalMsg = (String) consumerRecord.value();
log.info("从Kafka中消费的原始数据: " + originalMsg);
//把消费数据转换为JSON对象
JSONObject jsonObject = JSON.parseObject(originalMsg);
log.info("消费数据转换为JSON对象: " + jsonObject);
log.info("消费数据转换为JSON对象: " + jsonObject.toString());
// eventInterface.handle(jsonObject);
}
consumerRecords.forEach(record -> executorService.execute(() -> publish(record)));
}
});
thread.start();
}
private void publish(ConsumerRecord consumerRecord) {
//从ConsumerRecord中获取消费数据
String originalMsg = (String) consumerRecord.value();
log.info("从Kafka中消费的原始数据: " + originalMsg);
//把消费数据转换为JSON对象
JSONObject jsonObject = JSON.parseObject(originalMsg);
// 发布事件
eventPublisher.eventPublish(jsonObject);
}
}

View File

@ -0,0 +1,52 @@
package com.muyu.processing.consumer;
import com.muyu.processing.utils.CacheUtil;
import lombok.extern.log4j.Log4j2;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 线
* @Author
* @Packagecom.muyu.processing.consumer
* @Projectcloud-vehicle
* @nameOfflineMonitoringConsumer
* @Date2024/10/4 14:48
*/
@Log4j2
@Component
public class OfflineMonitoringConsumer {
/**
* 线
*/
private static final String OFFLINE_MONITORING = "MQ_OFFLINE_MONITORING";
/**
* 线
*/
private static final String OFFLINE_EXCHANGE = "OFFLINE_EXCHANGE";
@Resource
private CacheUtil cacheUtil;
/**
*
* @param vin vin
*/
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = OFFLINE_MONITORING, declare = "true"),
exchange = @Exchange(value = OFFLINE_EXCHANGE, type = "fanout")))
public void online(String vin){
log.info("清除缓存中的数据,车辆vin: {}", vin);
// 清除缓存
cacheUtil.remove(vin);
log.info("vin码为: {}de本地缓存清除成功",vin);
}
}

View File

@ -0,0 +1,90 @@
package com.muyu.processing.consumer;
import com.muyu.domain.Fence;
import com.muyu.domain.Vehicle;
import com.muyu.domain.WarnRule;
import com.muyu.domain.resp.VehicleManageResp;
import com.muyu.domain.resp.WarnRuleResp;
import com.muyu.enterprise.cache.*;
import com.muyu.processing.utils.CacheUtil;
import lombok.extern.log4j.Log4j2;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashMap;
/**
* 线
* @Author
* @Packagecom.muyu.processing.consumer
* @Projectcar-cloud-server
* @nameMQconsumer
* @Date2024/9/29 17:19
*/
@Log4j2
@Component
public class OnLineMonitoringConsumer {
/**
* 线
*/
private static final String ON_LINE_MONITORING = "MQ_ON_LINE_MONITORING";
/**
* 线
*/
private static final String ONLINE_EXCHANGE = "ONLINE_EXCHANGE";
@Resource
private CacheUtil cacheUtil;
@Resource
private VehicleCacheService vehicleCacheService;
@Resource
private AllVehicleCacheService allVehicleCacheService;
@Resource
private FaultCacheService faultCacheService;
@Resource
private FenceCahceService fenceCahceService;
@Resource
private WarnRuleCacheService warnRuleCacheService;
@Resource
private WarnStrategyCacheService warnStrategyCacheService;
/**
* 线线
*/
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = ON_LINE_MONITORING, declare = "true"),
exchange = @Exchange(value = ONLINE_EXCHANGE, type = "fanout")))
public void online(String vin){
log.info("添加本地缓存,车辆vin: {}", vin);
// 获取redis中的数据
Fence fence = fenceCahceService.get(vin);
Object breakdown = faultCacheService.get(vin);
Vehicle vehicle = vehicleCacheService.get(vin);
WarnRule warnRule = warnRuleCacheService.get(vin);
WarnRuleResp warnStrategy = warnStrategyCacheService.get(vin);
VehicleManageResp vehicleManageResp = allVehicleCacheService.get(vin);
// 封装从redis中获得的数据
HashMap<String, Object> map = new HashMap<>();
map.put("fence",fence);
map.put("breakdown",breakdown);
map.put("vehicle",vehicle);
map.put("warnRule",warnRule);
map.put("warnStrategy",warnStrategy);
map.put("vehicleManageResp",vehicleManageResp);
// 添加到本地缓存中
cacheUtil.put(vin,map);
log.info("vin码为: {}, 数据为: {}, 已完成本地缓存",vin,map);
}
}

Some files were not shown because too many files have changed in this diff Show More