Ver código fonte

feat:【iot】executeSceneRuleAction 更新规则场景的最后触发时间

puhui999 4 meses atrás
pai
commit
9febc2b0b0

+ 6 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotSceneRuleDO.java

@@ -21,6 +21,7 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -56,6 +57,11 @@ public class IotSceneRuleDO extends TenantBaseDO {
      */
     private Integer status;
 
+    /**
+     * 最后触发时间
+     */
+    private LocalDateTime lastTriggerTime;
+
     /**
      * 场景定义配置
      */

+ 20 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/IotSceneRuleServiceImpl.java

@@ -30,6 +30,7 @@ import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
+import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.List;
 
@@ -392,9 +393,28 @@ public class IotSceneRuleServiceImpl implements IotSceneRuleService {
                     }
                 });
             });
+
+            // 3. 更新最后触发时间
+            updateLastTriggerTime(sceneRule.getId());
         });
     }
 
+    /**
+     * 更新规则场景的最后触发时间
+     *
+     * @param id 规则场景编号
+     */
+    private void updateLastTriggerTime(Long id) {
+        try {
+            IotSceneRuleDO updateObj = new IotSceneRuleDO()
+                    .setId(id)
+                    .setLastTriggerTime(LocalDateTime.now());
+            sceneRuleMapper.updateById(updateObj);
+        } catch (Exception e) {
+            log.error("[updateLastTriggerTime][规则场景编号({}) 更新最后触发时间异常]", id, e);
+        }
+    }
+
     private IotSceneRuleServiceImpl getSelf() {
         return SpringUtil.getBean(IotSceneRuleServiceImpl.class);
     }