【代码优化】IOT: ThingModel 评审优化

This commit is contained in:
puhui999 2024-12-20 10:18:02 +08:00
parent b2434b7b41
commit 767a26dd70
4 changed files with 13 additions and 27 deletions

View File

@ -5,7 +5,8 @@ import cn.iocoder.yudao.module.iot.controller.admin.thingmodel.model.ThingModelR
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
/** /**
* FieldParser 类用于解析和转换物模型字段到 TDengine 字段 * FieldParser 类用于解析和转换物模型字段到 TDengine 字段
@ -52,10 +53,7 @@ public class FieldParser {
* @return 字段列表 * @return 字段列表
*/ */
public static List<TdFieldDO> parse(ThingModelRespVO thingModel) { public static List<TdFieldDO> parse(ThingModelRespVO thingModel) {
// TODO @puhui999是不是使用 convertList return convertList(thingModel.getModel().getProperties(), FieldParser::parse);
return thingModel.getModel().getProperties().stream()
.map(FieldParser::parse)
.collect(Collectors.toList());
} }
/** /**
@ -65,13 +63,12 @@ public class FieldParser {
* @return 转换后的 TDengine 字段对象列表 * @return 转换后的 TDengine 字段对象列表
*/ */
public static List<TdFieldDO> parse(List<List<Object>> rows) { public static List<TdFieldDO> parse(List<List<Object>> rows) {
// TODO @puhui999是不是使用 convertList return convertList(rows, row -> {
return rows.stream().map(row -> {
String type = row.get(1).toString().toUpperCase(); String type = row.get(1).toString().toUpperCase();
// TODO @puhui999"NCHAR" 最好枚举下 // TODO @puhui999"NCHAR" 最好枚举下
int dataLength = "NCHAR".equals(type) ? Integer.parseInt(row.get(2).toString()) : -1; int dataLength = "NCHAR".equals(type) ? Integer.parseInt(row.get(2).toString()) : -1;
return new TdFieldDO(row.get(0).toString(), type, dataLength); return new TdFieldDO(row.get(0).toString(), type, dataLength);
}).collect(Collectors.toList()); });
} }
/** /**

View File

@ -122,7 +122,7 @@ public class IotProductServiceImpl implements IotProductService {
thingModelFunctionService.createSuperTableDataModel(id); thingModelFunctionService.createSuperTableDataModel(id);
// 3.2 创建物模型日志超级表数据模型 // 3.2 创建物模型日志超级表数据模型
thingModelMessageService.createSuperTable(id); thingModelMessageService.createSuperTable(id);
}x }
productMapper.updateById(updateObj); productMapper.updateById(updateObj);
} }

View File

@ -7,13 +7,9 @@ import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceStatusUpdateReqVO; import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceStatusUpdateReqVO;
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.device.IotDeviceDataDO; import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDataDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.FieldParser;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.TdFieldDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.TdTableDO;
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.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.thingmodel.IotProductThingModelDO;
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;
@ -22,8 +18,8 @@ import cn.iocoder.yudao.module.iot.enums.IotConstants;
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum; import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum;
import cn.iocoder.yudao.module.iot.enums.thingmodel.IotProductThingModelTypeEnum; 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.product.IotProductService; import cn.iocoder.yudao.module.iot.service.product.IotProductService;
import cn.iocoder.yudao.module.iot.service.thingmodel.IotProductThingModelService;
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;
@ -132,12 +128,8 @@ public class IotThingModelMessageServiceImpl implements IotThingModelMessageServ
} }
private List<IotProductThingModelDO> getValidFunctionList(String productKey) { private List<IotProductThingModelDO> getValidFunctionList(String productKey) {
// TODO @puhui999使用 convertList 会好点哈 return filterList(iotProductThingModelService.getProductThingModelListByProductKey(productKey),
return iotProductThingModelService thingModel -> IotProductThingModelTypeEnum.PROPERTY.getType().equals(thingModel.getType()));
.getProductThingModelListByProductKey(productKey)
.stream()
.filter(function -> IotProductThingModelTypeEnum.PROPERTY.getType().equals(function.getType()))
.toList();
} }
private List<TdFieldDO> filterAndCollectValidFields(Map<String, Object> params, List<IotProductThingModelDO> thingModelList, IotDeviceDO device, Long time) { private List<TdFieldDO> filterAndCollectValidFields(Map<String, Object> params, List<IotProductThingModelDO> thingModelList, IotDeviceDO device, Long time) {
@ -235,7 +227,6 @@ public class IotThingModelMessageServiceImpl implements IotThingModelMessageServ
* @param productKey 产品 Key * @param productKey 产品 Key
* @param deviceName 设备名称 * @param deviceName 设备名称
* @param deviceKey 设备 Key * @param deviceKey 设备 Key
*
*/ */
private void createThinkModelMessageDeviceTable(String productKey, String deviceName, String deviceKey) { private void createThinkModelMessageDeviceTable(String productKey, String deviceName, String deviceKey) {

View File

@ -29,10 +29,10 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*;
/** /**
@ -261,9 +261,7 @@ public class IotProductThingModelServiceImpl implements IotProductThingModelServ
} }
}); });
// 过滤掉没有设置 ID 的对象 // 过滤掉没有设置 ID 的对象
List<IotProductThingModelDO> validUpdateList = updateList.stream() List<IotProductThingModelDO> validUpdateList = filterList(updateList, thingModel -> thingModel.getId() != null);
.filter(func -> func.getId() != null)
.collect(Collectors.toList());
// 执行批量更新 // 执行批量更新
if (CollUtil.isNotEmpty(validUpdateList)) { if (CollUtil.isNotEmpty(validUpdateList)) {
productThingModelMapper.updateBatch(validUpdateList); productThingModelMapper.updateBatch(validUpdateList);