【代码评审】IoT:评审 ThingModel 的实现
This commit is contained in:
parent
92de5b1f09
commit
95067fd6c6
|
@ -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 = "王五")
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建物模型消息日志超级表
|
* 创建物模型消息日志超级表
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue