From b4288bc39397f9de68d3f3ada18bc7fe5435ab5e Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 26 Dec 2024 13:56:38 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E3=80=91IoT=EF=BC=9AThingModel=20=E7=BB=B4=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thingmodel/model/ThingModelEvent.java | 7 +- .../thingmodel/model/ThingModelService.java | 7 +- .../IotProductThingModelServiceImpl.java | 73 ++++++++++--------- 3 files changed, 41 insertions(+), 46 deletions(-) diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelEvent.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelEvent.java index f49f5f86e6..f6b45deb5f 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelEvent.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelEvent.java @@ -22,16 +22,13 @@ public class ThingModelEvent { */ private String name; /** - * 是否是标准品类的必选事件。 - * - * - true:是 - * - false:否 + * 是否是标准品类的必选事件 */ private Boolean required; /** * 事件类型 * - * 关联枚举 {@link IotProductThingModelServiceEventTypeEnum} + * 枚举 {@link IotProductThingModelServiceEventTypeEnum} */ private String type; /** diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelService.java index 0bdf498d3c..95a7029995 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelService.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelService.java @@ -22,16 +22,13 @@ public class ThingModelService { */ private String name; /** - * 是否是标准品类的必选服务。 - * - * - true:是 - * - false:否 + * 是否是标准品类的必选服务 */ private Boolean required; /** * 调用类型 * - * 关联枚举 {@link IotProductThingModelServiceCallTypeEnum} + * 枚举 {@link IotProductThingModelServiceCallTypeEnum} */ private String callType; /** diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thingmodel/IotProductThingModelServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thingmodel/IotProductThingModelServiceImpl.java index 3dc5790a5e..9e20a710b0 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thingmodel/IotProductThingModelServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thingmodel/IotProductThingModelServiceImpl.java @@ -185,43 +185,44 @@ public class IotProductThingModelServiceImpl implements IotProductThingModelServ */ public void createDefaultEventsAndServices(Long productId, String productKey) { // 1. 获取当前属性列表 - List propertyList = productThingModelMapper + List properties = productThingModelMapper .selectListByProductIdAndType(productId, IotProductThingModelTypeEnum.PROPERTY.getType()); // 2. 生成新的事件和服务列表 - List newThingModelList = new ArrayList<>(); + List newThingModels = new ArrayList<>(); // 2.1 生成属性上报事件 - ThingModelEvent propertyPostEvent = generatePropertyPostEvent(propertyList); + ThingModelEvent propertyPostEvent = generatePropertyPostEvent(properties); if (propertyPostEvent != null) { - newThingModelList.add(buildEventThingModelDO(productId, productKey, propertyPostEvent, "属性上报事件")); + newThingModels.add(buildEventThingModelDO(productId, productKey, propertyPostEvent, "属性上报事件")); } // 2.2 生成属性设置服务 - ThingModelService propertySetService = generatePropertySetService(propertyList); + ThingModelService propertySetService = generatePropertySetService(properties); if (propertySetService != null) { - newThingModelList.add(buildServiceThingModelDO(productId, productKey, propertySetService, "属性设置服务")); + newThingModels.add(buildServiceThingModelDO(productId, productKey, propertySetService, "属性设置服务")); } // 2.3 生成属性获取服务 - ThingModelService propertyGetService = generatePropertyGetService(propertyList); + ThingModelService propertyGetService = generatePropertyGetService(properties); if (propertyGetService != null) { - newThingModelList.add(buildServiceThingModelDO(productId, productKey, propertyGetService,"属性获取服务")); + newThingModels.add(buildServiceThingModelDO(productId, productKey, propertyGetService,"属性获取服务")); } // 3.1 获取数据库中的默认的旧事件和服务列表 - List oldThingModelList = productThingModelMapper.selectListByProductIdAndIdentifiersAndTypes( + List oldThingModels = productThingModelMapper.selectListByProductIdAndIdentifiersAndTypes( productId, Arrays.asList("post", "set", "get"), Arrays.asList(IotProductThingModelTypeEnum.EVENT.getType(), IotProductThingModelTypeEnum.SERVICE.getType()) ); // 3.2 创建默认的事件和服务 - createDefaultEventsAndServices(oldThingModelList, newThingModelList); + createDefaultEventsAndServices(oldThingModels, newThingModels); } /** * 创建默认的事件和服务 */ - private void createDefaultEventsAndServices(List oldThingModelList, List newThingModelList) { - // 1.1 使用 diffList 方法比较新旧列表 - List> diffResult = diffList(oldThingModelList, newThingModelList, + private void createDefaultEventsAndServices(List oldThingModels, + List newThingModels) { + // 使用 diffList 方法比较新旧列表 + List> diffResult = diffList(oldThingModels, newThingModels, (oldVal, newVal) -> { // 继续使用 identifier 和 type 进行比较:这样可以准确地匹配对应的功能对象。 boolean same = Objects.equals(oldVal.getIdentifier(), newVal.getIdentifier()) @@ -231,7 +232,7 @@ public class IotProductThingModelServiceImpl implements IotProductThingModelServ } return same; }); - // 1.2 批量添加、修改、删除 + // 批量添加、修改、删除 if (CollUtil.isNotEmpty(diffResult.get(0))) { productThingModelMapper.insertBatch(diffResult.get(0)); } @@ -246,8 +247,8 @@ public class IotProductThingModelServiceImpl implements IotProductThingModelServ /** * 构建事件功能对象 */ - private IotProductThingModelDO buildEventThingModelDO(Long productId, String productKey, ThingModelEvent event, - String description) { + private IotProductThingModelDO buildEventThingModelDO(Long productId, String productKey, + ThingModelEvent event, String description) { return new IotProductThingModelDO().setProductId(productId).setProductKey(productKey) .setIdentifier(event.getIdentifier()).setName(event.getName()).setDescription(description) .setType(IotProductThingModelTypeEnum.EVENT.getType()).setEvent(event); @@ -256,8 +257,8 @@ public class IotProductThingModelServiceImpl implements IotProductThingModelServ /** * 构建服务功能对象 */ - private IotProductThingModelDO buildServiceThingModelDO(Long productId, String productKey, ThingModelService service, - String description) { + private IotProductThingModelDO buildServiceThingModelDO(Long productId, String productKey, + ThingModelService service, String description) { return new IotProductThingModelDO().setProductId(productId).setProductKey(productKey) .setIdentifier(service.getIdentifier()).setName(service.getName()).setDescription(description) .setType(IotProductThingModelTypeEnum.SERVICE.getType()).setService(service); @@ -266,64 +267,64 @@ public class IotProductThingModelServiceImpl implements IotProductThingModelServ /** * 生成属性上报事件 */ - private ThingModelEvent generatePropertyPostEvent(List thingModelList) { - // 1.1 没有属性则不生成 - if (CollUtil.isEmpty(thingModelList)) { + private ThingModelEvent generatePropertyPostEvent(List thingModels) { + // 没有属性则不生成 + if (CollUtil.isEmpty(thingModels)) { return null; } - // 1.2 生成属性上报事件 + // 生成属性上报事件 return new ThingModelEvent().setIdentifier("post").setName("属性上报").setMethod("thing.event.property.post") .setType(IotProductThingModelServiceEventTypeEnum.INFO.getType()) - .setOutputParams(buildInputOutputParam(thingModelList, IotProductThingModelParamDirectionEnum.OUTPUT)); + .setOutputParams(buildInputOutputParam(thingModels, IotProductThingModelParamDirectionEnum.OUTPUT)); } /** * 生成属性设置服务 */ - private ThingModelService generatePropertySetService(List thingModelList) { + private ThingModelService generatePropertySetService(List thingModels) { // 1.1 过滤出所有可写属性 - thingModelList = filterList(thingModelList, thingModel -> + thingModels = filterList(thingModels, thingModel -> IotProductThingModelAccessModeEnum.READ_WRITE.getMode().equals(thingModel.getProperty().getAccessMode())); // 1.2 没有可写属性则不生成 - if (CollUtil.isEmpty(thingModelList)) { + if (CollUtil.isEmpty(thingModels)) { return null; } // 2. 生成属性设置服务 return new ThingModelService().setIdentifier("set").setName("属性设置").setMethod("thing.service.property.set") .setCallType(IotProductThingModelServiceCallTypeEnum.ASYNC.getType()) - .setInputParams(buildInputOutputParam(thingModelList, IotProductThingModelParamDirectionEnum.INPUT)) + .setInputParams(buildInputOutputParam(thingModels, IotProductThingModelParamDirectionEnum.INPUT)) .setOutputParams(Collections.emptyList()); // 属性设置服务一般不需要输出参数 } /** * 生成属性获取服务 */ - private ThingModelService generatePropertyGetService(List thingModelList) { + private ThingModelService generatePropertyGetService(List thingModels) { // 1.1 没有属性则不生成 - if (CollUtil.isEmpty(thingModelList)) { + if (CollUtil.isEmpty(thingModels)) { return null; } // 1.2 生成属性获取服务 return new ThingModelService().setIdentifier("get").setName("属性获取").setMethod("thing.service.property.get") .setCallType(IotProductThingModelServiceCallTypeEnum.ASYNC.getType()) - .setInputParams(buildInputOutputParam(thingModelList, IotProductThingModelParamDirectionEnum.INPUT)) - .setOutputParams(buildInputOutputParam(thingModelList, IotProductThingModelParamDirectionEnum.OUTPUT)); + .setInputParams(buildInputOutputParam(thingModels, IotProductThingModelParamDirectionEnum.INPUT)) + .setOutputParams(buildInputOutputParam(thingModels, IotProductThingModelParamDirectionEnum.OUTPUT)); } /** * 构建输入/输出参数列表 * - * @param thingModelList 属性列表 + * @param thingModels 属性列表 * @return 输入/输出参数列表 */ - private List buildInputOutputParam(List thingModelList, - IotProductThingModelParamDirectionEnum directionEnum) { - return convertList(thingModelList, thingModel -> + private List buildInputOutputParam(List thingModels, + IotProductThingModelParamDirectionEnum direction) { + return convertList(thingModels, thingModel -> BeanUtils.toBean(thingModel.getProperty(), ThingModelInputOutputParam.class).setParaOrder(0) // TODO @puhui999: 先搞个默认值看看怎么个事 - .setDirection(directionEnum.getDirection())); + .setDirection(direction.getDirection())); } }