Air
2024-11-04 29c405353029f033e187e8dc033b93385365ee43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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;
    }
}