package com.jeeplus.modules.sg.financial.settlement.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeeplus.common.utils.excel.annotation.ExcelField;
import com.jeeplus.core.persistence.DataEntity;

import java.util.Arrays;
import java.util.Date;

/**
 * 概预算基本信息对象
 */
public class MaintainData extends DataEntity<MaintainData> {
    private String projectId;     //项目定义号
    private String designUnits;    //设计单位
    private String constructionUnits;    //施工单位
    private String address;    //建筑地址
    private String property;    //建筑属性
    private String investment;    //发文总投资
    private Date startDate;      //开工时间
    private Date endDate;        //竣工时间
    private String approvalNumber;     //审批文号
    private Double buildingFee;      //建筑费
    private Double installFee;       //安装费
    private Double equipmentFee;     //设备购置费
    private Double materialFee;     //主材费
    private Double designFee;      //设计费
    private Double supervisionFee;  //监理费
    private Double preliminaryWorkFee;   //前期工作费
    private Double damages;      //线路施工赔偿费
    private Double managementFee;   //法人管理费
    private Double totalFee;      //合计
    private String state;
    private String[] projectIds;  //项目定义号数组

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }



    public String[] getProjectIds() {
        return projectIds;
    }

    public void setProjectIds(String[] projectIds) {
        this.projectIds = projectIds;
    }

    @ExcelField(title="项目定义号", align=2, sort=1)
    public String getProjectId() {
        return projectId;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }

    public String getDesignUnits() {
        return designUnits;
    }

    public void setDesignUnits(String designUnits) {
        this.designUnits = designUnits;
    }

    public String getConstructionUnits() {
        return constructionUnits;
    }

    public void setConstructionUnits(String constructionUnits) {
        this.constructionUnits = constructionUnits;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getProperty() {
        return property;
    }

    public void setProperty(String property) {
        this.property = property;
    }

    public String getInvestment() {
        return investment;
    }

    public void setInvestment(String investment) {
        this.investment = investment;
    }

    @ExcelField(title="开工时间", align=2, sort=2)
    @JsonFormat(pattern = "yyyy-MM-dd")
    public Date getStartDate() {
        return startDate;
    }

    @JsonFormat(pattern = "yyyy-MM-dd")
    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    @ExcelField(title="竣工时间", align=2, sort=3)
    @JsonFormat(pattern = "yyyy-MM-dd")
    public Date getEndDate() {
        return endDate;
    }

    @JsonFormat(pattern = "yyyy-MM-dd")
    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    @ExcelField(title="批准文号", align=2, sort=4)
    public String getApprovalNumber() {
        return approvalNumber;
    }

    public void setApprovalNumber(String approvalNumber) {
        this.approvalNumber = approvalNumber;
    }

    @ExcelField(title="建筑费", align=2, sort=5)
    public Double getBuildingFee() {
        return buildingFee;
    }

    public void setBuildingFee(Double buildingFee) {
        this.buildingFee = buildingFee;
    }

    @ExcelField(title="安装费", align=2, sort=6)
    public Double getInstallFee() {
        return installFee;
    }

    public void setInstallFee(Double installFee) {
        this.installFee = installFee;
    }

    @ExcelField(title="设备购置费", align=2, sort=7)
    public Double getEquipmentFee() {
        return equipmentFee;
    }

    public void setEquipmentFee(Double equipmentFee) {
        this.equipmentFee = equipmentFee;
    }

    @ExcelField(title="主材费", align=2, sort=8)
    public Double getMaterialFee() {
        return materialFee;
    }

    public void setMaterialFee(Double materialFee) {
        this.materialFee = materialFee;
    }

    @ExcelField(title="设计费", align=2, sort=9)
    public Double getDesignFee() {
        return designFee;
    }

    public void setDesignFee(Double designFee) {
        this.designFee = designFee;
    }

    @ExcelField(title="监理费", align=2, sort=10)
    public Double getSupervisionFee() {
        return supervisionFee;
    }

    public void setSupervisionFee(Double supervisionFee) {
        this.supervisionFee = supervisionFee;
    }

    @ExcelField(title="项目前期工作费", align=2, sort=11)
    public Double getPreliminaryWorkFee() {
        return preliminaryWorkFee;
    }

    public void setPreliminaryWorkFee(Double preliminaryWorkFee) {
        this.preliminaryWorkFee = preliminaryWorkFee;
    }

    @ExcelField(title="线路施工赔偿费", align=2, sort=12)
    public Double getDamages() {
        return damages;
    }

    public void setDamages(Double damages) {
        this.damages = damages;
    }

    @ExcelField(title="法人管理费（余物清理费）", align=2, sort=13)
    public Double getManagementFee() {
        return managementFee;
    }

    public void setManagementFee(Double managementFee) {
        this.managementFee = managementFee;
    }

    @ExcelField(title="合计", align=2, sort=14)
    public Double getTotalFee() {
        return totalFee;
    }

    public void setTotalFee(Double totalFee) {
        this.totalFee = totalFee;
    }

    @Override
    public String toString() {
        return "MaintainData{" +
                "projectId='" + projectId + '\'' +
                ", designUnits='" + designUnits + '\'' +
                ", constructionUnits='" + constructionUnits + '\'' +
                ", address='" + address + '\'' +
                ", property='" + property + '\'' +
                ", investment='" + investment + '\'' +
                ", startDate=" + startDate +
                ", endDate=" + endDate +
                ", approvalNumber='" + approvalNumber + '\'' +
                ", buildingFee=" + buildingFee +
                ", installFee=" + installFee +
                ", equipmentFee=" + equipmentFee +
                ", materialFee=" + materialFee +
                ", designFee=" + designFee +
                ", supervisionFee=" + supervisionFee +
                ", preliminaryWorkFee=" + preliminaryWorkFee +
                ", damages=" + damages +
                ", managementFee=" + managementFee +
                ", totalFee=" + totalFee +
                ", state='" + state + '\'' +
                ", projectIds=" + Arrays.toString(projectIds) +
                '}';
    }
}
