KpiIndicatorRankStaffVO.java 2.42 KB
package cn.fw.morax.domain.vo.kpi;

import cn.fw.morax.common.constant.Constant;
import cn.fw.morax.common.utils.PublicUtil;
import cn.fw.morax.domain.enums.DataTypeEnum;
import cn.fw.morax.domain.enums.TargetTypeEnum;
import lombok.Data;

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

/**
 * @author : kurisu
 * @date : 2022-4-6
 * @desc : 绩效池
 */
@Data
public class KpiIndicatorRankStaffVO implements Comparable<KpiIndicatorRankStaffVO>{
    /**
     * 用户id
     */
    private Long userId;
    /**
     * 用户名称
     */
    private String userName;
    /**
     * 岗位id
     */
    private Long postId;
    /**
     * 岗位名称
     */
    private String postName;
    /**
     * 门店id
     */
    private Long shopId;
    /**
     * 门店名称
     */
    private String shopName;
    /**
     * 是否纳入绩效计算
     */
    private Boolean inclusion;
    /**
     * 指标排名序号
     */
    private Integer indicatorRank;

    /**
     * 原始值
     */
    private BigDecimal originValue;

    /**
     * 达成值
     */
    private BigDecimal reachValue;

    /**
     * 转换为百分数展示
     */
    public void convertReportValueToPercent(DataTypeEnum dataType){
        if (PublicUtil.isNotEmpty(dataType) && DataTypeEnum.RATIO.equals(dataType)) {
            this.setOriginValue(this.getOriginValue().multiply(Constant.ONE_HUNDRED));
        }
        if (PublicUtil.isNotEmpty(this.getReachValue())) {
            this.setReachValue(this.getReachValue().multiply(Constant.ONE_HUNDRED));
        }
    }

    /**
     * 转换为百分数展示
     */
    public void convertValueForTarget(DataTypeEnum dataType){
        if (PublicUtil.isNotEmpty(dataType) && DataTypeEnum.RATIO.equals(dataType)) {
            this.setOriginValue(this.getOriginValue().multiply(Constant.ONE_HUNDRED));
        }
        this.setReachValue(this.getReachValue().multiply(Constant.ONE_HUNDRED));
    }

    @Override
    public int compareTo(KpiIndicatorRankStaffVO other) {
        if (Boolean.TRUE.equals(this.inclusion) && Boolean.FALSE.equals(other.inclusion)) {
            return -1;
        }
        if (Boolean.FALSE.equals(this.inclusion) && Boolean.TRUE.equals(other.inclusion)) {
            return 1;
        }
        return Optional.ofNullable(other.originValue).orElse(BigDecimal.ZERO)
                .compareTo(Optional.ofNullable(this.originValue).orElse(BigDecimal.ZERO));
    }
}