package org.example.service;

import org.example.entity.HospitalBed;
import org.example.mapper.HospitalBedMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class HospitalBedService {
    
    @Autowired
    private HospitalBedMapper hospitalBedMapper;
    
    /**
     * 获取所有床位列表
     * @return 床位列表
     */
    public List<HospitalBed> findAll() {
        return hospitalBedMapper.findAll();
    }
    
    /**
     * 根据床位代码获取床位信息
     * @param code 床位代码
     * @return 床位信息
     */
    public HospitalBed findByCode(String code) {
        return hospitalBedMapper.findByCode(code);
    }
    
    /**
     * 检查除了指定代码外，是否还存在其他相同的代码
     * @param code 床位代码
     * @param excludeCode 要排除的代码
     * @return 是否存在
     */
    public boolean existsByCodeExcluding(String code, String excludeCode) {
        List<HospitalBed> beds = hospitalBedMapper.findByCodeExcluding(code, excludeCode);
        return beds != null && !beds.isEmpty();
    }
    
    /**
     * 根据床位名称模糊查询床位列表
     * @param name 床位名称
     * @return 床位列表
     */
    public List<HospitalBed> findByNameContaining(String name) {
        return hospitalBedMapper.findByNameContaining(name);
    }
    
    /**
     * 根据所属科室模糊查询床位列表
     * @param belongDept 所属科室
     * @return 床位列表
     */
    public List<HospitalBed> findByBelongDeptContaining(String belongDept) {
        return hospitalBedMapper.findByBelongDeptContaining(belongDept);
    }
    
    /**
     * 根据所属病区模糊查询床位列表
     * @param belongWard 所属病区
     * @return 床位列表
     */
    public List<HospitalBed> findByBelongWardContaining(String belongWard) {
        return hospitalBedMapper.findByBelongWardContaining(belongWard);
    }
    
    /**
     * 根据启用状态查询床位列表
     * @param enabled 是否启用
     * @return 床位列表
     */
    public List<HospitalBed> findByEnabled(Boolean enabled) {
        return hospitalBedMapper.findByEnabled(enabled);
    }
    
    /**
     * 添加新床位
     * @param bed 床位信息
     */
    public void addBed(HospitalBed bed) {
        hospitalBedMapper.insert(bed);
    }
    
    /**
     * 更新床位信息
     * @param originCode 原始床位代码
     * @param bed 床位信息
     */
    public void updateBed(String originCode, HospitalBed bed) {
        hospitalBedMapper.update(bed, originCode);
    }
    
    /**
     * 删除床位
     * @param code 床位代码
     */
    public void deleteBed(String code) {
        hospitalBedMapper.deleteByCode(code);
    }
}