package com.ruoyi.business.domain;

import java.math.BigDecimal;
import java.util.List;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 设备模型功能对象 hw_device_mode_function
 * 
 * @author xins
 * @date 2023-09-04
 */
public class HwDeviceModeFunction extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 设备模型功能ID */
    private Long modeFunctionId;

    /** 设备模型ID，关联表hw_device_mode的device_mode_id */
    @Excel(name = "设备模型ID，关联表hw_device_mode的device_mode_id")
    private Long deviceModeId;

    /** 功能模式（1、属性，2、服务，3、事件） */
    @Excel(name = "功能模式", readConverterExp = "1=、属性，2、服务，3、事件")
    private String functionMode;

    /** 坐标标识（1、经度，2、纬度） */
    @Excel(name = "坐标标识", readConverterExp = "1=、经度，2、纬度")
    private String coordinate;

    /** 功能名称 */
    @Excel(name = "功能名称")
    private String functionName;

    /** 标识符（支持大小写字母、数字和下划线，对外暂时不超过50个字符） */
    @Excel(name = "标识符", readConverterExp = "支=持大小写字母、数字和下划线，对外暂时不超过50个字符")
    private String functionIdentifier;

    /** 功能类型(1、直采变量 2、手录变量 3、运算性变量) */
    @Excel(name = "功能类型(1、直采变量 2、手录变量 3、运算性变量)")
    private String functionType;

    /** 数据类型（2、int，4、float，5、double，6、binary(image/base64),9、bool，10、string） */
    @Excel(name = "数据类型", readConverterExp = "2=、int，4、float，5、double，6、binary(image/base64),9、bool，10、string")
    private Long dataType;

    /** 数据定义，按json保存，示例如下：
            1、取值范围：{'minValue':1,'maxValue':100},
            2、枚举型：
            {'1':'成功','2','失败','3','提示}
            3、bool型：
            {'0':'关','1','开'}
            4、Text型：
            {'dataLength'：1024}
            5、String类型（此类型需要定义在数据字典中，支持多语言）：
            {'dateFormat':'String类型的UTC时间戳（毫秒）'} */
    @Excel(name = "数据定义，按json保存，示例如下：1、取值范围：{'minValue':1,'maxValue':100},2、枚举型：{'1':'成功','2','失败','3','提示}3、bool型： {'0':'关','1','开'}4、Text型：{'dataLength'：1024}5、String类型", readConverterExp = "此=类型需要定义在数据字典中，支持多语言")
    private String dataDefinition;

    /** 运算性变量公式（标识符1*标识符2*100） */
    @Excel(name = "运算性变量公式", readConverterExp = "标=识符1*标识符2*100")
    private String functionFormula;

    /** 单位 */
    @Excel(name = "单位")
    private String propertyUnit;

    /** 显示标识（0、不显示，1、显示，2、可累积显示） */
    @Excel(name = "显示标识", readConverterExp = "0=、不显示，1、显示，2、可累积显示")
    private String displayFlag;

    /** 读写标识（1、读写，2、只读） */
    @Excel(name = "读写标识", readConverterExp = "1=、读写，2、只读")
    private String rwFlag;

    /** 调用方式（1、异步，2、同步），当功能模式为服务时必填 */
    @Excel(name = "调用方式", readConverterExp = "1=、异步，2、同步")
    private String invokeMethod;

    /** 事件类型（1、信息，2、告警，3、故障），当功能类型为事件时必填 */
    @Excel(name = "事件类型", readConverterExp = "1=、信息，2、告警，3、故障")
    private String eventType;

    /** 预留字段，采集公式：设备上行数据经采集公式计算后显示，公式中的%s为占位符，是固定字段。
            如：
            加：%s+10
            减：%s-10
            乘：%s10
            除：%s/10
            余数：%s%10 */
    @Excel(name = "预留字段，采集公式：设备上行数据经采集公式计算后显示，公式中的%s为占位符，是固定字段。如：加：%s+10减：%s-10乘：%s10除：%s/10余数：%s%10")
    private String acquisitionFormula;

    /** 预留字段，顺序 */
    @Excel(name = "预留字段，顺序")
    private Long orderFlag;

    /** 预留字段，寄存器 */
    @Excel(name = "预留字段，寄存器")
    private String deviceRegister;

    /** 预留字段，步长 */
    @Excel(name = "预留字段，步长")
    private BigDecimal propertyStep;

    /** 预留字段 */
    @Excel(name = "预留字段")
    private String propertyField;

    private List<HwDeviceModeParameter> inputParameters;

    private List<HwDeviceModeParameter> outputParameters;

//    private List<HwDeviceP>

    public void setModeFunctionId(Long modeFunctionId) 
    {
        this.modeFunctionId = modeFunctionId;
    }

    public Long getModeFunctionId() 
    {
        return modeFunctionId;
    }
    public void setDeviceModeId(Long deviceModeId) 
    {
        this.deviceModeId = deviceModeId;
    }

    public Long getDeviceModeId() 
    {
        return deviceModeId;
    }
    public void setFunctionMode(String functionMode) 
    {
        this.functionMode = functionMode;
    }

    public String getFunctionMode() 
    {
        return functionMode;
    }
    public void setCoordinate(String coordinate) 
    {
        this.coordinate = coordinate;
    }

    public String getCoordinate() 
    {
        return coordinate;
    }
    public void setFunctionName(String functionName) 
    {
        this.functionName = functionName;
    }

    public String getFunctionName() 
    {
        return functionName;
    }
    public void setFunctionIdentifier(String functionIdentifier) 
    {
        this.functionIdentifier = functionIdentifier;
    }

    public String getFunctionIdentifier() 
    {
        return functionIdentifier;
    }
    public void setFunctionType(String functionType) 
    {
        this.functionType = functionType;
    }

    public String getFunctionType() 
    {
        return functionType;
    }
    public void setDataType(Long dataType) 
    {
        this.dataType = dataType;
    }

    public Long getDataType() 
    {
        return dataType;
    }
    public void setDataDefinition(String dataDefinition) 
    {
        this.dataDefinition = dataDefinition;
    }

    public String getDataDefinition() 
    {
        return dataDefinition;
    }
    public void setFunctionFormula(String functionFormula) 
    {
        this.functionFormula = functionFormula;
    }

    public String getFunctionFormula() 
    {
        return functionFormula;
    }
    public void setPropertyUnit(String propertyUnit) 
    {
        this.propertyUnit = propertyUnit;
    }

    public String getPropertyUnit() 
    {
        return propertyUnit;
    }
    public void setDisplayFlag(String displayFlag) 
    {
        this.displayFlag = displayFlag;
    }

    public String getDisplayFlag() 
    {
        return displayFlag;
    }
    public void setRwFlag(String rwFlag) 
    {
        this.rwFlag = rwFlag;
    }

    public String getRwFlag() 
    {
        return rwFlag;
    }
    public void setInvokeMethod(String invokeMethod) 
    {
        this.invokeMethod = invokeMethod;
    }

    public String getInvokeMethod() 
    {
        return invokeMethod;
    }
    public void setEventType(String eventType) 
    {
        this.eventType = eventType;
    }

    public String getEventType() 
    {
        return eventType;
    }
    public void setAcquisitionFormula(String acquisitionFormula) 
    {
        this.acquisitionFormula = acquisitionFormula;
    }

    public String getAcquisitionFormula() 
    {
        return acquisitionFormula;
    }
    public void setOrderFlag(Long orderFlag) 
    {
        this.orderFlag = orderFlag;
    }

    public Long getOrderFlag() 
    {
        return orderFlag;
    }
    public void setDeviceRegister(String deviceRegister) 
    {
        this.deviceRegister = deviceRegister;
    }

    public String getDeviceRegister() 
    {
        return deviceRegister;
    }
    public void setPropertyStep(BigDecimal propertyStep) 
    {
        this.propertyStep = propertyStep;
    }

    public BigDecimal getPropertyStep() 
    {
        return propertyStep;
    }
    public void setPropertyField(String propertyField) 
    {
        this.propertyField = propertyField;
    }

    public String getPropertyField() 
    {
        return propertyField;
    }

    public List<HwDeviceModeParameter> getInputParameters() {
        return inputParameters;
    }

    public void setInputParameters(List<HwDeviceModeParameter> inputParameters) {
        this.inputParameters = inputParameters;
    }

    public List<HwDeviceModeParameter> getOutputParameters() {
        return outputParameters;
    }

    public void setOutputParameters(List<HwDeviceModeParameter> outputParameters) {
        this.outputParameters = outputParameters;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("modeFunctionId", getModeFunctionId())
            .append("deviceModeId", getDeviceModeId())
            .append("functionMode", getFunctionMode())
            .append("coordinate", getCoordinate())
            .append("functionName", getFunctionName())
            .append("functionIdentifier", getFunctionIdentifier())
            .append("functionType", getFunctionType())
            .append("dataType", getDataType())
            .append("dataDefinition", getDataDefinition())
            .append("functionFormula", getFunctionFormula())
            .append("propertyUnit", getPropertyUnit())
            .append("displayFlag", getDisplayFlag())
            .append("rwFlag", getRwFlag())
            .append("invokeMethod", getInvokeMethod())
            .append("eventType", getEventType())
            .append("remark", getRemark())
            .append("acquisitionFormula", getAcquisitionFormula())
            .append("orderFlag", getOrderFlag())
            .append("deviceRegister", getDeviceRegister())
            .append("propertyStep", getPropertyStep())
            .append("propertyField", getPropertyField())
            .toString();
    }
}
