screen-manage/src/main/java/com/moral/api/mapper/DeviceMapper.java
@@ -1,7 +1,5 @@ package com.moral.api.mapper; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; @@ -11,6 +9,7 @@ import com.moral.api.entity.Device; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.moral.api.pojo.vo.device.DeviceVO; import io.lettuce.core.dynamic.annotation.Param; /** * <p> @@ -24,6 +23,6 @@ DeviceVO selectDeviceInfoById(Integer deviceId); List<Device> queryDeviceUnitAlarmInfo(); List<Device> queryDeviceUnitAlarmInfo(@Param("region") String mac); } screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -191,7 +191,7 @@ //设备信息存入redis setDeviceInfoToRedis(mac, deviceInfo); //刷新deviceInfo缓存 CacheUtils.refreshDeviceAlarmInfo(); CacheUtils.refreshDeviceAlarmInfo(mac); //操作日志记录 HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); StringBuilder content = new StringBuilder(); @@ -629,9 +629,9 @@ public void setRedisDevice() { List<Device> list = lambdaQuery().eq(Device::getIsDelete,0).list(); for(Device d : list){ Map<String, Object> deviceInfo = selectDeviceInfoById(d.getId()); redisTemplate.opsForHash().delete(RedisConstants.DEVICE, d.getMac()); setDeviceInfoToRedis(d.getMac(), deviceInfo); redisTemplate.opsForHash().delete(RedisConstants.DEVICE, d.getMac()); Map<String, Object> deviceInfo = selectDeviceInfoById(d.getId()); setDeviceInfoToRedis(d.getMac(), deviceInfo); } } } screen-manage/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
@@ -37,6 +37,8 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.Collectors; /** @@ -221,6 +223,7 @@ @Override @Transactional public void updateList(Integer id, String guid) { ExecutorService executorService = Executors.newFixedThreadPool(2); QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>(); wrapper_govMonitorPoint.eq("is_delete", Constants.NOT_DELETE); wrapper_govMonitorPoint.eq("id", id); @@ -230,33 +233,38 @@ } GovMonitorPoint govMonitorPoint = govMonitorPoints.get(0); String oldGuid = govMonitorPoint.getGuid(); if(!oldGuid.equals(guid)){ govMonitorPoint.setGuid(guid); govMonitorPointMapper.updateById(govMonitorPoint); //删除redis delGovMonitorPointInfoFromRedis(id.toString()); //更新redis setGovMonitorPointInfoToRedis(id.toString(), selectGovMonitorPointInfoById(id)); //操作日志记录 HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); StringBuilder content = new StringBuilder(); content.append("修改了政府站点:").append("id:").append(govMonitorPoint.getId() + ";"); if (!ObjectUtils.isEmpty(govMonitorPoint.getGuid())) { content.append("guid:").append(oldGuid).append("->").append(guid).append(";"); } LogUtils.saveOperationForManage(request, content.toString(), Constants.UPDATE_OPERATE_TYPE); LambdaQueryChainWrapper<Device> wrapper = deviceService.lambdaQuery(); wrapper.eq(Device::getIsDelete,0); wrapper.eq(Device::getGuid,oldGuid); List<Device> list = wrapper.list(); list.forEach(it->it.setGuid(guid)); deviceService.updateBatchById(list); for(Device d : list){ Map<String, Object> deviceInfo = deviceService.selectDeviceInfoById(d.getId()); redisTemplate.opsForHash().delete(RedisConstants.DEVICE, d.getMac()); redisTemplate.opsForHash().put(RedisConstants.DEVICE, d.getMac(), deviceInfo); } LambdaQueryChainWrapper<Device> wrapper = deviceService.lambdaQuery(); wrapper.eq(Device::getIsDelete,0); wrapper.eq(Device::getGuid,oldGuid); List<Device> list = wrapper.list(); list.forEach(it->it.setGuid(guid)); deviceService.updateBatchById(list); govMonitorPoint.setGuid(guid); govMonitorPointMapper.updateById(govMonitorPoint); //删除redis delGovMonitorPointInfoFromRedis(id.toString()); //更新redis setGovMonitorPointInfoToRedis(id.toString(), selectGovMonitorPointInfoById(id)); //操作日志记录 HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); StringBuilder content = new StringBuilder(); content.append("修改了政府站点:").append("id:").append(govMonitorPoint.getId() + ";"); if (!ObjectUtils.isEmpty(govMonitorPoint.getGuid())) { content.append("guid:").append(oldGuid).append("->").append(guid).append(";"); } LogUtils.saveOperationForManage(request, content.toString(), Constants.UPDATE_OPERATE_TYPE); for(Device d : list){ executorService.submit(()->{ redisTemplate.opsForHash().delete(RedisConstants.DEVICE, d.getMac()); Map<String, Object> deviceInfo = deviceService.selectDeviceInfoById(d.getId()); redisTemplate.opsForHash().put(RedisConstants.DEVICE, d.getMac(), deviceInfo); }); } // 关闭线程池 executorService.shutdown(); } @Override screen-manage/src/main/java/com/moral/api/util/CacheUtils.java
@@ -17,6 +17,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import java.util.HashMap; import java.util.List; @@ -82,10 +83,21 @@ public static void refreshDeviceAlarmInfo() { //删除缓存 redisTemplate.delete(RedisConstants.DEVICE_INFO); refreshDeviceAlarmInfo(null); } public static void refreshDeviceAlarmInfo(String mac){ if(StringUtils.isEmpty(mac)){ //删除缓存 redisTemplate.delete(RedisConstants.DEVICE_INFO); }else { redisTemplate.opsForHash().delete(RedisConstants.DEVICE_INFO,mac); } //重新添加缓存 List<Device> devices = deviceMapper.queryDeviceUnitAlarmInfo(); List<Device> devices = deviceMapper.queryDeviceUnitAlarmInfo(mac); Map<String, SysDictData> unitMap = sysDictDataService.getDictDatasByType("unit"); //查询对应的单位名称以及转换公式 Map<String,Device> result = new HashMap<>(); @@ -132,6 +144,8 @@ redisTemplate.opsForHash().putAll(RedisConstants.DEVICE_INFO,result); } public static void refreshSpecialDeviceAlarmInfo() { //删除缓存 redisTemplate.delete(RedisConstants.SPECIAL_DEVICE_INFO); screen-manage/src/main/resources/mapper/DeviceMapper.xml
@@ -251,7 +251,10 @@ on d.`device_version_id` = oua.`version_id` and d.`organization_id` = oua.`organization_id` and oua.`is_delete` = 0 where d.`is_delete` = 0; d.`is_delete` = 0 <if test="mac != null and mac != '' "> and d.mac = #{mac} </if> </select>