package com.nova.sankuai.domain.api.yangqianguan.vo; import com.fasterxml.jackson.annotation.JsonProperty; import com.nova.sankuai.domain.api.yangqianguan.YqgUtil; import com.nova.sankuai.domain.api.yixin.vo.YxpkgListVo; import com.nova.sankuai.infra.utils.ConstantsUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @ApiModel(value = "还款明细") @Data public class RepayDetailVo { @ApiModelProperty(value = "期号") @JsonProperty("period_no") private Integer periodNo; @ApiModelProperty(value = "当期还款类型 1:整期还款 2:部分还款") private Integer type; @ApiModelProperty(value = "当期还款金额") private Double amount; @ApiModelProperty(value = "当期还款本金") private Double principal; @ApiModelProperty(value = "当期还款利息") private Double interest; @ApiModelProperty(value = "当期还款罚息") @JsonProperty("overdue_interest") private Double overdueInterest; @ApiModelProperty(value = "当期还款服务费") @JsonProperty("service_fee") private Double serviceFee; @ApiModelProperty(value = "其他费用") @JsonProperty("other_fee") private Double otherFee; @ApiModelProperty(value = "特殊情况 0:无 1:线下减免") private Integer tag; @ApiModelProperty(value = "减免金额 tag为1时非空") @JsonProperty("reduce_fee") private Double reduceFee; @ApiModelProperty(value = "备注") private String remark; public Double calculateAmount() { Double amount = this.principal + this.interest + this.serviceFee + this.overdueInterest + this.otherFee; return amount; } public static RepayDetailVo parseVo(YxpkgListVo yxpkgListVo) { RepayDetailVo repayDetailVo = new RepayDetailVo(); repayDetailVo.setPeriodNo(Integer.valueOf(yxpkgListVo.getRepayTerm())); repayDetailVo.setType(1); repayDetailVo.setPrincipal(ConstantsUtil.formatPrice(yxpkgListVo.getTermRetPrin())); repayDetailVo.setInterest(ConstantsUtil.formatPrice(yxpkgListVo.getTermRetInt())); repayDetailVo.setOverdueInterest(ConstantsUtil.formatPrice(yxpkgListVo.getTermRetFint())); repayDetailVo.setServiceFee(ConstantsUtil.formatPrice(yxpkgListVo.getServiceReFee())); repayDetailVo.setOtherFee(ConstantsUtil.formatPrice(yxpkgListVo.getGuarantorReAmt()) + ConstantsUtil.formatPrice(yxpkgListVo.getSpeaccountRe())); repayDetailVo.setTag(0); repayDetailVo.setRemark(YqgUtil.parseRemark(repayDetailVo.getPrincipal(), repayDetailVo.getInterest(), repayDetailVo.getServiceFee(), repayDetailVo.getOverdueInterest(), repayDetailVo.getOtherFee())); repayDetailVo.setAmount(repayDetailVo.calculateAmount()); return repayDetailVo; } }