/*
 * 文 件 名:  ConditionStepExecutor
 * 版    权:  华设设计集团股份有限公司
 * 描    述:  <描述>
 * 修 改 人:  lvwenbin
 * 修改时间:  2025/11/27
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package com.ruoyi.ems.strategy.executor;

import com.ruoyi.ems.domain.OpEnergyStrategyStep;
import com.ruoyi.ems.domain.StrategyExecutionContext;
import com.ruoyi.ems.service.IStepExecutor;
import com.ruoyi.ems.strategy.evaluator.ConditionEvaluator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 条件判断执行器
 * <功能详细描述>
 *
 * @author lvwenbin
 * @version [版本号, 2025/11/27]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
@Slf4j
@Component
public class ConditionStepExecutor implements IStepExecutor {
    @Autowired
    private ConditionEvaluator conditionEvaluator;

    @Override
    public Object execute(OpEnergyStrategyStep step, StrategyExecutionContext context) throws Exception {
        boolean result = conditionEvaluator.evaluate(step.getConditionExpr(), context.getVariables());
        log.info("条件判断结果: {}", result);

        // 将结果保存到上下文
        context.setVariable(step.getStepCode() + "_result", result);

        return result;
    }

    @Override
    public String getSupportedType() {
        return "CONDITION";
    }
}