From 0463fde3036ecc043e36245807f220e8dbebc998 Mon Sep 17 00:00:00 2001 From: Su ZeJing <3039179835@qq.com> Date: Thu, 11 Apr 2024 16:15:43 +0800 Subject: [PATCH] =?UTF-8?q?redis=E5=AD=98=E5=82=A8=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E6=89=80=E4=BD=BF=E7=94=A8=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/ZhiLianBusinessApplication.java | 17 +++++- .../business/controller/FenceController.java | 14 ++++- .../controller/VehicleController.java | 7 +++ .../controller/VehicleTypeController.java | 1 + .../zhilian/business/domain/VehicleFence.java | 22 ++++++++ .../business/mapper/VehicleMapper.java | 5 ++ .../business/service/FenceService.java | 8 +++ .../business/service/VehicleService.java | 3 + .../service/impl/FenceServiceImpl.java | 56 ++++++++++++++++++- .../service/impl/VehicleServiceImpl.java | 37 ++++++++---- .../main/resources/mapper/VehicleMapper.xml | 24 ++++++++ 11 files changed, 177 insertions(+), 17 deletions(-) create mode 100644 zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/domain/VehicleFence.java create mode 100644 zhilian-modules/zhilian-business/src/main/resources/mapper/VehicleMapper.xml diff --git a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/ZhiLianBusinessApplication.java b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/ZhiLianBusinessApplication.java index f89c6b9..5db1174 100644 --- a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/ZhiLianBusinessApplication.java +++ b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/ZhiLianBusinessApplication.java @@ -1,8 +1,13 @@ package com.zhilian.business; +import com.zhilian.business.controller.FenceController; +import com.zhilian.business.controller.VehicleController; import com.zhilian.common.security.annotation.EnableCustomConfig; import com.zhilian.common.security.annotation.EnableMyFeignClients; import com.zhilian.common.swagger.annotation.EnableCustomSwagger2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -19,8 +24,18 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableCustomSwagger2 @EnableMyFeignClients @SpringBootApplication -public class ZhiLianBusinessApplication { +public class ZhiLianBusinessApplication implements ApplicationRunner { public static void main(String[] args) { SpringApplication.run(ZhiLianBusinessApplication.class); } + @Autowired + private FenceController fenceController; + @Autowired + private VehicleController vehicleController; + + @Override + public void run(ApplicationArguments args) throws Exception { + fenceController.fenceRedisData(); + vehicleController.vehicleSelectAllData(); + } } diff --git a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/FenceController.java b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/FenceController.java index 5dd593e..334a181 100644 --- a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/FenceController.java +++ b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/FenceController.java @@ -36,6 +36,14 @@ public class FenceController extends BaseController { return getDataTable(result); } + + /** + * 添加所有围栏信息进入redis + */ + public void fenceRedisData() { + fenceService.fenceRedisData(); + } + /** * 新增围栏 * @param fence @@ -45,7 +53,7 @@ public class FenceController extends BaseController { public Result fenceAdd(@RequestBody Fence fence) { fence.setUpdateBy(SecurityUtils.getUsername()); fence.setUpdateTime(new Date()); - return toAjax(fenceService.save(fence)); + return toAjax(fenceService.saveFence(fence)); } @@ -70,7 +78,7 @@ public class FenceController extends BaseController { public Result fenceUpdateMap(@RequestBody Fence fence) { fence.setUpdateBy(SecurityUtils.getUsername()); fence.setUpdateTime(new Date()); - return toAjax(fenceService.updateById(fence)); + return toAjax(fenceService.updateByMap(fence)); } /** @@ -80,7 +88,7 @@ public class FenceController extends BaseController { */ @PostMapping("/fenceDelete/{fenceId}") public Result fenceDelete(@PathVariable String fenceId) { - return toAjax(fenceService.removeById(fenceId)); + return toAjax(fenceService.removeByFence(fenceId)); } diff --git a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/VehicleController.java b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/VehicleController.java index c2fd203..0dd16e8 100644 --- a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/VehicleController.java +++ b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/VehicleController.java @@ -2,6 +2,7 @@ package com.zhilian.business.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zhilian.business.domain.Vehicle; +import com.zhilian.business.domain.VehicleFence; import com.zhilian.business.domain.middle.VehicleMarkers; import com.zhilian.business.service.MarkersService; import com.zhilian.business.service.VehicleMarkersService; @@ -46,6 +47,12 @@ public class VehicleController extends BaseController { return getDataTable(list); } + @GetMapping("/vehicleSelectAllData") + public List vehicleSelectAllData(){ + List selectSelectAllData = vehicleService.selectSelectAllData(); + return selectSelectAllData; + } + /** * 新增车辆 * @param vehicle diff --git a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/VehicleTypeController.java b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/VehicleTypeController.java index 246f756..29b9036 100644 --- a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/VehicleTypeController.java +++ b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/controller/VehicleTypeController.java @@ -1,5 +1,6 @@ package com.zhilian.business.controller; +import com.zhilian.business.domain.VehicleType; import com.zhilian.business.service.VehicleTypeService; import com.zhilian.common.core.domain.Result; import com.zhilian.common.core.web.controller.BaseController; diff --git a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/domain/VehicleFence.java b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/domain/VehicleFence.java new file mode 100644 index 0000000..7fb3f41 --- /dev/null +++ b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/domain/VehicleFence.java @@ -0,0 +1,22 @@ +package com.zhilian.business.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@ToString +@SuperBuilder +public class VehicleFence { + private Long vehicleId; + private String vehicleVIN; + private String fences; + + private List fenceIds; +} diff --git a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/mapper/VehicleMapper.java b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/mapper/VehicleMapper.java index b917deb..4e35712 100644 --- a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/mapper/VehicleMapper.java +++ b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/mapper/VehicleMapper.java @@ -2,11 +2,16 @@ package com.zhilian.business.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zhilian.business.domain.Vehicle; +import com.zhilian.business.domain.VehicleFence; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Component; +import java.util.List; + @Mapper @Component public interface VehicleMapper extends BaseMapper { + List selectListAll(); + } diff --git a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/FenceService.java b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/FenceService.java index 4592c86..bfdbecb 100644 --- a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/FenceService.java +++ b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/FenceService.java @@ -7,4 +7,12 @@ import java.util.List; public interface FenceService extends IService { List fenceList(Fence fence); + + void fenceRedisData(); + + boolean saveFence(Fence fence); + + boolean updateByMap(Fence fence); + + boolean removeByFence(String fenceId); } diff --git a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/VehicleService.java b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/VehicleService.java index 8dcbd33..6dda96c 100644 --- a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/VehicleService.java +++ b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/VehicleService.java @@ -2,6 +2,7 @@ package com.zhilian.business.service; import com.baomidou.mybatisplus.extension.service.IService; import com.zhilian.business.domain.Vehicle; +import com.zhilian.business.domain.VehicleFence; import java.util.List; @@ -14,4 +15,6 @@ public interface VehicleService extends IService { boolean updateState(Vehicle vehicle); void selectRedisData(Vehicle vehicle); + + List selectSelectAllData(); } diff --git a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/impl/FenceServiceImpl.java b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/impl/FenceServiceImpl.java index 1e3f369..2752411 100644 --- a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/impl/FenceServiceImpl.java +++ b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/impl/FenceServiceImpl.java @@ -6,12 +6,19 @@ import com.zhilian.business.domain.Fence; import com.zhilian.business.mapper.FenceMapper; import com.zhilian.business.service.FenceService; import com.zhilian.common.core.utils.StringUtils; +import com.zhilian.common.redis.service.RedisService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class FenceServiceImpl extends ServiceImpl implements FenceService { + @Autowired + private RedisService redisService; + + private static final String FENCE_INFO_KEY = "fence_info:"; + //电子围栏信息查询 @Override public List fenceList(Fence fence) { if (fence.getFenceName() == null && fence.getFenceTypeId() == null && fence.getFenceState() == null) { @@ -34,7 +41,54 @@ public class FenceServiceImpl extends ServiceImpl implements if (fence.getFenceState() != null) { queryWrapper.eq(Fence::getFenceState, fence.getFenceState()); } - + if(!redisService.hasKey(FENCE_INFO_KEY)){ + fenceRedisData(); + } return this.list(queryWrapper); } + + //缓存电子围栏信息 + @Override + public void fenceRedisData() { + List list = this.list(); + for (Fence fence : list) { + redisService.setCacheSet(FENCE_INFO_KEY+fence.getFenceId(),fence.getFenceMessage()); + } + } + //删除电子围栏全部数据 + private void fenceRedisDelete(){ + List list = this.list(); + for (Fence fence : list) { + redisService.deleteObject(FENCE_INFO_KEY+fence.getFenceId()); + } + } + //添加电子围栏信息 + @Override + public boolean saveFence(Fence fence) { + boolean save = this.save(fence); + return save; + } + //绑定经纬度地图 + @Override + public boolean updateByMap(Fence fence) { + boolean updateByMap = this.updateById(fence); + if(redisService.hasKey(FENCE_INFO_KEY+fence.getFenceId())){ + redisService.deleteObject(FENCE_INFO_KEY+fence.getFenceId()); + } + redisService.setCacheSet(FENCE_INFO_KEY+fence.getFenceId(),fence.getFenceMessage()); + return updateByMap; + } + + + //删除电子围栏 + @Override + public boolean removeByFence(String fenceId) { + boolean remove = this.removeById(Integer.parseInt(fenceId)); + if(redisService.hasKey(FENCE_INFO_KEY+fenceId)){ + redisService.deleteObject(FENCE_INFO_KEY+fenceId); + } + return remove; + } + + } diff --git a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/impl/VehicleServiceImpl.java b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/impl/VehicleServiceImpl.java index f9abc13..950599f 100644 --- a/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/impl/VehicleServiceImpl.java +++ b/zhilian-modules/zhilian-business/src/main/java/com/zhilian/business/service/impl/VehicleServiceImpl.java @@ -3,36 +3,29 @@ package com.zhilian.business.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhilian.business.domain.Vehicle; +import com.zhilian.business.domain.VehicleFence; import com.zhilian.business.mapper.*; import com.zhilian.business.service.VehicleService; import com.zhilian.common.core.utils.StringUtils; import com.zhilian.common.redis.service.RedisService; +import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @Service +@Log4j2 public class VehicleServiceImpl extends ServiceImpl implements VehicleService { @Autowired private VehicleMapper vehicleMapper; - @Autowired - private VehicleMarkersMapper vehicleMarkersMapper; - @Autowired private RedisService redisService; - @Autowired - private MarkersMapper markersMapper; - - @Autowired - private MarkersFenceMapper markersFenceMapper; - - @Autowired - private FenceMapper fenceMapper; - + private final String VEHICLE_PEOPLE_KEY = "vehicle_fence:"; @Override public List selectVehicleList(Vehicle vehicle) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -95,7 +88,27 @@ public class VehicleServiceImpl extends ServiceImpl impl public void selectRedisData(Vehicle vehicle) { + } + @Override + public List selectSelectAllData() { + List vehicleMarkersFence = vehicleMapper.selectListAll(); + for (VehicleFence vehicleFence : vehicleMarkersFence) { + // 切割 fenceIds 字段为数组 + String[] fenceIdsArray = vehicleFence.getFences().split(","); + + // 将数组转换为 ArrayList + ArrayList fenceIdsArrayList = new ArrayList<>(Arrays.asList( fenceIdsArray)); + + vehicleFence.setFenceIds(fenceIdsArrayList); + } + // 缓存 + for (VehicleFence vehicleFence : vehicleMarkersFence) { + redisService.setCacheList(VEHICLE_PEOPLE_KEY + vehicleFence.getVehicleVIN(), vehicleFence.getFenceIds()); + } + + log.info(vehicleMarkersFence); + return vehicleMarkersFence; } } diff --git a/zhilian-modules/zhilian-business/src/main/resources/mapper/VehicleMapper.xml b/zhilian-modules/zhilian-business/src/main/resources/mapper/VehicleMapper.xml new file mode 100644 index 0000000..d71c99e --- /dev/null +++ b/zhilian-modules/zhilian-business/src/main/resources/mapper/VehicleMapper.xml @@ -0,0 +1,24 @@ + + + + + + +