package com.unis.base.server.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;

/**
 * @Classname CcsstzjsmxDO
 * @Description 仓储设施投资建设明细
 * @Date 2023/12/28 17:15
 * @Created by rising123sun
 */
@Data
@ApiModel(value = "仓储设备投资建设明细")
@Table(name = "ccsstzjsmx")
public class CcsstzjsmxDO {

    // id
    @Id
    @ApiModelProperty(value = "id")
    private String id;

    // 所属区域名称
    @ApiModelProperty(value = "所属区域名称")
    @Column(name = "ssqymc")
    private String ssqymc;

    // 所属区域代码
    @ApiModelProperty(value = "所属区域代码")
    @Column(name = "ssqydm")
    private String ssqydm;

    // 所属购销公司名称
    @ApiModelProperty(value = "所属购销公司名称")
    @Column(name = "ssgxcgsmc")
    private String ssgxcgsmc;

    // 所属购销公司代码
    @ApiModelProperty(value = "所属购销公司代码")
    @Column(name = "ssgxcgsdm")
    private String ssgxcgsdm;

    // 所属库点名称
    @ApiModelProperty(value = "所属库点代码")
    @Column(name = "sskddm")
    private String sskddm;

    // 所属库点代码
    @ApiModelProperty(value = "所属库点名称")
    @Column(name = "sskdmc")
    private String sskdmc;

    // 上报年份
    @ApiModelProperty(value = "上报年份")
    @Column(name = "sbnf")
    private String sbnf;

    // 项目状态-本年度新开工项目
    @ApiModelProperty(value = "项目状态-本年度新开工项目")
    @Column(name = "xmzt_bddxkgxm")
    private Integer xmztBddxkgxm;

    // 项目状态-本年度竣工项目
    @ApiModelProperty(value = "项目状态-本年度竣工项目")
    @Column(name = "xmzt_bndjgxm")
    private Integer xmztBndjgxm;

    // 项目状态-年度末在建项目
    @ApiModelProperty(value = "项目状态-年度末在建项目")
    @Column(name = "xmzt_ndmzjxm")
    private Integer xmztNdmzjxm;

    // 年度完成投资-按项目类型分
    @ApiModelProperty(value = "年度完成投资-按项目类型分")
    @Column(name = "ndwctz_axmlx")
    private BigDecimal ndwctzAxmlx;

    // 年度完成投资-新建高标准粮仓
    @ApiModelProperty(value = "年度完成投资-新建高标准粮仓")
    @Column(name = "ndwctz_xjgbzlc")
    private BigDecimal ndwctzXjgbzlc;

    // 年度完成投资-旧仓升级改造
    @ApiModelProperty(value = "年度完成投资-旧仓升级改造")
    @Column(name = "ndwctz_jcsjgz")
    private BigDecimal ndwctzJcsjgz;

    // 年度完成投资-隔热性能
    @ApiModelProperty(value = "年度完成投资-隔热性能")
    @Column(name = "ndwctz_grxn")
    private BigDecimal ndwctzGrxn;

    // 年度完成投资-气密性能
    @ApiModelProperty(value = "年度完成投资-气密性能")
    @Column(name = "ndwctz_qmxn")
    private BigDecimal ndwctzQmxn;

    // 年度完成投资-通风技术
    @ApiModelProperty(value = "年度完成投资-通风技术")
    @Column(name = "ndwctz_tfjs")
    private BigDecimal ndwctzTfjs;

    // 年度完成投资-控温技术
    @ApiModelProperty(value = "年度完成投资-控温技术")
    @Column(name = "ndwctz_kwjs")
    private BigDecimal ndwctzKwjs;

    // 年度完成投资-粮情测控
    @ApiModelProperty(value = "年度完成投资-粮情测控")
    @Column(name = "ndwctz_lqck")
    private BigDecimal ndwctzLqck;

    // 年度完成投资-杀虫措施
    @ApiModelProperty(value = "年度完成投资-杀虫措施")
    @Column(name = "ndwctz_sccs")
    private BigDecimal ndwctzSccs;

    // 年度完成投资-修缮维护
    @ApiModelProperty(value = "年度完成投资-修缮维护")
    @Column(name = "ndwctz_xswx")
    private BigDecimal ndwctzXswx;

    // 年度完成投资-其他
    @ApiModelProperty(value = "年度完成投资-其他")
    @Column(name = "ndwctz_qt")
    private BigDecimal ndwctzQt;

    // 年度完成投资-按投资来源分
    @ApiModelProperty(value = "年度完成投资-按投资来源分")
    @Column(name = "ndwctz_atzly")
    private BigDecimal ndwctzAtzly;

    // 年度完成投资-中央财政投资
    @ApiModelProperty(value = "年度完成投资-中央财政投资")
    @Column(name = "ndwctz_zycz")
    private BigDecimal ndwctzZycz;

    // 年度完成投资-市级财政投资
    @ApiModelProperty(value = "年度完成投资-市级财政投资")
    @Column(name = "ndwctz_sjcz")
    private BigDecimal ndwctzSjcz;

    // 年度完成投资-区级财政投资
    @ApiModelProperty(value = "年度完成投资-区级财政投资")
    @Column(name = "ndwctz_qjcz")
    private BigDecimal ndwctzQjcz;

    // 年度完成投资-企业自筹投资
    @ApiModelProperty(value = "年度完成投资-企业自筹投资")
    @Column(name = "ndwctz_qyzc")
    private BigDecimal ndwctzQyzc;

    // 年度完成投资-其他
    @ApiModelProperty(value = "年度完成投资-其他")
    @Column(name = "ndwctz_qt2")
    private BigDecimal ndwctzQt2;

    // 年度完成投资额
    @ApiModelProperty(value = "年度完成投资额")
    @Column(name = "ndwctze")
    private BigDecimal ndwctze;

    // 涉及仓房数（个）
    @ApiModelProperty(value = "涉及仓房数（个）")
    @Column(name = "sjcfs")
    private Integer sjcfs;

    // 涉及仓容数（万吨）
    @ApiModelProperty(value = "涉及仓容数（万吨）")
    @Column(name = "sjcrs")
    private BigDecimal sjcrs;

    // 涉及廒间数（个）
    @ApiModelProperty(value = "涉及廒间数（个）")
    @Column(name = "sjajs")
    private Integer sjajs;

    // 备注
    @ApiModelProperty(value = "备注")
    @Column(name = "bz")
    private String bz;


    // 上报状态
    @ApiModelProperty(value = "上报状态，0未上报，1已上报")
    @Column(name = "sbzt")
    private String sbzt;

    // 上报时间
    @ApiModelProperty(value = "上报时间")
    @Column(name = "sbsj")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date sbsj;

    // 组织机构代码
    @ApiModelProperty(value = "组织机构代码")
    @Column(name = "org_code")
    private String orgCode;


    public static CcsstzjsmxDO buildData(CcsstzjsmxDO ccsstzjsmxDO) {
        // 将integer和bigdecimal类型的数据进行格式化
        ccsstzjsmxDO.setXmztBddxkgxm(formatSlNumber(ccsstzjsmxDO.getXmztBddxkgxm()));
        ccsstzjsmxDO.setXmztBndjgxm(formatSlNumber(ccsstzjsmxDO.getXmztBndjgxm()));
        ccsstzjsmxDO.setXmztNdmzjxm(formatSlNumber(ccsstzjsmxDO.getXmztNdmzjxm()));
        ccsstzjsmxDO.setNdwctzAxmlx(formatJeNumber(ccsstzjsmxDO.getNdwctzAxmlx()));
        ccsstzjsmxDO.setNdwctzXjgbzlc(formatJeNumber(ccsstzjsmxDO.getNdwctzXjgbzlc()));
        ccsstzjsmxDO.setNdwctzJcsjgz(formatJeNumber(ccsstzjsmxDO.getNdwctzJcsjgz()));
        ccsstzjsmxDO.setNdwctzGrxn(formatJeNumber(ccsstzjsmxDO.getNdwctzGrxn()));
        ccsstzjsmxDO.setNdwctzQmxn(formatJeNumber(ccsstzjsmxDO.getNdwctzQmxn()));
        ccsstzjsmxDO.setNdwctzTfjs(formatJeNumber(ccsstzjsmxDO.getNdwctzTfjs()));
        ccsstzjsmxDO.setNdwctzKwjs(formatJeNumber(ccsstzjsmxDO.getNdwctzKwjs()));
        ccsstzjsmxDO.setNdwctzLqck(formatJeNumber(ccsstzjsmxDO.getNdwctzLqck()));
        ccsstzjsmxDO.setNdwctzSccs(formatJeNumber(ccsstzjsmxDO.getNdwctzSccs()));
        ccsstzjsmxDO.setNdwctzXswx(formatJeNumber(ccsstzjsmxDO.getNdwctzXswx()));
        ccsstzjsmxDO.setNdwctzQt(formatJeNumber(ccsstzjsmxDO.getNdwctzQt()));
        ccsstzjsmxDO.setNdwctzAtzly(formatJeNumber(ccsstzjsmxDO.getNdwctzAtzly()));
        ccsstzjsmxDO.setNdwctzZycz(formatJeNumber(ccsstzjsmxDO.getNdwctzZycz()));
        ccsstzjsmxDO.setNdwctzSjcz(formatJeNumber(ccsstzjsmxDO.getNdwctzSjcz()));
        ccsstzjsmxDO.setNdwctzQjcz(formatJeNumber(ccsstzjsmxDO.getNdwctzQjcz()));
        ccsstzjsmxDO.setNdwctzQyzc(formatJeNumber(ccsstzjsmxDO.getNdwctzQyzc()));
        ccsstzjsmxDO.setNdwctzQt2(formatJeNumber(ccsstzjsmxDO.getNdwctzQt2()));
        ccsstzjsmxDO.setNdwctze(formatJeNumber(ccsstzjsmxDO.getNdwctze()));
        ccsstzjsmxDO.setSjcfs(formatSlNumber(ccsstzjsmxDO.getSjcfs()));
        ccsstzjsmxDO.setSjcrs(formatJeNumber(ccsstzjsmxDO.getSjcrs()));
        ccsstzjsmxDO.setSjajs(formatSlNumber(ccsstzjsmxDO.getSjajs()));
        return ccsstzjsmxDO;
    }

    public static BigDecimal formatJeNumber(BigDecimal number) {
        // 如果为空，返回0
        if (null == number) {
            return BigDecimal.ZERO;
        }
        if (number.scale() > 0 && number.stripTrailingZeros().scale() > 0) {
            return number.setScale(2, RoundingMode.HALF_UP);
        } else {
            return number.setScale(0, RoundingMode.HALF_UP);
        }
    }

    public static Integer formatSlNumber(Integer number) {
        // 如果为空，返回0
        if (null == number) {
            return 0;
        }
        return number;
    }

}
