【代码评审】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 cn.iocoder.yudao.module.iot.enums.product.IotProductDeviceTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Schema(description = "管理后台 - IoT 设备分页 Request VO") @Schema(description = "管理后台 - IoT 设备分页 Request VO")
@Data @Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class IotDevicePageReqVO extends PageParam { public class IotDevicePageReqVO extends PageParam {
@Schema(description = "设备名称", example = "王五") @Schema(description = "设备名称", example = "王五")

View File

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

View File

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

View File

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