package com.eitc.patient.service.impl;

import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.eitc.patient.domain.ProtocolType;
import com.eitc.patient.mapper.ProtocolTypeMapper;
import com.eitc.patient.service.IProtocolTypeService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * ProtocolTypeServiceImpl
 *
 * @author mtx
 * @date: 2024/05/17 15:39
 */
@Service
public class ProtocolTypeServiceImpl extends ServiceImpl<ProtocolTypeMapper, ProtocolType> implements IProtocolTypeService {


    /**
     * 根据协议名称获取协议类型的ID。
     * 此方法通过查询协议类型服务，获取指定协议名称对应的协议类型ID。
     * 如果找不到对应的协议类型，则抛出IllegalArgumentException异常。
     *
     * @param type 协议名称
     * @return 对应协议名称的协议类型的ID
     * @throws IllegalArgumentException 如果未找到协议类型，则抛出此异常
     */
    @Override
    public String getProtocolTypes(String type) {
        // 使用Lambda查询方式，查询协议类型服务中协议名称为type的协议类型
        List<ProtocolType> types = this.list(Wrappers.<ProtocolType>lambdaQuery().eq(ProtocolType::getProtocolName, type));

        // 检查查询结果是否为空，如果为空则抛出异常
        if (CollectionUtils.isEmpty(types)) {
            throw new IllegalArgumentException("未找到协议类型");
        }

        // 返回查询结果中第一个协议类型的ID
        return types.get(0).getId();
    }
}
