package com.tofly.feesapi.sfgl.entity.vo;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.enums.poi.BorderStyleEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.tofly.feesapi.common.Excel.EnumConverter;
import com.tofly.feesapi.common.MoneySerializer;
import com.tofly.feesapi.common.constant.PjztEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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


@Data
@ColumnWidth(20)
@ApiModel("收费明细列表VO")
@ContentStyle(
        borderBottom = BorderStyleEnum.THIN,
        borderLeft = BorderStyleEnum.THIN,
        borderRight = BorderStyleEnum.THIN,
        borderTop = BorderStyleEnum.THIN,
        bottomBorderColor = 8,
        topBorderColor = 8,
        leftBorderColor = 8,
        rightBorderColor = 8
)
public class YySspjxxSelect {

    @ExcelIgnore
    @ApiModelProperty(value = "实收ID")
    private String id;

    @ExcelIgnore
    @ApiModelProperty(value = "收费流水编号")
    private String sflsbh;

    @ExcelIgnore
    @ApiModelProperty(value = "欠费ID")
    private String qfid;

    @ExcelIgnore
    @ApiModelProperty(value = "欠费流水号")
    private String qflsbh;

    @ExcelProperty(value = "财务日期", order = 5)
    @ApiModelProperty(value = "财务日期")
    private String cwrq;

    @ExcelProperty(value = "起数", order = 13)
    @ApiModelProperty(value = "上次读数")
    private BigDecimal scds;

    @ExcelProperty(value = "止数", order = 14)
    @ApiModelProperty(value = "本次读数")
    private BigDecimal bcds;

    @ExcelProperty(value = "水量", order = 15)
    @ApiModelProperty(value = "应收水量")
    private BigDecimal yssl;

    @ExcelProperty(value = "水费", order = 9)
    @ApiModelProperty(value = "应收水费")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal yssf;

    @ExcelProperty(value = "污水费", order = 8)
    @ApiModelProperty(value = "应收污水费")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal yswsf;

    @ExcelProperty(value = "垃圾费", order = 7)
    @ApiModelProperty(value = "应收垃圾费")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal ysljf;

    @ExcelProperty(value = "应收水资源税", order = 6)
    @ApiModelProperty(value = "应收水资源税")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal ysszyf;

    @ExcelIgnore
    @ApiModelProperty(value = "应收其它费,消防栓费")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal ysqt;

    @ExcelIgnore
    @ApiModelProperty(value = "应收金额=应收水费+应收污水费+应收垃圾费+应收其他费")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal ysje;


    @ExcelProperty(value = "合计", order = 12)
    @ApiModelProperty(value = "实收总金额:本次实际收取的金额，")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal sszje;

    @ExcelProperty(value = "收费日期", order = 1)
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "收费日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date sfrq;

    @ExcelProperty(value = "实收滞纳金")
    @ApiModelProperty(value = "实收滞纳金")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal znj;

    @ExcelProperty(value = "实收滞纳金")
    @ApiModelProperty(value = "实收滞纳金")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal ssznj;

    @ExcelIgnore
    @ApiModelProperty(value = "转预存金额")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal zyc;

    @ExcelProperty(value = "预付费", order = 10)
    @ApiModelProperty(value = "本次预存")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal bcyc;

    @ExcelIgnore
    @ApiModelProperty(value = "抄表日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date cbrq;

    @ExcelProperty(value = "付费方式", order = 3)
    @ApiModelProperty(value = "付费方式")
    private String fffsmc;

    @ExcelIgnore
    @ApiModelProperty(value = "收费类型")
    private String sflxmc;
    //

    @ApiModelProperty(value = "用水性质")
    private String ysxz;
    @ExcelProperty(value = "用水性质", order = 6)
    @ApiModelProperty(value = "用水性质名称")
    private String ysxzmc;
    //
    @ExcelIgnore
    @ApiModelProperty(value = "水价编码")
    private String sjbm;

    @ExcelProperty(value = "用户编号", order = 2)
    @ApiModelProperty(value = "用户编号")
    private String yhbh;

    @ExcelProperty(value = "客户编码", order = 2)
    @ApiModelProperty(value = "客户编码")
    private String khbm;

    @ExcelProperty(value = "用户姓名", order = 4)
    @ApiModelProperty(value = "用户姓名")
    private String yhxm;

    @ExcelProperty(value = "用户地址", order = 5)
    @ApiModelProperty(value = "用户地址")
    private String yhdz;

    @ExcelProperty(value = "票据状态", order = 18, converter = EnumConverter.class)
    @ApiModelProperty(value = "票据状态")
    private PjztEnum chbz;

    @ExcelIgnore
    @ApiModelProperty(value = "打印次数")
    private Integer dycs;

    @ExcelIgnore
    @ApiModelProperty(value = "抄表计算方式")
    private String cbjsfs;

    @ExcelProperty(value = "冲预交水费(-)", order = 11)
    @ApiModelProperty(value = "本次扣减")
    @JsonSerialize(using = MoneySerializer.class)
    private BigDecimal bckj;

    @ExcelProperty(value = "收费人员", order = 16)
    @ApiModelProperty(value = "收费人员")
    private String sfryxm;

    @ExcelIgnore
    @ApiModelProperty(value = "银行")
    private String oname;

    @ExcelIgnore
    @ApiModelProperty(value = "上次余额")
    private BigDecimal scye;

    @ExcelIgnore
    @ApiModelProperty(value = "本次余额=上次余额+实收总金额或者本次预存-本次扣减")
    private BigDecimal bcye;

    @ExcelIgnore
    @ApiModelProperty(value = "加减量")
    private BigDecimal jjl;

    @ExcelIgnore
    @ApiModelProperty(value = "水量")
    private BigDecimal sl;

    @ExcelIgnore
    @ApiModelProperty(value = "备注")
    private String bz;

    @ExcelIgnore
    @ApiModelProperty(value = "抄表人员姓名")
    private String cbryxm;

    @ExcelIgnore
    @ApiModelProperty(value = "水价")
    private String sj;

    @ExcelIgnore
    @ApiModelProperty(value = "用水月份")
    private String ysyf;

    @ExcelIgnore
    @ApiModelProperty(value = "发票号")
    private String fph;

    @ExcelIgnore
    @ApiModelProperty(value = "发票号1")
    private String fph1;

    @ExcelIgnore
    @ApiModelProperty(value = "票据号")
    private String fph2;

    @ExcelIgnore
    @ApiModelProperty(value = "水价名称")
    private String sjmc;

    @ExcelIgnore
    @ApiModelProperty(value = "应收附加费")
    private BigDecimal ysfjf;

    @ExcelIgnore
    @ApiModelProperty(value = "应收二次加压费")
    private BigDecimal ysecjyf;

    @ExcelIgnore
    @ApiModelProperty(value = "污水费单价")
    private BigDecimal wsfdj;

    @ExcelIgnore
    @ApiModelProperty(value = "水资源费单价")
    private BigDecimal szyfDj;

    @ExcelIgnore
    @ApiModelProperty(value = "费用类型编码：bm_fylx")
    private String fylx;
}
