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