package jtznyj.engineer.service.dataDiagnosticService.data;

import com.fasterxml.jackson.annotation.JsonIgnore;
import jtznyj.engineer.service.dataDiagnosticService.WellTrendDataDiagnostic;
import jtznyj.engineer.service.dataDiagnosticService.models.DoorList;
import jtznyj.engineer.service.winform.data.SecondState;

import java.util.ArrayList;

/**
 * 监测曲线参数
 */
public class DataDiagnosticParameter {
    /**
     *字段可用性
     */
    public boolean _fieldUseable = true;

    /**
     * 条件组合运算类别（and\or）
     */
    public FieldHandleType _fieldHandleType = FieldHandleType.FHT_And;

    /**
     * 趋势参数分类--按总量、按倍数
     */
    public TrendTypeParam _trendTypeParam = TrendTypeParam.TT_TOTALNUM;

    /**
     * 趋势分析--起始值
     */
    public double _beginValue = 0.0;

    /**
     * 趋势分析--截止值
     */
    public double _endValue = 0.0;

    /**
     * 分组编号
     */
    public int _fzNum = 0;

    /**
     * 总量
     */
    public double _totalNum = 1.0;

    /**
     * 倍数
     */
    public double _mul = 1.0;

    /**
     * 波动范围
     */
    public double _bdLtValue = 0.1;

    /**
     * 分析类别--1门限 2振幅 4趋势辨别 8波动
     */
    public AnalyseType _analyseType = AnalyseType.AT_MinMax;

    /**
     * 趋势分析类别
     */
    public TrendType _trendType = TrendType.TT_Stable;

    /**
     * 规则名
     */
    public String _name = "";
    public SecondState _secondState;

    /**
     * 原始字段配置--用户维护的字段
     */
    public String _originalField = "";

    /**
     * 真实字段
     */
    public String _realField = "";
    /**
     * 开泵
     */
    public boolean _isPumpRunJump = false;

    /**
     * 开泵时长
     */
    public int _isPumpRunJumpTime = 30;

    /**
     * 停泵
     */
    public boolean _isPumpStopJump = false;

    /**
     * 停泵时长
     */
    public int _isPumpStopJumpTime = 30;
    /**
     * 是否排除气体
     */
    public boolean _pchx = false;
    /**
     * 排气时长
     */
    public int _pchxTime = 60;

    /**
     * 监控时长
     */
    public double _monitorTime = 60.0;

    /**
     * 是否低于正常值
     */
    public boolean _continue = false;

    /**
     * 正常值
     */
    public double _continueValue = 0.0;

    /**
     * 异常持续时长
     */
    public double _continuedTime = 60.0;

    /**
     * 门限--最小总量
     */
    public double _minTotalNum = 0.0;

    /**
     * 门限--最大总量
     */
    public double _maxTotalNum = 100.0;

    /**
     * 与振幅数量有关的--震荡次数
     */
    public int _zdCount = 1;

    public String _unit = "";

    /**
     * 是否启用前置条件
     */
    public Boolean _preconditions =false;
    /**
     * 前置条件判断字段
     */
    public String _preconditionsField = "";
    /**
     * 前置条件list--门限前置条件
     */
    public ArrayList<DoorList> _doorList = new ArrayList<DoorList>();

    /**
     * 诊断算法
     */
    @JsonIgnore
    public WellTrendDataDiagnostic dataDiagnostic = null;
}
