package com.ruoyi.web.modules.architecture.support;

import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;

/**
 * 休药期标准入参校验（与功能需求 4.1 一致；字符长度口径与项目其它标准模块一致，使用 {@link String#length()}）。
 */
public final class WithdrawalPeriodStandardValidation
{
    private WithdrawalPeriodStandardValidation()
    {
    }

    public static void validateDrugName(String drugName)
    {
        if (StringUtils.isEmpty(drugName) || drugName.length() < 1 || drugName.length() > 20)
        {
            throw new ServiceException("药物名称须为1～20个字符");
        }
    }

    /** 1 抗生素 2 抗原虫 3 抗病毒 4 激素 */
    public static void validateDrugType(Integer drugType)
    {
        if (drugType == null || drugType < 1 || drugType > 4)
        {
            throw new ServiceException("药物类型须为1～4（1抗生素2抗原虫3抗病毒4激素）");
        }
    }

    public static void validateWithdrawalDays(Integer withdrawalDays)
    {
        if (withdrawalDays == null)
        {
            throw new ServiceException("休药期天数不能为空");
        }
        if (withdrawalDays < 1 || withdrawalDays > 999)
        {
            throw new ServiceException("休药期天数须为1～999的整数");
        }
    }

    public static void validateUsageGuide(String usageGuide)
    {
        if (StringUtils.isEmpty(usageGuide) || usageGuide.length() < 1 || usageGuide.length() > 200)
        {
            throw new ServiceException("使用指南须为1～200个汉字");
        }
    }

    public static void validateDrugEffect(String drugEffect)
    {
        if (StringUtils.isEmpty(drugEffect) || drugEffect.length() < 1 || drugEffect.length() > 200)
        {
            throw new ServiceException("药物作用须为1～200个汉字");
        }
    }
}
