From a9dc654b364a64f040ae10f97ebe04397099a2a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E6=B5=A9=E6=B5=A9?= <1036606149@qq.com> Date: Mon, 24 Mar 2025 16:25:11 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91IoT:=20=E6=B3=A8=E9=87=8A=E6=8E=89=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=EF=BC=8C=E7=AE=80=E5=8C=96=E4=BA=A7=E5=93=81=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E6=B5=8B=E8=AF=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-module-iot/yudao-module-iot-biz/pom.xml | 4 +- .../product/IotProductScriptServiceImpl.java | 173 +++++++++--------- 2 files changed, 88 insertions(+), 89 deletions(-) diff --git a/yudao-module-iot/yudao-module-iot-biz/pom.xml b/yudao-module-iot/yudao-module-iot-biz/pom.xml index c5a968207f..adb84d2943 100644 --- a/yudao-module-iot/yudao-module-iot-biz/pom.xml +++ b/yudao-module-iot/yudao-module-iot-biz/pom.xml @@ -70,11 +70,11 @@ - + diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductScriptServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductScriptServiceImpl.java index 99638785d8..88d4950c3f 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductScriptServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductScriptServiceImpl.java @@ -9,8 +9,6 @@ import cn.iocoder.yudao.module.iot.controller.admin.product.vo.script.IotProduct import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO; import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductScriptDO; import cn.iocoder.yudao.module.iot.dal.mysql.product.IotProductScriptMapper; -import cn.iocoder.yudao.module.iot.plugin.script.context.PluginScriptContext; -import cn.iocoder.yudao.module.iot.plugin.script.service.ScriptService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -42,8 +40,8 @@ public class IotProductScriptServiceImpl implements IotProductScriptService { @Resource private IotProductService productService; - @Resource - private ScriptService scriptService; +// @Resource +// private ScriptService scriptService; @Override public Long createProductScript(IotProductScriptSaveReqVO createReqVO) { @@ -120,89 +118,90 @@ public class IotProductScriptServiceImpl implements IotProductScriptService { @Override public IotProductScriptTestRespVO testProductScript(IotProductScriptTestReqVO testReqVO) { - long startTime = System.currentTimeMillis(); - - try { - // 验证产品是否存在 - validateProductExists(testReqVO.getProductId()); - - // 根据ID获取已保存的脚本(如果有) - IotProductScriptDO existingScript = null; - if (testReqVO.getId() != null) { - existingScript = getProductScript(testReqVO.getId()); - } - - // 创建测试上下文 - PluginScriptContext context = new PluginScriptContext(); - IotProductDO product = productService.getProduct(testReqVO.getProductId()); - - // 设置设备上下文(使用产品信息,没有具体设备) - context.withDeviceContext(product.getProductKey(), null); - - // 设置输入参数 - Map params = new HashMap<>(); - params.put("input", testReqVO.getTestInput()); - params.put("productKey", product.getProductKey()); - params.put("scriptType", testReqVO.getScriptType()); - - // 根据脚本类型设置特定参数 - switch (testReqVO.getScriptType()) { - case 1: // PROPERTY_PARSER - params.put("method", "property"); - break; - case 2: // EVENT_PARSER - params.put("method", "event"); - params.put("identifier", "default"); - break; - case 3: // COMMAND_ENCODER - params.put("method", "command"); - break; - default: - // 默认不添加额外参数 - } - - // 添加所有参数到上下文 - for (Map.Entry entry : params.entrySet()) { - context.setParameter(entry.getKey(), entry.getValue()); - } - - // 执行脚本 - Object result = scriptService.executeScript( - testReqVO.getScriptLanguage(), - testReqVO.getScriptContent(), - context); - - // 更新测试结果(如果是已保存的脚本) - if (existingScript != null) { - IotProductScriptDO updateObj = new IotProductScriptDO(); - updateObj.setId(existingScript.getId()); - updateObj.setLastTestTime(LocalDateTime.now()); - updateObj.setLastTestResult(1); // 1表示成功 - productScriptMapper.updateById(updateObj); - } - - long executionTime = System.currentTimeMillis() - startTime; - return IotProductScriptTestRespVO.success(result, executionTime); - - } catch (Exception e) { - log.error("[testProductScript][测试脚本异常]", e); - - // 如果是已保存的脚本,更新测试失败状态 - if (testReqVO.getId() != null) { - try { - IotProductScriptDO updateObj = new IotProductScriptDO(); - updateObj.setId(testReqVO.getId()); - updateObj.setLastTestTime(LocalDateTime.now()); - updateObj.setLastTestResult(0); // 0表示失败 - productScriptMapper.updateById(updateObj); - } catch (Exception ex) { - log.error("[testProductScript][更新脚本测试结果异常]", ex); - } - } - - long executionTime = System.currentTimeMillis() - startTime; - return IotProductScriptTestRespVO.error(e.getMessage(), executionTime); - } +// long startTime = System.currentTimeMillis(); +// +// try { +// // 验证产品是否存在 +// validateProductExists(testReqVO.getProductId()); +// +// // 根据ID获取已保存的脚本(如果有) +// IotProductScriptDO existingScript = null; +// if (testReqVO.getId() != null) { +// existingScript = getProductScript(testReqVO.getId()); +// } +// +// // 创建测试上下文 +// PluginScriptContext context = new PluginScriptContext(); +// IotProductDO product = productService.getProduct(testReqVO.getProductId()); +// +// // 设置设备上下文(使用产品信息,没有具体设备) +// context.withDeviceContext(product.getProductKey(), null); +// +// // 设置输入参数 +// Map params = new HashMap<>(); +// params.put("input", testReqVO.getTestInput()); +// params.put("productKey", product.getProductKey()); +// params.put("scriptType", testReqVO.getScriptType()); +// +// // 根据脚本类型设置特定参数 +// switch (testReqVO.getScriptType()) { +// case 1: // PROPERTY_PARSER +// params.put("method", "property"); +// break; +// case 2: // EVENT_PARSER +// params.put("method", "event"); +// params.put("identifier", "default"); +// break; +// case 3: // COMMAND_ENCODER +// params.put("method", "command"); +// break; +// default: +// // 默认不添加额外参数 +// } +// +// // 添加所有参数到上下文 +// for (Map.Entry entry : params.entrySet()) { +// context.setParameter(entry.getKey(), entry.getValue()); +// } +// +// // 执行脚本 +// Object result = scriptService.executeScript( +// testReqVO.getScriptLanguage(), +// testReqVO.getScriptContent(), +// context); +// +// // 更新测试结果(如果是已保存的脚本) +// if (existingScript != null) { +// IotProductScriptDO updateObj = new IotProductScriptDO(); +// updateObj.setId(existingScript.getId()); +// updateObj.setLastTestTime(LocalDateTime.now()); +// updateObj.setLastTestResult(1); // 1表示成功 +// productScriptMapper.updateById(updateObj); +// } +// +// long executionTime = System.currentTimeMillis() - startTime; +// return IotProductScriptTestRespVO.success(result, executionTime); +// +// } catch (Exception e) { +// log.error("[testProductScript][测试脚本异常]", e); +// +// // 如果是已保存的脚本,更新测试失败状态 +// if (testReqVO.getId() != null) { +// try { +// IotProductScriptDO updateObj = new IotProductScriptDO(); +// updateObj.setId(testReqVO.getId()); +// updateObj.setLastTestTime(LocalDateTime.now()); +// updateObj.setLastTestResult(0); // 0表示失败 +// productScriptMapper.updateById(updateObj); +// } catch (Exception ex) { +// log.error("[testProductScript][更新脚本测试结果异常]", ex); +// } +// } +// +// long executionTime = System.currentTimeMillis() - startTime; +// return IotProductScriptTestRespVO.error(e.getMessage(), executionTime); +// } + return null; } @Override