Commit 0352dda469095b49555badf76fe33593a57c3974
1 parent
10da1e09
【代码优化】IOT: 优化一些 TODO
Showing
6 changed files
with
72 additions
and
75 deletions
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodel/model/dataType/ThinkModelArgument.java
| 1 | package cn.iocoder.yudao.module.iot.controller.admin.thinkmodel.model.dataType; | 1 | package cn.iocoder.yudao.module.iot.controller.admin.thinkmodel.model.dataType; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.module.iot.controller.admin.thinkmodel.model.ThinkModelProperty; | ||
| 3 | import lombok.Data; | 4 | import lombok.Data; |
| 4 | 5 | ||
| 5 | @Data | 6 | @Data |
| @@ -7,7 +8,10 @@ public class ThinkModelArgument { | @@ -7,7 +8,10 @@ public class ThinkModelArgument { | ||
| 7 | 8 | ||
| 8 | private String identifier; | 9 | private String identifier; |
| 9 | private String name; | 10 | private String name; |
| 10 | - private ThinkModelDataSpecs dataType; | 11 | + /** |
| 12 | + * 物模型中的属性 | ||
| 13 | + */ | ||
| 14 | + private ThinkModelProperty property; | ||
| 11 | /** | 15 | /** |
| 12 | * 用于区分输入或输出参数,"input" 或 "output" | 16 | * 用于区分输入或输出参数,"input" 或 "output" |
| 13 | */ | 17 | */ |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/device/IotDeviceDataDO.java
| @@ -32,7 +32,7 @@ public class IotDeviceDataDO { | @@ -32,7 +32,7 @@ public class IotDeviceDataDO { | ||
| 32 | * <p> | 32 | * <p> |
| 33 | * 关联 {@link IotProductThinkModelDO#getId()} | 33 | * 关联 {@link IotProductThinkModelDO#getId()} |
| 34 | */ | 34 | */ |
| 35 | - private Long thinkModelFunctionId; | 35 | + private Long thinkModelId; |
| 36 | 36 | ||
| 37 | /** | 37 | /** |
| 38 | * 产品标识 | 38 | * 产品标识 |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/tdengine/FieldParser.java
| @@ -35,19 +35,16 @@ public class FieldParser { | @@ -35,19 +35,16 @@ public class FieldParser { | ||
| 35 | */ | 35 | */ |
| 36 | public static TdFieldDO parse(ThinkModelProperty property) { | 36 | public static TdFieldDO parse(ThinkModelProperty property) { |
| 37 | String fieldName = property.getIdentifier().toLowerCase(); | 37 | String fieldName = property.getIdentifier().toLowerCase(); |
| 38 | - //// TODO @puhui999: 需要重构 | ||
| 39 | - //ThinkModelDataSpecs type = property.getDataType(); | ||
| 40 | - // | ||
| 41 | - //// 将物模型字段类型映射为td字段类型 | ||
| 42 | - //String fType = TYPE_MAPPING.get(type.getDataType().toUpperCase()); | ||
| 43 | - // | ||
| 44 | - //// 如果字段类型为NCHAR,默认长度为64 | ||
| 45 | - //int dataLength = 0; | ||
| 46 | - //if ("NCHAR".equals(fType)) { | ||
| 47 | - // dataLength = 64; | ||
| 48 | - //} | ||
| 49 | - //return new TdFieldDO(fieldName, fType, dataLength); | ||
| 50 | - return null; | 38 | + |
| 39 | + // 将物模型字段类型映射为td字段类型 | ||
| 40 | + String fType = TYPE_MAPPING.get(property.getDataType().toUpperCase()); | ||
| 41 | + | ||
| 42 | + // 如果字段类型为NCHAR,默认长度为64 | ||
| 43 | + int dataLength = 0; | ||
| 44 | + if ("NCHAR".equals(fType)) { | ||
| 45 | + dataLength = 64; | ||
| 46 | + } | ||
| 47 | + return new TdFieldDO(fieldName, fType, dataLength); | ||
| 51 | } | 48 | } |
| 52 | 49 | ||
| 53 | /** | 50 | /** |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceDataServiceImpl.java
| @@ -7,9 +7,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | @@ -7,9 +7,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 7 | import cn.iocoder.yudao.module.iot.controller.admin.device.vo.deviceData.IotDeviceDataPageReqVO; | 7 | import cn.iocoder.yudao.module.iot.controller.admin.device.vo.deviceData.IotDeviceDataPageReqVO; |
| 8 | import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO; | 8 | import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO; |
| 9 | import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDataDO; | 9 | import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDataDO; |
| 10 | -import cn.iocoder.yudao.module.iot.dal.dataobject.thinkmodel.IotProductThinkModelDO; | ||
| 11 | import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.SelectVisualDO; | 10 | import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.SelectVisualDO; |
| 12 | import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThinkModelMessage; | 11 | import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThinkModelMessage; |
| 12 | +import cn.iocoder.yudao.module.iot.dal.dataobject.thinkmodel.IotProductThinkModelDO; | ||
| 13 | import cn.iocoder.yudao.module.iot.dal.redis.deviceData.DeviceDataRedisDAO; | 13 | import cn.iocoder.yudao.module.iot.dal.redis.deviceData.DeviceDataRedisDAO; |
| 14 | import cn.iocoder.yudao.module.iot.dal.tdengine.TdEngineDMLMapper; | 14 | import cn.iocoder.yudao.module.iot.dal.tdengine.TdEngineDMLMapper; |
| 15 | import cn.iocoder.yudao.module.iot.enums.IotConstants; | 15 | import cn.iocoder.yudao.module.iot.enums.IotConstants; |
| @@ -28,6 +28,8 @@ import java.util.HashMap; | @@ -28,6 +28,8 @@ import java.util.HashMap; | ||
| 28 | import java.util.List; | 28 | import java.util.List; |
| 29 | import java.util.Map; | 29 | import java.util.Map; |
| 30 | 30 | ||
| 31 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList; | ||
| 32 | + | ||
| 31 | @Slf4j | 33 | @Slf4j |
| 32 | @Service | 34 | @Service |
| 33 | public class IotDeviceDataServiceImpl implements IotDeviceDataService { | 35 | public class IotDeviceDataServiceImpl implements IotDeviceDataService { |
| @@ -73,35 +75,31 @@ public class IotDeviceDataServiceImpl implements IotDeviceDataService { | @@ -73,35 +75,31 @@ public class IotDeviceDataServiceImpl implements IotDeviceDataService { | ||
| 73 | // 1. 获取设备信息 | 75 | // 1. 获取设备信息 |
| 74 | IotDeviceDO device = deviceService.getDevice(deviceDataReqVO.getDeviceId()); | 76 | IotDeviceDO device = deviceService.getDevice(deviceDataReqVO.getDeviceId()); |
| 75 | // 2. 获取设备属性最新数据 | 77 | // 2. 获取设备属性最新数据 |
| 76 | - List<IotProductThinkModelDO> thinkModelFunctionList = thinkModelFunctionService.getProductThinkModelListByProductKey(device.getProductKey()); | ||
| 77 | - thinkModelFunctionList = thinkModelFunctionList.stream() | ||
| 78 | - .filter(function -> IotProductThinkModelTypeEnum.PROPERTY.getType() | ||
| 79 | - .equals(function.getType())).toList(); | 78 | + List<IotProductThinkModelDO> thinkModelList = thinkModelFunctionService.getProductThinkModelListByProductKey(device.getProductKey()); |
| 79 | + thinkModelList = filterList(thinkModelList, thinkModel -> IotProductThinkModelTypeEnum.PROPERTY.getType() | ||
| 80 | + .equals(thinkModel.getType())); | ||
| 80 | 81 | ||
| 81 | // 3. 过滤标识符和属性名称 | 82 | // 3. 过滤标识符和属性名称 |
| 82 | if (deviceDataReqVO.getIdentifier() != null) { | 83 | if (deviceDataReqVO.getIdentifier() != null) { |
| 83 | - thinkModelFunctionList = thinkModelFunctionList.stream() | ||
| 84 | - .filter(function -> function.getIdentifier().toLowerCase().contains(deviceDataReqVO.getIdentifier().toLowerCase())) | ||
| 85 | - .toList(); | 84 | + thinkModelList = filterList(thinkModelList, thinkModel -> thinkModel.getIdentifier() |
| 85 | + .toLowerCase().contains(deviceDataReqVO.getIdentifier().toLowerCase())); | ||
| 86 | } | 86 | } |
| 87 | if (deviceDataReqVO.getName() != null) { | 87 | if (deviceDataReqVO.getName() != null) { |
| 88 | - thinkModelFunctionList = thinkModelFunctionList.stream() | ||
| 89 | - .filter(function -> function.getName().toLowerCase().contains(deviceDataReqVO.getName().toLowerCase())) | ||
| 90 | - .toList(); | 88 | + thinkModelList = filterList(thinkModelList, thinkModel -> thinkModel.getName() |
| 89 | + .toLowerCase().contains(deviceDataReqVO.getName().toLowerCase())); | ||
| 91 | } | 90 | } |
| 92 | // 4. 获取设备属性最新数据 | 91 | // 4. 获取设备属性最新数据 |
| 93 | - // TODO @puhui999: 需要重构 | ||
| 94 | - thinkModelFunctionList.forEach(function -> { | ||
| 95 | - IotDeviceDataDO deviceData = deviceDataRedisDAO.get(device.getProductKey(), device.getDeviceName(), function.getIdentifier()); | 92 | + thinkModelList.forEach(thinkModel -> { |
| 93 | + IotDeviceDataDO deviceData = deviceDataRedisDAO.get(device.getProductKey(), device.getDeviceName(), thinkModel.getIdentifier()); | ||
| 96 | if (deviceData == null) { | 94 | if (deviceData == null) { |
| 97 | deviceData = new IotDeviceDataDO(); | 95 | deviceData = new IotDeviceDataDO(); |
| 98 | deviceData.setProductKey(device.getProductKey()); | 96 | deviceData.setProductKey(device.getProductKey()); |
| 99 | deviceData.setDeviceName(device.getDeviceName()); | 97 | deviceData.setDeviceName(device.getDeviceName()); |
| 100 | - deviceData.setIdentifier(function.getIdentifier()); | 98 | + deviceData.setIdentifier(thinkModel.getIdentifier()); |
| 101 | deviceData.setDeviceId(deviceDataReqVO.getDeviceId()); | 99 | deviceData.setDeviceId(deviceDataReqVO.getDeviceId()); |
| 102 | - deviceData.setThinkModelFunctionId(function.getId()); | ||
| 103 | - deviceData.setName(function.getName()); | ||
| 104 | - //deviceData.setDataType(function.getProperty().getDataType().getDataType()); | 100 | + deviceData.setThinkModelId(thinkModel.getId()); |
| 101 | + deviceData.setName(thinkModel.getName()); | ||
| 102 | + deviceData.setDataType(thinkModel.getProperty().getDataType()); | ||
| 105 | } | 103 | } |
| 106 | list.add(deviceData); | 104 | list.add(deviceData); |
| 107 | }); | 105 | }); |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThinkModelMessageServiceImpl.java
| @@ -129,7 +129,6 @@ public class IotThinkModelMessageServiceImpl implements IotThinkModelMessageServ | @@ -129,7 +129,6 @@ public class IotThinkModelMessageServiceImpl implements IotThinkModelMessageServ | ||
| 129 | * @param time 时间 | 129 | * @param time 时间 |
| 130 | */ | 130 | */ |
| 131 | private void setDeviceDataCache(IotDeviceDO device, IotProductThinkModelDO iotProductThinkModelDO, Object val, Long time) { | 131 | private void setDeviceDataCache(IotDeviceDO device, IotProductThinkModelDO iotProductThinkModelDO, Object val, Long time) { |
| 132 | - // TODO @puhui999: 需要重构 | ||
| 133 | IotDeviceDataDO deviceData = IotDeviceDataDO.builder() | 132 | IotDeviceDataDO deviceData = IotDeviceDataDO.builder() |
| 134 | .productKey(device.getProductKey()) | 133 | .productKey(device.getProductKey()) |
| 135 | .deviceName(device.getDeviceName()) | 134 | .deviceName(device.getDeviceName()) |
| @@ -137,9 +136,9 @@ public class IotThinkModelMessageServiceImpl implements IotThinkModelMessageServ | @@ -137,9 +136,9 @@ public class IotThinkModelMessageServiceImpl implements IotThinkModelMessageServ | ||
| 137 | .value(val != null ? val.toString() : null) | 136 | .value(val != null ? val.toString() : null) |
| 138 | .updateTime(DateUtil.toLocalDateTime(new Date(time))) | 137 | .updateTime(DateUtil.toLocalDateTime(new Date(time))) |
| 139 | .deviceId(device.getId()) | 138 | .deviceId(device.getId()) |
| 140 | - .thinkModelFunctionId(iotProductThinkModelDO.getId()) | 139 | + .thinkModelId(iotProductThinkModelDO.getId()) |
| 141 | .name(iotProductThinkModelDO.getName()) | 140 | .name(iotProductThinkModelDO.getName()) |
| 142 | - //.dataType(iotProductThinkModelDO.getProperty().getDataType().getDataType()) | 141 | + .dataType(iotProductThinkModelDO.getProperty().getDataType()) |
| 143 | .build(); | 142 | .build(); |
| 144 | deviceDataRedisDAO.set(deviceData); | 143 | deviceDataRedisDAO.set(deviceData); |
| 145 | } | 144 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thinkmodel/IotProductThinkModelServiceImpl.java
| @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; | @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; | ||
| 4 | import cn.hutool.core.util.ObjectUtil; | 4 | import cn.hutool.core.util.ObjectUtil; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 6 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 7 | +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | ||
| 7 | import cn.iocoder.yudao.module.iot.controller.admin.thinkmodel.model.ThinkModelEvent; | 8 | import cn.iocoder.yudao.module.iot.controller.admin.thinkmodel.model.ThinkModelEvent; |
| 8 | import cn.iocoder.yudao.module.iot.controller.admin.thinkmodel.model.ThinkModelProperty; | 9 | import cn.iocoder.yudao.module.iot.controller.admin.thinkmodel.model.ThinkModelProperty; |
| 9 | import cn.iocoder.yudao.module.iot.controller.admin.thinkmodel.model.ThinkModelService; | 10 | import cn.iocoder.yudao.module.iot.controller.admin.thinkmodel.model.ThinkModelService; |
| @@ -17,6 +18,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO; | @@ -17,6 +18,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO; | ||
| 17 | import cn.iocoder.yudao.module.iot.dal.dataobject.thinkmodel.IotProductThinkModelDO; | 18 | import cn.iocoder.yudao.module.iot.dal.dataobject.thinkmodel.IotProductThinkModelDO; |
| 18 | import cn.iocoder.yudao.module.iot.dal.mysql.thinkmodel.IotProductThinkModelMapper; | 19 | import cn.iocoder.yudao.module.iot.dal.mysql.thinkmodel.IotProductThinkModelMapper; |
| 19 | import cn.iocoder.yudao.module.iot.enums.product.IotProductStatusEnum; | 20 | import cn.iocoder.yudao.module.iot.enums.product.IotProductStatusEnum; |
| 21 | +import cn.iocoder.yudao.module.iot.enums.thinkmodel.IotProductThinkModelAccessModeEnum; | ||
| 20 | import cn.iocoder.yudao.module.iot.enums.thinkmodel.IotProductThinkModelTypeEnum; | 22 | import cn.iocoder.yudao.module.iot.enums.thinkmodel.IotProductThinkModelTypeEnum; |
| 21 | import cn.iocoder.yudao.module.iot.service.product.IotProductService; | 23 | import cn.iocoder.yudao.module.iot.service.product.IotProductService; |
| 22 | import cn.iocoder.yudao.module.iot.service.tdengine.IotSuperTableService; | 24 | import cn.iocoder.yudao.module.iot.service.tdengine.IotSuperTableService; |
| @@ -72,7 +74,7 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | @@ -72,7 +74,7 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | ||
| 72 | 74 | ||
| 73 | // 6. 如果创建的是属性,需要更新默认的事件和服务 | 75 | // 6. 如果创建的是属性,需要更新默认的事件和服务 |
| 74 | if (Objects.equals(createReqVO.getType(), IotProductThinkModelTypeEnum.PROPERTY.getType())) { | 76 | if (Objects.equals(createReqVO.getType(), IotProductThinkModelTypeEnum.PROPERTY.getType())) { |
| 75 | - //createDefaultEventsAndServices(createReqVO.getProductId(), createReqVO.getProductKey()); | 77 | + createDefaultEventsAndServices(createReqVO.getProductId(), createReqVO.getProductKey()); |
| 76 | } | 78 | } |
| 77 | return function.getId(); | 79 | return function.getId(); |
| 78 | } | 80 | } |
| @@ -112,7 +114,7 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | @@ -112,7 +114,7 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | ||
| 112 | @Transactional(rollbackFor = Exception.class) | 114 | @Transactional(rollbackFor = Exception.class) |
| 113 | public void updateProductThinkModel(IotProductThinkModelSaveReqVO updateReqVO) { | 115 | public void updateProductThinkModel(IotProductThinkModelSaveReqVO updateReqVO) { |
| 114 | // 1. 校验功能是否存在 | 116 | // 1. 校验功能是否存在 |
| 115 | - validateproductThinkModelMapperExists(updateReqVO.getId()); | 117 | + validateProductThinkModelMapperExists(updateReqVO.getId()); |
| 116 | 118 | ||
| 117 | // 2. 校验功能标识符是否唯一 | 119 | // 2. 校验功能标识符是否唯一 |
| 118 | validateIdentifierUniqueForUpdate(updateReqVO.getId(), updateReqVO.getProductId(), updateReqVO.getIdentifier()); | 120 | validateIdentifierUniqueForUpdate(updateReqVO.getId(), updateReqVO.getProductId(), updateReqVO.getIdentifier()); |
| @@ -163,7 +165,7 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | @@ -163,7 +165,7 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | ||
| 163 | * | 165 | * |
| 164 | * @param id 功能编号 | 166 | * @param id 功能编号 |
| 165 | */ | 167 | */ |
| 166 | - private void validateproductThinkModelMapperExists(Long id) { | 168 | + private void validateProductThinkModelMapperExists(Long id) { |
| 167 | if (productThinkModelMapper.selectById(id) == null) { | 169 | if (productThinkModelMapper.selectById(id) == null) { |
| 168 | throw exception(THINK_MODEL_FUNCTION_NOT_EXISTS); | 170 | throw exception(THINK_MODEL_FUNCTION_NOT_EXISTS); |
| 169 | } | 171 | } |
| @@ -201,7 +203,6 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | @@ -201,7 +203,6 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | ||
| 201 | return productThinkModelMapper.selectListByProductKey(productKey); | 203 | return productThinkModelMapper.selectListByProductKey(productKey); |
| 202 | } | 204 | } |
| 203 | 205 | ||
| 204 | - // TODO @puhui999: 需要重构 | ||
| 205 | /** | 206 | /** |
| 206 | * 创建默认的事件和服务 | 207 | * 创建默认的事件和服务 |
| 207 | */ | 208 | */ |
| @@ -333,14 +334,12 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | @@ -333,14 +334,12 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | ||
| 333 | 334 | ||
| 334 | // 将属性列表转换为事件的输出参数 | 335 | // 将属性列表转换为事件的输出参数 |
| 335 | List<ThinkModelArgument> outputData = new ArrayList<>(); | 336 | List<ThinkModelArgument> outputData = new ArrayList<>(); |
| 336 | - // TODO @puhui999: 需要重构 | ||
| 337 | - for (IotProductThinkModelDO functionDO : propertyList) { | ||
| 338 | - ThinkModelProperty property = functionDO.getProperty(); | 337 | + for (IotProductThinkModelDO thinkModel : propertyList) { |
| 339 | ThinkModelArgument arg = new ThinkModelArgument() | 338 | ThinkModelArgument arg = new ThinkModelArgument() |
| 340 | - .setIdentifier(property.getIdentifier()) | ||
| 341 | - .setName(property.getName()) | ||
| 342 | - //.setDataType(property.getDataType()) | ||
| 343 | - .setDescription(property.getDescription()) | 339 | + .setIdentifier(thinkModel.getIdentifier()) |
| 340 | + .setName(thinkModel.getName()) | ||
| 341 | + .setProperty(thinkModel.getProperty()) | ||
| 342 | + .setDescription(thinkModel.getDescription()) | ||
| 344 | .setDirection("output"); // 设置为输出参数 | 343 | .setDirection("output"); // 设置为输出参数 |
| 345 | outputData.add(arg); | 344 | outputData.add(arg); |
| 346 | } | 345 | } |
| @@ -357,18 +356,17 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | @@ -357,18 +356,17 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | ||
| 357 | } | 356 | } |
| 358 | 357 | ||
| 359 | List<ThinkModelArgument> inputData = new ArrayList<>(); | 358 | List<ThinkModelArgument> inputData = new ArrayList<>(); |
| 360 | - // TODO @puhui999: 需要重构 | ||
| 361 | - for (IotProductThinkModelDO functionDO : propertyList) { | ||
| 362 | - ThinkModelProperty property = functionDO.getProperty(); | ||
| 363 | - //if (IotProductThinkModelAccessModeEnum.WRITE.getMode().equals(property.getAccessMode()) || IotProductThinkModelAccessModeEnum.READ_WRITE.getMode().equals(property.getAccessMode())) { | ||
| 364 | - // ThinkModelArgument arg = new ThinkModelArgument() | ||
| 365 | - // .setIdentifier(property.getIdentifier()) | ||
| 366 | - // .setName(property.getName()) | ||
| 367 | - // .setDataType(property.getDataType()) | ||
| 368 | - // .setDescription(property.getDescription()) | ||
| 369 | - // .setDirection("input"); // 设置为输入参数 | ||
| 370 | - // inputData.add(arg); | ||
| 371 | - //} | 359 | + for (IotProductThinkModelDO thinkModel : propertyList) { |
| 360 | + ThinkModelProperty property = thinkModel.getProperty(); | ||
| 361 | + if (IotProductThinkModelAccessModeEnum.READ_WRITE.getMode().equals(property.getAccessMode())) { | ||
| 362 | + ThinkModelArgument arg = new ThinkModelArgument() | ||
| 363 | + .setIdentifier(property.getIdentifier()) | ||
| 364 | + .setName(property.getName()) | ||
| 365 | + .setProperty(property) | ||
| 366 | + .setDescription(property.getDescription()) | ||
| 367 | + .setDirection("input"); // 设置为输入参数 | ||
| 368 | + inputData.add(arg); | ||
| 369 | + } | ||
| 372 | } | 370 | } |
| 373 | if (inputData.isEmpty()) { | 371 | if (inputData.isEmpty()) { |
| 374 | // 如果没有可写属性,不生成属性设置服务 | 372 | // 如果没有可写属性,不生成属性设置服务 |
| @@ -394,20 +392,20 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | @@ -394,20 +392,20 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | ||
| 394 | if (propertyList == null || propertyList.isEmpty()) { | 392 | if (propertyList == null || propertyList.isEmpty()) { |
| 395 | return null; | 393 | return null; |
| 396 | } | 394 | } |
| 397 | - // TODO @puhui999: 需要重构 | 395 | + |
| 398 | List<ThinkModelArgument> outputData = new ArrayList<>(); | 396 | List<ThinkModelArgument> outputData = new ArrayList<>(); |
| 399 | for (IotProductThinkModelDO functionDO : propertyList) { | 397 | for (IotProductThinkModelDO functionDO : propertyList) { |
| 400 | ThinkModelProperty property = functionDO.getProperty(); | 398 | ThinkModelProperty property = functionDO.getProperty(); |
| 401 | - //if (ObjectUtils.equalsAny(property.getAccessMode(), | ||
| 402 | - // IotProductThinkModelAccessModeEnum.READ.getMode(), IotProductThinkModelAccessModeEnum.READ_WRITE.getMode())) { | ||
| 403 | - // ThinkModelArgument arg = new ThinkModelArgument() | ||
| 404 | - // .setIdentifier(property.getIdentifier()) | ||
| 405 | - // .setName(property.getName()) | ||
| 406 | - // .setDataType(property.getDataType()) | ||
| 407 | - // .setDescription(property.getDescription()) | ||
| 408 | - // .setDirection("output"); // 设置为输出参数 | ||
| 409 | - // outputData.add(arg); | ||
| 410 | - //} | 399 | + if (ObjectUtils.equalsAny(property.getAccessMode(), |
| 400 | + IotProductThinkModelAccessModeEnum.READ_ONLY.getMode(), IotProductThinkModelAccessModeEnum.READ_WRITE.getMode())) { | ||
| 401 | + ThinkModelArgument arg = new ThinkModelArgument() | ||
| 402 | + .setIdentifier(property.getIdentifier()) | ||
| 403 | + .setName(property.getName()) | ||
| 404 | + .setProperty(property) | ||
| 405 | + .setDescription(property.getDescription()) | ||
| 406 | + .setDirection("output"); // 设置为输出参数 | ||
| 407 | + outputData.add(arg); | ||
| 408 | + } | ||
| 411 | } | 409 | } |
| 412 | if (outputData.isEmpty()) { | 410 | if (outputData.isEmpty()) { |
| 413 | // 如果没有可读属性,不生成属性获取服务 | 411 | // 如果没有可读属性,不生成属性获取服务 |
| @@ -428,15 +426,16 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | @@ -428,15 +426,16 @@ public class IotProductThinkModelServiceImpl implements IotProductThinkModelServ | ||
| 428 | .setDescription("需要获取的属性标识符列表") | 426 | .setDescription("需要获取的属性标识符列表") |
| 429 | .setDirection("input"); // 设置为输入参数 | 427 | .setDirection("input"); // 设置为输入参数 |
| 430 | 428 | ||
| 431 | - // 创建数组类型,元素类型为文本类型(字符串) | 429 | + // 创建数组类型,元素类型为文本类型(字符串)TODO @puhui999: 还得研究研究 |
| 432 | ThinkModelArrayDataSpecs arrayType = new ThinkModelArrayDataSpecs(); | 430 | ThinkModelArrayDataSpecs arrayType = new ThinkModelArrayDataSpecs(); |
| 433 | arrayType.setDataType("array"); | 431 | arrayType.setDataType("array"); |
| 434 | - //ThinkModelArraySpecs arraySpecs = new ThinkModelArraySpecs(); | 432 | + inputArg.setProperty(new ThinkModelProperty().setIdentifier(inputArg.getIdentifier()).setName(inputArg.getName()) |
| 433 | + .setDescription(inputArg.getDescription()).setDataSpecs(arrayType)); | ||
| 434 | + | ||
| 435 | ThinkModelDateOrTextDataSpecs textType = new ThinkModelDateOrTextDataSpecs(); | 435 | ThinkModelDateOrTextDataSpecs textType = new ThinkModelDateOrTextDataSpecs(); |
| 436 | textType.setDataType("text"); | 436 | textType.setDataType("text"); |
| 437 | - //arraySpecs.setItem(textType); | ||
| 438 | - //arrayType.setSpecs(arraySpecs); | ||
| 439 | - inputArg.setDataType(arrayType); | 437 | + inputArg.setProperty(new ThinkModelProperty().setIdentifier(inputArg.getIdentifier()).setName(inputArg.getName()) |
| 438 | + .setDescription(inputArg.getDescription()).setDataSpecs(textType)); | ||
| 440 | 439 | ||
| 441 | service.setInputData(Collections.singletonList(inputArg)); | 440 | service.setInputData(Collections.singletonList(inputArg)); |
| 442 | service.setOutputData(outputData); | 441 | service.setOutputData(outputData); |