【功能修复】IoT:插件还是考虑支持多租户,因此需要忽略部分场景下的租户,避免报错
This commit is contained in:
parent
8fac009d4b
commit
795e06bc8f
|
@ -1,9 +1,8 @@
|
||||||
package cn.iocoder.yudao.module.iot.dal.dataobject.plugin;
|
package cn.iocoder.yudao.module.iot.dal.dataobject.plugin;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
|
||||||
import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginDeployTypeEnum;
|
import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginDeployTypeEnum;
|
||||||
import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginStatusEnum;
|
|
||||||
import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginTypeEnum;
|
import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginTypeEnum;
|
||||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
@ -23,7 +22,7 @@ import lombok.*;
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class IotPluginConfigDO extends BaseDO {
|
public class IotPluginConfigDO extends TenantBaseDO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主键 ID
|
* 主键 ID
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package cn.iocoder.yudao.module.iot.dal.dataobject.plugin;
|
package cn.iocoder.yudao.module.iot.dal.dataobject.plugin;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
|
||||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
@ -21,7 +21,7 @@ import java.time.LocalDateTime;
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class IotPluginInstanceDO extends BaseDO {
|
public class IotPluginInstanceDO extends TenantBaseDO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主键
|
* 主键
|
||||||
|
|
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.iot.job.plugin;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
|
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
|
||||||
|
import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
|
||||||
import cn.iocoder.yudao.module.iot.service.plugin.IotPluginInstanceService;
|
import cn.iocoder.yudao.module.iot.service.plugin.IotPluginInstanceService;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@ -28,6 +29,7 @@ public class IotPluginInstancesJob implements JobHandler {
|
||||||
private IotPluginInstanceService pluginInstanceService;
|
private IotPluginInstanceService pluginInstanceService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@TenantJob
|
||||||
public String execute(String param) {
|
public String execute(String param) {
|
||||||
int count = pluginInstanceService.offlineTimeoutPluginInstance(
|
int count = pluginInstanceService.offlineTimeoutPluginInstance(
|
||||||
LocalDateTime.now().minus(OFFLINE_TIMEOUT));
|
LocalDateTime.now().minus(OFFLINE_TIMEOUT));
|
||||||
|
|
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.service.plugin;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
|
||||||
import cn.iocoder.yudao.module.iot.api.device.dto.control.upstream.IotPluginInstanceHeartbeatReqDTO;
|
import cn.iocoder.yudao.module.iot.api.device.dto.control.upstream.IotPluginInstanceHeartbeatReqDTO;
|
||||||
import cn.iocoder.yudao.module.iot.dal.dataobject.plugin.IotPluginConfigDO;
|
import cn.iocoder.yudao.module.iot.dal.dataobject.plugin.IotPluginConfigDO;
|
||||||
import cn.iocoder.yudao.module.iot.dal.dataobject.plugin.IotPluginInstanceDO;
|
import cn.iocoder.yudao.module.iot.dal.dataobject.plugin.IotPluginInstanceDO;
|
||||||
|
@ -62,7 +63,8 @@ public class IotPluginInstanceServiceImpl implements IotPluginInstanceService {
|
||||||
@Override
|
@Override
|
||||||
public void heartbeatPluginInstance(IotPluginInstanceHeartbeatReqDTO heartbeatReqDTO) {
|
public void heartbeatPluginInstance(IotPluginInstanceHeartbeatReqDTO heartbeatReqDTO) {
|
||||||
// 情况一:已存在,则进行更新
|
// 情况一:已存在,则进行更新
|
||||||
IotPluginInstanceDO instance = pluginInstanceMapper.selectByProcessId(heartbeatReqDTO.getProcessId());
|
IotPluginInstanceDO instance = TenantUtils.executeIgnore(
|
||||||
|
() -> pluginInstanceMapper.selectByProcessId(heartbeatReqDTO.getProcessId()));
|
||||||
if (instance != null) {
|
if (instance != null) {
|
||||||
IotPluginInstanceDO.IotPluginInstanceDOBuilder updateObj = IotPluginInstanceDO.builder().id(instance.getId())
|
IotPluginInstanceDO.IotPluginInstanceDOBuilder updateObj = IotPluginInstanceDO.builder().id(instance.getId())
|
||||||
.hostIp(heartbeatReqDTO.getHostIp()).downstreamPort(heartbeatReqDTO.getDownstreamPort())
|
.hostIp(heartbeatReqDTO.getHostIp()).downstreamPort(heartbeatReqDTO.getDownstreamPort())
|
||||||
|
@ -74,12 +76,14 @@ public class IotPluginInstanceServiceImpl implements IotPluginInstanceService {
|
||||||
} else {
|
} else {
|
||||||
updateObj.offlineTime(LocalDateTime.now());
|
updateObj.offlineTime(LocalDateTime.now());
|
||||||
}
|
}
|
||||||
pluginInstanceMapper.updateById(updateObj.build());
|
TenantUtils.execute(instance.getTenantId(),
|
||||||
|
() -> pluginInstanceMapper.updateById(updateObj.build()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 情况二:不存在,则创建
|
// 情况二:不存在,则创建
|
||||||
IotPluginConfigDO info = pluginConfigService.getPluginConfigByPluginKey(heartbeatReqDTO.getPluginKey());
|
IotPluginConfigDO info = TenantUtils.executeIgnore(
|
||||||
|
() -> pluginConfigService.getPluginConfigByPluginKey(heartbeatReqDTO.getPluginKey()));
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
log.error("[heartbeatPluginInstance][心跳({}) 对应的插件不存在]", heartbeatReqDTO);
|
log.error("[heartbeatPluginInstance][心跳({}) 对应的插件不存在]", heartbeatReqDTO);
|
||||||
return;
|
return;
|
||||||
|
@ -93,7 +97,8 @@ public class IotPluginInstanceServiceImpl implements IotPluginInstanceService {
|
||||||
} else {
|
} else {
|
||||||
insertObj.offlineTime(LocalDateTime.now());
|
insertObj.offlineTime(LocalDateTime.now());
|
||||||
}
|
}
|
||||||
pluginInstanceMapper.insert(insertObj.build());
|
TenantUtils.execute(info.getTenantId(),
|
||||||
|
() -> pluginInstanceMapper.insert(insertObj.build()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue