package com.yuchen.saas.park.api.vo.property;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
 * @Author 蔡文强
 * @Date 2023/12/28 15:56
 * @Description 物业收费统计数据Vo
 */
@Data
public class PropertyFeeStatisticsVo {

    /**
     * 园区总数
     */
    @ApiModelProperty(name = "parkCount", value = "园区总数")
    private Integer parkCount;
    /**
     *
     * 主营业收入(单位分)
     */
    @ApiModelProperty(name = "mainIncome", value = "主营业收入(单位分)")
    private Long mainIncome;
    /**
     * 营业外收入(单位分)
     */
    @ApiModelProperty(name = "extraIncome", value = "营业外收入(单位分)")
    private Long extraIncome;/**
     *
     * 应收金额(单位分)
     */
    @ApiModelProperty(name = "receivableAmount", value = "应收金额(单位分)")
    private Long receivableAmount;
    /**
     * 减免&优惠金额(单位分)
     */
    @ApiModelProperty(name = "reductionAmount", value = "减免&优惠金额(单位分)")
    private Long reductionAmount;
    /**
     * 实收金额(单位分)
     */
    @ApiModelProperty(name = "actualAmount", value = "实收金额(单位分)")
    private Long actualAmount;
    /**
     * 预存金额(单位分)
     */
    @ApiModelProperty(name = "prestoreAmount", value = "预存金额(单位分)")
    private Long prestoreAmount;
    /**
     * 押金金额(单位分)
     */
    @ApiModelProperty(name = "depositAmount", value = "押金金额(单位分)")
    private Long depositAmount;

    /**
     * 年度缴费信息
     */
    @ApiModelProperty(name = "annualPayInfo", value = "年度缴费信息")
    private List<PropertyAnnualPayInfo> annualPayInfoList;

    /**
     * 楼栋收缴信息
     */
    @ApiModelProperty(name = "buildingPayInfoList", value = "楼栋收缴信息")
    private List<PropertyBuildingPayInfo> buildingPayInfoList;


    /**
     * 缴费方式占比信息
     */
    @ApiModelProperty(name = "payMethodInfo", value = "缴费方式占比信息")
    private PropertyPayMethodInfo payMethodInfo;


    /**
     * 缴费项目信息
     */
    @ApiModelProperty(name = "payItemInfoList", value = "缴费项目信息")
    private List<PropertyPayItemInfo> payItemInfoList;


    /**
     * @Author 蔡文强
     * @Date 2023/12/28 15:56
     * @Description 年度缴费信息
     */
    @Data
    public static class PropertyAnnualPayInfo {
        /**
         * 月份
         */
        @ApiModelProperty(name = "month", value = "月份")
        private Integer month;

        /**
         * 金额(单位分)
         */
        @ApiModelProperty(name = "amount", value = "金额(单位分)")
        private Long amount;

    }

    /**
     * @Author 蔡文强
     * @Date 2023/12/28 15:56
     * @Description 楼栋收缴信息
     */
    @Data
    public static class PropertyBuildingPayInfo {
        /**
         * 园区ID
         */
        @ApiModelProperty(name = "parkId", value = "园区ID")
        private Long parkId;
        /**
         * 园区名称
         */
        @ApiModelProperty(name = "parkName", value = "园区名称")
        private String parkName;
        /**
         * 楼栋名称
         */
        @ApiModelProperty(name = "buildingName", value = "楼栋名称")
        private String buildingName;
        /**
         * 未缴费数量
         */
        @ApiModelProperty(name = "unpaidCount", value = "未缴费数量")
        private Integer unpaidCount;
        /**
         * 已缴费数量
         */
        @ApiModelProperty(name = "paidCount", value = "已缴费数量")
        private Integer paidCount;
    }

    /**
     * @Author 蔡文强
     * @Date 2023/12/28 15:56
     * @Description 缴费方式占比信息
     */
    @Data
    public static class PropertyPayMethodInfo {

        /**
         * 在线缴费金额(单位分)
         */
        @ApiModelProperty(name = "onlinePayAmount", value = "在线缴费金额(单位分)")
        private Long onlinePayAmount;
        /**
         * 线下缴费金额(单位分)
         */
        @ApiModelProperty(name = "offlinePayAmount", value = "线下缴费金额(单位分)")
        private Long offlinePayAmount;
        /**
         * 预存抵扣金额(单位分)
         */
        @ApiModelProperty(name = "prestoreAmount", value = "预存抵扣金额(单位分)")
        private Long prestoreAmount;

    }

    /**
     * @Author 蔡文强
     * @Date 2023/12/28 15:56
     * @Description 缴费项目信息
     */
    @Data
    public static class PropertyPayItemInfo {

        /**
         * 收费项目ID
         */
        @ApiModelProperty(name = "feeItemId", value = "收费项目ID")
        private Long feeItemId;
        /**
         * 收费项目名称
         */
        @ApiModelProperty(name = "feeItemName", value = "收费项目名称")
        private String feeItemName;
        /**
         * 收费项目缴费金额(单位分)
         */
        @ApiModelProperty(name = "feeItemAmount", value = "收费项目缴费金额(单位分)")
        private Long feeItemAmount;

    }

}
