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

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.thinkunion.park.service.common.utils.AmtUtil;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import org.nest.springwrap.core.mp.base.BaseEntity;

import java.math.BigDecimal;

@Data
@ApiModel(value = "收费标准",description = "")
@TableName("property_fee_standard")
public class PropertyFeeStandard extends BaseEntity {

    /** 园区id */
    private Long parkId ;
    /** 收费项目id */
    private Long feeItemId ;
    /** 收费标准名称 */
    private String feeName ;
    /** 费用标识;费用标识：1-周期性收费，2-用量收费，3-数量收费，4-固定金额收费，5-指定金额收费 */
    private Integer feeMark ;

    /** MonthDayEnum 周期性收费-计费周期：1-按月，2-按天 */
    private Integer cycleType ;
    /** MonthDayEnum 周期性收费-按月情况，不整月时：1-按天，2-按月 */
    private Integer cycleMonthType ;
    /** 计算规则（针对费用标识为1，2，3情况）：1-按单价（默认，目前只有该场景），2-自定义 */
    private Integer calcRule ;
    /** 计量方式：1-建筑面积，2-使用面积，3-定额计算，4-电表，5-水表，6-气表 */
    private Integer calcType ;
    /**仪表id*/
    private Long meterId;
    /** 价格;单位分（指定金额收费情况不会有这个价格） */
    private Long priceFen ;
    /** 周期性收费-按月情况：折合天单价 */
    private Long priceDayFen ;
    /** 计算单位：1-m2/月，2-月，3-m2/天，4-天，5-度，6-m3，7-m2，8-个，9-时 */
    private Integer priceUnitType ;

    /** 账单周期 */
    private Integer billCycle ;
    /** 账单周期单位：1-月，2-天 */
    private Integer billUnit ;
    /** 账单划分 */
    private Integer billStage ;
    /** 提前X日生成账单 */
    private Integer billGenerateVal ;
    /** MonthDayEnum 提前X日生成账单-单位：1-月，2-天 */
    private Integer billGenerateUnit ;

    /** 应收月份：1-账单起始日当月，2-账单截止日当月 */
    private Integer receivableMonth ;
    /** 应收月份之后第X月 */
    private Integer receivableMonthAfter ;
    /** 应收日期：1-应收月份当前的月末，2-应收月份当前的第X天，3-月份为应收月份，日期为X日同日之后的第X天 */
    private Integer receivableType ;
    /** 应收月份当前的第X天 */
    private Integer receivableArg1 ;
    /** 应收日期类型：1-账单开始日，2-账单截止日 */
    private Integer receivableArg2 ;
    /** 账单日期之后第X天 */
    private Integer receivableArg3 ;

    /** 违约金开启状态：1-开，0-关 */
    private Integer breachStatue ;
    /** 违约金起算日期类型：1-应收日期，2-账单开始日期，3-账单截止日期 */
    private Integer breachDateType ;
    /** 违约金第X日之后算起 */
    private Integer breachDateVal ;
    /** 违约金每天收取比例 */
    private BigDecimal breachRate ;
    /** 违约金计算方式：1-计算方式，2-利滚利 */
    private Integer breachCalcType ;

    /** 备注 */
    private String remark;


    @TableField(exist = false)
    private Integer status;
    @TableField(exist = false)
    private BigDecimal price ;
    public BigDecimal getPrice() {
        return AmtUtil.fenToYuanObj(this.priceFen);
    }
    @TableField(exist = false)
    private BigDecimal priceDay ;
    public BigDecimal getPriceDay() {
        return AmtUtil.fenToYuanObj(this.priceDayFen);
    }

}
