package cn.fw.morax.domain.db.eval;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
import cn.fw.morax.common.constant.Constant;
import cn.fw.morax.common.utils.PublicUtil;
import cn.fw.morax.domain.enums.*;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
*
* 考评组指标参数
*
*
* @author jiangchao
* @since 2022-12-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(autoResultMap = true)
public class EvalGroupIndicatorParam extends BaseAuditableTimeEntity {
private static final long serialVersionUID = 1L;
/**
* 考评组配置id
*/
private Long evalGroupId;
/**
* 考评组指标id
*/
private Long evalGroupIndicatorId;
/**
* 条件类型(1.台阶条件,2,提成条件)
*/
private ParamTypeEnum paramType;
/**
* 指标类型(1.指标,2,考评指标)
*/
private IndicatorCodeTypeEnum codeType;
/**
* 数据类型;1:台数 2:百分比 3:金额
*/
private DataTypeEnum dataType;
/**
* 指标编码
*/
private String code;
/**
* 指标库名称
*/
private String name;
/**
* 占比
*/
private BigDecimal proportion;
/**
* 是否封顶
*/
private Boolean cap;
/**
* 目标计算类型;1: 目标值计算 2:最低要求计算
*/
private TargetCalcTypeEnum targetCalcType;
/**
* 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
*/
private TargetTypeEnum targetType;
/**
* 目标值
*/
private BigDecimal targetValue;
/**
* 目标计算类型;1: 目标值计算 2:最低要求计算 3:阶段目标 4:时间进度
*/
private TargetCalcTypeEnum extraTargetCalcType;
/**
* 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
*/
private TargetTypeEnum extraTargetType;
/**
* 目标值
*/
private BigDecimal extraTargetValue;
/**
* 逻辑删除
*/
@TableLogic
private Boolean yn;
/**
* 转换为小数
*/
public void dividePercent() {
this.setProportion(this.getProportion().divide(Constant.ONE_HUNDRED, 4, RoundingMode.HALF_UP));
if (PublicUtil.isNotEmpty(this.getTargetValue()) &&
PublicUtil.isNotEmpty(this.getTargetType()) &&
TargetTypeEnum.RATIO.equals(this.getTargetType())) {
this.setTargetValue(this.getTargetValue().divide(Constant.ONE_HUNDRED, 4, RoundingMode.HALF_UP));
}
if (PublicUtil.isNotEmpty(this.getExtraTargetValue()) &&
PublicUtil.isNotEmpty(this.getExtraTargetType()) &&
TargetTypeEnum.RATIO.equals(this.getExtraTargetType())) {
this.setExtraTargetValue(this.getExtraTargetValue().divide(Constant.ONE_HUNDRED, 4, RoundingMode.HALF_UP));
}
}
}