sgj
2026-03-26 26220601f74874186865626c051ea08373ea44bb
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GatewaySerService.java
@@ -12,6 +12,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.service.ISysDeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
@@ -52,6 +53,7 @@
        if (StringUtils.isNotBlank(parentId)) {
            queryWrapper.likeRight("dept_id", parentId);
        }
        queryWrapper.orderByAsc("order_num");
        return gatewaySerMapper.selectList(queryWrapper);
    }
@@ -99,22 +101,52 @@
        if (StringUtils.isEmpty(ser.getCompanyId())) {
            ser.setCompanyId(ContextUtil.getCompanyId());
        }
        if (StringUtils.isEmpty(ser.getDeptId())) {
            ser.setDeptId(ContextUtil.subDeptId(null));
        //判断接口路径
        if (StringUtils.isEmpty(ser.getPlateNumUrl())) {
            ser.setPlateNumUrl("/open/api/get-plateNum");
        }
        if (StringUtils.isBlank(ser.getUpdateBy())) {
        if (StringUtils.isEmpty(ser.getPlayUrl())) {
            ser.setPlayUrl("/open/api/get-media");
        }
        if (StringUtils.isEmpty(ser.getSnapUrl())) {
            ser.setSnapUrl("/open/api/snap-img");
        }
        if (StringUtils.isEmpty(ser.getPtzUrl())) {
            ser.setPtzUrl("/open/api/ptz-media");
        }
        ser.setUpdateBy(ContextUtil.getLoginUserName());
        ser.setUpdateTime(new Date());
        if (StringUtils.isBlank(ser.getCreateBy())) {
            ser.setCreateBy(ContextUtil.getLoginUserName());
            ser.setCreateTime(new Date());
            ser.setUpdateBy(ContextUtil.getLoginUserName());
            ser.setUpdateTime(new Date());
            gatewaySerMapper.insert(ser);
        } else {
            ser.setUpdateBy(ContextUtil.getLoginUserName());
            ser.setUpdateTime(new Date());
            gatewaySerMapper.updateById(ser);
        }
        refreshCache(ser.getCompanyId());
    }
    /**
     * 异步更新网关状态
     * @param ser  信息
     * @param status  状态
     * @param isUpdateTime  是否更新心跳时间
     */
    @Async
    public void updateStatus(GatewaySer ser, String status, boolean isUpdateTime) {
        if(isUpdateTime){
            //心跳时间
            ser.setUpdateTime(new Date());
        }
        ser.setStatus(status);
        gatewaySerMapper.updateById(ser);
        setCacheSer(ser);
    }
    /**
@@ -127,35 +159,58 @@
        //删除缓存
        delCache(ser);
    }
    /**
     * 获取组织下所有网关信息
     * @param companyId
     * @return
     */
    public List<GatewaySer> getCacheSer(String companyId) {
        if (StringUtils.isEmpty(companyId)) {
            companyId = ContextUtil.getCompanyId();
        }
        List<GatewaySer> result = new ArrayList<>();
        String patten = RedisConst.buildKey(companyId, RedisConst.KEY_GATEWAY_SER_LIST) + "*";
        Collection<String> keys = redisCache.keys(patten);
        if (null != keys) {
            for (String key : keys) {
                result.add((GatewaySer) redisCache.getCacheObject(key));
            }
        }
        if(result.isEmpty()){
            result = getAllSer();
            this.setCacheSer(result);
        }
        return result;
    }
    /**
     * 根据分机ID获取分机信息
     *
     * @param companyId
     * @param deptId
     * @return
     */
    public List<GatewaySer> getCacheSerByDeptId(String companyId, String deptId) {
    public GatewaySer getCacheSerByDeptId(String deptId) {
        if (StringUtils.isEmpty(deptId)) {
            return null;
        }
        if (StringUtils.isEmpty(companyId)) {
            companyId = ContextUtil.getCompanyId();
        }
        String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST, deptId) + "*";
        String patten = RedisConst.buildKey(ContextUtil.getCompanyId(), RedisConst.KEY_GATEWAY_SER_LIST) + "*";
        Collection<String> keys = redisCache.keys(patten);
        if (null == keys) {
            return null;
        }
        List<GatewaySer> list = new ArrayList<>();
        GatewaySer ser = null;
        for (String key : keys) {
            list.add((GatewaySer) redisCache.getCacheObject(key));
            ser = (GatewaySer) redisCache.getCacheObject(key);
            if(deptId.equals(ser.getDeptId())){
                return ser;
            }
        }
        return list;
        return null;
    }
    /**
@@ -172,27 +227,27 @@
        if (StringUtils.isEmpty(companyId)) {
            companyId = ContextUtil.getCompanyId();
        }
        String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST) + "*";
        Collection<String> keys = redisCache.keys(patten);
        if (null == keys) {
            return null;
        }
        List<GatewaySer> list = new ArrayList<>();
        GatewaySer result = null;
        GatewaySer ser = null;
        for (String key : keys) {
            ser = (GatewaySer) redisCache.getCacheObject(key);
            if(id.equals(ser.getId())){
                break;
        String patten = RedisConst.buildKey(companyId, RedisConst.KEY_GATEWAY_SER_LIST) + "*";
        Collection<String> keys = redisCache.keys(patten);
        if (null != keys && !keys.isEmpty()) {
            for (String key : keys) {
                ser = (GatewaySer) redisCache.getCacheObject(key);
                if(id.equals(ser.getId())){
                    result = ser;
                    break;
                }
            }
        }
        if(null == ser){
            ser = getById(id);
            this.setCacheSer(ser);
        if(null == result){
            result = getById(id);
            this.setCacheSer(result);
        }
        return ser;
        return result;
    }
    /**