package cn.cecep.talroad.domain.analysis;


import cn.cecep.talroad.common.core.annotation.Excel;
import cn.cecep.talroad.common.core.web.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.Version;

import java.math.BigDecimal;
import java.util.Date;
import java.util.function.BiConsumer;


/**
 * 多源排放量汇总对象 s_ra_multi_source
 *
 * @author szhpt
 * @date 2023-06-03*/
@ApiModel(value = "多源排放量汇总")
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("s_ra_multi_source")
public class SRaMultiSource extends BaseEntity
{
    private static final long serialVersionUID = 1L;


    @ApiModelProperty(value = "数据主键")
    /** 数据主键 */
    @TableId(value = "data_id",type = IdType.AUTO)
    private String dataId;


    @ApiModelProperty(value = "企业主键")
    /** 企业主键 */
    private String factoryId;


    @ApiModelProperty(value = "企业名称")
    /** 企业名称 */
    @Excel(name = "企业名称",sort = 1)
    private String factoryName;


    @ApiModelProperty(value = "行业类别名称(多个使用'、'拼接)")
    /** 行业类别名称(多个使用'、'拼接) */
    @Excel(name = "行业名称",sort = 2)
    private String industryCategoryName;


    @ApiModelProperty(value = "行业类别编码(多个使用'、'拼接)")
    /** 行业类别编码(多个使用'、'拼接) */
    private String industryCategoryCode;


    @ApiModelProperty(value = "所在区县名称")
    /** 所在区县名称 */
    @Excel(name = "区县名称",sort = 3)
    private String districtName;


    @ApiModelProperty(value = "所在区县编码")
    /** 所在区县编码 */
    private String districtCode;


    @ApiModelProperty(value = "污染物类型(1废气、2废水)")
    /** 污染物类型(1废气、2废水) */
    private String pollutantsType;


    @ApiModelProperty(value = "污染物名称")
    /** 污染物名称 */
    @Excel(name = "污染物名称",sort = 4)
    private String pollutantsName;


    @ApiModelProperty(value = "污染物编码")
    /** 污染物编码 */
    private String pollutantsCode;


    @ApiModelProperty(value = "监测时间")
    /** 监测时间 */
    private String monitorTime;


    @ApiModelProperty(value = "排口编号")
    /** 排口编号 */
    private String outletCode;


    @ApiModelProperty(value = "排口类型(1主要排口、2一般排口)")
    /** 排口类型(1主要排口、2一般排口) */
    private String outletType;


    @ApiModelProperty(value = "监测点名称")
    /** 监测点名称 */
    private String moitorName;


    @ApiModelProperty(value = "监测类型(1自动监测、2手工检测)")
    /** 监测类型(1自动监测、2手工检测) */
    private String monitorType;


    @ApiModelProperty(value = "监测点id")
    /** 监测点id */
    private String monitorId;


    @ApiModelProperty(value = "许可排放量（kg）")
    /** 许可排放量（kg） */
    @Excel(name = "许可排放量(kg)",sort = 5,cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal permission;


    @ApiModelProperty(value = "许可修约量（kg）")
    /** 许可修约量（kg） */
    private BigDecimal permissionAmendments;


    @ApiModelProperty(value = "在线排放量（kg）")
    /** 在线排放量（kg） */
    @Excel(name = "在线排放量(kg)",sort = 6,cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal online;


    @ApiModelProperty(value = "在线修约量（kg）")
    /** 在线修约量（kg） */
    private BigDecimal onlineAmendments;


    @ApiModelProperty(value = "数据标记启炉，停炉，焖炉，生产设施故障，停运，国发非正常工况标记,无效数据是否用修约量计算")
    /** 数据标记启炉，停炉，焖炉，生产设施故障，停运，国发非正常工况标记,无效数据是否用修约量计算 */
    private String dataFlag;




    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("dataId", getDataId())
            .append("factoryId", getFactoryId())
            .append("factoryName", getFactoryName())
            .append("industryCategoryName", getIndustryCategoryName())
            .append("industryCategoryCode", getIndustryCategoryCode())
            .append("districtName", getDistrictName())
            .append("districtCode", getDistrictCode())
            .append("pollutantsType", getPollutantsType())
            .append("pollutantsName", getPollutantsName())
            .append("pollutantsCode", getPollutantsCode())
            .append("monitorTime", getMonitorTime())
            .append("outletCode", getOutletCode())
            .append("outletType", getOutletType())
            .append("moitorName", getMoitorName())
            .append("monitorType", getMonitorType())
            .append("monitorId", getMonitorId())
            .append("permission", getPermission())
            .append("permissionAmendments", getPermissionAmendments())
            .append("online", getOnline())
            .append("onlineAmendments", getOnlineAmendments())
            .append("dataFlag", getDataFlag())
            .append("createTime", getCreateTime())
            .toString();
    }

    public static class SRaMultiSourcePermission{

        /** 企业名称 */
        @Excel(name = "企业名称",sort = 1)
        private String factoryName;

        /** 监测点名称 */
        @Excel(name = "监测点位名称",sort = 2)
        private String moitorName;

        @Excel(name = "排口编号",sort = 3)
        private String outletCode;
        @Excel(name = "排口类型",sort = 4,readConverterExp = "1=主要排口,2=一般排口")
        private String outletType;
        @Excel(name = "监测类型",sort = 5,readConverterExp = "1=自动监测,2=手工检测")
        private String monitorType;
        @Excel(name = "排放量(kg)",sort = 6,cellType = Excel.ColumnType.NUMERIC)
        private BigDecimal permission;

        public String getFactoryName() {
            return factoryName;
        }

        public void setFactoryName(String factoryName) {
            this.factoryName = factoryName;
        }

        public String getMoitorName() {
            return moitorName;
        }

        public void setMoitorName(String moitorName) {
            this.moitorName = moitorName;
        }

        public String getOutletCode() {
            return outletCode;
        }

        public void setOutletCode(String outletCode) {
            this.outletCode = outletCode;
        }

        public String getOutletType() {
            return outletType;
        }

        public void setOutletType(String outletType) {
            this.outletType = outletType;
        }

        public String getMonitorType() {
            return monitorType;
        }

        public void setMonitorType(String monitorType) {
            this.monitorType = monitorType;
        }

        public BigDecimal getPermission() {
            return permission;
        }

        public void setPermission(BigDecimal permission) {
            this.permission = permission;
        }
    }
    public static class SRaMultiSourceOnline{

        /** 企业名称 */
        @Excel(name = "企业名称",sort = 1)
        private String factoryName;

        /** 监测点名称 */
        @Excel(name = "监测点位名称",sort = 2)
        private String moitorName;

        @Excel(name = "排口编号",sort = 3)
        private String outletCode;
        @Excel(name = "排口类型",sort = 4,readConverterExp = "1=主要排口,2=一般排口")
        private String outletType;
        @Excel(name = "排放量(kg)",sort = 5,cellType = Excel.ColumnType.NUMERIC)
        private BigDecimal online;

        public String getFactoryName() {
            return factoryName;
        }

        public void setFactoryName(String factoryName) {
            this.factoryName = factoryName;
        }

        public String getMoitorName() {
            return moitorName;
        }

        public void setMoitorName(String moitorName) {
            this.moitorName = moitorName;
        }

        public String getOutletCode() {
            return outletCode;
        }

        public void setOutletCode(String outletCode) {
            this.outletCode = outletCode;
        }

        public String getOutletType() {
            return outletType;
        }

        public void setOutletType(String outletType) {
            this.outletType = outletType;
        }

        public BigDecimal getOnline() {
            return online;
        }

        public void setOnline(BigDecimal online) {
            this.online = online;
        }
    }
}
