feat:()添加存储围栏组Redis信息方法

dev.encapsulation
sy200 2024-10-08 21:42:52 +08:00
parent 813fcf1b55
commit f166853e31
35 changed files with 216 additions and 61 deletions

View File

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

View File

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

View File

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

View File

@ -1,11 +1,12 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.FaultInfo;
/**
*
*/
public class FaultCacheService extends CacheAbsBacis {
public class FaultCacheService extends CacheAbsBacis<String, FaultInfo> {
@Override
public void clear() {

View File

@ -0,0 +1,28 @@
package com.muyu.enterprise.cache;
import com.muyu.common.cache.CacheAbsBacis;
import com.muyu.domain.Fence;
import com.muyu.domain.FenceGroup;
import com.muyu.domain.req.BoundFenceGroupReq;
import com.muyu.domain.req.FenceGroupAddReq;
/**
*
*/
public class FenceGroupCahceService extends CacheAbsBacis<String, BoundFenceGroupReq> {
@Override
public void clear() {
}
@Override
public String keyPre() {
return "fenceGroup:info:";
}
@Override
public String decode(String key) {
return key.replace("fenceGroup:info:", "");
}
}

View File

@ -1,5 +1,6 @@
com.muyu.enterprise.cache.AllFaultCacheService
com.muyu.enterprise.cache.AllFenceCahceService
com.muyu.enterprise.cache.AllFenceGroupCahceService
com.muyu.enterprise.cache.AllMessageValueCacheService
com.muyu.enterprise.cache.AllVehicleCacheService
com.muyu.enterprise.cache.AllVehicleTypeCacheService
@ -8,6 +9,7 @@ com.muyu.enterprise.cache.AllWarnStrategyAndVinCacheService
com.muyu.enterprise.cache.AllWarnStrategyCacheService
com.muyu.enterprise.cache.FaultCacheService
com.muyu.enterprise.cache.FenceCahceService
com.muyu.enterprise.cache.FenceGroupCahceService
com.muyu.enterprise.cache.MessageTemplateCacheService
com.muyu.enterprise.cache.MessageValueCacheService
com.muyu.enterprise.cache.VehicleCacheService

View File

@ -123,6 +123,13 @@ public class Vehicle extends BaseEntity {
@Schema(type = "Long",description = "策略id")
private Long warnStrategyId;
/** 故障id */
@Schema(type = "Long",description = "策略id")
private Long faultId;
public static Vehicle addBuild(VehicleAddReq vehicleAddReq){
return Vehicle.builder()
.licenceNumber(vehicleAddReq.getLicenceNumber())
@ -137,6 +144,7 @@ public class Vehicle extends BaseEntity {
.companyId(vehicleAddReq.getCompanyId())
.fenceGroupId(vehicleAddReq.getFenceGroupId())
.warnStrategyId(vehicleAddReq.getWarnStrategyId())
.faultId(vehicleAddReq.getFaultId())
.build();
}
@ -155,6 +163,7 @@ public class Vehicle extends BaseEntity {
.companyId(vehicleUpdReq.getCompanyId())
.fenceGroupId(vehicleUpdReq.getFenceGroupId())
.warnStrategyId(vehicleUpdReq.getWarnStrategyId())
.faultId(vehicleUpdReq.getFaultId())
.build();
}

View File

@ -101,4 +101,9 @@ public class VehicleAddReq {
@Schema(type = "Long",description = "策略id")
@TableId( type = IdType.AUTO)
private Long warnStrategyId;
/** 故障id */
@Schema(type = "Long",description = "策略id")
private Long faultId;
}

View File

@ -102,5 +102,8 @@ public class VehicleUpdReq {
@TableId( type = IdType.AUTO)
private Long warnStrategyId;
/** 故障id */
@Schema(type = "Long",description = "策略id")
private Long faultId;
}

View File

@ -0,0 +1,45 @@
package com.muyu.domain.resp;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
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 = "车辆绑定的围栏组", description = "车辆绑定的围栏组")
public class BoundFenceGroup {
/**
*
*/
@TableId(value = "fence_group_id" ,type = IdType.AUTO)
@Schema(type = "Long",description = "围栏组id")
private Long fenceGroupId;
/**
*
*/
@Schema(type = "String",description = "优先级")
private String priority;
/**
* 0: 1:
*/
@Schema(type = "Integer",description = "状态 0:启用 1:禁止")
private Integer status;
/**
*
*/
@Schema(type = "String",description = "围栏组类型")
private String groupType;
}

View File

@ -19,12 +19,7 @@ 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

View File

@ -1,5 +1,6 @@
package com.muyu.enterprise.controller;
import com.muyu.enterprise.cache.FaultCacheService;
import com.muyu.enterprise.service.FaultInfoService;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
@ -38,6 +39,8 @@ public class FaultInfoController extends BaseController {
@Autowired
private FaultInfoService service;
@Autowired
private FaultCacheService faultCacheService;
/**
*
@ -80,8 +83,10 @@ public class FaultInfoController extends BaseController {
@Log(title = "车辆故障管理", businessType = BusinessType.INSERT)
@PostMapping
@RequiresPermissions("fault:info:add")
public Result add(@RequestBody FaultInfo fault) {
service.save(fault);
public Result add(@RequestBody FaultInfo faultInfo) {
service.save(faultInfo);
//添加的数据存进缓存
// faultCacheService.put(faultInfo.);
return Result.success(null, "成功");
}

View File

@ -20,12 +20,7 @@ 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")

View File

@ -17,12 +17,7 @@ import java.util.List;
import java.util.stream.Collectors;
/**
* @Author: LiDongJia
* @Package: com.muyu.car.controller
* @Project: 2112-car-cloud-server
* @name: MessageTypeController
* @Date: 2024/9/18 20:18
* @Description:
*
*/
@Log4j2
@RestController

View File

@ -17,12 +17,7 @@ import java.util.List;
import java.util.stream.Collectors;
/**
* @Author: LiDongJia
* @Package: com.muyu.car.controller
* @Project: 2112-car-cloud-server
* @name: MessageValueController
* @Date: 2024/9/19 15:46
* @Description:
*
*/
@Log4j2
@RestController

View File

@ -12,6 +12,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* Controller
*/
@Log4j2
@RequestMapping("/middle")
@RestController

View File

@ -22,12 +22,7 @@ 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

View File

@ -4,12 +4,10 @@ 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.BoundFenceGroup;
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.cache.*;
import com.muyu.enterprise.service.VehicleService;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
@ -35,12 +33,7 @@ import java.util.Collections;
import java.util.List;
/**
* @Author: LiDongJia
* @Package: com.muyu.car.controller
* @Project: 2112-car-cloud-server
* @name: VehicleController
* @Date: 2024/9/17 17:35
* @Description:
*
*/
@Log4j2
@RestController
@ -65,6 +58,12 @@ public class VehicleController extends BaseController {
private WarnStrategyService warnStrategyService;
@Autowired
private WarnStrategyCacheService warnStrategyCacheService;
//添加围栏组缓存信息
@Autowired
private FenceGroupCahceService fenceGroupCahceService;
//绑定的围栏组信息
@Autowired
private AllFenceGroupCahceService allFenceGroupCahceService;
/**
@ -81,10 +80,17 @@ public class VehicleController extends BaseController {
List<Vehicle> vehicleList = vehicleService.list();
vehicleList.forEach(vehicle -> {
vehicleCacheService.put(vehicle.getVehicleVin(), vehicle);
//根据车辆vin存储策略已经规则信息
if(vehicle.getWarnStrategyId()!=null){
WarnRuleResp respList = warnStrategyService.findByWarnStrategyId(vehicle.getWarnStrategyId());
warnStrategyCacheService.put(vehicle.getVehicleVin(), respList);
}
//根据车辆vin存储围栏信息
if(vehicle.getFenceGroupId()!=null){
//根据外键查询围栏组信息
List<BoundFenceGroup> boundMiddles = vehicleService.findByFenceGroupId(vehicle.getVehicleId());
allFenceGroupCahceService.put(vehicle.getVehicleVin(), boundMiddles);
}
});
return getDataTable(list);
}
@ -177,6 +183,12 @@ public class VehicleController extends BaseController {
public Result boundFenceGroup(
@Validated @RequestBody BoundFenceGroupReq boundFenceGroupReq){
vehicleService.boundFenceGroup(boundFenceGroupReq);
Vehicle byId = vehicleService.getById(boundFenceGroupReq.getVehicleId());
String vehicleVin = byId.getVehicleVin();
if(byId!=null){
//将围栏组信息存入Redis
fenceGroupCahceService.put(vehicleVin, boundFenceGroupReq);
}
return Result.success("绑定成功");
}

View File

@ -20,12 +20,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Author: LiDongJia
* @Package: com.muyu.car.controller
* @Project: 2112-car-cloud-server
* @name: VehicleTypeController
* @Date: 2024/9/17 17:08
* @Description:
*/
@Log4j2
@RestController

View File

@ -11,6 +11,9 @@ import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
*
*/
@RestController
@RequestMapping("/logs")
public class WarnLogsController {

View File

@ -14,6 +14,9 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*/
@RestController
@RequestMapping("/rule")
public class WarnRuleController {

View File

@ -19,6 +19,9 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*/
@RestController
@RequestMapping("/strategy")
public class WarnStrategyController {

View File

@ -9,6 +9,9 @@ import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
* Mapper
*/
@Mapper
public interface ElectMapper extends MPJBaseMapper<Fence> {

View File

@ -1,10 +1,12 @@
package com.muyu.enterprise.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.muyu.domain.BoundMiddle;
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.BoundFenceGroup;
import com.muyu.domain.resp.VehicleManageResp;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
@ -29,7 +31,7 @@ public interface VehicleMapper extends MPJBaseMapper<Vehicle> {
* @param vehicleManageReq
* @return
*/
List<VehicleManageResp> findAll(VehicleManageReq vehicleManageReq);
// List<VehicleManageResp> findAll(VehicleManageReq vehicleManageReq);
/**
* vinid
@ -46,12 +48,13 @@ public interface VehicleMapper extends MPJBaseMapper<Vehicle> {
// @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);
@Select("SELECT fence_group.group_type, fence_group.priority,fence_group.`status`,bound_middle.fence_group_id FROM fence_group LEFT JOIN bound_middle ON fence_group.fence_group_id = bound_middle.fence_group_id WHERE bound_middle.vehicle_id = #{vehicleId}")
List<BoundFenceGroup> findByFenceGroupId(Long vehicleId);
}

View File

@ -1,10 +1,12 @@
package com.muyu.enterprise.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.domain.BoundMiddle;
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.BoundFenceGroup;
import com.muyu.domain.resp.VehicleManageResp;
import org.apache.ibatis.annotations.Param;
@ -47,4 +49,10 @@ public interface VehicleService extends IService<Vehicle> {
*/
List<FenceGroup> showBoundFenceGroup(@Param("fenceGroupId") Long fenceGroupId);
/**
* id
* @param vehicleId
*/
List<BoundFenceGroup> findByFenceGroupId(Long vehicleId);
}

View File

@ -1,6 +1,7 @@
package com.muyu.enterprise.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.enterprise.cache.FenceGroupCahceService;
import com.muyu.enterprise.mapper.FencegroupMapper;
import com.muyu.enterprise.service.IFencegroupService;
import com.muyu.domain.FenceGroup;
@ -25,6 +26,11 @@ public class FencegroupServiceImpl
@Autowired
private FencegroupMapper fencegroupMapper;
//围栏组缓存
@Autowired
private FenceGroupCahceService fenceGroupCahceService;
@Override
public List<FenceGroup> showGroupList(FenceGroupReq req) {
List<FenceGroup> fenceGroups = fencegroupMapper.showGroupList(req);
@ -37,6 +43,12 @@ public class FencegroupServiceImpl
this.save(build);
//添加中间表
Long fenceGroupId = build.getFenceGroupId();
// //添加缓存
// if(fenceGroupId != null){
// //获取车辆vin
//
// fenceGroupCahceService.put();
// }
fencegroupMapper.addMiddle(addReq.getFenceIds(),fenceGroupId);
}

View File

@ -3,11 +3,13 @@ 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.BoundMiddle;
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.BoundFenceGroup;
import com.muyu.domain.resp.VehicleManageResp;
import com.muyu.enterprise.cache.AllVehicleCacheService;
import com.muyu.enterprise.mapper.VehicleMapper;
@ -84,5 +86,11 @@ public class VehicleServiceImpl
return fenceGroups;
}
@Override
public List<BoundFenceGroup> findByFenceGroupId(Long vehicleId) {
List<BoundFenceGroup> list = vehicleMapper.findByFenceGroupId(vehicleId);
return list;
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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