package com.gyee.alarm.rule;


import com.gyee.alarm.model.vo.DeviceTypeValue;
import com.gyee.alarm.rule.expression.AlarmExpression;
import com.gyee.common.model.PointData;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;


// 返回测点最近数据的时间
// 应用场景： 判定离线，状态持续时间等
// 函数原型： LastUpdateTime（测点名）
@Data
@NoArgsConstructor
public class AlarmFunctionLastUpdateTime extends AlarmFunction {

    public AlarmFunctionLastUpdateTime(AlarmExpression alarmExpression, DeviceTypeValue tType, String tId) {
        super(alarmExpression, tType, tId);
    }

    @Override
    public Object explain() {
        if (this.getAlarmExpression().getVarList() == null || this.getAlarmExpression().getVarList().size() < 1)
            return 0;

        String varName = this.getAlarmExpression().getVarList().get(0);
        PointData tagInfo = this.getTagInfo(varName);
      /*  if (tagInfo.getBooleanTsData() != null) {
            if (tagInfo.getBooleanTsData().getBooleanValue() == false)
                return 0;
        }*/
        // long ts = tagInfo.getLastUpdateTime();
        if (tagInfo != null) {
            //计算最后更新时间时，由原来的数据时间戳，改为数据更新时的本地时间
            long ts = tagInfo.getPointTime();
            if (ts == 0)
                return 0;
            else {
                long interval = new Date().getTime() - ts;
                return Math.round(interval / 1000);
            }
        } else {
            return 0;
        }

    }

}
