【代码评审】IoT:评审 ThingModel 的实现

This commit is contained in:
YunaiV 2024-12-19 21:12:07 +08:00
parent 92de5b1f09
commit 95067fd6c6
6 changed files with 16 additions and 21 deletions

View File

@ -6,13 +6,9 @@ import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum;
import cn.iocoder.yudao.module.iot.enums.product.IotProductDeviceTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Schema(description = "管理后台 - IoT 设备分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class IotDevicePageReqVO extends PageParam {
@Schema(description = "设备名称", example = "王五")

View File

@ -1,13 +1,12 @@
package cn.iocoder.yudao.module.iot.controller.admin.thingmodel.model.dataType;
import cn.iocoder.yudao.module.iot.controller.admin.thingmodel.model.ThingModelProperty;
import cn.iocoder.yudao.module.iot.controller.admin.thinkmodel.model.ThinkModelProperty;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class ThinkModelArgument {
public class ThingModelArgument {
public static final String DIRECTION_INPUT = "input";
public static final String DIRECTION_OUTPUT = "output";

View File

@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.iot.dal.tdengine;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.TdTableDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThinkModelMessageDO;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Mapper;

View File

@ -7,8 +7,8 @@ import cn.iocoder.yudao.module.iot.controller.admin.product.vo.product.IotProduc
import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
import cn.iocoder.yudao.module.iot.dal.mysql.product.IotProductMapper;
import cn.iocoder.yudao.module.iot.enums.product.IotProductStatusEnum;
import cn.iocoder.yudao.module.iot.service.tdengine.IotThinkModelMessageService;
import cn.iocoder.yudao.module.iot.service.thinkmodel.IotProductThinkModelService;
import cn.iocoder.yudao.module.iot.service.tdengine.IotThingModelMessageService;
import cn.iocoder.yudao.module.iot.service.thingmodel.IotProductThingModelService;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@ -35,10 +35,10 @@ public class IotProductServiceImpl implements IotProductService {
@Resource
@Lazy // 延迟加载解决循环依赖
private IotProductThinkModelService thinkModelFunctionService;
private IotProductThingModelService thingModelFunctionService;
@Resource
@Lazy // 延迟加载解决循环依赖
private IotThinkModelMessageService thinkModelMessageService;
private IotThingModelMessageService thingModelMessageService;
@Override
public Long createProduct(IotProductSaveReqVO createReqVO) {
@ -119,9 +119,9 @@ public class IotProductServiceImpl implements IotProductService {
// 3. 产品是发布状态
if (Objects.equals(status, IotProductStatusEnum.PUBLISHED.getStatus())) {
// 3.1 创建产品超级表数据模型
thinkModelFunctionService.createSuperTableDataModel(id);
thingModelFunctionService.createSuperTableDataModel(id);
// 3.2 创建物模型日志超级表数据模型
thinkModelMessageService.createSuperTable(id);
thingModelMessageService.createSuperTable(id);
}
productMapper.updateById(updateObj);
}

View File

@ -1,7 +1,7 @@
package cn.iocoder.yudao.module.iot.service.tdengine;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThinkModelMessage;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
/**
* 物模型消息 Service
@ -14,7 +14,7 @@ public interface IotThingModelMessageService {
* @param device 设备
* @param thingModelMessage 物模型消息
*/
void saveThinkModelMessage(IotDeviceDO device, ThinkModelMessage thingModelMessage);
void saveThingModelMessage(IotDeviceDO device, ThingModelMessage thingModelMessage);
/**
* 创建物模型消息日志超级表

View File

@ -14,7 +14,6 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
import cn.iocoder.yudao.module.iot.dal.dataobject.thingmodel.IotProductThingModelDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.*;
import cn.iocoder.yudao.module.iot.dal.dataobject.thinkmodel.IotProductThinkModelDO;
import cn.iocoder.yudao.module.iot.dal.redis.deviceData.DeviceDataRedisDAO;
import cn.iocoder.yudao.module.iot.dal.tdengine.TdEngineDDLMapper;
import cn.iocoder.yudao.module.iot.dal.tdengine.TdEngineDMLMapper;
@ -25,7 +24,6 @@ import cn.iocoder.yudao.module.iot.enums.thingmodel.IotProductThingModelTypeEnum
import cn.iocoder.yudao.module.iot.service.device.IotDeviceService;
import cn.iocoder.yudao.module.iot.service.thingmodel.IotProductThingModelService;
import cn.iocoder.yudao.module.iot.service.product.IotProductService;
import cn.iocoder.yudao.module.iot.service.thinkmodel.IotProductThinkModelService;
import cn.iocoder.yudao.module.iot.util.IotTdDatabaseUtils;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@ -112,6 +110,8 @@ public class IotThingModelMessageServiceImpl implements IotThingModelMessageServ
private List<IotProductThingModelDO> getValidThingModelList(String productKey) {
return filterList(iotProductThingModelService.getProductThingModelListByProductKey(productKey),
thingModel -> IotProductThingModelTypeEnum.PROPERTY.getType().equals(thingModel.getType()));
}
@Override
@TenantIgnore
public void createSuperTable(Long productId) {
@ -128,11 +128,12 @@ public class IotThingModelMessageServiceImpl implements IotThingModelMessageServ
.setSuperTableName(superTableName));
}
private List<IotProductThinkModelDO> getValidFunctionList(String productKey) {
return iotProductThinkModelService
.getProductThinkModelListByProductKey(productKey)
private List<IotProductThingModelDO> getValidFunctionList(String productKey) {
// TODO @puhui999使用 convertList 会好点哈
return iotProductThingModelService
.getProductThingModelListByProductKey(productKey)
.stream()
.filter(function -> IotProductThinkModelTypeEnum.PROPERTY.getType().equals(function.getType()))
.filter(function -> IotProductThingModelTypeEnum.PROPERTY.getType().equals(function.getType()))
.toList();
}