cjl
2023-09-21 508efaad8b2e23a046c36594a9d16b372ea58a26
feat:添加测试更新guid
5 files modified
98 ■■■■■ changed files
screen-manage/src/main/java/com/moral/api/mapper/DeviceMapper.java 5 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java 8 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java 60 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/util/CacheUtils.java 20 ●●●● patch | view | raw | blame | history
screen-manage/src/main/resources/mapper/DeviceMapper.xml 5 ●●●● patch | view | raw | blame | history
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>