package org.example.mybatisplus.model.auto;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;

import cn.hutool.core.util.StrUtil;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 企业风险信息校验项
 *
 * @author jimmy
 * @version 1.0.0
 * @date 2024/04/13 15:18
 */
@Data
@TableName(value = "cms_ent_risk_info_ckt_item", autoResultMap = true)
public final class CmsEnterpriseRiskInfoCheckItem extends EasierCommonEntity {
    private static final long serialVersionUID = 8779626915057605240L;

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long itemId;

    /**
     * 校验ID
     */
    private Long checkId;

    /**
     * 校验项标签
     */
    private String itemLabel;

    /**
     * 校验项名称
     */
    private String itemName;

    /**
     * 校验项描述
     */
    @TableField(value = "item_desc")
    private String description;

    /**
     * 分类(审查范围)
     */
    private String categoryType;

    /**
     * 校验值
     */
    @TableField(value = "act_val")
    private String actualValue;

    /**
     * 目标值
     */
    @TableField(value = "tar_val")
    private String targetValue;

    /**
     * 逻辑类型
     */
    private CommonType.LogicType logicType;

    /**
     * 自动审核结果
     */
    private Boolean autoResult;

    /**
     * 自动审核结果信息
     */
    private String autoMsg;

    /**
     * 人工审核结果
     */
    private Boolean manualResult;

    /**
     * 人工审核信息
     */
    private String manualMsg;

    /**
     * 分值
     */
    private Long score;

    /**
     * 得分
     */
    private Long autoScore;

    /**
     * 复核得分
     */
    private Long manualScore;

    /**
     * 精细化评分规则
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private CommonLogicFineRuleModel fineRule;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 人工审核租户ID
     */
    private Long manualCheckTenantId;

    /**
     * 人工审核用户ID
     */
    private Long manualCheckUserId;

    /**
     * 人工审核时间
     */
    private LocalDateTime manualCheckTime;

    public Boolean getBizResult() {
        return manualResult == null ? manualResult : autoResult;
    }

    public String getBizResultStr() {
        return getBizResult() ? "合格" : "不合格";
    }

    public String getResultMsg() {
        return StrUtil.isEmptyOrUndefined(manualMsg) ? autoMsg : manualMsg;
    }

    public Long getBizScore() {
        return manualResult == null ? manualScore: autoScore;
    }
}
