|
|
@@ -3,6 +3,7 @@ package com.usky.rule.subscribe;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.usky.common.core.util.JsonUtils;
|
|
|
+import com.usky.common.security.utils.SecurityUtils;
|
|
|
import com.usky.rule.domain.RuleEngineDevice;
|
|
|
import com.usky.rule.mapper.RuleEngineDeviceMapper;
|
|
|
import com.usky.rule.util.DateTimeUtil;
|
|
|
@@ -41,6 +42,7 @@ import java.util.Optional;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import com.usky.rule.vo.log.BaseLog;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.expression.ExpressionParser;
|
|
|
@@ -48,6 +50,7 @@ import org.springframework.expression.spel.standard.SpelExpressionParser;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
@Component
|
|
|
+@Slf4j
|
|
|
public class TriggerDeviceUtil {
|
|
|
private RuleEngineService ruleEngineService;
|
|
|
private RuleEngineUtil ruleEngineUtil;
|
|
|
@@ -75,6 +78,7 @@ public class TriggerDeviceUtil {
|
|
|
.orElse(LocalDateTime.now());
|
|
|
List<RuleEngineDevice> ruleEngineDeviceVOList = ruleEngineDeviceMapper.selectByDeviceUuid(deviceUuId);
|
|
|
if (!ruleEngineDeviceVOList.isEmpty()) {
|
|
|
+ log.info("enter ruleEngine deviceUuid {}",deviceUuId);
|
|
|
ruleEngineDeviceVOList.forEach((ruleEngineDeviceVO) -> {
|
|
|
Long ruleEngineId = ruleEngineDeviceVO.getRuleEngineId();
|
|
|
Long productId = ruleEngineDeviceVO.getProductId();
|
|
|
@@ -89,15 +93,18 @@ public class TriggerDeviceUtil {
|
|
|
if (deviceTriggers != null) {
|
|
|
deviceTriggers = (List)deviceTriggers.stream().filter((deviceTrigger) -> deviceTrigger.getMethod().equals("acq")).filter((deviceTrigger) -> deviceTrigger.getProductId().equals(productId)).filter((deviceTrigger) -> deviceTrigger.getDevices().stream().anyMatch((device) -> StringUtils.equals(device.getId(), deviceId) || StringUtils.isNotBlank(deviceUuId) && StringUtils.equals(device.getDeviceUuid(), deviceUuId))).collect(Collectors.toList());
|
|
|
if (!deviceTriggers.isEmpty()) {
|
|
|
+ log.info("enter deviceTriggers {}",deviceTriggers);
|
|
|
RuleEngineDetailLog ruleEngineDetailLog = new RuleEngineDetailLog();
|
|
|
List<Condition> meetTriggerConditionList = new ArrayList();
|
|
|
Map<String, String> meetMinuteExpressionMap = new HashMap();
|
|
|
boolean triggerAction = this.meetDeviceAcqTriggerAction(ruleEngineId, deviceId, currDataTime, valueMap, deviceTriggers, meetMinuteExpressionMap, meetTriggerConditionList);
|
|
|
if (triggerAction) {
|
|
|
+ log.info("triggerAction is true");
|
|
|
this.setTriggerLog(now, ruleEngineDetailLog, deviceId, null, TriggerValueTypeEnum.ACQ.getValue(), TriggerTypeEnum.DEVICE, meetTriggerConditionList, valueMap);
|
|
|
List<DeviceConstraint> deviceConstraints = this.ruleEngineService.getDeviceConstraints(ruleEngineDetail.getConstraints());
|
|
|
boolean constraintAction = this.meetConstraintAction(deviceConstraints, ruleEngineDetailLog);
|
|
|
if (constraintAction) {
|
|
|
+ log.info("constraintAction is true");
|
|
|
this.ruleEngineUtil.performMultipleDevicesControl(ruleEngineId, true, TriggerTypeEnum.DEVICE.getType(), ruleEngine.getProjectId(), ruleEngine.getSpaceId(), actions, ruleEngineDetailLog);
|
|
|
this.clearMeetConditionCache(ruleEngineId, deviceId, meetMinuteExpressionMap);
|
|
|
}
|